File: Ndisdev.asm

package info (click to toggle)
pwlib 1.10.10-2
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 15,068 kB
  • ctags: 15,167
  • sloc: cpp: 112,149; ansic: 6,061; sh: 2,920; makefile: 1,062; yacc: 861; asm: 161
file content (269 lines) | stat: -rw-r--r-- 7,731 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
.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 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, Local
End_Service_Table Ndis

NDIS_STATUS_SUCCESS EQU 0



; 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