⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 itek_asm.asm

📁 win9x下的一个网卡驱动程序。
💻 ASM
字号:
.LALL
; written by Sang-Eun Han
;
;
	TITLE ITEK
	.386P
	.XLIST
	include vmm.inc
	include ndis.inc
	include	netvxd.inc
	include vwin32.inc
	include debug.inc
	.LIST

EXTRN	_OnSysDynamicDeviceInit@0:PROC
EXTRN 	_OnSysDynamicDeviceExit@0:PROC


DECLARE_VIRTUAL_DEVICE	%MAC, 3, 10, <%MAC>_Control, Undefined_Device_Id, \
						MAC_Init_Order

;data
IFDEF CHICAGO
VxD_LOCKED_DATA_SEG

Public bInitAlready	
	bInitAlready	 DB 0

VxD_LOCKED_DATA_ENDS

ENDIF

; code
VxD_LOCKED_CODE_SEG

;----------------------------------------------------------------------------------
Begin_Control_Dispatch %MAC
        Control_Dispatch Device_Init, OnSysDynamicDeviceInitWrap
        Control_Dispatch Sys_Dynamic_Device_Init, OnSysDynamicDeviceInitWrap
        Control_Dispatch Sys_Dynamic_Device_Exit, OnSysDynamicDeviceExitWrap
        Control_Dispatch W32_DeviceIoControl, OnW32DeviceIoControl, sCall, <ecx, ebx, edx, esi>
End_Control_Dispatch %MAC

VxD_LOCKED_CODE_ENDS

;----------------------------------------------------------------------------------
;
;   OnSysDynamicDeviceInitWrap
;
;----------------------------------------------------------------------------------
BeginProc OnSysDynamicDeviceInitWrap, init

IFDEF CHICAGO
    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
ENDIF

; Make sure the wrapper (Ndis.386) is loaded
    	VxDcall NdisGetVersion
	jc	Fail_Init_Phase

	call 	_OnSysDynamicDeviceInit@0

	cmp  	eax, NDIS_STATUS_SUCCESS
	jne  	Fail_Init_Phase
; Success

Succeed_Init_Phase:
	clc
	ret
Fail_Init_Phase:
	stc
	ret
EndProc	OnSysDynamicDeviceInitWrap

;----------------------------------------------------------------------------------
;
;   OnSysDynamicDeviceExitWrap
;
;----------------------------------------------------------------------------------
BeginProc OnSysDynamicDeviceExitWrap, locked

	call _OnSysDynamicDeviceExit@0
	clc
	ret

EndProc	OnSysDynamicDeviceExitWrap

        END

;----------------------------------------------------------------------------------
;
;	R E A L   M O D E   I N I T   C O D E
;
;	MAC_Real_Init
;	DESCRIPTION:
;	ENTRY:
;	EXIT:
;	USES:
;
;	Comments: Is there anybody who knows the funtionality of these codes?
;----------------------------------------------------------------------------------

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 + -