📄 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 .386PINCLUDE VMM.INCINCLUDE NETVXD.INC ; Net VxD initialization oredr;INCLUDE NDIS.INC Dont have this so include the bit we need from the NDIS.H file.Begin_Service_Table Ndis Ndis_Service NdisGetVersion,LOCAL Ndis_Service NdisAllocateSpinLock,LOCAL Ndis_Service NdisFreeSpinLock,LOCAL Ndis_Service NdisAcquireSpinLock,LOCAL Ndis_Service NdisReleaseSpinLock,LOCAL Ndis_Service NdisOpenConfiguration,LOCAL Ndis_Service NdisReadConfiguration,LOCAL Ndis_Service NdisCloseConfiguration,LOCAL Ndis_Service NdisReadEisaSlotInformation, LOCAL Ndis_Service NdisReadMcaPosInformation,LOCAL Ndis_Service NdisAllocateMemory,LOCAL Ndis_Service NdisFreeMemory,LOCAL Ndis_Service NdisSetTimer,LOCAL Ndis_Service NdisCancelTimer,LOCAL Ndis_Service NdisStallExecution,LOCAL Ndis_Service NdisInitializeInterrupt,LOCAL Ndis_Service NdisRemoveInterrupt,LOCAL Ndis_Service NdisSynchronizeWithInterrupt,LOCAL Ndis_Service NdisOpenFile,LOCAL Ndis_Service NdisMapFile,LOCAL Ndis_Service NdisUnmapFile,LOCAL Ndis_Service NdisCloseFile,LOCAL Ndis_Service NdisAllocatePacketPool,LOCAL Ndis_Service NdisFreePacketPool,LOCAL Ndis_Service NdisAllocatePacket,LOCAL Ndis_Service NdisReinitializePacket,LOCAL Ndis_Service NdisFreePacket,LOCAL Ndis_Service NdisQueryPacket,LOCAL Ndis_Service NdisAllocateBufferPool,LOCAL Ndis_Service NdisFreeBufferPool,LOCAL Ndis_Service NdisAllocateBuffer,LOCAL Ndis_Service NdisCopyBuffer,LOCAL Ndis_Service NdisFreeBuffer,LOCAL Ndis_Service NdisQueryBuffer,LOCAL Ndis_Service NdisGetBufferPhysicalAddress,LOCAL Ndis_Service NdisChainBufferAtFront,LOCAL Ndis_Service NdisChainBufferAtBack,LOCAL Ndis_Service NdisUnchainBufferAtFront,LOCAL Ndis_Service NdisUnchainBufferAtBack,LOCAL Ndis_Service NdisGetNextBuffer,LOCAL Ndis_Service NdisCopyFromPacketToPacket,LOCAL Ndis_Service NdisRegisterProtocol,LOCAL Ndis_Service NdisDeregisterProtocol,LOCAL Ndis_Service NdisOpenAdapter,LOCAL Ndis_Service NdisCloseAdapter,LOCAL Ndis_Service NdisSend,LOCAL Ndis_Service NdisTransferData,LOCAL Ndis_Service NdisReset,LOCAL Ndis_Service NdisRequest,LOCAL Ndis_Service NdisInitializeWrapper,LOCAL Ndis_Service NdisTerminateWrapper,LOCAL Ndis_Service NdisRegisterMac,LOCAL Ndis_Service NdisDeregisterMac,LOCAL Ndis_Service NdisRegisterAdapter,LOCAL Ndis_Service NdisDeregisterAdapter,LOCAL Ndis_Service NdisCompleteOpenAdapter,LOCAL Ndis_Service NdisCompleteCloseAdapter,LOCAL Ndis_Service NdisCompleteSend,LOCAL Ndis_Service NdisCompleteTransferData,LOCAL Ndis_Service NdisCompleteReset,LOCAL Ndis_Service NdisCompleteRequest,LOCAL Ndis_Service NdisIndicateReceive,LOCAL Ndis_Service NdisIndicateReceiveComplete,LOCAL Ndis_Service NdisIndicateStatus,LOCAL Ndis_Service NdisIndicateStatusComplete,LOCAL Ndis_Service NdisCompleteQueryStatistics,LOCAL Ndis_Service NdisEqualString,LOCAL Ndis_Service NdisRegAdaptShutdown,LOCAL Ndis_Service NdisReadNetworkAddress,LOCAL Ndis_Service NdisWriteErrorLogEntry,LOCAL Ndis_Service NdisMapIoSpace,LOCAL Ndis_Service NdisDeregAdaptShutdown,LOCAL Ndis_Service NdisAllocateSharedMemory,LOCAL Ndis_Service NdisFreeSharedMemory, LOCAL Ndis_Service NdisAllocateDmaChannel, LOCAL Ndis_Service NdisSetupDmaTransfer, LOCAL Ndis_Service NdisCompleteDmaTransfer, LOCAL Ndis_Service NdisReadDmaCounter, LOCAL Ndis_Service NdisFreeDmaChannel, LOCAL Ndis_Service NdisReleaseAdapterResources, LOCAL Ndis_Service NdisQueryGlobalStatistics, LOCAL Ndis_Service NdisOpenProtocolConfiguration, LOCAL Ndis_Service NdisCompleteBindAdapter, LOCAL Ndis_Service NdisCompleteUnbindAdapter, LOCAL Ndis_Service WrapperStartNet, LOCAL Ndis_Service WrapperGetComponentList, LOCAL Ndis_Service WrapperQueryAdapterResources, Local Ndis_Service WrapperDelayBinding, Local Ndis_Service WrapperResumeBinding, Local Ndis_Service WrapperRemoveChildren, Local Ndis_Service NdisImmediateReadPciSlotInformation, Local Ndis_Service NdisImmediateWritePciSlotInformation, Local Ndis_Service NdisReadPciSlotInformation, Local Ndis_Service NdisWritePciSlotInformation, Local Ndis_Service NdisPciAssignResources, Local Ndis_Service NdisQueryBufferOffset, LocalEnd_Service_Table NdisNDIS_STATUS_SUCCESS EQU 0; the following equate makes the VXD dynamically loadable.DEVICE_DYNAMIC EQU 1DECLARE_VIRTUAL_DEVICE %DEVICE, 3, 10, <%DEVICE>_Control, Undefined_Device_Id, PROTOCOL_Init_OrderVxD_LOCKED_DATA_SEGPublic bInitAlready bInitAlready DB 0 VxD_LOCKED_DATA_ENDSVxD_LOCKED_CODE_SEGBeginProc C_Device_InitIFDEF NDIS_STDCALL extern _DriverEntry@8:NEARELSE extern _DriverEntry:NEARENDIF 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 0IFDEF NDIS_STDCALL call _DriverEntry@8ELSE call _DriverEntry add esp,8ENDIF cmp eax, NDIS_STATUS_SUCCESS jne Fail_Init_PhaseSucceed_Init_Phase: clc retFail_Init_Phase: stc retEndProc C_Device_InitBegin_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, sCallEnd_Control_Dispatch %DEVICEVxD_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_SEGBeginProc 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 retNdis_RI_Abort_Load: xor bx, bx xor si, si mov ax, Abort_Device_Load retEndProc MAC_Real_InitVxD_REAL_INIT_ENDSEND MAC_Real_Init
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -