.LALL ;***************************************************************************** ; ; (C) Copyright MICROSOFT Corp, 1995 ; ; Title: NDISDEV.ASM sourced from: ; Title: NDISLNK.ASM - Assembly linkage to NDIS Wrapper for MACs ; and Protocols ; ; 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 $PACKET .386P INCLUDE VMM.INC INCLUDE NDIS.INC INCLUDE NETVXD.INC ; Net VxD initialization oredr include vtd.inc ; 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, IFDEF DEBUG Control_Dispatch DEBUG_QUERY, PacketDebugQuery, sCall ENDIF End_Control_Dispatch %DEVICE VxD_LOCKED_CODE_ENDS END