mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
285 lines
7.2 KiB
285 lines
7.2 KiB
;*****************************************************************;
|
|
;** 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
|
|
|
|
|
|
|