1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
|
;*****************************************************************;
;** Copyright(c) Microsoft Corp., 1988-1993 **;
;*****************************************************************;
;:ts=8
TITLE WFWASM.ASM - WFW Specific vnbt routines
.XLIST
;*** VNBT -- NetBios over TCP/IP VxD
;
;
.386p
include vmm.inc
include dosmgr.inc
include netvxd.inc
include vdhcp.inc
include debug.inc
include vtdi.inc
include vnbtd.inc
include vnetbios.inc
.LIST
IFNDEF CHICAGO
EXTRN _GetDhcpOption:NEAR
EXTRN NCB_Handler:NEAR
VxD_ICODE_SEG
public _NBTSectionName
_NBTSectionName db 'NBT',0 ; Section in system.ini parameters are stored
public _DNSSectionName
_DNSSectionName db 'DNS',0 ; DNS Section in system.ini
;****************************************************************************
;** _GetProfileInt
;
; Reads a parameter from our system.ini file (INIT TIME ONLY!)
;
; Entry: See ReadParamParams
;
; Exit: Eax contains specified value or defaulted value
;
ReadParamParams struc
dd ? ; Return Address
dd ? ; Saved edi
dd ? ; Saved esi
dd ? ; ParametersHandle (unused)
ValueName dd ? ; Pointer to value name string
DefaultValue dd ? ; Value to use if not in .ini file
MinimumValue dd ? ; Specified value must be >= MinimumValue
ReadParamParams ends
BeginProc _GetProfileInt
push edi
push esi
;
; Get the value from the system.ini file (if can't be found then eax
; will contain the default value)
;
mov eax, [esp].DefaultValue
mov esi, OFFSET32 _NBTSectionName
mov edi, [esp].ValueName
VMMCall Get_Profile_Decimal_Int
jnc GPI_Found
push eax ; Default value
push edi ; Value name
call _GetDhcpOption ; Returns DHCP value or default
add esp, 8
GPI_Found:
;
; Does the value meet our standards?
;
cmp eax, [esp].MinimumValue ; Unsigned comparison
ja RP10
mov eax, [esp].MinimumValue
RP10:
pop esi
pop edi
ret
EndProc _GetProfileInt
;****************************************************************************
;** _GetProfileHex
;
; Reads a hex parameter from our system.ini file (INIT TIME ONLY!)
;
; Entry: See ReadParamParams
;
; Exit: Eax contains specified value or defaulted value
;
ReadParamParams struc
dd ? ; Return Address
dd ? ; Saved edi
dd ? ; Saved esi
dd ? ; ParametersHandle (unused)
ValueName dd ? ; Pointer to value name string
DefaultValue dd ? ; Value to use if not in .ini file
MinimumValue dd ? ; Specified value must be >= MinimumValue
ReadParamParams ends
BeginProc _GetProfileHex
push edi
push esi
;
; Get the value from the system.ini file (if can't be found then eax
; will contain the default value)
;
mov eax, [esp].DefaultValue
mov esi, OFFSET32 _NBTSectionName
mov edi, [esp].ValueName
VMMCall Get_Profile_Hex_Int
jnc GPH_Found
push eax ; Default value
push edi ; Value name
call _GetDhcpOption ; Returns DHCP value or default
add esp, 8
GPH_Found:
;
; Does the value meet our standards?
;
cmp eax, [esp].MinimumValue ; Unsigned comparison
ja RHP10
mov eax, [esp].MinimumValue
RHP10:
pop esi
pop edi
ret
EndProc _GetProfileHex
;****************************************************************************
;** _GetProfileString
;
; Reads a string from our system.ini file (INIT TIME ONLY!)
;
; Entry: See GetProfileStrParams structure
;
; Exit: Eax contains the found value or NULL if not found
;
; History:
; 30-May-94 Koti
; this function modified to accept name of the section
; to look at as a parameter. Getting DNS server ipaddrs
; from the DNS section in system.ini demanded this change
;
GetProfileStrParams struc
dd ? ; Return Address
dd ? ; saved edx
dd ? ; Saved edi
dd ? ; Saved esi
gps_ValueName dd ? ; Pointer to value name string
gps_DefaultValue dd ? ; Value to use if not in .ini file
gps_SectionName dd ? ; Name of the section to look at (almost always NBT)
GetProfileStrParams ends
BeginProc _GetProfileString
push edx
push edi
push esi
;
; Get the value from the system.ini file (if can't be found then eax
; will contain the default value)
;
mov edx, [esp].gps_DefaultValue
mov esi, [esp].gps_SectionName
mov edi, [esp].gps_ValueName
VMMCall Get_Profile_String
jc GetProf10
mov eax, edx ; Success
jmp short GetProf20
GetProf10:
mov eax, 0 ; Couldn't find the string
GetProf20:
pop esi
pop edi
pop edx
ret
EndProc _GetProfileString
;****************************************************************************
;** _RegisterLana
;
; Registers the requested lana with the VNetbios driver.
;
; Entry: [ESP+4] - Lana number to register
;
; Exit: EAX will be TRUE if successful, FALSE if not
;
; Uses:
;
BeginProc _RegisterLana
mov eax, [esp+4] ; Get the request lana to register
push ebx
push edx
mov ebx, 1 ; Take over RM lana
mov edx, NCB_Handler
VxDcall VNETBIOS_Register ; Carry set on failure
jnc RegLana10
mov eax, 0 ; Failed
jmp short RegLana20
RegLana10:
mov eax, 1 ; Success
RegLana20:
pop edx
pop ebx
ret
EndProc _RegisterLana
;****************************************************************************
;** _DhcpSetInfo - Sets DHCP information
;
; Stub callout to the Dhcp driver
;
; Entry: [ESP+4] - Info type
; [ESP+8] - IP Address of interest
; [ESP+12]- Pointer to buffer
; [ESP+16]- Pointer to buffer size
;
; INIT TIME ONLY!
;
BeginProc _DhcpSetInfo
VxdCall VDHCP_Get_Version
jnc DSI_Installed
mov eax, 26 ; DHCP not installed, return invalid param
ret
DSI_Installed:
push ebp
mov ebp,esp
mov eax, [ebp+20] ; Buff size
push eax
mov eax, [ebp+16] ; Buff
push eax
mov eax, [ebp+12] ; IP Address
push eax
mov eax, [ebp+8] ; Info type
push eax
VxdCall VDHCP_Set_Info
add esp, 16
pop ebp
ret
EndProc _DhcpSetInfo
VxD_ICODE_ENDS
ENDIF ;!CHICAGO
END
|