📄 ndisdev.asm
字号:
.LALL
;*****************************************************************************
;
; (C) Copyright MICROSOFT Corp, 1995
;
; Title: LANCELNK.ASM sourced from:
; Title: NDISLNK.ASM - Assembly linkage to NDIS Wrapper for MACs
; and Protocols
;
; Information in this document is Microsoft Confidential.
; Copyright (c) 1996, Microsoft Corporation, all rights reserve
;
; This document is provided for informational purposes only and Microsoft
; Corporation makes no warranties, either expressed or implied, in this document.
; Information in this document may be substantially changed without notice in
; subsequent versions of windows and does not represent a commitment on the
; part of Microsoft Corporation. This information is for internal use only for
; development purposes.
;
; Version: 3.00
;
; Date: 05-Nov-1991
;
;=============================================================================
TITLE $LANCELNK
.386P
INCLUDE VMM.INC
INCLUDE NDIS.INC
INCLUDE NETVXD.INC ; Net VxD initialization oredr
; the following equate makes the VXD dynamically loadable.
DEVICE_DYNAMIC EQU 1
DECLARE_VIRTUAL_DEVICE %DEVICE, 3, 10, <%DEVICE>_Control, Undefined_Device_Id, PROTOCOL_Init_Order
VxD_LOCKED_DATA_SEG
Public bInitAlready
bInitAlready DB 0
VxD_LOCKED_DATA_ENDS
VxD_LOCKED_CODE_SEG
BeginProc C_Device_Init
IFDEF NDIS_STDCALL
extern _DriverEntry@8:NEAR
ELSE
extern _DriverEntry:NEAR
ENDIF
mov al, bInitAlready
cmp al, 0 ; Make sure we' haven't been called already.
jnz Succeed_Init_Phase
inc bInitAlready ; Set the "Called Already" Flag
; Make sure the wrapper (Ndis.386) is loaded
VxDcall NdisGetVersion
jc Fail_Init_Phase
push 0
push 0
IFDEF NDIS_STDCALL
call _DriverEntry@8
ELSE
call _DriverEntry
add esp,8
ENDIF
cmp eax, NDIS_STATUS_SUCCESS
jne Fail_Init_Phase
Succeed_Init_Phase:
clc
ret
Fail_Init_Phase:
stc
ret
EndProc C_Device_Init
Begin_Control_Dispatch %DEVICE
Control_Dispatch Sys_Dynamic_Device_Init, C_Device_Init
Control_Dispatch W32_DEVICEIOCONTROL, PacketIOControl, sCall, <ecx, ebx, edx, esi>
; Control_Dispatch DEBUG_QUERY, PacketDebugQuery, sCall
End_Control_Dispatch %DEVICE
VxD_LOCKED_CODE_ENDS
;******************************************************************************
; R E A L M O D E I N I T C O D E
;******************************************************************************
;******************************************************************************
;
; MAC_Real_Init
;
; DESCRIPTION:
;
; ENTRY:
;
; EXIT:
;
; USES:
;
;==============================================================================
VxD_REAL_INIT_SEG
BeginProc MAC_Real_Init
;
; If another us is loaded then don't load -- Just abort our load
;
test bx, Duplicate_From_INT2F OR Duplicate_Device_ID
jnz SHORT Ndis_RI_Abort_Load
; No other is loaded.
xor bx, bx
xor si, si
mov ax, Device_Load_Ok
ret
Ndis_RI_Abort_Load:
xor bx, bx
xor si, si
mov ax, Abort_Device_Load
ret
EndProc MAC_Real_Init
VxD_REAL_INIT_ENDS
END MAC_Real_Init
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -