4 * Network Device Interface Specification definitions
6 * This file is part of the w32api package.
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
11 * THIS SOFTWARE IS NOT COPYRIGHTED
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 * DEFINES: i386 - Target platform is i386
22 * NDIS_WRAPPER - Define only for NDIS library
23 * NDIS_MINIPORT_DRIVER - Define only for NDIS miniport drivers
24 * NDIS40 - Use NDIS 4.0 structures by default
25 * NDIS50 - Use NDIS 5.0 structures by default
26 * NDIS51 - Use NDIS 5.1 structures by default
27 * NDIS40_MINIPORT - Building NDIS 4.0 miniport driver
28 * NDIS50_MINIPORT - Building NDIS 5.0 miniport driver
29 * NDIS51_MINIPORT - Building NDIS 5.1 miniport driver
41 #if !defined(_WINDEF_H)
42 typedef unsigned int UINT
, *PUINT
;
49 #if defined(NDIS_WRAPPER)
52 #define NDISAPI DECLSPEC_IMPORT
55 #if defined(NDIS50_MINIPORT) && !defined(NDIS_MINIPORT_MAJOR_VERSION) && !defined(NDIS_MINIPORT_MINOR_VERSION)
56 #define NDIS_MINIPORT_MAJOR_VERSION 5
57 #define NDIS_MINIPORT_MINOR_VERSION 0
60 #if defined(NDIS51_MINIPORT) && !defined(NDIS_MINIPORT_MAJOR_VERSION) && !defined(NDIS_MINIPORT_MINOR_VERSION)
61 #define NDIS_MINIPORT_MAJOR_VERSION 5
62 #define NDIS_MINIPORT_MINOR_VERSION 1
65 #if defined(NDIS50) && !defined(NDIS_PROTOCOL_MAJOR_VERSION) && !defined(NDIS_PROTOCOL_MINOR_VERSION)
66 #define NDIS_PROTOCOL_MAJOR_VERSION 5
67 #define NDIS_PROTOCOL_MINOR_VERSION 0
70 #if defined(NDIS51) && !defined(NDIS_PROTOCOL_MAJOR_VERSION) && !defined(NDIS_PROTOCOL_MINOR_VERSION)
71 #define NDIS_PROTOCOL_MAJOR_VERSION 5
72 #define NDIS_PROTOCOL_MINOR_VERSION 1
77 typedef PVOID QUEUED_CLOSE
;
80 typedef ULONG NDIS_OID
, *PNDIS_OID
;
82 typedef struct _X_FILTER FDDI_FILTER
, *PFDDI_FILTER
;
83 typedef struct _X_FILTER TR_FILTER
, *PTR_FILTER
;
84 typedef struct _X_FILTER NULL_FILTER
, *PNULL_FILTER
;
86 typedef struct _REFERENCE
{
88 USHORT ReferenceCount
;
90 } REFERENCE
, * PREFERENCE
;
95 typedef struct _NDIS_SPIN_LOCK
{
98 } NDIS_SPIN_LOCK
, * PNDIS_SPIN_LOCK
;
100 typedef struct _NDIS_EVENT
{
102 } NDIS_EVENT
, *PNDIS_EVENT
;
104 typedef PVOID NDIS_HANDLE
, *PNDIS_HANDLE
;
105 typedef int NDIS_STATUS
, *PNDIS_STATUS
;
107 typedef ANSI_STRING NDIS_ANSI_STRING
, *PNDIS_ANSI_STRING
;
108 typedef UNICODE_STRING NDIS_STRING
, *PNDIS_STRING
;
110 typedef MDL NDIS_BUFFER
, *PNDIS_BUFFER
;
111 typedef ULONG NDIS_ERROR_CODE
, *PNDIS_ERROR_CODE
;
114 /* NDIS_STATUS constants */
115 #define NDIS_STATUS_SUCCESS ((NDIS_STATUS)STATUS_SUCCESS)
116 #define NDIS_STATUS_PENDING ((NDIS_STATUS)STATUS_PENDING)
117 #define NDIS_STATUS_NOT_RECOGNIZED ((NDIS_STATUS)0x00010001L)
118 #define NDIS_STATUS_NOT_COPIED ((NDIS_STATUS)0x00010002L)
119 #define NDIS_STATUS_NOT_ACCEPTED ((NDIS_STATUS)0x00010003L)
120 #define NDIS_STATUS_CALL_ACTIVE ((NDIS_STATUS)0x00010007L)
121 #define NDIS_STATUS_ONLINE ((NDIS_STATUS)0x40010003L)
122 #define NDIS_STATUS_RESET_START ((NDIS_STATUS)0x40010004L)
123 #define NDIS_STATUS_RESET_END ((NDIS_STATUS)0x40010005L)
124 #define NDIS_STATUS_RING_STATUS ((NDIS_STATUS)0x40010006L)
125 #define NDIS_STATUS_CLOSED ((NDIS_STATUS)0x40010007L)
126 #define NDIS_STATUS_WAN_LINE_UP ((NDIS_STATUS)0x40010008L)
127 #define NDIS_STATUS_WAN_LINE_DOWN ((NDIS_STATUS)0x40010009L)
128 #define NDIS_STATUS_WAN_FRAGMENT ((NDIS_STATUS)0x4001000AL)
129 #define NDIS_STATUS_MEDIA_CONNECT ((NDIS_STATUS)0x4001000BL)
130 #define NDIS_STATUS_MEDIA_DISCONNECT ((NDIS_STATUS)0x4001000CL)
131 #define NDIS_STATUS_HARDWARE_LINE_UP ((NDIS_STATUS)0x4001000DL)
132 #define NDIS_STATUS_HARDWARE_LINE_DOWN ((NDIS_STATUS)0x4001000EL)
133 #define NDIS_STATUS_INTERFACE_UP ((NDIS_STATUS)0x4001000FL)
134 #define NDIS_STATUS_INTERFACE_DOWN ((NDIS_STATUS)0x40010010L)
135 #define NDIS_STATUS_MEDIA_BUSY ((NDIS_STATUS)0x40010011L)
136 #define NDIS_STATUS_MEDIA_SPECIFIC_INDICATION ((NDIS_STATUS)0x40010012L)
137 #define NDIS_STATUS_WW_INDICATION NDIS_STATUS_MEDIA_SPECIFIC_INDICATION
138 #define NDIS_STATUS_LINK_SPEED_CHANGE ((NDIS_STATUS)0x40010013L)
139 #define NDIS_STATUS_WAN_GET_STATS ((NDIS_STATUS)0x40010014L)
140 #define NDIS_STATUS_WAN_CO_FRAGMENT ((NDIS_STATUS)0x40010015L)
141 #define NDIS_STATUS_WAN_CO_LINKPARAMS ((NDIS_STATUS)0x40010016L)
143 #define NDIS_STATUS_NOT_RESETTABLE ((NDIS_STATUS)0x80010001L)
144 #define NDIS_STATUS_SOFT_ERRORS ((NDIS_STATUS)0x80010003L)
145 #define NDIS_STATUS_HARD_ERRORS ((NDIS_STATUS)0x80010004L)
146 #define NDIS_STATUS_BUFFER_OVERFLOW ((NDIS_STATUS)STATUS_BUFFER_OVERFLOW)
148 #define NDIS_STATUS_FAILURE ((NDIS_STATUS)STATUS_UNSUCCESSFUL)
149 #define NDIS_STATUS_RESOURCES ((NDIS_STATUS)STATUS_INSUFFICIENT_RESOURCES)
150 #define NDIS_STATUS_CLOSING ((NDIS_STATUS)0xC0010002L)
151 #define NDIS_STATUS_BAD_VERSION ((NDIS_STATUS)0xC0010004L)
152 #define NDIS_STATUS_BAD_CHARACTERISTICS ((NDIS_STATUS)0xC0010005L)
153 #define NDIS_STATUS_ADAPTER_NOT_FOUND ((NDIS_STATUS)0xC0010006L)
154 #define NDIS_STATUS_OPEN_FAILED ((NDIS_STATUS)0xC0010007L)
155 #define NDIS_STATUS_DEVICE_FAILED ((NDIS_STATUS)0xC0010008L)
156 #define NDIS_STATUS_MULTICAST_FULL ((NDIS_STATUS)0xC0010009L)
157 #define NDIS_STATUS_MULTICAST_EXISTS ((NDIS_STATUS)0xC001000AL)
158 #define NDIS_STATUS_MULTICAST_NOT_FOUND ((NDIS_STATUS)0xC001000BL)
159 #define NDIS_STATUS_REQUEST_ABORTED ((NDIS_STATUS)0xC001000CL)
160 #define NDIS_STATUS_RESET_IN_PROGRESS ((NDIS_STATUS)0xC001000DL)
161 #define NDIS_STATUS_CLOSING_INDICATING ((NDIS_STATUS)0xC001000EL)
162 #define NDIS_STATUS_NOT_SUPPORTED ((NDIS_STATUS)STATUS_NOT_SUPPORTED)
163 #define NDIS_STATUS_INVALID_PACKET ((NDIS_STATUS)0xC001000FL)
164 #define NDIS_STATUS_OPEN_LIST_FULL ((NDIS_STATUS)0xC0010010L)
165 #define NDIS_STATUS_ADAPTER_NOT_READY ((NDIS_STATUS)0xC0010011L)
166 #define NDIS_STATUS_ADAPTER_NOT_OPEN ((NDIS_STATUS)0xC0010012L)
167 #define NDIS_STATUS_NOT_INDICATING ((NDIS_STATUS)0xC0010013L)
168 #define NDIS_STATUS_INVALID_LENGTH ((NDIS_STATUS)0xC0010014L)
169 #define NDIS_STATUS_INVALID_DATA ((NDIS_STATUS)0xC0010015L)
170 #define NDIS_STATUS_BUFFER_TOO_SHORT ((NDIS_STATUS)0xC0010016L)
171 #define NDIS_STATUS_INVALID_OID ((NDIS_STATUS)0xC0010017L)
172 #define NDIS_STATUS_ADAPTER_REMOVED ((NDIS_STATUS)0xC0010018L)
173 #define NDIS_STATUS_UNSUPPORTED_MEDIA ((NDIS_STATUS)0xC0010019L)
174 #define NDIS_STATUS_GROUP_ADDRESS_IN_USE ((NDIS_STATUS)0xC001001AL)
175 #define NDIS_STATUS_FILE_NOT_FOUND ((NDIS_STATUS)0xC001001BL)
176 #define NDIS_STATUS_ERROR_READING_FILE ((NDIS_STATUS)0xC001001CL)
177 #define NDIS_STATUS_ALREADY_MAPPED ((NDIS_STATUS)0xC001001DL)
178 #define NDIS_STATUS_RESOURCE_CONFLICT ((NDIS_STATUS)0xC001001EL)
179 #define NDIS_STATUS_NO_CABLE ((NDIS_STATUS)0xC001001FL)
181 #define NDIS_STATUS_INVALID_SAP ((NDIS_STATUS)0xC0010020L)
182 #define NDIS_STATUS_SAP_IN_USE ((NDIS_STATUS)0xC0010021L)
183 #define NDIS_STATUS_INVALID_ADDRESS ((NDIS_STATUS)0xC0010022L)
184 #define NDIS_STATUS_VC_NOT_ACTIVATED ((NDIS_STATUS)0xC0010023L)
185 #define NDIS_STATUS_DEST_OUT_OF_ORDER ((NDIS_STATUS)0xC0010024L)
186 #define NDIS_STATUS_VC_NOT_AVAILABLE ((NDIS_STATUS)0xC0010025L)
187 #define NDIS_STATUS_CELLRATE_NOT_AVAILABLE ((NDIS_STATUS)0xC0010026L)
188 #define NDIS_STATUS_INCOMPATABLE_QOS ((NDIS_STATUS)0xC0010027L)
189 #define NDIS_STATUS_AAL_PARAMS_UNSUPPORTED ((NDIS_STATUS)0xC0010028L)
190 #define NDIS_STATUS_NO_ROUTE_TO_DESTINATION ((NDIS_STATUS)0xC0010029L)
192 #define NDIS_STATUS_TOKEN_RING_OPEN_ERROR ((NDIS_STATUS)0xC0011000L)
193 #define NDIS_STATUS_INVALID_DEVICE_REQUEST ((NDIS_STATUS)STATUS_INVALID_DEVICE_REQUEST)
194 #define NDIS_STATUS_NETWORK_UNREACHABLE ((NDIS_STATUS)STATUS_NETWORK_UNREACHABLE)
197 /* NDIS error codes for error logging */
199 #define NDIS_ERROR_CODE_RESOURCE_CONFLICT EVENT_NDIS_RESOURCE_CONFLICT
200 #define NDIS_ERROR_CODE_OUT_OF_RESOURCES EVENT_NDIS_OUT_OF_RESOURCE
201 #define NDIS_ERROR_CODE_HARDWARE_FAILURE EVENT_NDIS_HARDWARE_FAILURE
202 #define NDIS_ERROR_CODE_ADAPTER_NOT_FOUND EVENT_NDIS_ADAPTER_NOT_FOUND
203 #define NDIS_ERROR_CODE_INTERRUPT_CONNECT EVENT_NDIS_INTERRUPT_CONNECT
204 #define NDIS_ERROR_CODE_DRIVER_FAILURE EVENT_NDIS_DRIVER_FAILURE
205 #define NDIS_ERROR_CODE_BAD_VERSION EVENT_NDIS_BAD_VERSION
206 #define NDIS_ERROR_CODE_TIMEOUT EVENT_NDIS_TIMEOUT
207 #define NDIS_ERROR_CODE_NETWORK_ADDRESS EVENT_NDIS_NETWORK_ADDRESS
208 #define NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION EVENT_NDIS_UNSUPPORTED_CONFIGURATION
209 #define NDIS_ERROR_CODE_INVALID_VALUE_FROM_ADAPTER EVENT_NDIS_INVALID_VALUE_FROM_ADAPTER
210 #define NDIS_ERROR_CODE_MISSING_CONFIGURATION_PARAMETER EVENT_NDIS_MISSING_CONFIGURATION_PARAMETER
211 #define NDIS_ERROR_CODE_BAD_IO_BASE_ADDRESS EVENT_NDIS_BAD_IO_BASE_ADDRESS
212 #define NDIS_ERROR_CODE_RECEIVE_SPACE_SMALL EVENT_NDIS_RECEIVE_SPACE_SMALL
213 #define NDIS_ERROR_CODE_ADAPTER_DISABLED EVENT_NDIS_ADAPTER_DISABLED
216 /* Memory allocation flags. Used by Ndis[Allocate|Free]Memory */
217 #define NDIS_MEMORY_CONTIGUOUS 0x00000001
218 #define NDIS_MEMORY_NONCACHED 0x00000002
220 /* NIC attribute flags. Used by NdisMSetAttributes(Ex) */
221 #define NDIS_ATTRIBUTE_IGNORE_PACKET_TIMEOUT 0x00000001
222 #define NDIS_ATTRIBUTE_IGNORE_REQUEST_TIMEOUT 0x00000002
223 #define NDIS_ATTRIBUTE_IGNORE_TOKEN_RING_ERRORS 0x00000004
224 #define NDIS_ATTRIBUTE_BUS_MASTER 0x00000008
225 #define NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER 0x00000010
226 #define NDIS_ATTRIBUTE_DESERIALIZE 0x00000020
227 #define NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND 0x00000040
228 #define NDIS_ATTRIBUTE_SURPRISE_REMOVE_OK 0x00000080
229 #define NDIS_ATTRIBUTE_NOT_CO_NDIS 0x00000100
230 #define NDIS_ATTRIBUTE_USES_SAFE_BUFFER_APIS 0x00000200
235 typedef union _NDIS_RW_LOCK_REFCOUNT
{
238 } NDIS_RW_LOCK_REFCOUNT
;
240 typedef struct _NDIS_RW_LOCK
{
249 NDIS_RW_LOCK_REFCOUNT RefCount
[MAXIMUM_PROCESSORS
];
250 } NDIS_RW_LOCK
, *PNDIS_RW_LOCK
;
252 typedef struct _LOCK_STATE
{
255 } LOCK_STATE
, *PLOCK_STATE
;
262 (DDKAPI
*PNDIS_TIMER_FUNCTION
)(
263 IN PVOID SystemSpecific1
,
264 IN PVOID FunctionContext
,
265 IN PVOID SystemSpecific2
,
266 IN PVOID SystemSpecific3
);
268 typedef struct _NDIS_TIMER
{
271 } NDIS_TIMER
, *PNDIS_TIMER
;
277 typedef CM_MCA_POS_DATA NDIS_MCA_POS_DATA
, *PNDIS_MCA_POS_DATA
;
278 typedef CM_EISA_SLOT_INFORMATION NDIS_EISA_SLOT_INFORMATION
, *PNDIS_EISA_SLOT_INFORMATION
;
279 typedef CM_EISA_FUNCTION_INFORMATION NDIS_EISA_FUNCTION_INFORMATION
, *PNDIS_EISA_FUNCTION_INFORMATION
;
280 typedef CM_PARTIAL_RESOURCE_LIST NDIS_RESOURCE_LIST
, *PNDIS_RESOURCE_LIST
;
282 /* Hardware status codes (OID_GEN_HARDWARE_STATUS) */
283 typedef enum _NDIS_HARDWARE_STATUS
{
284 NdisHardwareStatusReady
,
285 NdisHardwareStatusInitializing
,
286 NdisHardwareStatusReset
,
287 NdisHardwareStatusClosing
,
288 NdisHardwareStatusNotReady
289 } NDIS_HARDWARE_STATUS
, *PNDIS_HARDWARE_STATUS
;
291 /* OID_GEN_GET_TIME_CAPS */
292 typedef struct _GEN_GET_TIME_CAPS
{
294 ULONG ClockPrecision
;
295 } GEN_GET_TIME_CAPS
, *PGEN_GET_TIME_CAPS
;
298 #define READABLE_LOCAL_CLOCK 0x00000001
299 #define CLOCK_NETWORK_DERIVED 0x00000002
300 #define CLOCK_PRECISION 0x00000004
301 #define RECEIVE_TIME_INDICATION_CAPABLE 0x00000008
302 #define TIMED_SEND_CAPABLE 0x00000010
303 #define TIME_STAMP_CAPABLE 0x00000020
305 /* OID_GEN_GET_NETCARD_TIME */
306 typedef struct _GEN_GET_NETCARD_TIME
{
308 } GEN_GET_NETCARD_TIME
, *PGEN_GET_NETCARD_TIME
;
310 /* NDIS packet filter bits (OID_GEN_CURRENT_PACKET_FILTER) */
311 #define NDIS_PACKET_TYPE_DIRECTED 0x00000001
312 #define NDIS_PACKET_TYPE_MULTICAST 0x00000002
313 #define NDIS_PACKET_TYPE_ALL_MULTICAST 0x00000004
314 #define NDIS_PACKET_TYPE_BROADCAST 0x00000008
315 #define NDIS_PACKET_TYPE_SOURCE_ROUTING 0x00000010
316 #define NDIS_PACKET_TYPE_PROMISCUOUS 0x00000020
317 #define NDIS_PACKET_TYPE_SMT 0x00000040
318 #define NDIS_PACKET_TYPE_ALL_LOCAL 0x00000080
319 #define NDIS_PACKET_TYPE_GROUP 0x00001000
320 #define NDIS_PACKET_TYPE_ALL_FUNCTIONAL 0x00002000
321 #define NDIS_PACKET_TYPE_FUNCTIONAL 0x00004000
322 #define NDIS_PACKET_TYPE_MAC_FRAME 0x00008000
324 /* NDIS protocol option bits (OID_GEN_PROTOCOL_OPTIONS) */
325 #define NDIS_PROT_OPTION_ESTIMATED_LENGTH 0x00000001
326 #define NDIS_PROT_OPTION_NO_LOOPBACK 0x00000002
327 #define NDIS_PROT_OPTION_NO_RSVD_ON_RCVPKT 0x00000004
329 /* NDIS MAC option bits (OID_GEN_MAC_OPTIONS) */
330 #define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA 0x00000001
331 #define NDIS_MAC_OPTION_RECEIVE_SERIALIZED 0x00000002
332 #define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND 0x00000004
333 #define NDIS_MAC_OPTION_NO_LOOPBACK 0x00000008
334 #define NDIS_MAC_OPTION_FULL_DUPLEX 0x00000010
335 #define NDIS_MAC_OPTION_EOTX_INDICATION 0x00000020
336 #define NDIS_MAC_OPTION_8021P_PRIORITY 0x00000040
337 #define NDIS_MAC_OPTION_RESERVED 0x80000000
339 /* State of the LAN media (OID_GEN_MEDIA_CONNECT_STATUS) */
340 typedef enum _NDIS_MEDIA_STATE
{
341 NdisMediaStateConnected
,
342 NdisMediaStateDisconnected
343 } NDIS_MEDIA_STATE
, *PNDIS_MEDIA_STATE
;
345 /* OID_GEN_SUPPORTED_GUIDS */
346 typedef struct _NDIS_GUID
{
354 } NDIS_GUID
, *PNDIS_GUID
;
356 #define NDIS_GUID_TO_OID 0x00000001
357 #define NDIS_GUID_TO_STATUS 0x00000002
358 #define NDIS_GUID_ANSI_STRING 0x00000004
359 #define NDIS_GUID_UNICODE_STRING 0x00000008
360 #define NDIS_GUID_ARRAY 0x00000010
362 typedef HANDLE PNDIS_PACKET_POOL
;
364 /* NDIS_PACKET_PRIVATE.Flags constants */
365 #define fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO 0x40
366 #define fPACKET_ALLOCATED_BY_NDIS 0x80
368 typedef struct _NDIS_PACKET_PRIVATE
{
373 PNDIS_PACKET_POOL Pool
;
377 UCHAR NdisPacketFlags
;
378 USHORT NdisPacketOobOffset
;
379 } NDIS_PACKET_PRIVATE
, * PNDIS_PACKET_PRIVATE
;
381 typedef struct _NDIS_PACKET
{
382 NDIS_PACKET_PRIVATE Private
;
385 UCHAR MiniportReserved
[2 * sizeof(PVOID
)];
386 UCHAR WrapperReserved
[2 * sizeof(PVOID
)];
389 UCHAR MiniportReservedEx
[3 * sizeof(PVOID
)];
390 UCHAR WrapperReservedEx
[sizeof(PVOID
)];
393 UCHAR MacReserved
[4 * sizeof(PVOID
)];
396 ULONG_PTR Reserved
[2];
397 UCHAR ProtocolReserved
[1];
398 } NDIS_PACKET
, *PNDIS_PACKET
, **PPNDIS_PACKET
;
400 typedef enum _NDIS_CLASS_ID
{
401 NdisClass802_3Priority
,
402 NdisClassWirelessWanMbxMailbox
,
403 NdisClassIrdaPacketInfo
,
407 typedef struct MediaSpecificInformation
{
408 UINT NextEntryOffset
;
409 NDIS_CLASS_ID ClassId
;
411 UCHAR ClassInformation
[1];
412 } MEDIA_SPECIFIC_INFORMATION
;
414 typedef struct _NDIS_PACKET_OOB_DATA
{
415 _ANONYMOUS_UNION
union {
416 ULONGLONG TimeToSend
;
419 ULONGLONG TimeReceived
;
421 UINT SizeMediaSpecificInfo
;
422 PVOID MediaSpecificInformation
;
424 } NDIS_PACKET_OOB_DATA
, *PNDIS_PACKET_OOB_DATA
;
426 typedef struct _NDIS_PM_PACKET_PATTERN
{
433 } NDIS_PM_PACKET_PATTERN
, *PNDIS_PM_PACKET_PATTERN
;
435 typedef struct _NDIS_PACKET_STACK
{
436 ULONG_PTR IMReserved
[2];
437 ULONG_PTR NdisReserved
[4];
438 } NDIS_PACKET_STACK
, *PNDIS_PACKET_STACK
;
440 /* Request types used by NdisRequest */
441 typedef enum _NDIS_REQUEST_TYPE
{
442 NdisRequestQueryInformation
,
443 NdisRequestSetInformation
,
444 NdisRequestQueryStatistics
,
448 NdisRequestTransferData
,
454 } NDIS_REQUEST_TYPE
, *PNDIS_REQUEST_TYPE
;
456 typedef struct _NDIS_REQUEST
{
457 UCHAR MacReserved
[4 * sizeof(PVOID
)];
458 NDIS_REQUEST_TYPE RequestType
;
460 struct QUERY_INFORMATION
{
462 PVOID InformationBuffer
;
463 UINT InformationBufferLength
;
467 struct SET_INFORMATION
{
469 PVOID InformationBuffer
;
470 UINT InformationBufferLength
;
475 #if (defined(NDIS50) || defined(NDIS51))
476 UCHAR NdisReserved
[9 * sizeof(PVOID
)];
478 UCHAR CallMgrReserved
[2 * sizeof(PVOID
)];
479 UCHAR ProtocolReserved
[2 * sizeof(PVOID
)];
481 UCHAR MiniportReserved
[2 * sizeof(PVOID
)];
483 } NDIS_REQUEST
, *PNDIS_REQUEST
;
487 /* Wide Area Networks definitions */
489 typedef struct _NDIS_WAN_PACKET
{
490 LIST_ENTRY WanPacketQueue
;
491 PUCHAR CurrentBuffer
;
495 PVOID ProtocolReserved1
;
496 PVOID ProtocolReserved2
;
497 PVOID ProtocolReserved3
;
498 PVOID ProtocolReserved4
;
503 } NDIS_WAN_PACKET
, *PNDIS_WAN_PACKET
;
507 /* DMA channel information */
509 typedef struct _NDIS_DMA_DESCRIPTION
{
511 BOOLEAN AutoInitialize
;
512 BOOLEAN DmaChannelSpecified
;
517 } NDIS_DMA_DESCRIPTION
, *PNDIS_DMA_DESCRIPTION
;
519 typedef struct _NDIS_DMA_BLOCK
{
520 PVOID MapRegisterBase
;
521 KEVENT AllocationEvent
;
522 PADAPTER_OBJECT SystemAdapterObject
;
525 } NDIS_DMA_BLOCK
, *PNDIS_DMA_BLOCK
;
527 typedef UCHAR NDIS_DMA_SIZE
;
529 #define NDIS_DMA_24BITS ((NDIS_DMA_SIZE)0)
530 #define NDIS_DMA_32BITS ((NDIS_DMA_SIZE)1)
531 #define NDIS_DMA_64BITS ((NDIS_DMA_SIZE)2)
533 typedef enum _NDIS_PROCESSOR_TYPE
{
539 } NDIS_PROCESSOR_TYPE
, *PNDIS_PROCESSOR_TYPE
;
541 typedef enum _NDIS_ENVIRONMENT_TYPE
{
542 NdisEnvironmentWindows
,
543 NdisEnvironmentWindowsNt
544 } NDIS_ENVIRONMENT_TYPE
, *PNDIS_ENVIRONMENT_TYPE
;
546 /* Possible hardware architecture */
547 typedef enum _NDIS_INTERFACE_TYPE
{
548 NdisInterfaceInternal
= Internal
,
549 NdisInterfaceIsa
= Isa
,
550 NdisInterfaceEisa
= Eisa
,
551 NdisInterfaceMca
= MicroChannel
,
552 NdisInterfaceTurboChannel
= TurboChannel
,
553 NdisInterfacePci
= PCIBus
,
554 NdisInterfacePcMcia
= PCMCIABus
,
555 NdisInterfaceCBus
= CBus
,
556 NdisInterfaceMPIBus
= MPIBus
,
557 NdisInterfaceMPSABus
= MPSABus
,
558 NdisInterfaceProcessorInternal
= ProcessorInternal
,
559 NdisInterfaceInternalPowerBus
= InternalPowerBus
,
560 NdisInterfacePNPISABus
= PNPISABus
,
561 NdisInterfacePNPBus
= PNPBus
,
562 NdisMaximumInterfaceType
563 } NDIS_INTERFACE_TYPE
, *PNDIS_INTERFACE_TYPE
;
565 #define NdisInterruptLevelSensitive LevelSensitive
566 #define NdisInterruptLatched Latched
567 typedef KINTERRUPT_MODE NDIS_INTERRUPT_MODE
, *PNDIS_INTERRUPT_MODE
;
570 typedef enum _NDIS_PARAMETER_TYPE
{
571 NdisParameterInteger
,
572 NdisParameterHexInteger
,
574 NdisParameterMultiString
,
576 } NDIS_PARAMETER_TYPE
, *PNDIS_PARAMETER_TYPE
;
583 typedef struct _NDIS_CONFIGURATION_PARAMETER
{
584 NDIS_PARAMETER_TYPE ParameterType
;
587 NDIS_STRING StringData
;
588 BINARY_DATA BinaryData
;
590 } NDIS_CONFIGURATION_PARAMETER
, *PNDIS_CONFIGURATION_PARAMETER
;
593 typedef PHYSICAL_ADDRESS NDIS_PHYSICAL_ADDRESS
, *PNDIS_PHYSICAL_ADDRESS
;
595 typedef struct _NDIS_PHYSICAL_ADDRESS_UNIT
{
596 NDIS_PHYSICAL_ADDRESS PhysicalAddress
;
598 } NDIS_PHYSICAL_ADDRESS_UNIT
, *PNDIS_PHYSICAL_ADDRESS_UNIT
;
600 typedef struct _NDIS_WAN_LINE_DOWN
{
601 UCHAR RemoteAddress
[6];
602 UCHAR LocalAddress
[6];
603 } NDIS_WAN_LINE_DOWN
, *PNDIS_WAN_LINE_DOWN
;
605 typedef struct _NDIS_WAN_LINE_UP
{
607 ULONG MaximumTotalSize
;
608 NDIS_WAN_QUALITY Quality
;
610 UCHAR RemoteAddress
[6];
611 OUT UCHAR LocalAddress
[6];
612 ULONG ProtocolBufferLength
;
613 PUCHAR ProtocolBuffer
;
615 NDIS_STRING DeviceName
;
616 } NDIS_WAN_LINE_UP
, *PNDIS_WAN_LINE_UP
;
620 (DDKAPI
*ADAPTER_SHUTDOWN_HANDLER
)(
621 IN PVOID ShutdownContext
);
624 (DDKAPI
*TDI_REGISTER_CALLBACK
)(
625 IN PUNICODE_STRING DeviceName
,
626 OUT HANDLE
* TdiHandle
);
629 (DDKAPI
*TDI_PNP_HANDLER
)(
630 IN PUNICODE_STRING UpperComponent
,
631 IN PUNICODE_STRING LowerComponent
,
632 IN PUNICODE_STRING BindList
,
633 IN PVOID ReconfigBuffer
,
634 IN UINT ReconfigBufferSize
,
637 typedef struct _OID_LIST OID_LIST
, *POID_LIST
;
641 typedef enum _NDIS_PNP_DEVICE_STATE
{
643 NdisPnPDeviceStarted
,
644 NdisPnPDeviceQueryStopped
,
645 NdisPnPDeviceStopped
,
646 NdisPnPDeviceQueryRemoved
,
647 NdisPnPDeviceRemoved
,
648 NdisPnPDeviceSurpriseRemoved
649 } NDIS_PNP_DEVICE_STATE
;
651 #define NDIS_DEVICE_NOT_STOPPABLE 0x00000001
652 #define NDIS_DEVICE_NOT_REMOVEABLE 0x00000002
653 #define NDIS_DEVICE_NOT_SUSPENDABLE 0x00000004
654 #define NDIS_DEVICE_DISABLE_PM 0x00000008
655 #define NDIS_DEVICE_DISABLE_WAKE_UP 0x00000010
656 #define NDIS_DEVICE_DISABLE_WAKE_ON_RECONNECT 0x00000020
657 #define NDIS_DEVICE_RESERVED 0x00000040
658 #define NDIS_DEVICE_DISABLE_WAKE_ON_MAGIC_PACKET 0x00000080
659 #define NDIS_DEVICE_DISABLE_WAKE_ON_PATTERN_MATCH 0x00000100
662 /* OID_GEN_NETWORK_LAYER_ADDRESSES */
663 typedef struct _NETWORK_ADDRESS
{
664 USHORT AddressLength
;
667 } NETWORK_ADDRESS
, *PNETWORK_ADDRESS
;
669 typedef struct _NETWORK_ADDRESS_LIST
{
672 NETWORK_ADDRESS Address
[1];
673 } NETWORK_ADDRESS_LIST
, *PNETWORK_ADDRESS_LIST
;
675 /* Protocol types supported by NDIS */
676 #define NDIS_PROTOCOL_ID_DEFAULT 0x00
677 #define NDIS_PROTOCOL_ID_TCP_IP 0x02
678 #define NDIS_PROTOCOL_ID_IPX 0x06
679 #define NDIS_PROTOCOL_ID_NBF 0x07
680 #define NDIS_PROTOCOL_ID_MAX 0x0F
681 #define NDIS_PROTOCOL_ID_MASK 0x0F
684 /* OID_GEN_TRANSPORT_HEADER_OFFSET */
685 typedef struct _TRANSPORT_HEADER_OFFSET
{
688 } TRANSPORT_HEADER_OFFSET
, *PTRANSPORT_HEADER_OFFSET
;
691 /* OID_GEN_CO_LINK_SPEED / OID_GEN_CO_MINIMUM_LINK_SPEED */
692 typedef struct _NDIS_CO_LINK_SPEED
{
695 } NDIS_CO_LINK_SPEED
, *PNDIS_CO_LINK_SPEED
;
697 typedef ULONG NDIS_AF
, *PNDIS_AF
;
698 #define CO_ADDRESS_FAMILY_Q2931 ((NDIS_AF)0x1)
699 #define CO_ADDRESS_FAMILY_PSCHED ((NDIS_AF)0x2)
700 #define CO_ADDRESS_FAMILY_L2TP ((NDIS_AF)0x3)
701 #define CO_ADDRESS_FAMILY_IRDA ((NDIS_AF)0x4)
702 #define CO_ADDRESS_FAMILY_1394 ((NDIS_AF)0x5)
703 #define CO_ADDRESS_FAMILY_PPP ((NDIS_AF)0x6)
704 #define CO_ADDRESS_FAMILY_TAPI ((NDIS_AF)0x800)
705 #define CO_ADDRESS_FAMILY_TAPI_PROXY ((NDIS_AF)0x801)
707 #define CO_ADDRESS_FAMILY_PROXY 0x80000000
710 NDIS_AF AddressFamily
;
713 } CO_ADDRESS_FAMILY
, *PCO_ADDRESS_FAMILY
;
715 typedef struct _CO_SPECIFIC_PARAMETERS
{
719 } CO_SPECIFIC_PARAMETERS
, *PCO_SPECIFIC_PARAMETERS
;
721 typedef struct _CO_CALL_MANAGER_PARAMETERS
{
724 CO_SPECIFIC_PARAMETERS CallMgrSpecific
;
725 } CO_CALL_MANAGER_PARAMETERS
, *PCO_CALL_MANAGER_PARAMETERS
;
727 /* CO_MEDIA_PARAMETERS.Flags constants */
728 #define RECEIVE_TIME_INDICATION 0x00000001
729 #define USE_TIME_STAMPS 0x00000002
730 #define TRANSMIT_VC 0x00000004
731 #define RECEIVE_VC 0x00000008
732 #define INDICATE_ERRED_PACKETS 0x00000010
733 #define INDICATE_END_OF_TX 0x00000020
734 #define RESERVE_RESOURCES_VC 0x00000040
735 #define ROUND_DOWN_FLOW 0x00000080
736 #define ROUND_UP_FLOW 0x00000100
738 typedef struct _CO_MEDIA_PARAMETERS
{
740 ULONG ReceivePriority
;
741 ULONG ReceiveSizeHint
;
742 CO_SPECIFIC_PARAMETERS MediaSpecific
;
743 } CO_MEDIA_PARAMETERS
, *PCO_MEDIA_PARAMETERS
;
745 /* CO_CALL_PARAMETERS.Flags constants */
746 #define PERMANENT_VC 0x00000001
747 #define CALL_PARAMETERS_CHANGED 0x00000002
748 #define QUERY_CALL_PARAMETERS 0x00000004
749 #define BROADCAST_VC 0x00000008
750 #define MULTIPOINT_VC 0x00000010
752 typedef struct _CO_CALL_PARAMETERS
{
754 PCO_CALL_MANAGER_PARAMETERS CallMgrParameters
;
755 PCO_MEDIA_PARAMETERS MediaParameters
;
756 } CO_CALL_PARAMETERS
, *PCO_CALL_PARAMETERS
;
758 typedef struct _CO_SAP
{
764 typedef struct _NDIS_IPSEC_PACKET_INFO
{
765 _ANONYMOUS_UNION
union {
767 NDIS_HANDLE OffloadHandle
;
768 NDIS_HANDLE NextOffloadHandle
;
771 ULONG SA_DELETE_REQ
: 1;
772 ULONG CRYPTO_DONE
: 1;
773 ULONG NEXT_CRYPTO_DONE
: 1;
777 } NDIS_IPSEC_PACKET_INFO
, *PNDIS_IPSEC_PACKET_INFO
;
779 /* NDIS_MAC_FRAGMENT.Errors constants */
780 #define WAN_ERROR_CRC 0x00000001
781 #define WAN_ERROR_FRAMING 0x00000002
782 #define WAN_ERROR_HARDWAREOVERRUN 0x00000004
783 #define WAN_ERROR_BUFFEROVERRUN 0x00000008
784 #define WAN_ERROR_TIMEOUT 0x00000010
785 #define WAN_ERROR_ALIGNMENT 0x00000020
787 typedef struct _NDIS_MAC_FRAGMENT
{
788 NDIS_HANDLE NdisLinkContext
;
790 } NDIS_MAC_FRAGMENT
, *PNDIS_MAC_FRAGMENT
;
792 typedef struct _NDIS_MAC_LINE_DOWN
{
793 NDIS_HANDLE NdisLinkContext
;
794 } NDIS_MAC_LINE_DOWN
, *PNDIS_MAC_LINE_DOWN
;
796 typedef struct _NDIS_MAC_LINE_UP
{
798 NDIS_WAN_QUALITY Quality
;
800 NDIS_HANDLE ConnectionWrapperID
;
801 NDIS_HANDLE NdisLinkHandle
;
802 NDIS_HANDLE NdisLinkContext
;
803 } NDIS_MAC_LINE_UP
, *PNDIS_MAC_LINE_UP
;
805 typedef struct _NDIS_PACKET_8021Q_INFO
{
806 _ANONYMOUS_UNION
union {
808 UINT32 UserPriority
: 3;
809 UINT32 CanonicalFormatId
: 1;
811 UINT32 Reserved
: 16;
815 } NDIS_PACKET_8021Q_INFO
, *PNDIS_PACKET_8021Q_INFO
;
817 typedef enum _NDIS_PER_PACKET_INFO
{
818 TcpIpChecksumPacketInfo
,
820 TcpLargeSendPacketInfo
,
821 ClassificationHandlePacketInfo
,
823 ScatterGatherListPacketInfo
,
828 } NDIS_PER_PACKET_INFO
, *PNDIS_PER_PACKET_INFO
;
830 typedef struct _NDIS_PACKET_EXTENSION
{
831 PVOID NdisPacketInfo
[MaxPerPacketInfo
];
832 } NDIS_PACKET_EXTENSION
, *PNDIS_PACKET_EXTENSION
;
834 typedef struct _NDIS_GENERIC_OBJECT
{
835 NDIS_OBJECT_HEADER Header
;
838 PDRIVER_OBJECT DriverObject
;
839 } NDIS_GENERIC_OBJECT
, *PNDIS_GENERIC_OBJECT
;
843 * NDIS_GET_ORIGINAL_PACKET(
844 * IN PNDIS_PACKET Packet);
846 #define NDIS_GET_ORIGINAL_PACKET(Packet) \
847 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, OriginalPacketInfo)
851 * NDIS_GET_PACKET_CANCEL_ID(
852 * IN PNDIS_PACKET Packet);
854 #define NDIS_GET_PACKET_CANCEL_ID(Packet) \
855 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, PacketCancelId)
858 * PNDIS_PACKET_EXTENSION
859 * NDIS_PACKET_EXTENSION_FROM_PACKET(
860 * IN PNDIS_PACKET Packet);
862 #define NDIS_PACKET_EXTENSION_FROM_PACKET(Packet) \
863 ((PNDIS_PACKET_EXTENSION)((PUCHAR)(Packet) \
864 + (Packet)->Private.NdisPacketOobOffset + sizeof(NDIS_PACKET_OOB_DATA)))
868 * NDIS_PER_PACKET_INFO_FROM_PACKET(
869 * IN OUT PNDIS_PACKET Packet,
870 * IN NDIS_PER_PACKET_INFO InfoType);
872 #define NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, InfoType) \
873 ((PNDIS_PACKET_EXTENSION)((PUCHAR)(Packet) + (Packet)->Private.NdisPacketOobOffset \
874 + sizeof(NDIS_PACKET_OOB_DATA)))->NdisPacketInfo[(InfoType)]
878 * NDIS_SET_ORIGINAL_PACKET(
879 * IN OUT PNDIS_PACKET Packet,
880 * IN PNDIS_PACKET OriginalPacket);
882 #define NDIS_SET_ORIGINAL_PACKET(Packet, OriginalPacket) \
883 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, OriginalPacketInfo) = (OriginalPacket)
887 * NDIS_SET_PACKET_CANCEL_ID(
888 * IN PNDIS_PACKET Packet
889 * IN ULONG_PTR CancelId);
891 #define NDIS_SET_PACKET_CANCEL_ID(Packet, CancelId) \
892 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, PacketCancelId) = (CancelId)
894 typedef enum _NDIS_TASK
{
895 TcpIpChecksumNdisTask
,
897 TcpLargeSendNdisTask
,
899 } NDIS_TASK
, *PNDIS_TASK
;
901 typedef struct _NDIS_TASK_IPSEC
{
903 ULONG AH_ESP_COMBINED
;
904 ULONG TRANSPORT_TUNNEL_COMBINED
;
921 ULONG TRIPLE_DES
: 1;
928 } NDIS_TASK_IPSEC
, *PNDIS_TASK_IPSEC
;
930 typedef struct _NDIS_TASK_OFFLOAD
{
934 ULONG OffsetNextTask
;
935 ULONG TaskBufferLength
;
937 } NDIS_TASK_OFFLOAD
, *PNDIS_TASK_OFFLOAD
;
939 /* NDIS_TASK_OFFLOAD_HEADER.Version constants */
940 #define NDIS_TASK_OFFLOAD_VERSION 1
942 typedef enum _NDIS_ENCAPSULATION
{
943 UNSPECIFIED_Encapsulation
,
945 IEEE_802_3_Encapsulation
,
946 IEEE_802_5_Encapsulation
,
947 LLC_SNAP_ROUTED_Encapsulation
,
948 LLC_SNAP_BRIDGED_Encapsulation
949 } NDIS_ENCAPSULATION
;
951 typedef struct _NDIS_ENCAPSULATION_FORMAT
{
952 NDIS_ENCAPSULATION Encapsulation
;
954 ULONG FixedHeaderSize
: 1;
957 ULONG EncapsulationHeaderSize
;
958 } NDIS_ENCAPSULATION_FORMAT
, *PNDIS_ENCAPSULATION_FORMAT
;
960 typedef struct _NDIS_TASK_OFFLOAD_HEADER
965 ULONG OffsetFirstTask
;
966 NDIS_ENCAPSULATION_FORMAT EncapsulationFormat
;
967 } NDIS_TASK_OFFLOAD_HEADER
, *PNDIS_TASK_OFFLOAD_HEADER
;
969 typedef struct _NDIS_TASK_TCP_IP_CHECKSUM
{
971 ULONG IpOptionsSupported
:1;
972 ULONG TcpOptionsSupported
:1;
979 ULONG IpOptionsSupported
: 1;
980 ULONG TcpOptionsSupported
: 1;
981 ULONG TcpChecksum
: 1;
982 ULONG UdpChecksum
: 1;
983 ULONG IpChecksum
: 1;
987 ULONG IpOptionsSupported
: 1;
988 ULONG TcpOptionsSupported
: 1;
989 ULONG TcpChecksum
: 1;
990 ULONG UdpChecksum
: 1;
994 ULONG IpOptionsSupported
: 1;
995 ULONG TcpOptionsSupported
: 1;
996 ULONG TcpChecksum
: 1;
997 ULONG UdpChecksum
: 1;
999 } NDIS_TASK_TCP_IP_CHECKSUM
, *PNDIS_TASK_TCP_IP_CHECKSUM
;
1001 typedef struct _NDIS_TASK_TCP_LARGE_SEND
{
1003 ULONG MaxOffLoadSize
;
1004 ULONG MinSegmentCount
;
1007 } NDIS_TASK_TCP_LARGE_SEND
, *PNDIS_TASK_TCP_LARGE_SEND
;
1009 typedef struct _NDIS_TCP_IP_CHECKSUM_PACKET_INFO
{
1010 _ANONYMOUS_UNION
union {
1012 ULONG NdisPacketChecksumV4
: 1;
1013 ULONG NdisPacketChecksumV6
: 1;
1014 ULONG NdisPacketTcpChecksum
: 1;
1015 ULONG NdisPacketUdpChecksum
: 1;
1016 ULONG NdisPacketIpChecksum
: 1;
1020 ULONG NdisPacketTcpChecksumFailed
: 1;
1021 ULONG NdisPacketUdpChecksumFailed
: 1;
1022 ULONG NdisPacketIpChecksumFailed
: 1;
1023 ULONG NdisPacketTcpChecksumSucceeded
: 1;
1024 ULONG NdisPacketUdpChecksumSucceeded
: 1;
1025 ULONG NdisPacketIpChecksumSucceeded
: 1;
1026 ULONG NdisPacketLoopback
: 1;
1030 } NDIS_TCP_IP_CHECKSUM_PACKET_INFO
, *PNDIS_TCP_IP_CHECKSUM_PACKET_INFO
;
1032 typedef struct _NDIS_WAN_CO_FRAGMENT
{
1034 } NDIS_WAN_CO_FRAGMENT
, *PNDIS_WAN_CO_FRAGMENT
;
1036 typedef struct _NDIS_WAN_FRAGMENT
{
1037 UCHAR RemoteAddress
[6];
1038 UCHAR LocalAddress
[6];
1039 } NDIS_WAN_FRAGMENT
, *PNDIS_WAN_FRAGMENT
;
1041 typedef struct _WAN_CO_LINKPARAMS
{
1042 ULONG TransmitSpeed
;
1045 } WAN_CO_LINKPARAMS
, *PWAN_CO_LINKPARAMS
;
1051 (DDKAPI
*CM_ACTIVATE_VC_COMPLETE_HANDLER
)(
1052 IN NDIS_STATUS Status
,
1053 IN NDIS_HANDLE CallMgrVcContext
,
1054 IN PCO_CALL_PARAMETERS CallParameters
);
1057 (DDKAPI
*CM_ADD_PARTY_HANDLER
)(
1058 IN NDIS_HANDLE CallMgrVcContext
,
1059 IN OUT PCO_CALL_PARAMETERS CallParameters
,
1060 IN NDIS_HANDLE NdisPartyHandle
,
1061 OUT PNDIS_HANDLE CallMgrPartyContext
);
1064 (DDKAPI
*CM_CLOSE_AF_HANDLER
)(
1065 IN NDIS_HANDLE CallMgrAfContext
);
1068 (DDKAPI
*CM_CLOSE_CALL_HANDLER
)(
1069 IN NDIS_HANDLE CallMgrVcContext
,
1070 IN NDIS_HANDLE CallMgrPartyContext OPTIONAL
,
1071 IN PVOID CloseData OPTIONAL
,
1072 IN UINT Size OPTIONAL
);
1075 (DDKAPI
*CM_DEREG_SAP_HANDLER
)(
1076 IN NDIS_HANDLE CallMgrSapContext
);
1079 (DDKAPI
*CM_DEACTIVATE_VC_COMPLETE_HANDLER
)(
1080 IN NDIS_STATUS Status
,
1081 IN NDIS_HANDLE CallMgrVcContext
);
1084 (DDKAPI
*CM_DROP_PARTY_HANDLER
)(
1085 IN NDIS_HANDLE CallMgrPartyContext
,
1086 IN PVOID CloseData OPTIONAL
,
1087 IN UINT Size OPTIONAL
);
1090 (DDKAPI
*CM_INCOMING_CALL_COMPLETE_HANDLER
)(
1091 IN NDIS_STATUS Status
,
1092 IN NDIS_HANDLE CallMgrVcContext
,
1093 IN PCO_CALL_PARAMETERS CallParameters
);
1096 (DDKAPI
*CM_MAKE_CALL_HANDLER
)(
1097 IN NDIS_HANDLE CallMgrVcContext
,
1098 IN OUT PCO_CALL_PARAMETERS CallParameters
,
1099 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
1100 OUT PNDIS_HANDLE CallMgrPartyContext OPTIONAL
);
1103 (DDKAPI
*CM_MODIFY_CALL_QOS_HANDLER
)(
1104 IN NDIS_HANDLE CallMgrVcContext
,
1105 IN PCO_CALL_PARAMETERS CallParameters
);
1108 (DDKAPI
*CM_OPEN_AF_HANDLER
)(
1109 IN NDIS_HANDLE CallMgrBindingContext
,
1110 IN PCO_ADDRESS_FAMILY AddressFamily
,
1111 IN NDIS_HANDLE NdisAfHandle
,
1112 OUT PNDIS_HANDLE CallMgrAfContext
);
1115 (DDKAPI
*CM_REG_SAP_HANDLER
)(
1116 IN NDIS_HANDLE CallMgrAfContext
,
1118 IN NDIS_HANDLE NdisSapHandle
,
1119 OUT PNDIS_HANDLE CallMgrSapContext
);
1122 (DDKAPI
*CO_CREATE_VC_HANDLER
)(
1123 IN NDIS_HANDLE ProtocolAfContext
,
1124 IN NDIS_HANDLE NdisVcHandle
,
1125 OUT PNDIS_HANDLE ProtocolVcContext
);
1128 (DDKAPI
*CO_DELETE_VC_HANDLER
)(
1129 IN NDIS_HANDLE ProtocolVcContext
);
1132 (DDKAPI
*CO_REQUEST_COMPLETE_HANDLER
)(
1133 IN NDIS_STATUS Status
,
1134 IN NDIS_HANDLE ProtocolAfContext OPTIONAL
,
1135 IN NDIS_HANDLE ProtocolVcContext OPTIONAL
,
1136 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
,
1137 IN PNDIS_REQUEST NdisRequest
);
1140 (DDKAPI
*CO_REQUEST_HANDLER
)(
1141 IN NDIS_HANDLE ProtocolAfContext
,
1142 IN NDIS_HANDLE ProtocolVcContext OPTIONAL
,
1143 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
,
1144 IN OUT PNDIS_REQUEST NdisRequest
);
1146 typedef struct _NDIS_CALL_MANAGER_CHARACTERISTICS
{
1151 CO_CREATE_VC_HANDLER CmCreateVcHandler
;
1152 CO_DELETE_VC_HANDLER CmDeleteVcHandler
;
1153 CM_OPEN_AF_HANDLER CmOpenAfHandler
;
1154 CM_CLOSE_AF_HANDLER CmCloseAfHandler
;
1155 CM_REG_SAP_HANDLER CmRegisterSapHandler
;
1156 CM_DEREG_SAP_HANDLER CmDeregisterSapHandler
;
1157 CM_MAKE_CALL_HANDLER CmMakeCallHandler
;
1158 CM_CLOSE_CALL_HANDLER CmCloseCallHandler
;
1159 CM_INCOMING_CALL_COMPLETE_HANDLER CmIncomingCallCompleteHandler
;
1160 CM_ADD_PARTY_HANDLER CmAddPartyHandler
;
1161 CM_DROP_PARTY_HANDLER CmDropPartyHandler
;
1162 CM_ACTIVATE_VC_COMPLETE_HANDLER CmActivateVcCompleteHandler
;
1163 CM_DEACTIVATE_VC_COMPLETE_HANDLER CmDeactivateVcCompleteHandler
;
1164 CM_MODIFY_CALL_QOS_HANDLER CmModifyCallQoSHandler
;
1165 CO_REQUEST_HANDLER CmRequestHandler
;
1166 CO_REQUEST_COMPLETE_HANDLER CmRequestCompleteHandler
;
1167 } NDIS_CALL_MANAGER_CHARACTERISTICS
, *PNDIS_CALL_MANAGER_CHARACTERISTICS
;
1171 /* Call Manager clients */
1173 typedef VOID (*CL_OPEN_AF_COMPLETE_HANDLER
)(
1174 IN NDIS_STATUS Status
,
1175 IN NDIS_HANDLE ProtocolAfContext
,
1176 IN NDIS_HANDLE NdisAfHandle
);
1179 (DDKAPI
*CL_CLOSE_AF_COMPLETE_HANDLER
)(
1180 IN NDIS_STATUS Status
,
1181 IN NDIS_HANDLE ProtocolAfContext
);
1184 (DDKAPI
*CL_REG_SAP_COMPLETE_HANDLER
)(
1185 IN NDIS_STATUS Status
,
1186 IN NDIS_HANDLE ProtocolSapContext
,
1188 IN NDIS_HANDLE NdisSapHandle
);
1191 (DDKAPI
*CL_DEREG_SAP_COMPLETE_HANDLER
)(
1192 IN NDIS_STATUS Status
,
1193 IN NDIS_HANDLE ProtocolSapContext
);
1196 (DDKAPI
*CL_MAKE_CALL_COMPLETE_HANDLER
)(
1197 IN NDIS_STATUS Status
,
1198 IN NDIS_HANDLE ProtocolVcContext
,
1199 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
1200 IN PCO_CALL_PARAMETERS CallParameters
);
1203 (DDKAPI
*CL_MODIFY_CALL_QOS_COMPLETE_HANDLER
)(
1204 IN NDIS_STATUS Status
,
1205 IN NDIS_HANDLE ProtocolVcContext
,
1206 IN PCO_CALL_PARAMETERS CallParameters
);
1209 (DDKAPI
*CL_CLOSE_CALL_COMPLETE_HANDLER
)(
1210 IN NDIS_STATUS Status
,
1211 IN NDIS_HANDLE ProtocolVcContext
,
1212 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
);
1215 (DDKAPI
*CL_ADD_PARTY_COMPLETE_HANDLER
)(
1216 IN NDIS_STATUS Status
,
1217 IN NDIS_HANDLE ProtocolPartyContext
,
1218 IN NDIS_HANDLE NdisPartyHandle
,
1219 IN PCO_CALL_PARAMETERS CallParameters
);
1222 (DDKAPI
*CL_DROP_PARTY_COMPLETE_HANDLER
)(
1223 IN NDIS_STATUS Status
,
1224 IN NDIS_HANDLE ProtocolPartyContext
);
1227 (DDKAPI
*CL_INCOMING_CALL_HANDLER
)(
1228 IN NDIS_HANDLE ProtocolSapContext
,
1229 IN NDIS_HANDLE ProtocolVcContext
,
1230 IN OUT PCO_CALL_PARAMETERS CallParameters
);
1233 (DDKAPI
*CL_INCOMING_CALL_QOS_CHANGE_HANDLER
)(
1234 IN NDIS_HANDLE ProtocolVcContext
,
1235 IN PCO_CALL_PARAMETERS CallParameters
);
1238 (DDKAPI
*CL_INCOMING_CLOSE_CALL_HANDLER
)(
1239 IN NDIS_STATUS CloseStatus
,
1240 IN NDIS_HANDLE ProtocolVcContext
,
1241 IN PVOID CloseData OPTIONAL
,
1242 IN UINT Size OPTIONAL
);
1245 (DDKAPI
*CL_INCOMING_DROP_PARTY_HANDLER
)(
1246 IN NDIS_STATUS DropStatus
,
1247 IN NDIS_HANDLE ProtocolPartyContext
,
1248 IN PVOID CloseData OPTIONAL
,
1249 IN UINT Size OPTIONAL
);
1252 (DDKAPI
*CL_CALL_CONNECTED_HANDLER
)(
1253 IN NDIS_HANDLE ProtocolVcContext
);
1256 typedef struct _NDIS_CLIENT_CHARACTERISTICS
{
1261 CO_CREATE_VC_HANDLER ClCreateVcHandler
;
1262 CO_DELETE_VC_HANDLER ClDeleteVcHandler
;
1263 CO_REQUEST_HANDLER ClRequestHandler
;
1264 CO_REQUEST_COMPLETE_HANDLER ClRequestCompleteHandler
;
1265 CL_OPEN_AF_COMPLETE_HANDLER ClOpenAfCompleteHandler
;
1266 CL_CLOSE_AF_COMPLETE_HANDLER ClCloseAfCompleteHandler
;
1267 CL_REG_SAP_COMPLETE_HANDLER ClRegisterSapCompleteHandler
;
1268 CL_DEREG_SAP_COMPLETE_HANDLER ClDeregisterSapCompleteHandler
;
1269 CL_MAKE_CALL_COMPLETE_HANDLER ClMakeCallCompleteHandler
;
1270 CL_MODIFY_CALL_QOS_COMPLETE_HANDLER ClModifyCallQoSCompleteHandler
;
1271 CL_CLOSE_CALL_COMPLETE_HANDLER ClCloseCallCompleteHandler
;
1272 CL_ADD_PARTY_COMPLETE_HANDLER ClAddPartyCompleteHandler
;
1273 CL_DROP_PARTY_COMPLETE_HANDLER ClDropPartyCompleteHandler
;
1274 CL_INCOMING_CALL_HANDLER ClIncomingCallHandler
;
1275 CL_INCOMING_CALL_QOS_CHANGE_HANDLER ClIncomingCallQoSChangeHandler
;
1276 CL_INCOMING_CLOSE_CALL_HANDLER ClIncomingCloseCallHandler
;
1277 CL_INCOMING_DROP_PARTY_HANDLER ClIncomingDropPartyHandler
;
1278 CL_CALL_CONNECTED_HANDLER ClCallConnectedHandler
;
1279 } NDIS_CLIENT_CHARACTERISTICS
, *PNDIS_CLIENT_CHARACTERISTICS
;
1282 /* NDIS protocol structures */
1284 /* Prototypes for NDIS 3.0 protocol characteristics */
1287 (DDKAPI
*OPEN_ADAPTER_COMPLETE_HANDLER
)(
1288 IN NDIS_HANDLE ProtocolBindingContext
,
1289 IN NDIS_STATUS Status
,
1290 IN NDIS_STATUS OpenErrorStatus
);
1293 (DDKAPI
*CLOSE_ADAPTER_COMPLETE_HANDLER
)(
1294 IN NDIS_HANDLE ProtocolBindingContext
,
1295 IN NDIS_STATUS Status
);
1298 (DDKAPI
*RESET_COMPLETE_HANDLER
)(
1299 IN NDIS_HANDLE ProtocolBindingContext
,
1300 IN NDIS_STATUS Status
);
1303 (DDKAPI
*REQUEST_COMPLETE_HANDLER
)(
1304 IN NDIS_HANDLE ProtocolBindingContext
,
1305 IN PNDIS_REQUEST NdisRequest
,
1306 IN NDIS_STATUS Status
);
1309 (DDKAPI
*STATUS_HANDLER
)(
1310 IN NDIS_HANDLE ProtocolBindingContext
,
1311 IN NDIS_STATUS GeneralStatus
,
1312 IN PVOID StatusBuffer
,
1313 IN UINT StatusBufferSize
);
1316 (DDKAPI
*STATUS_COMPLETE_HANDLER
)(
1317 IN NDIS_HANDLE ProtocolBindingContext
);
1320 (DDKAPI
*SEND_COMPLETE_HANDLER
)(
1321 IN NDIS_HANDLE ProtocolBindingContext
,
1322 IN PNDIS_PACKET Packet
,
1323 IN NDIS_STATUS Status
);
1326 (DDKAPI
*WAN_SEND_COMPLETE_HANDLER
)(
1327 IN NDIS_HANDLE ProtocolBindingContext
,
1328 IN PNDIS_WAN_PACKET Packet
,
1329 IN NDIS_STATUS Status
);
1332 (DDKAPI
*TRANSFER_DATA_COMPLETE_HANDLER
)(
1333 IN NDIS_HANDLE ProtocolBindingContext
,
1334 IN PNDIS_PACKET Packet
,
1335 IN NDIS_STATUS Status
,
1336 IN UINT BytesTransferred
);
1339 (DDKAPI
*WAN_TRANSFER_DATA_COMPLETE_HANDLER
)(
1344 (DDKAPI
*RECEIVE_HANDLER
)(
1345 IN NDIS_HANDLE ProtocolBindingContext
,
1346 IN NDIS_HANDLE MacReceiveContext
,
1347 IN PVOID HeaderBuffer
,
1348 IN UINT HeaderBufferSize
,
1349 IN PVOID LookAheadBuffer
,
1350 IN UINT LookaheadBufferSize
,
1351 IN UINT PacketSize
);
1354 (DDKAPI
*WAN_RECEIVE_HANDLER
)(
1355 IN NDIS_HANDLE NdisLinkHandle
,
1357 IN ULONG PacketSize
);
1360 (DDKAPI
*RECEIVE_COMPLETE_HANDLER
)(
1361 IN NDIS_HANDLE ProtocolBindingContext
);
1364 /* Protocol characteristics for NDIS 3.0 protocols */
1366 #define NDIS30_PROTOCOL_CHARACTERISTICS_S \
1367 UCHAR MajorNdisVersion; \
1368 UCHAR MinorNdisVersion; \
1370 _ANONYMOUS_UNION union { \
1374 OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler; \
1375 CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler; \
1376 _ANONYMOUS_UNION union { \
1377 SEND_COMPLETE_HANDLER SendCompleteHandler; \
1378 WAN_SEND_COMPLETE_HANDLER WanSendCompleteHandler; \
1379 } DUMMYUNIONNAME2; \
1380 _ANONYMOUS_UNION union { \
1381 TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; \
1382 WAN_TRANSFER_DATA_COMPLETE_HANDLER WanTransferDataCompleteHandler; \
1383 } DUMMYUNIONNAME3; \
1384 RESET_COMPLETE_HANDLER ResetCompleteHandler; \
1385 REQUEST_COMPLETE_HANDLER RequestCompleteHandler; \
1386 _ANONYMOUS_UNION union { \
1387 RECEIVE_HANDLER ReceiveHandler; \
1388 WAN_RECEIVE_HANDLER WanReceiveHandler; \
1389 } DUMMYUNIONNAME4; \
1390 RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; \
1391 STATUS_HANDLER StatusHandler; \
1392 STATUS_COMPLETE_HANDLER StatusCompleteHandler; \
1395 typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS
{
1396 NDIS30_PROTOCOL_CHARACTERISTICS_S
1397 } NDIS30_PROTOCOL_CHARACTERISTICS
, *PNDIS30_PROTOCOL_CHARACTERISTICS
;
1400 /* Prototypes for NDIS 4.0 protocol characteristics */
1403 (DDKAPI
*RECEIVE_PACKET_HANDLER
)(
1404 IN NDIS_HANDLE ProtocolBindingContext
,
1405 IN PNDIS_PACKET Packet
);
1408 (DDKAPI
*BIND_HANDLER
)(
1409 OUT PNDIS_STATUS Status
,
1410 IN NDIS_HANDLE BindContext
,
1411 IN PNDIS_STRING DeviceName
,
1412 IN PVOID SystemSpecific1
,
1413 IN PVOID SystemSpecific2
);
1416 (DDKAPI
*UNBIND_HANDLER
)(
1417 OUT PNDIS_STATUS Status
,
1418 IN NDIS_HANDLE ProtocolBindingContext
,
1419 IN NDIS_HANDLE UnbindContext
);
1422 (DDKAPI
*PNP_EVENT_HANDLER
)(
1423 IN NDIS_HANDLE ProtocolBindingContext
,
1424 IN PNET_PNP_EVENT NetPnPEvent
);
1427 (DDKAPI
*UNLOAD_PROTOCOL_HANDLER
)(
1431 /* Protocol characteristics for NDIS 4.0 protocols */
1435 #define NDIS40_PROTOCOL_CHARACTERISTICS_S \
1436 NDIS30_PROTOCOL_CHARACTERISTICS Ndis30Chars; \
1437 RECEIVE_PACKET_HANDLER ReceivePacketHandler; \
1438 BIND_HANDLER BindAdapterHandler; \
1439 UNBIND_HANDLER UnbindAdapterHandler; \
1440 PNP_EVENT_HANDLER PnPEventHandler; \
1441 UNLOAD_PROTOCOL_HANDLER UnloadHandler;
1443 #else /* !__cplusplus */
1445 #define NDIS40_PROTOCOL_CHARACTERISTICS_S \
1446 NDIS30_PROTOCOL_CHARACTERISTICS_S \
1447 RECEIVE_PACKET_HANDLER ReceivePacketHandler; \
1448 BIND_HANDLER BindAdapterHandler; \
1449 UNBIND_HANDLER UnbindAdapterHandler; \
1450 PNP_EVENT_HANDLER PnPEventHandler; \
1451 UNLOAD_PROTOCOL_HANDLER UnloadHandler;
1453 #endif /* __cplusplus */
1455 typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS
{
1456 NDIS40_PROTOCOL_CHARACTERISTICS_S
1457 } NDIS40_PROTOCOL_CHARACTERISTICS
, *PNDIS40_PROTOCOL_CHARACTERISTICS
;
1459 /* Prototypes for NDIS 5.0 protocol characteristics */
1462 (DDKAPI
*CO_SEND_COMPLETE_HANDLER
)(
1463 IN NDIS_STATUS Status
,
1464 IN NDIS_HANDLE ProtocolVcContext
,
1465 IN PNDIS_PACKET Packet
);
1468 (DDKAPI
*CO_STATUS_HANDLER
)(
1469 IN NDIS_HANDLE ProtocolBindingContext
,
1470 IN NDIS_HANDLE ProtocolVcContext OPTIONAL
,
1471 IN NDIS_STATUS GeneralStatus
,
1472 IN PVOID StatusBuffer
,
1473 IN UINT StatusBufferSize
);
1476 (DDKAPI
*CO_RECEIVE_PACKET_HANDLER
)(
1477 IN NDIS_HANDLE ProtocolBindingContext
,
1478 IN NDIS_HANDLE ProtocolVcContext
,
1479 IN PNDIS_PACKET Packet
);
1482 (DDKAPI
*CO_AF_REGISTER_NOTIFY_HANDLER
)(
1483 IN NDIS_HANDLE ProtocolBindingContext
,
1484 IN PCO_ADDRESS_FAMILY AddressFamily
);
1486 #ifdef __cplusplus \
1488 #define NDIS50_PROTOCOL_CHARACTERISTICS_S \
1489 NDIS40_PROTOCOL_CHARACTERISTICS Ndis40Chars; \
1490 PVOID ReservedHandlers[4]; \
1491 CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler; \
1492 CO_STATUS_HANDLER CoStatusHandler; \
1493 CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler; \
1494 CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler;
1496 #else /* !__cplusplus */
1498 #define NDIS50_PROTOCOL_CHARACTERISTICS_S \
1499 NDIS40_PROTOCOL_CHARACTERISTICS_S \
1500 PVOID ReservedHandlers[4]; \
1501 CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler; \
1502 CO_STATUS_HANDLER CoStatusHandler; \
1503 CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler; \
1504 CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler;
1506 #endif /* !__cplusplus */
1508 typedef struct _NDIS50_PROTOCOL_CHARACTERISTICS
{
1509 NDIS50_PROTOCOL_CHARACTERISTICS_S
1510 } NDIS50_PROTOCOL_CHARACTERISTICS
, *PNDIS50_PROTOCOL_CHARACTERISTICS
;
1512 #if defined(NDIS50) || defined(NDIS51)
1513 typedef struct _NDIS_PROTOCOL_CHARACTERISTICS
{
1514 NDIS50_PROTOCOL_CHARACTERISTICS_S
1515 } NDIS_PROTOCOL_CHARACTERISTICS
, *PNDIS_PROTOCOL_CHARACTERISTICS
;
1516 #elif defined(NDIS40)
1517 typedef struct _NDIS_PROTOCOL_CHARACTERISTICS
{
1518 NDIS40_PROTOCOL_CHARACTERISTICS_S
1519 } NDIS_PROTOCOL_CHARACTERISTICS
, *PNDIS_PROTOCOL_CHARACTERISTICS
;
1521 typedef struct _NDIS_PROTOCOL_CHARACTERISTICS
{
1522 NDIS30_PROTOCOL_CHARACTERISTICS_S
1523 } NDIS_PROTOCOL_CHARACTERISTICS
, *PNDIS_PROTOCOL_CHARACTERISTICS
;
1528 /* Buffer management routines */
1534 OUT PNDIS_STATUS Status
,
1535 OUT PNDIS_BUFFER
*Buffer
,
1536 IN NDIS_HANDLE PoolHandle
,
1537 IN PVOID VirtualAddress
,
1544 NdisAllocateBufferPool(
1545 OUT PNDIS_STATUS Status
,
1546 OUT PNDIS_HANDLE PoolHandle
,
1547 IN UINT NumberOfDescriptors
);
1553 OUT PNDIS_STATUS Status
,
1554 OUT PNDIS_PACKET
*Packet
,
1555 IN NDIS_HANDLE PoolHandle
);
1560 NdisAllocatePacketPool(
1561 OUT PNDIS_STATUS Status
,
1562 OUT PNDIS_HANDLE PoolHandle
,
1563 IN UINT NumberOfDescriptors
,
1564 IN UINT ProtocolReservedLength
);
1570 OUT PNDIS_STATUS Status
,
1571 OUT PNDIS_BUFFER
*Buffer
,
1572 IN NDIS_HANDLE PoolHandle
,
1573 IN PVOID MemoryDescriptor
,
1580 NdisCopyFromPacketToPacket(
1581 IN PNDIS_PACKET Destination
,
1582 IN UINT DestinationOffset
,
1583 IN UINT BytesToCopy
,
1584 IN PNDIS_PACKET Source
,
1585 IN UINT SourceOffset
,
1586 OUT PUINT BytesCopied
);
1590 * NdisCopyLookaheadData(
1591 * IN PVOID Destination,
1594 * IN ULONG ReceiveFlags);
1597 #if defined(_M_IX86) || defined(_M_AMD64)
1598 #define NdisCopyLookaheadData(Destination, Source, Length, MacOptions) \
1599 RtlCopyMemory(Destination, Source, Length)
1601 #define NdisCopyLookaheadData(Destination, Source, Length, MacOptions) \
1603 if ((MacOptions) & NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA) \
1605 RtlCopyMemory(_Destination, _Source, _Length); \
1609 PUCHAR _Src = (PUCHAR)(Source); \
1610 PUCHAR _Dest = (PUCHAR)(Destination); \
1611 PUCHAR _End = _Dest + (Length); \
1612 while (_Dest < _End) \
1613 *_Dest++ = *_Src++; \
1621 NdisDprAllocatePacket(
1622 OUT PNDIS_STATUS Status
,
1623 OUT PNDIS_PACKET
*Packet
,
1624 IN NDIS_HANDLE PoolHandle
);
1629 NdisDprAllocatePacketNonInterlocked(
1630 OUT PNDIS_STATUS Status
,
1631 OUT PNDIS_PACKET
*Packet
,
1632 IN NDIS_HANDLE PoolHandle
);
1638 IN PNDIS_PACKET Packet
);
1643 NdisDprFreePacketNonInterlocked(
1644 IN PNDIS_PACKET Packet
);
1650 IN NDIS_HANDLE PoolHandle
);
1656 IN PNDIS_PACKET Packet
);
1662 IN NDIS_HANDLE PoolHandle
);
1668 IN PNDIS_PACKET
*PacketsToReturn
,
1669 IN UINT NumberOfPackets
);
1674 NdisUnchainBufferAtBack(
1675 IN OUT PNDIS_PACKET Packet
,
1676 OUT PNDIS_BUFFER
*Buffer
);
1681 NdisUnchainBufferAtFront(
1682 IN OUT PNDIS_PACKET Packet
,
1683 OUT PNDIS_BUFFER
*Buffer
);
1688 NdisAdjustBufferLength(
1689 IN PNDIS_BUFFER Buffer
,
1696 IN PNDIS_BUFFER Buffer
);
1701 NdisBufferVirtualAddress(
1702 IN PNDIS_BUFFER Buffer
);
1707 NDIS_BUFFER_TO_SPAN_PAGES(
1708 IN PNDIS_BUFFER Buffer
);
1714 IN PNDIS_BUFFER Buffer
);
1719 NdisGetBufferPhysicalArraySize(
1720 IN PNDIS_BUFFER Buffer
,
1721 OUT PUINT ArraySize
);
1726 NdisGetFirstBufferFromPacket(
1727 IN PNDIS_PACKET _Packet
,
1728 OUT PNDIS_BUFFER
*_FirstBuffer
,
1729 OUT PVOID
*_FirstBufferVA
,
1730 OUT PUINT _FirstBufferLength
,
1731 OUT PUINT _TotalBufferLength
);
1737 IN PNDIS_BUFFER Buffer
,
1738 OUT PVOID
*VirtualAddress OPTIONAL
,
1744 NdisQueryBufferOffset(
1745 IN PNDIS_BUFFER Buffer
,
1751 * NDIS_BUFFER_LINKAGE(
1752 * IN PNDIS_BUFFER Buffer);
1754 #define NDIS_BUFFER_LINKAGE(Buffer)(Buffer)->Next;
1759 * NdisChainBufferAtBack(
1760 * IN OUT PNDIS_PACKET Packet,
1761 * IN OUT PNDIS_BUFFER Buffer)
1763 #define NdisChainBufferAtBack(Packet, \
1766 PNDIS_BUFFER NdisBuffer = (Buffer); \
1768 while (NdisBuffer->Next != NULL) \
1769 NdisBuffer = NdisBuffer->Next; \
1771 NdisBuffer->Next = NULL; \
1773 if ((Packet)->Private.Head != NULL) \
1774 (Packet)->Private.Tail->Next = (Buffer); \
1776 (Packet)->Private.Head = (Buffer); \
1778 (Packet)->Private.Tail = NdisBuffer; \
1779 (Packet)->Private.ValidCounts = FALSE; \
1785 * NdisChainBufferAtFront(
1786 * IN OUT PNDIS_PACKET Packet,
1787 * IN OUT PNDIS_BUFFER Buffer)
1789 #define NdisChainBufferAtFront(Packet, \
1792 PNDIS_BUFFER _NdisBuffer = (Buffer); \
1794 while (_NdisBuffer->Next != NULL) \
1795 _NdisBuffer = _NdisBuffer->Next; \
1797 if ((Packet)->Private.Head == NULL) \
1798 (Packet)->Private.Tail = _NdisBuffer; \
1800 _NdisBuffer->Next = (Packet)->Private.Head; \
1801 (Packet)->Private.Head = (Buffer); \
1802 (Packet)->Private.ValidCounts = FALSE; \
1808 * NdisGetNextBuffer(
1809 * IN PNDIS_BUFFER CurrentBuffer,
1810 * OUT PNDIS_BUFFER * NextBuffer)
1812 #define NdisGetNextBuffer(CurrentBuffer, \
1815 *(NextBuffer) = (CurrentBuffer)->Next; \
1821 * NdisGetPacketFlags(
1822 * IN PNDIS_PACKET Packet);
1824 #define NdisGetPacketFlags(Packet)(Packet)->Private.Flags;
1829 * NdisClearPacketFlags(
1830 * IN PNDIS_PACKET Packet,
1833 #define NdisClearPacketFlags(Packet, Flags) \
1834 (Packet)->Private.Flags &= ~(Flags)
1839 * NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(
1840 * IN PNDIS_PACKET Packet,
1841 * IN PPVOID pMediaSpecificInfo,
1842 * IN PUINT pSizeMediaSpecificInfo);
1844 #define NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(_Packet, \
1845 _pMediaSpecificInfo, \
1846 _pSizeMediaSpecificInfo) \
1848 if (!((_Packet)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS) || \
1849 !((_Packet)->Private.NdisPacketFlags & fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO)) \
1851 *(_pMediaSpecificInfo) = NULL; \
1852 *(_pSizeMediaSpecificInfo) = 0; \
1856 *(_pMediaSpecificInfo) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
1857 (_Packet)->Private.NdisPacketOobOffset))->MediaSpecificInformation; \
1858 *(_pSizeMediaSpecificInfo) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
1859 (_Packet)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo; \
1866 * NDIS_GET_PACKET_PROTOCOL_TYPE(
1867 * IN PNDIS_PACKET Packet);
1869 #define NDIS_GET_PACKET_PROTOCOL_TYPE(_Packet) \
1870 ((_Packet)->Private.Flags & NDIS_PROTOCOL_ID_MASK)
1874 * NDIS_GET_PACKET_HEADER_SIZE(
1875 * IN PNDIS_PACKET Packet);
1877 #define NDIS_GET_PACKET_HEADER_SIZE(_Packet) \
1878 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
1879 (_Packet)->Private.NdisPacketOobOffset))->HeaderSize
1884 * NDIS_GET_PACKET_STATUS(
1885 * IN PNDIS_PACKET Packet);
1887 #define NDIS_GET_PACKET_STATUS(_Packet) \
1888 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
1889 (_Packet)->Private.NdisPacketOobOffset))->Status
1894 * NDIS_GET_PACKET_TIME_RECEIVED(
1895 * IN PNDIS_PACKET Packet);
1897 #define NDIS_GET_PACKET_TIME_RECEIVED(_Packet) \
1898 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
1899 (_Packet)->Private.NdisPacketOobOffset))->TimeReceived
1904 * NDIS_GET_PACKET_TIME_SENT(
1905 * IN PNDIS_PACKET Packet);
1907 #define NDIS_GET_PACKET_TIME_SENT(_Packet) \
1908 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
1909 (_Packet)->Private.NdisPacketOobOffset))->TimeSent
1914 * NDIS_GET_PACKET_TIME_TO_SEND(
1915 * IN PNDIS_PACKET Packet);
1917 #define NDIS_GET_PACKET_TIME_TO_SEND(_Packet) \
1918 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
1919 (_Packet)->Private.NdisPacketOobOffset))->TimeToSend
1923 * PNDIS_PACKET_OOB_DATA
1924 * NDIS_OOB_DATA_FROM_PACKET(
1925 * IN PNDIS_PACKET Packet);
1927 #define NDIS_OOB_DATA_FROM_PACKET(_Packet) \
1928 (PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
1929 (_Packet)->Private.NdisPacketOobOffset)
1935 * IN PNDIS_PACKET Packet,
1936 * OUT PUINT PhysicalBufferCount OPTIONAL,
1937 * OUT PUINT BufferCount OPTIONAL,
1938 * OUT PNDIS_BUFFER *FirstBuffer OPTIONAL,
1939 * OUT PUINT TotalPacketLength OPTIONAL);
1944 IN PNDIS_PACKET Packet
,
1945 OUT PUINT PhysicalBufferCount OPTIONAL
,
1946 OUT PUINT BufferCount OPTIONAL
,
1947 OUT PNDIS_BUFFER
*FirstBuffer OPTIONAL
,
1948 OUT PUINT TotalPacketLength OPTIONAL
)
1951 *FirstBuffer
= Packet
->Private
.Head
;
1952 if (TotalPacketLength
|| BufferCount
|| PhysicalBufferCount
)
1954 if (!Packet
->Private
.ValidCounts
)
1958 PNDIS_BUFFER NdisBuffer
;
1959 UINT PhysicalBufferCount
= 0;
1960 UINT TotalPacketLength
= 0;
1963 for (NdisBuffer
= Packet
->Private
.Head
;
1964 NdisBuffer
!= (PNDIS_BUFFER
)NULL
;
1965 NdisBuffer
= NdisBuffer
->Next
)
1967 PhysicalBufferCount
+= NDIS_BUFFER_TO_SPAN_PAGES(NdisBuffer
);
1968 NdisQueryBufferOffset(NdisBuffer
, &Offset
, &PacketLength
);
1969 TotalPacketLength
+= PacketLength
;
1972 Packet
->Private
.PhysicalCount
= PhysicalBufferCount
;
1973 Packet
->Private
.TotalLength
= TotalPacketLength
;
1974 Packet
->Private
.Count
= Count
;
1975 Packet
->Private
.ValidCounts
= TRUE
;
1978 if (PhysicalBufferCount
)
1979 *PhysicalBufferCount
= Packet
->Private
.PhysicalCount
;
1982 *BufferCount
= Packet
->Private
.Count
;
1984 if (TotalPacketLength
)
1985 *TotalPacketLength
= Packet
->Private
.TotalLength
;
1991 * NdisQueryPacketLength(
1992 * IN PNDIS_PACKET Packet,
1993 * OUT PUINT PhysicalBufferCount OPTIONAL,
1994 * OUT PUINT BufferCount OPTIONAL,
1995 * OUT PNDIS_BUFFER *FirstBuffer OPTIONAL,
1996 * OUT PUINT TotalPacketLength OPTIONAL);
2000 NdisQueryPacketLength(
2001 IN PNDIS_PACKET Packet
,
2002 OUT PUINT TotalPacketLength OPTIONAL
)
2004 if (!(Packet
)->Private
.ValidCounts
) \
2005 NdisQueryPacket(Packet
, NULL
, NULL
, NULL
, TotalPacketLength
); \
2007 *(TotalPacketLength
) = (Packet
)->Private
.TotalLength
; \
2013 * NdisRecalculatePacketCounts(
2014 * IN OUT PNDIS_PACKET Packet);
2016 #define NdisRecalculatePacketCounts(Packet) \
2018 PNDIS_BUFFER _Buffer = (Packet)->Private.Head; \
2019 if (_Buffer != NULL) \
2021 while (_Buffer->Next != NULL) \
2023 _Buffer = _Buffer->Next; \
2025 (Packet)->Private.Tail = _Buffer; \
2027 (Packet)->Private.ValidCounts = FALSE; \
2033 * NdisReinitializePacket(
2034 * IN OUT PNDIS_PACKET Packet);
2036 #define NdisReinitializePacket(Packet) \
2038 (Packet)->Private.Head = (PNDIS_BUFFER)NULL; \
2039 (Packet)->Private.ValidCounts = FALSE; \
2045 * NdisSetPacketFlags(
2046 * IN PNDIS_PACKET Packet,
2049 #define NdisSetPacketFlags(Packet, Flags) \
2050 (Packet)->Private.Flags |= (Flags);
2055 * NDIS_SET_PACKET_HEADER_SIZE(
2056 * IN PNDIS_PACKET Packet,
2059 #define NDIS_SET_PACKET_HEADER_SIZE(_Packet, _HdrSize) \
2060 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
2061 (_Packet)->Private.NdisPacketOobOffset))->HeaderSize = (_HdrSize)
2066 * NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(
2067 * IN PNDIS_PACKET Packet,
2068 * IN PVOID MediaSpecificInfo,
2069 * IN UINT SizeMediaSpecificInfo);
2071 #define NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(_Packet, \
2072 _MediaSpecificInfo, \
2073 _SizeMediaSpecificInfo) \
2075 if ((_Packet)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS) \
2077 (_Packet)->Private.NdisPacketFlags |= fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO; \
2078 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
2079 (_Packet)->Private.NdisPacketOobOffset))->MediaSpecificInformation = \
2080 (_MediaSpecificInfo); \
2081 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
2082 (_Packet)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo = \
2083 (_SizeMediaSpecificInfo); \
2090 * NDIS_SET_PACKET_STATUS(
2091 * IN PNDIS_PACKET Packet,
2092 * IN NDIS_STATUS Status);
2094 #define NDIS_SET_PACKET_STATUS(_Packet, _Status) \
2095 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
2096 (_Packet)->Private.NdisPacketOobOffset))->Status = (_Status)
2101 * NDIS_SET_PACKET_TIME_RECEIVED(
2102 * IN PNDIS_PACKET Packet,
2103 * IN ULONGLONG TimeReceived);
2105 #define NDIS_SET_PACKET_TIME_RECEIVED(_Packet, _TimeReceived) \
2106 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
2107 (_Packet)->Private.NdisPacketOobOffset))->TimeReceived = (_TimeReceived)
2112 * NDIS_SET_PACKET_TIME_SENT(
2113 * IN PNDIS_PACKET Packet,
2114 * IN ULONGLONG TimeSent);
2116 #define NDIS_SET_PACKET_TIME_SENT(_Packet, _TimeSent) \
2117 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
2118 (_Packet)->Private.NdisPacketOobOffset))->TimeSent = (_TimeSent)
2123 * NDIS_SET_PACKET_TIME_TO_SEND(
2124 * IN PNDIS_PACKET Packet,
2125 * IN ULONGLONG TimeToSend);
2127 #define NDIS_SET_PACKET_TIME_TO_SEND(_Packet, _TimeToSend) \
2128 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
2129 (_Packet)->Private.NdisPacketOobOffset))->TimeToSend = (_TimeToSend)
2135 * IN PNDIS_PACKET Packet,
2138 #define NdisSetSendFlags(_Packet,_Flags)(_Packet)->Private.Flags = (_Flags)
2142 /* Memory management routines */
2147 NdisCreateLookaheadBufferFromSharedMemory(
2148 IN PVOID pSharedMemory
,
2149 IN UINT LookaheadLength
,
2150 OUT PVOID
*pLookaheadBuffer
);
2155 NdisDestroyLookaheadBufferFromSharedMemory(
2156 IN PVOID pLookaheadBuffer
);
2158 #if defined(_M_IX86) || defined(_M_AMD64) || defined(_M_ARM) || defined(_M_PPC)
2162 * NdisMoveMappedMemory(
2163 * OUT PVOID Destination,
2167 #define NdisMoveMappedMemory(Destination, Source, Length) \
2168 RtlCopyMemory(Destination, Source, Length)
2172 * NdisZeroMappedMemory(
2173 * IN PVOID Destination,
2176 #define NdisZeroMappedMemory(Destination, Length) \
2177 RtlZeroMemory(Destination, Length)
2181 #define NdisMoveMappedMemory(Destination, Source, Length) \
2183 PUCHAR _Dest = Destination, _Src = Source, _End = _Dest + Length; \
2184 while (_Dest < _End) \
2185 *_Dest++ = _Src++; \
2188 #define NdisZeroMappedMemory(Destination, Length) \
2190 PUCHAR _Dest = Destination, _End = _Dest + Length; \
2191 while (_Dest < _End) \
2195 #endif /* _M_IX86 or _M_AMD64 */
2199 * NdisMoveFromMappedMemory(
2200 * OUT PVOID Destination,
2204 #define NdisMoveFromMappedMemory(Destination, Source, Length) \
2205 NdisMoveMappedMemory(Destination, Source, Length)
2209 * NdisMoveToMappedMemory(
2210 * OUT PVOID Destination,
2214 #define NdisMoveToMappedMemory(Destination, Source, Length) \
2215 NdisMoveMappedMemory(Destination, Source, Length)
2219 * NdisMUpdateSharedMemory(
2220 * IN NDIS_HANDLE MiniportAdapterHandle,
2222 * IN PVOID VirtualAddress,
2223 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
2225 #define NdisMUpdateSharedMemory(_H, _L, _V, _P) \
2226 NdisUpdateSharedMemory(_H, _L, _V, _P)
2232 OUT PVOID
*VirtualAddress
,
2234 IN UINT MemoryFlags
,
2235 IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress
);
2241 IN PVOID VirtualAddress
,
2243 IN UINT MemoryFlags
);
2248 NdisImmediateReadSharedMemory(
2249 IN NDIS_HANDLE WrapperConfigurationContext
,
2250 IN ULONG SharedMemoryAddress
,
2257 NdisImmediateWriteSharedMemory(
2258 IN NDIS_HANDLE WrapperConfigurationContext
,
2259 IN ULONG SharedMemoryAddress
,
2266 NdisMAllocateSharedMemory(
2267 IN NDIS_HANDLE MiniportAdapterHandle
,
2270 OUT PVOID
*VirtualAddress
,
2271 OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress
);
2276 NdisMAllocateSharedMemoryAsync(
2277 IN NDIS_HANDLE MiniportAdapterHandle
,
2284 #define NdisUpdateSharedMemory(NdisAdapterHandle, \
2294 NdisUpdateSharedMemory(
2295 IN NDIS_HANDLE NdisAdapterHandle
,
2297 IN PVOID VirtualAddress
,
2298 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
2300 #endif /* defined(NDIS50) */
2304 * NdisGetPhysicalAddressHigh(
2305 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
2307 #define NdisGetPhysicalAddressHigh(PhysicalAddress) \
2308 ((PhysicalAddress).HighPart)
2312 * NdisSetPhysicalAddressHigh(
2313 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
2316 #define NdisSetPhysicalAddressHigh(PhysicalAddress, Value) \
2317 ((PhysicalAddress).HighPart) = (Value)
2321 * NdisGetPhysicalAddressLow(
2322 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
2324 #define NdisGetPhysicalAddressLow(PhysicalAddress) \
2325 ((PhysicalAddress).LowPart)
2330 * NdisSetPhysicalAddressLow(
2331 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
2334 #define NdisSetPhysicalAddressLow(PhysicalAddress, Value) \
2335 ((PhysicalAddress).LowPart) = (Value)
2339 * NDIS_PHYSICAL_ADDRESS_CONST(
2343 #define NDIS_PHYSICAL_ADDRESS_CONST(Low, High) \
2344 { {(ULONG)(Low), (LONG)(High)} }
2349 * IN CONST VOID *Source1,
2350 * IN CONST VOID *Source2,
2353 #define NdisEqualMemory(Source1, Source2, Length) \
2354 RtlEqualMemory(Source1, Source2, Length)
2359 * IN PVOID Destination,
2363 #define NdisFillMemory(Destination, Length, Fill) \
2364 RtlFillMemory(Destination, Length, Fill)
2369 * OUT PVOID Destination,
2373 #define NdisMoveMemory(Destination, Source, Length) \
2374 RtlCopyMemory(Destination, Source, Length)
2379 * NdisRetrieveUlong(
2380 * IN PULONG DestinationAddress,
2381 * IN PULONG SourceAddress);
2383 #define NdisRetrieveUlong(DestinationAddress, SourceAddress) \
2384 RtlRetrieveUlong(DestinationAddress, SourceAddress)
2390 * IN PULONG DestinationAddress,
2393 #define NdisStoreUlong(DestinationAddress, Value) \
2394 RtlStoreUlong(DestinationAddress, Value)
2400 * IN PVOID Destination,
2403 #define NdisZeroMemory(Destination, Length) \
2404 RtlZeroMemory(Destination, Length)
2407 (DDKAPI
*NDIS_BLOCK_INITIALIZER
) (
2409 IN SIZE_T NumberOfBytes
2412 /* Configuration routines */
2417 NdisOpenConfiguration(
2418 OUT PNDIS_STATUS Status
,
2419 OUT PNDIS_HANDLE ConfigurationHandle
,
2420 IN NDIS_HANDLE WrapperConfigurationContext
);
2425 NdisReadNetworkAddress(
2426 OUT PNDIS_STATUS Status
,
2427 OUT PVOID
*NetworkAddress
,
2428 OUT PUINT NetworkAddressLength
,
2429 IN NDIS_HANDLE ConfigurationHandle
);
2434 NdisReadEisaSlotInformation(
2435 OUT PNDIS_STATUS Status
,
2436 IN NDIS_HANDLE WrapperConfigurationContext
,
2437 OUT PUINT SlotNumber
,
2438 OUT PNDIS_EISA_FUNCTION_INFORMATION EisaData
);
2443 NdisReadEisaSlotInformationEx(
2444 OUT PNDIS_STATUS Status
,
2445 IN NDIS_HANDLE WrapperConfigurationContext
,
2446 OUT PUINT SlotNumber
,
2447 OUT PNDIS_EISA_FUNCTION_INFORMATION
*EisaData
,
2448 OUT PUINT NumberOfFunctions
);
2453 NdisReadPciSlotInformation(
2454 IN NDIS_HANDLE NdisAdapterHandle
,
2455 IN ULONG SlotNumber
,
2463 NdisWritePciSlotInformation(
2464 IN NDIS_HANDLE NdisAdapterHandle
,
2465 IN ULONG SlotNumber
,
2472 /* String management routines */
2477 NdisAnsiStringToUnicodeString(
2478 IN OUT PNDIS_STRING DestinationString
,
2479 IN PNDIS_ANSI_STRING SourceString
);
2484 * IN PNDIS_STRING String1,
2485 * IN PNDIS_STRING String2,
2486 * IN BOOLEAN CaseInsensitive);
2488 #define NdisEqualString(_String1, _String2, _CaseInsensitive) \
2489 RtlEqualUnicodeString(_String1, _String2, _CaseInsensitive)
2495 IN OUT PNDIS_ANSI_STRING DestinationString
,
2496 IN PCSTR SourceString
);
2501 NdisInitUnicodeString(
2502 IN OUT PNDIS_STRING DestinationString
,
2503 IN PCWSTR SourceString
);
2508 NdisUnicodeStringToAnsiString(
2509 IN OUT PNDIS_ANSI_STRING DestinationString
,
2510 IN PNDIS_STRING SourceString
);
2512 #define NdisFreeString(_s) NdisFreeMemory((_s).Buffer, (_s).MaximumLength, 0)
2513 #define NdisPrintString(_s) DbgPrint("%ls", (_s).Buffer)
2516 /* Spin lock reoutines */
2521 NdisAllocateSpinLock(
2522 IN PNDIS_SPIN_LOCK SpinLock
);
2528 IN PNDIS_SPIN_LOCK SpinLock
);
2533 NdisAcquireSpinLock(
2534 IN PNDIS_SPIN_LOCK SpinLock
);
2539 NdisReleaseSpinLock(
2540 IN PNDIS_SPIN_LOCK SpinLock
);
2545 NdisDprAcquireSpinLock(
2546 IN PNDIS_SPIN_LOCK SpinLock
);
2551 NdisDprReleaseSpinLock(
2552 IN PNDIS_SPIN_LOCK SpinLock
);
2558 * NdisRawReadPortBufferUchar(
2560 * OUT PUCHAR Buffer,
2563 #define NdisRawReadPortBufferUchar(Port, Buffer, Length) \
2564 READ_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length))
2568 * NdisRawReadPortBufferUlong(
2570 * OUT PULONG Buffer,
2573 #define NdisRawReadPortBufferUlong(Port, Buffer, Length) \
2574 READ_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length))
2578 * NdisRawReadPortBufferUshort(
2580 * OUT PUSHORT Buffer,
2583 #define NdisRawReadPortBufferUshort(Port, Buffer, Length) \
2584 READ_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length))
2589 * NdisRawReadPortUchar(
2593 #define NdisRawReadPortUchar(Port, Data) \
2594 *(Data) = READ_PORT_UCHAR((PUCHAR)(Port))
2598 * NdisRawReadPortUlong(
2602 #define NdisRawReadPortUlong(Port, Data) \
2603 *(Data) = READ_PORT_ULONG((PULONG)(Port))
2607 * NdisRawReadPortUshort(
2609 * OUT PUSHORT Data);
2611 #define NdisRawReadPortUshort(Port, Data) \
2612 *(Data) = READ_PORT_USHORT((PUSHORT)(Port))
2617 * NdisRawWritePortBufferUchar(
2622 #define NdisRawWritePortBufferUchar(Port, Buffer, Length) \
2623 WRITE_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length))
2627 * NdisRawWritePortBufferUlong(
2632 #define NdisRawWritePortBufferUlong(Port, Buffer, Length) \
2633 WRITE_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length))
2637 * NdisRawWritePortBufferUshort(
2639 * IN PUSHORT Buffer,
2642 #define NdisRawWritePortBufferUshort(Port, Buffer, Length) \
2643 WRITE_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length))
2648 * NdisRawWritePortUchar(
2652 #define NdisRawWritePortUchar(Port, Data) \
2653 WRITE_PORT_UCHAR((PUCHAR)(Port), (UCHAR)(Data))
2657 * NdisRawWritePortUlong(
2661 #define NdisRawWritePortUlong(Port, Data) \
2662 WRITE_PORT_ULONG((PULONG)(Port), (ULONG)(Data))
2666 * NdisRawWritePortUshort(
2670 #define NdisRawWritePortUshort(Port, Data) \
2671 WRITE_PORT_USHORT((PUSHORT)(Port), (USHORT)(Data))
2676 * NdisReadRegisterUchar(
2677 * IN PUCHAR Register,
2680 #define NdisReadRegisterUchar(Register, Data) \
2681 *(Data) = *(Register)
2685 * NdisReadRegisterUlong(
2686 * IN PULONG Register,
2689 #define NdisReadRegisterUlong(Register, Data) \
2690 *(Data) = *(Register)
2694 * NdisReadRegisterUshort(
2695 * IN PUSHORT Register,
2696 * OUT PUSHORT Data);
2698 #define NdisReadRegisterUshort(Register, Data) \
2699 *(Data) = *(Register)
2703 * NdisReadRegisterUchar(
2704 * IN PUCHAR Register,
2707 #define NdisWriteRegisterUchar(Register, Data) \
2708 WRITE_REGISTER_UCHAR((Register), (Data))
2712 * NdisReadRegisterUlong(
2713 * IN PULONG Register,
2716 #define NdisWriteRegisterUlong(Register, Data) \
2717 WRITE_REGISTER_ULONG((Register), (Data))
2721 * NdisReadRegisterUshort(
2722 * IN PUSHORT Register,
2725 #define NdisWriteRegisterUshort(Register, Data) \
2726 WRITE_REGISTER_USHORT((Register), (Data))
2733 * NdisInitializeListHead(
2734 * IN PLIST_ENTRY ListHead);
2736 #define NdisInitializeListHead(_ListHead) \
2737 InitializeListHead(_ListHead)
2741 * NdisInterlockedInsertHeadList(
2742 * IN PLIST_ENTRY ListHead,
2743 * IN PLIST_ENTRY ListEntry,
2744 * IN PNDIS_SPIN_LOCK SpinLock);
2746 #define NdisInterlockedInsertHeadList(_ListHead, _ListEntry, _SpinLock) \
2747 ExInterlockedInsertHeadList(_ListHead, _ListEntry, &(_SpinLock)->SpinLock)
2751 * NdisInterlockedInsertTailList(
2752 * IN PLIST_ENTRY ListHead,
2753 * IN PLIST_ENTRY ListEntry,
2754 * IN PNDIS_SPIN_LOCK SpinLock);
2756 #define NdisInterlockedInsertTailList(_ListHead, _ListEntry, _SpinLock) \
2757 ExInterlockedInsertTailList(_ListHead, _ListEntry, &(_SpinLock)->SpinLock)
2761 * NdisInterlockedRemoveHeadList(
2762 * IN PLIST_ENTRY ListHead,
2763 * IN PNDIS_SPIN_LOCK SpinLock);
2765 #define NdisInterlockedRemoveHeadList(_ListHead, _SpinLock) \
2766 ExInterlockedRemoveHeadList(_ListHead, &(_SpinLock)->SpinLock)
2770 * NdisInitializeSListHead(
2771 * IN PSLIST_HEADER SListHead);
2773 #define NdisInitializeSListHead(SListHead) ExInitializeSListHead(SListHead)
2776 * USHORT NdisQueryDepthSList(
2777 * IN PSLIST_HEADER SListHead);
2779 #define NdisQueryDepthSList(SListHead) ExQueryDepthSList(SListHead)
2783 /* Interlocked routines */
2787 * NdisInterlockedDecrement(
2790 #define NdisInterlockedDecrement(Addend) InterlockedDecrement(Addend)
2794 * NdisInterlockedIncrement(
2797 #define NdisInterlockedIncrement(Addend) InterlockedIncrement(Addend)
2801 * NdisInterlockedAddUlong(
2803 * IN ULONG Increment,
2804 * IN PNDIS_SPIN_LOCK SpinLock);
2806 #define NdisInterlockedAddUlong(_Addend, _Increment, _SpinLock) \
2807 ExInterlockedAddUlong(_Addend, _Increment, &(_SpinLock)->SpinLock)
2811 /* Miscellaneous routines */
2816 NdisCloseConfiguration(
2817 IN NDIS_HANDLE ConfigurationHandle
);
2822 NdisReadConfiguration(
2823 OUT PNDIS_STATUS Status
,
2824 OUT PNDIS_CONFIGURATION_PARAMETER
*ParameterValue
,
2825 IN NDIS_HANDLE ConfigurationHandle
,
2826 IN PNDIS_STRING Keyword
,
2827 IN NDIS_PARAMETER_TYPE ParameterType
);
2832 NdisWriteConfiguration(
2833 OUT PNDIS_STATUS Status
,
2834 IN NDIS_HANDLE WrapperConfigurationContext
,
2835 IN PNDIS_STRING Keyword
,
2836 IN PNDIS_CONFIGURATION_PARAMETER ParameterValue
);
2841 NdisWriteErrorLogEntry(
2842 IN NDIS_HANDLE NdisAdapterHandle
,
2843 IN NDIS_ERROR_CODE ErrorCode
,
2844 IN ULONG NumberOfErrorValues
,
2849 * NdisStallExecution(
2850 * IN UINT MicrosecondsToStall)
2852 #define NdisStallExecution KeStallExecutionProcessor
2857 NdisGetCurrentSystemTime(
2858 IN PLARGE_INTEGER pSystemTime
);
2863 NdisSystemProcessorCount(VOID
);
2868 NdisGetCurrentProcessorCpuUsage(
2869 OUT PULONG pCpuUsage
);
2873 /* NDIS helper macros */
2877 * NDIS_INIT_FUNCTION(FunctionName)
2879 #define NDIS_INIT_FUNCTION(FunctionName) \
2880 alloc_text(init, FunctionName)
2884 * NDIS_PAGABLE_FUNCTION(FunctionName)
2886 #define NDIS_PAGEABLE_FUNCTION(FunctionName) \
2887 alloc_text(page, FunctionName)
2889 #define NDIS_PAGABLE_FUNCTION NDIS_PAGEABLE_FUNCTION
2892 /* NDIS 4.0 extensions */
2897 NdisMFreeSharedMemory(
2898 IN NDIS_HANDLE MiniportAdapterHandle
,
2901 IN PVOID VirtualAddress
,
2902 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
2907 NdisMWanIndicateReceive(
2908 OUT PNDIS_STATUS Status
,
2909 IN NDIS_HANDLE MiniportAdapterHandle
,
2910 IN NDIS_HANDLE NdisLinkContext
,
2911 IN PUCHAR PacketBuffer
,
2912 IN UINT PacketSize
);
2917 NdisMWanIndicateReceiveComplete(
2918 IN NDIS_HANDLE MiniportAdapterHandle
);
2923 NdisMWanSendComplete(
2924 IN NDIS_HANDLE MiniportAdapterHandle
,
2925 IN PNDIS_WAN_PACKET Packet
,
2926 IN NDIS_STATUS Status
);
2931 NdisPciAssignResources(
2932 IN NDIS_HANDLE NdisMacHandle
,
2933 IN NDIS_HANDLE NdisWrapperHandle
,
2934 IN NDIS_HANDLE WrapperConfigurationContext
,
2935 IN ULONG SlotNumber
,
2936 OUT PNDIS_RESOURCE_LIST
*AssignedResources
);
2939 /* NDIS 5.0 extensions */
2944 NdisAcquireReadWriteLock(
2945 IN PNDIS_RW_LOCK Lock
,
2947 IN PLOCK_STATE LockState
);
2952 NdisAllocateMemoryWithTag(
2953 OUT PVOID
*VirtualAddress
,
2960 NdisAllocatePacketPoolEx(
2961 OUT PNDIS_STATUS Status
,
2962 OUT PNDIS_HANDLE PoolHandle
,
2963 IN UINT NumberOfDescriptors
,
2964 IN UINT NumberOfOverflowDescriptors
,
2965 IN UINT ProtocolReservedLength
);
2970 NdisCompletePnPEvent(
2971 IN NDIS_STATUS Status
,
2972 IN NDIS_HANDLE NdisBindingHandle
,
2973 IN PNET_PNP_EVENT NetPnPEvent
);
2978 NdisGetCurrentProcessorCounts(
2979 OUT PULONG pIdleCount
,
2980 OUT PULONG pKernelAndUser
,
2986 NdisGetDriverHandle(
2987 IN PNDIS_HANDLE NdisBindingHandle
,
2988 OUT PNDIS_HANDLE NdisDriverHandle
);
2993 NdisGetReceivedPacket(
2994 IN PNDIS_HANDLE NdisBindingHandle
,
2995 IN PNDIS_HANDLE MacContext
);
3000 NdisGetSystemUpTime(
3001 OUT PULONG pSystemUpTime
);
3006 NdisInitializeReadWriteLock(
3007 IN PNDIS_RW_LOCK Lock
);
3012 NdisMDeregisterDevice(
3013 IN NDIS_HANDLE NdisDeviceHandle
);
3018 NdisMGetDeviceProperty(
3019 IN NDIS_HANDLE MiniportAdapterHandle
,
3020 IN OUT PDEVICE_OBJECT
*PhysicalDeviceObject OPTIONAL
,
3021 IN OUT PDEVICE_OBJECT
*FunctionalDeviceObject OPTIONAL
,
3022 IN OUT PDEVICE_OBJECT
*NextDeviceObject OPTIONAL
,
3023 IN OUT PCM_RESOURCE_LIST
*AllocatedResources OPTIONAL
,
3024 IN OUT PCM_RESOURCE_LIST
*AllocatedResourcesTranslated OPTIONAL
);
3029 NdisMInitializeScatterGatherDma(
3030 IN NDIS_HANDLE MiniportAdapterHandle
,
3031 IN BOOLEAN Dma64BitAddresses
,
3032 IN ULONG MaximumPhysicalMapping
);
3037 NdisMPromoteMiniport(
3038 IN NDIS_HANDLE MiniportAdapterHandle
);
3043 NdisMQueryAdapterInstanceName(
3044 OUT PNDIS_STRING AdapterInstanceName
,
3045 IN NDIS_HANDLE MiniportAdapterHandle
);
3050 NdisMRegisterDevice(
3051 IN NDIS_HANDLE NdisWrapperHandle
,
3052 IN PNDIS_STRING DeviceName
,
3053 IN PNDIS_STRING SymbolicName
,
3054 IN PDRIVER_DISPATCH MajorFunctions
[],
3055 OUT PDEVICE_OBJECT
*pDeviceObject
,
3056 OUT NDIS_HANDLE
*NdisDeviceHandle
);
3061 NdisMRegisterUnloadHandler(
3062 IN NDIS_HANDLE NdisWrapperHandle
,
3063 IN PDRIVER_UNLOAD UnloadHandler
);
3068 NdisMRemoveMiniport(
3069 IN NDIS_HANDLE MiniportAdapterHandle
);
3074 NdisMSetMiniportSecondary(
3075 IN NDIS_HANDLE MiniportAdapterHandle
,
3076 IN NDIS_HANDLE PrimaryMiniportAdapterHandle
);
3081 NdisOpenConfigurationKeyByIndex(
3082 OUT PNDIS_STATUS Status
,
3083 IN NDIS_HANDLE ConfigurationHandle
,
3085 OUT PNDIS_STRING KeyName
,
3086 OUT PNDIS_HANDLE KeyHandle
);
3091 NdisOpenConfigurationKeyByName(
3092 OUT PNDIS_STATUS Status
,
3093 IN NDIS_HANDLE ConfigurationHandle
,
3094 IN PNDIS_STRING SubKeyName
,
3095 OUT PNDIS_HANDLE SubKeyHandle
);
3100 NdisPacketPoolUsage(
3101 IN NDIS_HANDLE PoolHandle
);
3106 NdisQueryAdapterInstanceName(
3107 OUT PNDIS_STRING AdapterInstanceName
,
3108 IN NDIS_HANDLE NdisBindingHandle
);
3113 NdisReadPcmciaAttributeMemory(
3114 IN NDIS_HANDLE NdisAdapterHandle
,
3122 NdisReleaseReadWriteLock(
3123 IN PNDIS_RW_LOCK Lock
,
3124 IN PLOCK_STATE LockState
);
3129 NdisWriteEventLogEntry(
3131 IN NDIS_STATUS EventCode
,
3132 IN ULONG UniqueEventValue
,
3133 IN USHORT NumStrings
,
3134 IN PVOID StringsList OPTIONAL
,
3136 IN PVOID Data OPTIONAL
);
3141 NdisWritePcmciaAttributeMemory(
3142 IN NDIS_HANDLE NdisAdapterHandle
,
3148 /* Connectionless services */
3154 IN NDIS_HANDLE NdisVcHandle
,
3155 IN NDIS_HANDLE ProtocolPartyContext
,
3156 IN OUT PCO_CALL_PARAMETERS CallParameters
,
3157 OUT PNDIS_HANDLE NdisPartyHandle
);
3162 NdisClCloseAddressFamily(
3163 IN NDIS_HANDLE NdisAfHandle
);
3169 IN NDIS_HANDLE NdisVcHandle
,
3170 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
3171 IN PVOID Buffer OPTIONAL
,
3177 NdisClDeregisterSap(
3178 IN NDIS_HANDLE NdisSapHandle
);
3184 IN NDIS_HANDLE NdisPartyHandle
,
3185 IN PVOID Buffer OPTIONAL
,
3191 NdisClIncomingCallComplete(
3192 IN NDIS_STATUS Status
,
3193 IN NDIS_HANDLE NdisVcHandle
,
3194 IN PCO_CALL_PARAMETERS CallParameters
);
3200 IN NDIS_HANDLE NdisVcHandle
,
3201 IN OUT PCO_CALL_PARAMETERS CallParameters
,
3202 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
,
3203 OUT PNDIS_HANDLE NdisPartyHandle OPTIONAL
);
3208 NdisClModifyCallQoS(
3209 IN NDIS_HANDLE NdisVcHandle
,
3210 IN PCO_CALL_PARAMETERS CallParameters
);
3216 NdisClOpenAddressFamily(
3217 IN NDIS_HANDLE NdisBindingHandle
,
3218 IN PCO_ADDRESS_FAMILY AddressFamily
,
3219 IN NDIS_HANDLE ProtocolAfContext
,
3220 IN PNDIS_CLIENT_CHARACTERISTICS ClCharacteristics
,
3221 IN UINT SizeOfClCharacteristics
,
3222 OUT PNDIS_HANDLE NdisAfHandle
);
3228 IN NDIS_HANDLE NdisAfHandle
,
3229 IN NDIS_HANDLE ProtocolSapContext
,
3231 OUT PNDIS_HANDLE NdisSapHandle
);
3234 /* Call Manager services */
3240 IN NDIS_HANDLE NdisVcHandle
,
3241 IN OUT PCO_CALL_PARAMETERS CallParameters
);
3246 NdisCmAddPartyComplete(
3247 IN NDIS_STATUS Status
,
3248 IN NDIS_HANDLE NdisPartyHandle
,
3249 IN NDIS_HANDLE CallMgrPartyContext OPTIONAL
,
3250 IN PCO_CALL_PARAMETERS CallParameters
);
3255 NdisCmCloseAddressFamilyComplete(
3256 IN NDIS_STATUS Status
,
3257 IN NDIS_HANDLE NdisAfHandle
);
3262 NdisCmCloseCallComplete(
3263 IN NDIS_STATUS Status
,
3264 IN NDIS_HANDLE NdisVcHandle
,
3265 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
);
3271 IN NDIS_HANDLE NdisVcHandle
);
3276 NdisCmDeregisterSapComplete(
3277 IN NDIS_STATUS Status
,
3278 IN NDIS_HANDLE NdisSapHandle
);
3283 NdisCmDispatchCallConnected(
3284 IN NDIS_HANDLE NdisVcHandle
);
3289 NdisCmDispatchIncomingCall(
3290 IN NDIS_HANDLE NdisSapHandle
,
3291 IN NDIS_HANDLE NdisVcHandle
,
3292 IN PCO_CALL_PARAMETERS CallParameters
);
3297 NdisCmDispatchIncomingCallQoSChange(
3298 IN NDIS_HANDLE NdisVcHandle
,
3299 IN PCO_CALL_PARAMETERS CallParameters
);
3304 NdisCmDispatchIncomingCloseCall(
3305 IN NDIS_STATUS CloseStatus
,
3306 IN NDIS_HANDLE NdisVcHandle
,
3307 IN PVOID Buffer OPTIONAL
,
3313 NdisCmDispatchIncomingDropParty(
3314 IN NDIS_STATUS DropStatus
,
3315 IN NDIS_HANDLE NdisPartyHandle
,
3316 IN PVOID Buffer OPTIONAL
,
3322 NdisCmDropPartyComplete(
3323 IN NDIS_STATUS Status
,
3324 IN NDIS_HANDLE NdisPartyHandle
);
3329 NdisCmMakeCallComplete(
3330 IN NDIS_STATUS Status
,
3331 IN NDIS_HANDLE NdisVcHandle
,
3332 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
3333 IN NDIS_HANDLE CallMgrPartyContext OPTIONAL
,
3334 IN PCO_CALL_PARAMETERS CallParameters
);
3339 NdisCmModifyCallQoSComplete(
3340 IN NDIS_STATUS Status
,
3341 IN NDIS_HANDLE NdisVcHandle
,
3342 IN PCO_CALL_PARAMETERS CallParameters
);
3347 NdisCmOpenAddressFamilyComplete(
3348 IN NDIS_STATUS Status
,
3349 IN NDIS_HANDLE NdisAfHandle
,
3350 IN NDIS_HANDLE CallMgrAfContext
);
3355 NdisCmRegisterAddressFamily(
3356 IN NDIS_HANDLE NdisBindingHandle
,
3357 IN PCO_ADDRESS_FAMILY AddressFamily
,
3358 IN PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics
,
3359 IN UINT SizeOfCmCharacteristics
);
3364 NdisCmRegisterSapComplete(
3365 IN NDIS_STATUS Status
,
3366 IN NDIS_HANDLE NdisSapHandle
,
3367 IN NDIS_HANDLE CallMgrSapContext
);
3374 IN NDIS_HANDLE NdisVcHandle
,
3375 IN PCO_CALL_PARAMETERS CallParameters
);
3381 IN NDIS_HANDLE MiniportAdapterHandle
,
3382 IN NDIS_HANDLE NdisAfHandle
,
3383 IN NDIS_HANDLE MiniportVcContext
,
3384 OUT PNDIS_HANDLE NdisVcHandle
);
3389 NdisMCmDeactivateVc(
3390 IN NDIS_HANDLE NdisVcHandle
);
3396 IN NDIS_HANDLE NdisVcHandle
);
3401 NdisMCmRegisterAddressFamily(
3402 IN NDIS_HANDLE MiniportAdapterHandle
,
3403 IN PCO_ADDRESS_FAMILY AddressFamily
,
3404 IN PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics
,
3405 IN UINT SizeOfCmCharacteristics
);
3411 IN NDIS_HANDLE NdisAfHandle
,
3412 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
3413 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
3414 IN OUT PNDIS_REQUEST NdisRequest
);
3417 /* Connection-oriented services */
3423 IN NDIS_HANDLE NdisBindingHandle
,
3424 IN NDIS_HANDLE NdisAfHandle OPTIONAL
,
3425 IN NDIS_HANDLE ProtocolVcContext
,
3426 IN OUT PNDIS_HANDLE NdisVcHandle
);
3432 IN NDIS_HANDLE NdisVcHandle
);
3438 IN NDIS_HANDLE NdisBindingHandle
,
3439 IN NDIS_HANDLE NdisAfHandle OPTIONAL
,
3440 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
3441 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
3442 IN OUT PNDIS_REQUEST NdisRequest
);
3447 NdisCoRequestComplete(
3448 IN NDIS_STATUS Status
,
3449 IN NDIS_HANDLE NdisAfHandle
,
3450 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
3451 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
3452 IN PNDIS_REQUEST NdisRequest
);
3458 IN NDIS_HANDLE NdisVcHandle
,
3459 IN PPNDIS_PACKET PacketArray
,
3460 IN UINT NumberOfPackets
);
3465 NdisMCoActivateVcComplete(
3466 IN NDIS_STATUS Status
,
3467 IN NDIS_HANDLE NdisVcHandle
,
3468 IN PCO_CALL_PARAMETERS CallParameters
);
3473 NdisMCoDeactivateVcComplete(
3474 IN NDIS_STATUS Status
,
3475 IN NDIS_HANDLE NdisVcHandle
);
3480 NdisMCoIndicateReceivePacket(
3481 IN NDIS_HANDLE NdisVcHandle
,
3482 IN PPNDIS_PACKET PacketArray
,
3483 IN UINT NumberOfPackets
);
3488 NdisMCoIndicateStatus(
3489 IN NDIS_HANDLE MiniportAdapterHandle
,
3490 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
3491 IN NDIS_STATUS GeneralStatus
,
3492 IN PVOID StatusBuffer OPTIONAL
,
3493 IN ULONG StatusBufferSize
);
3498 NdisMCoReceiveComplete(
3499 IN NDIS_HANDLE MiniportAdapterHandle
);
3504 NdisMCoRequestComplete(
3505 IN NDIS_STATUS Status
,
3506 IN NDIS_HANDLE MiniportAdapterHandle
,
3507 IN PNDIS_REQUEST Request
);
3512 NdisMCoSendComplete(
3513 IN NDIS_STATUS Status
,
3514 IN NDIS_HANDLE NdisVcHandle
,
3515 IN PNDIS_PACKET Packet
);
3518 /* NDIS 5.0 extensions for intermediate drivers */
3523 NdisIMAssociateMiniport(
3524 IN NDIS_HANDLE DriverHandle
,
3525 IN NDIS_HANDLE ProtocolHandle
);
3530 NdisIMCancelInitializeDeviceInstance(
3531 IN NDIS_HANDLE DriverHandle
,
3532 IN PNDIS_STRING DeviceInstance
);
3537 NdisIMCopySendCompletePerPacketInfo(
3538 IN PNDIS_PACKET DstPacket
,
3539 IN PNDIS_PACKET SrcPacket
);
3544 NdisIMCopySendPerPacketInfo(
3545 IN PNDIS_PACKET DstPacket
,
3546 IN PNDIS_PACKET SrcPacket
);
3551 NdisIMDeregisterLayeredMiniport(
3552 IN NDIS_HANDLE DriverHandle
);
3557 NdisIMGetBindingContext(
3558 IN NDIS_HANDLE NdisBindingHandle
);
3563 NdisIMGetDeviceContext(
3564 IN NDIS_HANDLE MiniportAdapterHandle
);
3569 NdisIMInitializeDeviceInstanceEx(
3570 IN NDIS_HANDLE DriverHandle
,
3571 IN PNDIS_STRING DriverInstance
,
3572 IN NDIS_HANDLE DeviceContext OPTIONAL
);
3577 NdisInterlockedPopEntrySList(
3578 IN PSLIST_HEADER ListHead
,
3579 IN PKSPIN_LOCK Lock
);
3584 NdisInterlockedPushEntrySList(
3585 IN PSLIST_HEADER ListHead
,
3586 IN PSINGLE_LIST_ENTRY ListEntry
,
3587 IN PKSPIN_LOCK Lock
);
3592 NdisQueryBufferSafe(
3593 IN PNDIS_BUFFER Buffer
,
3594 OUT PVOID
*VirtualAddress OPTIONAL
,
3598 /* Prototypes for NDIS_MINIPORT_CHARACTERISTICS */
3601 (DDKAPI
*W_CHECK_FOR_HANG_HANDLER
)(
3602 IN NDIS_HANDLE MiniportAdapterContext
);
3605 (DDKAPI
*W_DISABLE_INTERRUPT_HANDLER
)(
3606 IN NDIS_HANDLE MiniportAdapterContext
);
3609 (DDKAPI
*W_ENABLE_INTERRUPT_HANDLER
)(
3610 IN NDIS_HANDLE MiniportAdapterContext
);
3613 (DDKAPI
*W_HALT_HANDLER
)(
3614 IN NDIS_HANDLE MiniportAdapterContext
);
3617 (DDKAPI
*W_HANDLE_INTERRUPT_HANDLER
)(
3618 IN NDIS_HANDLE MiniportAdapterContext
);
3621 (DDKAPI
*W_INITIALIZE_HANDLER
)(
3622 OUT PNDIS_STATUS OpenErrorStatus
,
3623 OUT PUINT SelectedMediumIndex
,
3624 IN PNDIS_MEDIUM MediumArray
,
3625 IN UINT MediumArraySize
,
3626 IN NDIS_HANDLE MiniportAdapterContext
,
3627 IN NDIS_HANDLE WrapperConfigurationContext
);
3630 (DDKAPI
*W_ISR_HANDLER
)(
3631 OUT PBOOLEAN InterruptRecognized
,
3632 OUT PBOOLEAN QueueMiniportHandleInterrupt
,
3633 IN NDIS_HANDLE MiniportAdapterContext
);
3636 (DDKAPI
*W_QUERY_INFORMATION_HANDLER
)(
3637 IN NDIS_HANDLE MiniportAdapterContext
,
3639 IN PVOID InformationBuffer
,
3640 IN ULONG InformationBufferLength
,
3641 OUT PULONG BytesWritten
,
3642 OUT PULONG BytesNeeded
);
3645 (DDKAPI
*W_RECONFIGURE_HANDLER
)(
3646 OUT PNDIS_STATUS OpenErrorStatus
,
3647 IN NDIS_HANDLE MiniportAdapterContext
,
3648 IN NDIS_HANDLE WrapperConfigurationContext
);
3651 (DDKAPI
*W_RESET_HANDLER
)(
3652 OUT PBOOLEAN AddressingReset
,
3653 IN NDIS_HANDLE MiniportAdapterContext
);
3656 (DDKAPI
*W_SEND_HANDLER
)(
3657 IN NDIS_HANDLE MiniportAdapterContext
,
3658 IN PNDIS_PACKET Packet
,
3662 (DDKAPI
*WM_SEND_HANDLER
)(
3663 IN NDIS_HANDLE MiniportAdapterContext
,
3664 IN NDIS_HANDLE NdisLinkHandle
,
3665 IN PNDIS_WAN_PACKET Packet
);
3668 (DDKAPI
*W_SET_INFORMATION_HANDLER
)(
3669 IN NDIS_HANDLE MiniportAdapterContext
,
3671 IN PVOID InformationBuffer
,
3672 IN ULONG InformationBufferLength
,
3673 OUT PULONG BytesRead
,
3674 OUT PULONG BytesNeeded
);
3677 (DDKAPI
*W_TRANSFER_DATA_HANDLER
)(
3678 OUT PNDIS_PACKET Packet
,
3679 OUT PUINT BytesTransferred
,
3680 IN NDIS_HANDLE MiniportAdapterContext
,
3681 IN NDIS_HANDLE MiniportReceiveContext
,
3683 IN UINT BytesToTransfer
);
3686 (DDKAPI
*WM_TRANSFER_DATA_HANDLER
)(
3690 /* NDIS structures available only to miniport drivers */
3692 #define NDIS30_MINIPORT_CHARACTERISTICS_S \
3693 UCHAR MajorNdisVersion; \
3694 UCHAR MinorNdisVersion; \
3696 W_CHECK_FOR_HANG_HANDLER CheckForHangHandler; \
3697 W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler; \
3698 W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler; \
3699 W_HALT_HANDLER HaltHandler; \
3700 W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler; \
3701 W_INITIALIZE_HANDLER InitializeHandler; \
3702 W_ISR_HANDLER ISRHandler; \
3703 W_QUERY_INFORMATION_HANDLER QueryInformationHandler; \
3704 W_RECONFIGURE_HANDLER ReconfigureHandler; \
3705 W_RESET_HANDLER ResetHandler; \
3706 W_SEND_HANDLER SendHandler; \
3707 W_SET_INFORMATION_HANDLER SetInformationHandler; \
3708 W_TRANSFER_DATA_HANDLER TransferDataHandler;
3710 typedef struct _NDIS30_MINIPORT_CHARACTERISTICS
{
3711 NDIS30_MINIPORT_CHARACTERISTICS_S
3712 } NDIS30_MINIPORT_CHARACTERISTICS
, *PSNDIS30_MINIPORT_CHARACTERISTICS
;
3715 /* Extensions for NDIS 4.0 miniports */
3718 (DDKAPI
*W_SEND_PACKETS_HANDLER
)(
3719 IN NDIS_HANDLE MiniportAdapterContext
,
3720 IN PPNDIS_PACKET PacketArray
,
3721 IN UINT NumberOfPackets
);
3724 (DDKAPI
*W_RETURN_PACKET_HANDLER
)(
3725 IN NDIS_HANDLE MiniportAdapterContext
,
3726 IN PNDIS_PACKET Packet
);
3729 (DDKAPI
*W_ALLOCATE_COMPLETE_HANDLER
)(
3730 IN NDIS_HANDLE MiniportAdapterContext
,
3731 IN PVOID VirtualAddress
,
3732 IN PNDIS_PHYSICAL_ADDRESS PhysicalAddress
,
3738 #define NDIS40_MINIPORT_CHARACTERISTICS_S \
3739 NDIS30_MINIPORT_CHARACTERISTICS Ndis30Chars; \
3740 W_RETURN_PACKET_HANDLER ReturnPacketHandler; \
3741 W_SEND_PACKETS_HANDLER SendPacketsHandler; \
3742 W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler;
3744 #else /* !__cplusplus */
3746 #define NDIS40_MINIPORT_CHARACTERISTICS_S \
3747 NDIS30_MINIPORT_CHARACTERISTICS_S \
3748 W_RETURN_PACKET_HANDLER ReturnPacketHandler; \
3749 W_SEND_PACKETS_HANDLER SendPacketsHandler; \
3750 W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler;
3752 #endif /* !__cplusplus */
3754 typedef struct _NDIS40_MINIPORT_CHARACTERISTICS
{
3755 NDIS40_MINIPORT_CHARACTERISTICS_S
3756 } NDIS40_MINIPORT_CHARACTERISTICS
, *PNDIS40_MINIPORT_CHARACTERISTICS
;
3759 /* Extensions for NDIS 5.0 miniports */
3762 (DDKAPI
*W_CO_CREATE_VC_HANDLER
)(
3763 IN NDIS_HANDLE MiniportAdapterContext
,
3764 IN NDIS_HANDLE NdisVcHandle
,
3765 OUT PNDIS_HANDLE MiniportVcContext
);
3768 (DDKAPI
*W_CO_DELETE_VC_HANDLER
)(
3769 IN NDIS_HANDLE MiniportVcContext
);
3772 (DDKAPI
*W_CO_ACTIVATE_VC_HANDLER
)(
3773 IN NDIS_HANDLE MiniportVcContext
,
3774 IN OUT PCO_CALL_PARAMETERS CallParameters
);
3777 (DDKAPI
*W_CO_DEACTIVATE_VC_HANDLER
)(
3778 IN NDIS_HANDLE MiniportVcContext
);
3781 (DDKAPI
*W_CO_SEND_PACKETS_HANDLER
)(
3782 IN NDIS_HANDLE MiniportVcContext
,
3783 IN PPNDIS_PACKET PacketArray
,
3784 IN UINT NumberOfPackets
);
3787 (DDKAPI
*W_CO_REQUEST_HANDLER
)(
3788 IN NDIS_HANDLE MiniportAdapterContext
,
3789 IN NDIS_HANDLE MiniportVcContext OPTIONAL
,
3790 IN OUT PNDIS_REQUEST NdisRequest
);
3794 #define NDIS50_MINIPORT_CHARACTERISTICS_S \
3795 NDIS40_MINIPORT_CHARACTERISTICS Ndis40Chars; \
3796 W_CO_CREATE_VC_HANDLER CoCreateVcHandler; \
3797 W_CO_DELETE_VC_HANDLER CoDeleteVcHandler; \
3798 W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler; \
3799 W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler; \
3800 W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler; \
3801 W_CO_REQUEST_HANDLER CoRequestHandler;
3803 #else /* !__cplusplus */
3805 #define NDIS50_MINIPORT_CHARACTERISTICS_S \
3806 NDIS40_MINIPORT_CHARACTERISTICS_S \
3807 W_CO_CREATE_VC_HANDLER CoCreateVcHandler; \
3808 W_CO_DELETE_VC_HANDLER CoDeleteVcHandler; \
3809 W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler; \
3810 W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler; \
3811 W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler; \
3812 W_CO_REQUEST_HANDLER CoRequestHandler;
3814 #endif /* !__cplusplus */
3816 typedef struct _NDIS50_MINIPORT_CHARACTERISTICS
{
3817 NDIS50_MINIPORT_CHARACTERISTICS_S
3818 } NDIS50_MINIPORT_CHARACTERISTICS
, *PSNDIS50_MINIPORT_CHARACTERISTICS
;
3821 /* Extensions for NDIS 5.1 miniports */
3824 (DDKAPI
*W_CANCEL_SEND_PACKETS_HANDLER
)(
3825 IN NDIS_HANDLE MiniportAdapterContext
,
3829 (DDKAPI
*W_PNP_EVENT_NOTIFY_HANDLER
)(
3830 IN NDIS_HANDLE MiniportAdapterContext
,
3831 IN NDIS_DEVICE_PNP_EVENT PnPEvent
,
3832 IN PVOID InformationBuffer
,
3833 IN ULONG InformationBufferLength
);
3836 (DDKAPI
*W_MINIPORT_SHUTDOWN_HANDLER
)(
3837 IN PVOID ShutdownContext
);
3841 #define NDIS51_MINIPORT_CHARACTERISTICS_S \
3842 NDIS50_MINIPORT_CHARACTERISTICS Ndis50Chars; \
3843 W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler; \
3844 W_PNP_EVENT_NOTIFY_HANDLER PnPEventNotifyHandler; \
3845 W_MINIPORT_SHUTDOWN_HANDLER AdapterShutdownHandler;
3849 #define NDIS51_MINIPORT_CHARACTERISTICS_S \
3850 NDIS50_MINIPORT_CHARACTERISTICS_S \
3851 W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler; \
3852 W_PNP_EVENT_NOTIFY_HANDLER PnPEventNotifyHandler; \
3853 W_MINIPORT_SHUTDOWN_HANDLER AdapterShutdownHandler;
3857 typedef struct _NDIS51_MINIPORT_CHARACTERISTICS
{
3858 NDIS51_MINIPORT_CHARACTERISTICS_S
3859 } NDIS51_MINIPORT_CHARACTERISTICS
, *PSNDIS51_MINIPORT_CHARACTERISTICS
;
3861 #if defined(NDIS51_MINIPORT)
3862 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
3863 NDIS51_MINIPORT_CHARACTERISTICS_S
3864 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
3865 #elif defined(NDIS50_MINIPORT)
3866 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
3867 NDIS50_MINIPORT_CHARACTERISTICS_S
3868 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
3869 #elif defined(NDIS40_MINIPORT)
3870 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
3871 NDIS40_MINIPORT_CHARACTERISTICS_S
3872 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
3874 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
3875 NDIS30_MINIPORT_CHARACTERISTICS_S
3876 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
3881 (DDKAPI
*SEND_HANDLER
)(
3882 IN NDIS_HANDLE MacBindingHandle
,
3883 IN PNDIS_PACKET Packet
);
3886 (DDKAPI
*TRANSFER_DATA_HANDLER
)(
3887 IN NDIS_HANDLE MacBindingHandle
,
3888 IN NDIS_HANDLE MacReceiveContext
,
3890 IN UINT BytesToTransfer
,
3891 OUT PNDIS_PACKET Packet
,
3892 OUT PUINT BytesTransferred
);
3895 (DDKAPI
*RESET_HANDLER
)(
3896 IN NDIS_HANDLE MacBindingHandle
);
3899 (DDKAPI
*REQUEST_HANDLER
)(
3900 IN NDIS_HANDLE MacBindingHandle
,
3901 IN PNDIS_REQUEST NdisRequest
);
3905 /* Structures available only to full MAC drivers */
3908 (DDKAPI
*PNDIS_INTERRUPT_SERVICE
)(
3909 IN PVOID InterruptContext
);
3912 (DDKAPI
*PNDIS_DEFERRED_PROCESSING
)(
3913 IN PVOID SystemSpecific1
,
3914 IN PVOID InterruptContext
,
3915 IN PVOID SystemSpecific2
,
3916 IN PVOID SystemSpecific3
);
3920 typedef struct _NDIS_MINIPORT_BLOCK NDIS_MINIPORT_BLOCK
, *PNDIS_MINIPORT_BLOCK
;
3921 typedef struct _NDIS_PROTOCOL_BLOCK NDIS_PROTOCOL_BLOCK
, *PNDIS_PROTOCOL_BLOCK
;
3922 typedef struct _NDIS_OPEN_BLOCK NDIS_OPEN_BLOCK
, *PNDIS_OPEN_BLOCK
;
3923 typedef struct _NDIS_M_DRIVER_BLOCK NDIS_M_DRIVER_BLOCK
, *PNDIS_M_DRIVER_BLOCK
;
3924 typedef struct _NDIS_AF_LIST NDIS_AF_LIST
, *PNDIS_AF_LIST
;
3927 // FIXME: Should be typedef struct _X_FILTER ETH_FILTER, *PETH_FILTER;
3929 typedef PVOID ETH_FILTER
, *PETH_FILTER
;
3932 typedef struct _NDIS_MINIPORT_INTERRUPT
{
3933 PKINTERRUPT InterruptObject
;
3934 KSPIN_LOCK DpcCountLock
;
3935 PVOID MiniportIdField
;
3936 W_ISR_HANDLER MiniportIsr
;
3937 W_HANDLE_INTERRUPT_HANDLER MiniportDpc
;
3939 PNDIS_MINIPORT_BLOCK Miniport
;
3942 KEVENT DpcsCompletedEvent
;
3943 BOOLEAN SharedInterrupt
;
3944 BOOLEAN IsrRequested
;
3945 } NDIS_MINIPORT_INTERRUPT
, *PNDIS_MINIPORT_INTERRUPT
;
3947 typedef struct _NDIS_MINIPORT_TIMER
{
3950 PNDIS_TIMER_FUNCTION MiniportTimerFunction
;
3951 PVOID MiniportTimerContext
;
3952 PNDIS_MINIPORT_BLOCK Miniport
;
3953 struct _NDIS_MINIPORT_TIMER
*NextDeferredTimer
;
3954 } NDIS_MINIPORT_TIMER
, *PNDIS_MINIPORT_TIMER
;
3956 typedef struct _NDIS_INTERRUPT
{
3957 PKINTERRUPT InterruptObject
;
3958 KSPIN_LOCK DpcCountLock
;
3959 PNDIS_INTERRUPT_SERVICE MacIsr
;
3960 PNDIS_DEFERRED_PROCESSING MacDpc
;
3962 PVOID InterruptContext
;
3965 KEVENT DpcsCompletedEvent
;
3966 } NDIS_INTERRUPT
, *PNDIS_INTERRUPT
;
3969 typedef enum _NDIS_WORK_ITEM_TYPE
{
3970 NdisWorkItemRequest
,
3972 NdisWorkItemReturnPackets
,
3973 NdisWorkItemResetRequested
,
3974 NdisWorkItemResetInProgress
,
3976 NdisWorkItemSendLoopback
,
3977 NdisWorkItemMiniportCallback
,
3979 } NDIS_WORK_ITEM_TYPE
, *PNDIS_WORK_ITEM_TYPE
;
3981 #define NUMBER_OF_WORK_ITEM_TYPES NdisMaxWorkItems
3982 #define NUMBER_OF_SINGLE_WORK_ITEMS 6
3984 typedef struct _NDIS_MINIPORT_WORK_ITEM
{
3985 SINGLE_LIST_ENTRY Link
;
3986 NDIS_WORK_ITEM_TYPE WorkItemType
;
3987 PVOID WorkItemContext
;
3988 } NDIS_MINIPORT_WORK_ITEM
, *PNDIS_MINIPORT_WORK_ITEM
;
3990 struct _NDIS_WORK_ITEM
;
3991 typedef VOID (*NDIS_PROC
)(struct _NDIS_WORK_ITEM
*, PVOID
);
3992 typedef struct _NDIS_WORK_ITEM
3996 UCHAR WrapperReserved
[8*sizeof(PVOID
)];
3997 } NDIS_WORK_ITEM
, *PNDIS_WORK_ITEM
;
3999 typedef struct _NDIS_BIND_PATHS
{
4001 NDIS_STRING Paths
[1];
4002 } NDIS_BIND_PATHS
, *PNDIS_BIND_PATHS
;
4006 (DDKAPI
*ETH_RCV_COMPLETE_HANDLER
)(
4007 IN PETH_FILTER Filter
);
4010 (DDKAPI
*ETH_RCV_INDICATE_HANDLER
)(
4011 IN PETH_FILTER Filter
,
4012 IN NDIS_HANDLE MacReceiveContext
,
4014 IN PVOID HeaderBuffer
,
4015 IN UINT HeaderBufferSize
,
4016 IN PVOID LookaheadBuffer
,
4017 IN UINT LookaheadBufferSize
,
4018 IN UINT PacketSize
);
4021 (DDKAPI
*FDDI_RCV_COMPLETE_HANDLER
)(
4022 IN PFDDI_FILTER Filter
);
4025 (DDKAPI
*FDDI_RCV_INDICATE_HANDLER
)(
4026 IN PFDDI_FILTER Filter
,
4027 IN NDIS_HANDLE MacReceiveContext
,
4029 IN UINT AddressLength
,
4030 IN PVOID HeaderBuffer
,
4031 IN UINT HeaderBufferSize
,
4032 IN PVOID LookaheadBuffer
,
4033 IN UINT LookaheadBufferSize
,
4034 IN UINT PacketSize
);
4037 (DDKAPI
*FILTER_PACKET_INDICATION_HANDLER
)(
4038 IN NDIS_HANDLE Miniport
,
4039 IN PPNDIS_PACKET PacketArray
,
4040 IN UINT NumberOfPackets
);
4043 (DDKAPI
*TR_RCV_COMPLETE_HANDLER
)(
4044 IN PTR_FILTER Filter
);
4047 (DDKAPI
*TR_RCV_INDICATE_HANDLER
)(
4048 IN PTR_FILTER Filter
,
4049 IN NDIS_HANDLE MacReceiveContext
,
4050 IN PVOID HeaderBuffer
,
4051 IN UINT HeaderBufferSize
,
4052 IN PVOID LookaheadBuffer
,
4053 IN UINT LookaheadBufferSize
,
4054 IN UINT PacketSize
);
4057 (DDKAPI
*WAN_RCV_COMPLETE_HANDLER
)(
4058 IN NDIS_HANDLE MiniportAdapterHandle
,
4059 IN NDIS_HANDLE NdisLinkContext
);
4062 (DDKAPI
*WAN_RCV_HANDLER
)(
4063 OUT PNDIS_STATUS Status
,
4064 IN NDIS_HANDLE MiniportAdapterHandle
,
4065 IN NDIS_HANDLE NdisLinkContext
,
4067 IN ULONG PacketSize
);
4070 (FASTCALL
*NDIS_M_DEQUEUE_WORK_ITEM
)(
4071 IN PNDIS_MINIPORT_BLOCK Miniport
,
4072 IN NDIS_WORK_ITEM_TYPE WorkItemType
,
4073 OUT PVOID
*WorkItemContext
);
4076 (FASTCALL
*NDIS_M_QUEUE_NEW_WORK_ITEM
)(
4077 IN PNDIS_MINIPORT_BLOCK Miniport
,
4078 IN NDIS_WORK_ITEM_TYPE WorkItemType
,
4079 IN PVOID WorkItemContext
);
4082 (FASTCALL
*NDIS_M_QUEUE_WORK_ITEM
)(
4083 IN PNDIS_MINIPORT_BLOCK Miniport
,
4084 IN NDIS_WORK_ITEM_TYPE WorkItemType
,
4085 IN PVOID WorkItemContext
);
4088 (DDKAPI
*NDIS_M_REQ_COMPLETE_HANDLER
)(
4089 IN NDIS_HANDLE MiniportAdapterHandle
,
4090 IN NDIS_STATUS Status
);
4093 (DDKAPI
*NDIS_M_RESET_COMPLETE_HANDLER
)(
4094 IN NDIS_HANDLE MiniportAdapterHandle
,
4095 IN NDIS_STATUS Status
,
4096 IN BOOLEAN AddressingReset
);
4099 (DDKAPI
*NDIS_M_SEND_COMPLETE_HANDLER
)(
4100 IN NDIS_HANDLE MiniportAdapterHandle
,
4101 IN PNDIS_PACKET Packet
,
4102 IN NDIS_STATUS Status
);
4105 (DDKAPI
*NDIS_M_SEND_RESOURCES_HANDLER
)(
4106 IN NDIS_HANDLE MiniportAdapterHandle
);
4109 (FASTCALL
*NDIS_M_START_SENDS
)(
4110 IN PNDIS_MINIPORT_BLOCK Miniport
);
4113 (DDKAPI
*NDIS_M_STATUS_HANDLER
)(
4114 IN NDIS_HANDLE MiniportHandle
,
4115 IN NDIS_STATUS GeneralStatus
,
4116 IN PVOID StatusBuffer
,
4117 IN UINT StatusBufferSize
);
4120 (DDKAPI
*NDIS_M_STS_COMPLETE_HANDLER
)(
4121 IN NDIS_HANDLE MiniportAdapterHandle
);
4124 (DDKAPI
*NDIS_M_TD_COMPLETE_HANDLER
)(
4125 IN NDIS_HANDLE MiniportAdapterHandle
,
4126 IN PNDIS_PACKET Packet
,
4127 IN NDIS_STATUS Status
,
4128 IN UINT BytesTransferred
);
4130 typedef VOID (DDKAPI
*NDIS_WM_SEND_COMPLETE_HANDLER
)(
4131 IN NDIS_HANDLE MiniportAdapterHandle
,
4133 IN NDIS_STATUS Status
);
4138 #define ARC_SEND_BUFFERS 8
4139 #define ARC_HEADER_SIZE 4
4141 typedef struct _NDIS_ARC_BUF
{
4142 NDIS_HANDLE ArcnetBufferPool
;
4143 PUCHAR ArcnetLookaheadBuffer
;
4145 ARC_BUFFER_LIST ArcnetBuffers
[ARC_SEND_BUFFERS
];
4146 } NDIS_ARC_BUF
, *PNDIS_ARC_BUF
;
4150 typedef struct _NDIS_LOG
{
4151 PNDIS_MINIPORT_BLOCK Miniport
;
4159 } NDIS_LOG
, *PNDIS_LOG
;
4162 #define FILTERDBS_ARCNET_S \
4165 #define FILTERDBS_ARCNET_S \
4167 #endif /* !ARCNET */
4169 #define FILTERDBS_S \
4170 _ANONYMOUS_UNION union { \
4171 PETH_FILTER EthDB; \
4172 PNULL_FILTER NullDB; \
4175 PFDDI_FILTER FddiDB; \
4178 typedef struct _FILTERDBS
{
4180 } FILTERDBS
, *PFILTERDBS
;
4183 struct _NDIS_MINIPORT_BLOCK
{
4185 PNDIS_MINIPORT_BLOCK NextMiniport
;
4186 PNDIS_M_DRIVER_BLOCK DriverHandle
;
4187 NDIS_HANDLE MiniportAdapterContext
;
4188 UNICODE_STRING MiniportName
;
4189 PNDIS_BIND_PATHS BindPaths
;
4190 NDIS_HANDLE OpenQueue
;
4192 NDIS_HANDLE DeviceContext
;
4196 UCHAR AssignedProcessor
;
4198 PNDIS_REQUEST MediaRequest
;
4199 PNDIS_MINIPORT_INTERRUPT Interrupt
;
4202 LIST_ENTRY PacketList
;
4203 PNDIS_PACKET FirstPendingPacket
;
4204 PNDIS_PACKET ReturnPacketsQueue
;
4205 ULONG RequestBuffer
;
4206 PVOID SetMCastBuffer
;
4207 PNDIS_MINIPORT_BLOCK PrimaryMiniport
;
4208 PVOID WrapperContext
;
4209 PVOID BusDataContext
;
4210 ULONG PnPCapabilities
;
4211 PCM_RESOURCE_LIST Resources
;
4212 NDIS_TIMER WakeUpDpcTimer
;
4213 UNICODE_STRING BaseName
;
4214 UNICODE_STRING SymbolicLinkName
;
4215 ULONG CheckForHangSeconds
;
4217 USHORT CFHangCurrentTick
;
4218 NDIS_STATUS ResetStatus
;
4219 NDIS_HANDLE ResetOpen
;
4221 FILTER_PACKET_INDICATION_HANDLER PacketIndicateHandler
;
4222 NDIS_M_SEND_COMPLETE_HANDLER SendCompleteHandler
;
4223 NDIS_M_SEND_RESOURCES_HANDLER SendResourcesHandler
;
4224 NDIS_M_RESET_COMPLETE_HANDLER ResetCompleteHandler
;
4225 NDIS_MEDIUM MediaType
;
4227 NDIS_INTERFACE_TYPE BusType
;
4228 NDIS_INTERFACE_TYPE AdapterType
;
4229 PDEVICE_OBJECT DeviceObject
;
4230 PDEVICE_OBJECT PhysicalDeviceObject
;
4231 PDEVICE_OBJECT NextDeviceObject
;
4232 PMAP_REGISTER_ENTRY MapRegisters
;
4233 PNDIS_AF_LIST CallMgrAfList
;
4234 PVOID MiniportThread
;
4236 USHORT SetInfoBufLen
;
4237 USHORT MaxSendPackets
;
4238 NDIS_STATUS FakeStatus
;
4240 PUNICODE_STRING pAdapterInstanceName
;
4241 PNDIS_MINIPORT_TIMER TimerQueue
;
4243 PNDIS_REQUEST PendingRequest
;
4244 UINT MaximumLongAddresses
;
4245 UINT MaximumShortAddresses
;
4246 UINT CurrentLookahead
;
4247 UINT MaximumLookahead
;
4248 W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler
;
4249 W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler
;
4250 W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler
;
4251 W_SEND_PACKETS_HANDLER SendPacketsHandler
;
4252 NDIS_M_START_SENDS DeferredSendHandler
;
4253 ETH_RCV_INDICATE_HANDLER EthRxIndicateHandler
;
4254 TR_RCV_INDICATE_HANDLER TrRxIndicateHandler
;
4255 FDDI_RCV_INDICATE_HANDLER FddiRxIndicateHandler
;
4256 ETH_RCV_COMPLETE_HANDLER EthRxCompleteHandler
;
4257 TR_RCV_COMPLETE_HANDLER TrRxCompleteHandler
;
4258 FDDI_RCV_COMPLETE_HANDLER FddiRxCompleteHandler
;
4259 NDIS_M_STATUS_HANDLER StatusHandler
;
4260 NDIS_M_STS_COMPLETE_HANDLER StatusCompleteHandler
;
4261 NDIS_M_TD_COMPLETE_HANDLER TDCompleteHandler
;
4262 NDIS_M_REQ_COMPLETE_HANDLER QueryCompleteHandler
;
4263 NDIS_M_REQ_COMPLETE_HANDLER SetCompleteHandler
;
4264 NDIS_WM_SEND_COMPLETE_HANDLER WanSendCompleteHandler
;
4265 WAN_RCV_HANDLER WanRcvHandler
;
4266 WAN_RCV_COMPLETE_HANDLER WanRcvCompleteHandler
;
4267 #if defined(NDIS_WRAPPER)
4268 PNDIS_MINIPORT_BLOCK NextGlobalMiniport
;
4269 SINGLE_LIST_ENTRY WorkQueue
[NUMBER_OF_WORK_ITEM_TYPES
];
4270 SINGLE_LIST_ENTRY SingleWorkItems
[NUMBER_OF_SINGLE_WORK_ITEMS
];
4273 UCHAR ArcnetAddress
;
4275 _ANONYMOUS_UNION
union {
4277 PNDIS_ARC_BUF ArcBuf
;
4283 PCM_RESOURCE_LIST AllocatedResources
;
4284 PCM_RESOURCE_LIST AllocatedResourcesTranslated
;
4285 SINGLE_LIST_ENTRY PatternList
;
4286 NDIS_PNP_CAPABILITIES PMCapabilities
;
4287 DEVICE_CAPABILITIES DeviceCaps
;
4289 DEVICE_POWER_STATE CurrentDevicePowerState
;
4291 SYSTEM_POWER_STATE WaitWakeSystemState
;
4292 LARGE_INTEGER VcIndex
;
4293 KSPIN_LOCK VcCountLock
;
4294 LIST_ENTRY WmiEnabledVcs
;
4295 PNDIS_GUID pNdisGuidMap
;
4296 PNDIS_GUID pCustomGuidMap
;
4298 USHORT cNdisGuidMap
;
4299 USHORT cCustomGuidMap
;
4300 USHORT CurrentMapRegister
;
4301 PKEVENT AllocationEvent
;
4302 USHORT BaseMapRegistersNeeded
;
4303 USHORT SGMapRegistersNeeded
;
4304 ULONG MaximumPhysicalMapping
;
4305 NDIS_TIMER MediaDisconnectTimer
;
4306 USHORT MediaDisconnectTimeOut
;
4307 USHORT InstanceNumber
;
4308 NDIS_EVENT OpenReadyEvent
;
4309 NDIS_PNP_DEVICE_STATE PnPDeviceState
;
4310 NDIS_PNP_DEVICE_STATE OldPnPDeviceState
;
4311 PGET_SET_DEVICE_DATA SetBusData
;
4312 PGET_SET_DEVICE_DATA GetBusData
;
4316 NDIS_STATS NdisStats
;
4320 PNDIS_PACKET IndicatedPacket
[MAXIMUM_PROCESSORS
];
4321 PKEVENT RemoveReadyEvent
;
4322 PKEVENT AllOpensClosedEvent
;
4323 PKEVENT AllRequestsCompletedEvent
;
4325 NDIS_MINIPORT_WORK_ITEM WorkItemBuffer
[NUMBER_OF_SINGLE_WORK_ITEMS
];
4326 PDMA_ADAPTER SystemAdapterObject
;
4327 ULONG DriverVerifyFlags
;
4329 USHORT InternalResetCount
;
4330 USHORT MiniportResetCount
;
4331 USHORT MediaSenseConnectCount
;
4332 USHORT MediaSenseDisconnectCount
;
4333 PNDIS_PACKET
*xPackets
;
4334 ULONG UserModeOpenReferences
;
4335 _ANONYMOUS_UNION
union {
4336 PVOID SavedSendHandler
;
4337 PVOID SavedWanSendHandler
;
4339 PVOID SavedSendPacketsHandler
;
4340 PVOID SavedCancelSendPacketsHandler
;
4341 W_SEND_PACKETS_HANDLER WSendPacketsHandler
;
4342 ULONG MiniportAttributes
;
4343 PDMA_ADAPTER SavedSystemAdapterObject
;
4345 USHORT CFHangXTicks
;
4347 ULONG IndicatedPacketsCount
;
4348 ULONG PhysicalMediumType
;
4349 PNDIS_REQUEST LastRequest
;
4350 LONG DmaAdapterRefCount
;
4356 KSPIN_LOCK TimerQueueLock
;
4357 PKEVENT ResetCompletedEvent
;
4358 PKEVENT QueuedBindingCompletedEvent
;
4359 PKEVENT DmaResourcesReleasedEvent
;
4360 FILTER_PACKET_INDICATION_HANDLER SavedPacketIndicateHandler
;
4361 ULONG RegisteredInterrupts
;
4362 PNPAGED_LOOKASIDE_LIST SGListLookasideList
;
4363 ULONG ScatterGatherListSize
;
4368 /* Handler prototypes for NDIS_OPEN_BLOCK */
4370 typedef NDIS_STATUS (DDKAPI
*WAN_SEND_HANDLER
)(
4371 IN NDIS_HANDLE MacBindingHandle
,
4372 IN NDIS_HANDLE LinkHandle
,
4375 /* NDIS 4.0 extension */
4377 typedef VOID (DDKAPI
*SEND_PACKETS_HANDLER
)(
4378 IN NDIS_HANDLE MiniportAdapterContext
,
4379 IN PPNDIS_PACKET PacketArray
,
4380 IN UINT NumberOfPackets
);
4382 #if defined(NDIS_WRAPPER)
4383 #define NDIS_COMMON_OPEN_BLOCK_WRAPPER_S \
4386 KSPIN_LOCK SpinLock; \
4387 NDIS_HANDLE FilterHandle; \
4388 ULONG ProtocolOptions; \
4389 USHORT CurrentLookahead; \
4390 USHORT ConnectDampTicks; \
4391 USHORT DisconnectDampTicks; \
4392 W_SEND_HANDLER WSendHandler; \
4393 W_TRANSFER_DATA_HANDLER WTransferDataHandler; \
4394 W_SEND_PACKETS_HANDLER WSendPacketsHandler; \
4395 W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler; \
4396 ULONG WakeUpEnable; \
4397 PKEVENT CloseCompleteEvent; \
4399 ULONG AfReferences; \
4400 PNDIS_OPEN_BLOCK NextGlobalOpen;
4402 #define NDIS_COMMON_OPEN_BLOCK_WRAPPER_S
4405 #define NDIS_COMMON_OPEN_BLOCK_S \
4407 NDIS_HANDLE BindingHandle; \
4408 PNDIS_MINIPORT_BLOCK MiniportHandle; \
4409 PNDIS_PROTOCOL_BLOCK ProtocolHandle; \
4410 NDIS_HANDLE ProtocolBindingContext; \
4411 PNDIS_OPEN_BLOCK MiniportNextOpen; \
4412 PNDIS_OPEN_BLOCK ProtocolNextOpen; \
4413 NDIS_HANDLE MiniportAdapterContext; \
4414 BOOLEAN Reserved1; \
4415 BOOLEAN Reserved2; \
4416 BOOLEAN Reserved3; \
4417 BOOLEAN Reserved4; \
4418 PNDIS_STRING BindDeviceName; \
4419 KSPIN_LOCK Reserved5; \
4420 PNDIS_STRING RootDeviceName; \
4421 _ANONYMOUS_UNION union { \
4422 SEND_HANDLER SendHandler; \
4423 WAN_SEND_HANDLER WanSendHandler; \
4425 TRANSFER_DATA_HANDLER TransferDataHandler; \
4426 SEND_COMPLETE_HANDLER SendCompleteHandler; \
4427 TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; \
4428 RECEIVE_HANDLER ReceiveHandler; \
4429 RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; \
4430 WAN_RECEIVE_HANDLER WanReceiveHandler; \
4431 REQUEST_COMPLETE_HANDLER RequestCompleteHandler; \
4432 RECEIVE_PACKET_HANDLER ReceivePacketHandler; \
4433 SEND_PACKETS_HANDLER SendPacketsHandler; \
4434 RESET_HANDLER ResetHandler; \
4435 REQUEST_HANDLER RequestHandler; \
4436 RESET_COMPLETE_HANDLER ResetCompleteHandler; \
4437 STATUS_HANDLER StatusHandler; \
4438 STATUS_COMPLETE_HANDLER StatusCompleteHandler; \
4439 NDIS_COMMON_OPEN_BLOCK_WRAPPER_S
4441 typedef struct _NDIS_COMMON_OPEN_BLOCK
{
4442 NDIS_COMMON_OPEN_BLOCK_S
4443 } NDIS_COMMON_OPEN_BLOCK
;
4445 struct _NDIS_OPEN_BLOCK
4448 NDIS_COMMON_OPEN_BLOCK NdisCommonOpenBlock
;
4450 NDIS_COMMON_OPEN_BLOCK_S
4456 /* Routines for NDIS miniport drivers */
4461 NdisInitializeWrapper(
4462 OUT PNDIS_HANDLE NdisWrapperHandle
,
4463 IN PVOID SystemSpecific1
,
4464 IN PVOID SystemSpecific2
,
4465 IN PVOID SystemSpecific3
);
4470 NdisMAllocateMapRegisters(
4471 IN NDIS_HANDLE MiniportAdapterHandle
,
4473 IN NDIS_DMA_SIZE DmaSize
,
4474 IN ULONG PhysicalMapRegistersNeeded
,
4475 IN ULONG MaximumPhysicalMapping
);
4479 * NdisMArcIndicateReceive(
4480 * IN NDIS_HANDLE MiniportAdapterHandle,
4481 * IN PUCHAR HeaderBuffer,
4482 * IN PUCHAR DataBuffer,
4485 #define NdisMArcIndicateReceive(MiniportAdapterHandle, \
4490 ArcFilterDprIndicateReceive( \
4491 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->ArcDB), \
4499 * NdisMArcIndicateReceiveComplete(
4500 * IN NDIS_HANDLE MiniportAdapterHandle);
4502 #define NdisMArcIndicateReceiveComplete(MiniportAdapterHandle) \
4504 if (((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->EthDB) \
4506 NdisMEthIndicateReceiveComplete(_H); \
4509 ArcFilterDprIndicateReceiveComplete( \
4510 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->ArcDB); \
4517 IN NDIS_HANDLE LogHandle
);
4523 IN NDIS_HANDLE MiniportAdapterHandle
,
4525 OUT PNDIS_HANDLE LogHandle
);
4530 NdisMDeregisterAdapterShutdownHandler(
4531 IN NDIS_HANDLE MiniportHandle
);
4536 NdisMDeregisterInterrupt(
4537 IN PNDIS_MINIPORT_INTERRUPT Interrupt
);
4542 NdisMDeregisterIoPortRange(
4543 IN NDIS_HANDLE MiniportAdapterHandle
,
4544 IN UINT InitialPort
,
4545 IN UINT NumberOfPorts
,
4546 IN PVOID PortOffset
);
4550 * NdisMEthIndicateReceive(
4551 * IN NDIS_HANDLE MiniportAdapterHandle,
4552 * IN NDIS_HANDLE MiniportReceiveContext,
4553 * IN PVOID HeaderBuffer,
4554 * IN UINT HeaderBufferSize,
4555 * IN PVOID LookaheadBuffer,
4556 * IN UINT LookaheadBufferSize,
4557 * IN UINT PacketSize);
4559 #define NdisMEthIndicateReceive(MiniportAdapterHandle, \
4560 MiniportReceiveContext, \
4564 LookaheadBufferSize, \
4567 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxIndicateHandler)( \
4568 ((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthDB, \
4569 (MiniportReceiveContext), \
4572 (HeaderBufferSize), \
4573 (LookaheadBuffer), \
4574 (LookaheadBufferSize), \
4580 * NdisMEthIndicateReceiveComplete(
4581 * IN NDIS_HANDLE MiniportAdapterHandle);
4583 #define NdisMEthIndicateReceiveComplete(MiniportAdapterHandle) \
4585 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxCompleteHandler)( \
4586 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->EthDB); \
4591 * NdisMFddiIndicateReceive(
4592 * IN NDIS_HANDLE MiniportAdapterHandle,
4593 * IN NDIS_HANDLE MiniportReceiveContext,
4594 * IN PVOID HeaderBuffer,
4595 * IN UINT HeaderBufferSize,
4596 * IN PVOID LookaheadBuffer,
4597 * IN UINT LookaheadBufferSize,
4598 * IN UINT PacketSize);
4600 #define NdisMFddiIndicateReceive(MiniportAdapterHandle, \
4601 MiniportReceiveContext, \
4605 LookaheadBufferSize, \
4608 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxIndicateHandler)( \
4609 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiDB), \
4610 (MiniportReceiveContext), \
4611 (PUCHAR)(HeaderBuffer) + 1, \
4612 (((*(PUCHAR*)(HeaderBuffer)) & 0x40) ? \
4613 FDDI_LENGTH_OF_LONG_ADDRESS : \
4614 FDDI_LENGTH_OF_SHORT_ADDRESS), \
4616 (HeaderBufferSize), \
4617 (LookaheadBuffer), \
4618 (LookaheadBufferSize), \
4626 * NdisMFddiIndicateReceiveComplete(
4627 * IN NDIS_HANDLE MiniportAdapterHandle);
4629 #define NdisMFddiIndicateReceiveComplete(MiniportAdapterHandle) \
4631 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxCompleteHandler)( \
4632 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FddiDB); \
4639 IN NDIS_HANDLE LogHandle
);
4644 NdisMFreeMapRegisters(
4645 IN NDIS_HANDLE MiniportAdapterHandle
);
4650 * NdisMIndicateReceivePacket(
4651 * IN NDIS_HANDLE MiniportAdapterHandle,
4652 * IN PPNDIS_PACKET ReceivePackets,
4653 * IN UINT NumberOfPackets);
4655 #define NdisMIndicateReceivePacket(MiniportAdapterHandle, \
4656 ReceivePackets, NumberOfPackets) \
4657 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->PacketIndicateHandler)( \
4658 MiniportAdapterHandle, ReceivePackets, NumberOfPackets)
4662 * NdisMIndicateStatus(
4663 * IN NDIS_HANDLE MiniportAdapterHandle,
4664 * IN NDIS_STATUS GeneralStatus,
4665 * IN PVOID StatusBuffer,
4666 * IN UINT StatusBufferSize);
4669 #define NdisMIndicateStatus(MiniportAdapterHandle, \
4670 GeneralStatus, StatusBuffer, StatusBufferSize) \
4671 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->StatusHandler)( \
4672 MiniportAdapterHandle, GeneralStatus, StatusBuffer, StatusBufferSize)
4676 * NdisMIndicateStatusComplete(
4677 * IN NDIS_HANDLE MiniportAdapterHandle);
4679 #define NdisMIndicateStatusComplete(MiniportAdapterHandle) \
4680 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->StatusCompleteHandler)( \
4681 MiniportAdapterHandle)
4685 * NdisMInitializeWrapper(
4686 * OUT PNDIS_HANDLE NdisWrapperHandle,
4687 * IN PVOID SystemSpecific1,
4688 * IN PVOID SystemSpecific2,
4689 * IN PVOID SystemSpecific3);
4691 #define NdisMInitializeWrapper(NdisWrapperHandle, \
4695 NdisInitializeWrapper((NdisWrapperHandle), \
4696 (SystemSpecific1), \
4697 (SystemSpecific2), \
4704 OUT PVOID
*VirtualAddress
,
4705 IN NDIS_HANDLE MiniportAdapterHandle
,
4706 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
,
4711 * NdisMQueryInformationComplete(
4712 * IN NDIS_HANDLE MiniportAdapterHandle,
4713 * IN NDIS_STATUS Status);
4715 #define NdisMQueryInformationComplete(MiniportAdapterHandle, Status) \
4716 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->QueryCompleteHandler)(MiniportAdapterHandle, Status)
4721 NdisMRegisterAdapterShutdownHandler(
4722 IN NDIS_HANDLE MiniportHandle
,
4723 IN PVOID ShutdownContext
,
4724 IN ADAPTER_SHUTDOWN_HANDLER ShutdownHandler
);
4729 NdisMRegisterInterrupt(
4730 OUT PNDIS_MINIPORT_INTERRUPT Interrupt
,
4731 IN NDIS_HANDLE MiniportAdapterHandle
,
4732 IN UINT InterruptVector
,
4733 IN UINT InterruptLevel
,
4734 IN BOOLEAN RequestIsr
,
4735 IN BOOLEAN SharedInterrupt
,
4736 IN NDIS_INTERRUPT_MODE InterruptMode
);
4741 NdisMRegisterIoPortRange(
4742 OUT PVOID
*PortOffset
,
4743 IN NDIS_HANDLE MiniportAdapterHandle
,
4744 IN UINT InitialPort
,
4745 IN UINT NumberOfPorts
);
4750 NdisMRegisterMiniport(
4751 IN NDIS_HANDLE NdisWrapperHandle
,
4752 IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics
,
4753 IN UINT CharacteristicsLength
);
4759 IN PNDIS_MINIPORT_TIMER Timer
,
4760 IN UINT MillisecondsToDelay
);
4765 NdisMInitializeTimer(
4766 IN OUT PNDIS_MINIPORT_TIMER Timer
,
4767 IN NDIS_HANDLE MiniportAdapterHandle
,
4768 IN PNDIS_TIMER_FUNCTION TimerFunction
,
4769 IN PVOID FunctionContext
);
4774 NdisMSetPeriodicTimer(
4775 IN PNDIS_MINIPORT_TIMER Timer
,
4776 IN UINT MillisecondPeriod
);
4782 IN PNDIS_MINIPORT_TIMER Timer
,
4783 OUT PBOOLEAN TimerCancelled
);
4785 #if !defined(NDIS_WRAPPER)
4789 * NdisMResetComplete(
4790 * IN NDIS_HANDLE MiniportAdapterHandle,
4791 * IN NDIS_STATUS Status,
4792 * IN BOOLEAN AddressingReset);
4794 #define NdisMResetComplete(MiniportAdapterHandle, \
4798 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->ResetCompleteHandler)( \
4799 MiniportAdapterHandle, Status, AddressingReset); \
4804 * NdisMSendComplete(
4805 * IN NDIS_HANDLE MiniportAdapterHandle,
4806 * IN PNDIS_PACKET Packet,
4807 * IN NDIS_STATUS Status);
4809 #define NdisMSendComplete(MiniportAdapterHandle, \
4813 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SendCompleteHandler)( \
4814 MiniportAdapterHandle, Packet, Status); \
4819 * NdisMSendResourcesAvailable(
4820 * IN NDIS_HANDLE MiniportAdapterHandle);
4822 #define NdisMSendResourcesAvailable(MiniportAdapterHandle) \
4824 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SendResourcesHandler)( \
4825 MiniportAdapterHandle); \
4830 * NdisMTransferDataComplete(
4831 * IN NDIS_HANDLE MiniportAdapterHandle,
4832 * IN PNDIS_PACKET Packet,
4833 * IN NDIS_STATUS Status,
4834 * IN UINT BytesTransferred);
4836 #define NdisMTransferDataComplete(MiniportAdapterHandle, \
4841 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TDCompleteHandler)( \
4842 MiniportAdapterHandle, Packet, Status, BytesTransferred) \
4845 #endif /* !_NDIS_ */
4850 * NdisMSetAttributes(
4851 * IN NDIS_HANDLE MiniportAdapterHandle,
4852 * IN NDIS_HANDLE MiniportAdapterContext,
4853 * IN BOOLEAN BusMaster,
4854 * IN NDIS_INTERFACE_TYPE AdapterType);
4856 #define NdisMSetAttributes(MiniportAdapterHandle, \
4857 MiniportAdapterContext, \
4860 NdisMSetAttributesEx(MiniportAdapterHandle, \
4861 MiniportAdapterContext, \
4863 (BusMaster) ? NDIS_ATTRIBUTE_BUS_MASTER : 0, \
4869 NdisMSetAttributesEx(
4870 IN NDIS_HANDLE MiniportAdapterHandle
,
4871 IN NDIS_HANDLE MiniportAdapterContext
,
4872 IN UINT CheckForHangTimeInSeconds OPTIONAL
,
4873 IN ULONG AttributeFlags
,
4874 IN NDIS_INTERFACE_TYPE AdapterType
);
4878 * NdisMSetInformationComplete(
4879 * IN NDIS_HANDLE MiniportAdapterHandle,
4880 * IN NDIS_STATUS Status);
4882 #define NdisMSetInformationComplete(MiniportAdapterHandle, \
4884 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SetCompleteHandler)( \
4885 MiniportAdapterHandle, Status)
4891 IN ULONG MicrosecondsToSleep
);
4896 NdisMSynchronizeWithInterrupt(
4897 IN PNDIS_MINIPORT_INTERRUPT Interrupt
,
4898 IN PVOID SynchronizeFunction
,
4899 IN PVOID SynchronizeContext
);
4903 * NdisMTrIndicateReceive(
4904 * IN NDIS_HANDLE MiniportAdapterHandle,
4905 * IN NDIS_HANDLE MiniportReceiveContext,
4906 * IN PVOID HeaderBuffer,
4907 * IN UINT HeaderBufferSize,
4908 * IN PVOID LookaheadBuffer,
4909 * IN UINT LookaheadBufferSize,
4910 * IN UINT PacketSize);
4912 #define NdisMTrIndicateReceive(MiniportAdapterHandle, \
4913 MiniportReceiveContext, \
4917 LookaheadBufferSize, \
4920 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxIndicateHandler)( \
4921 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrDB), \
4922 (MiniportReceiveContext), \
4925 (HeaderBufferSize), \
4926 (LookaheadBuffer), \
4927 (LookaheadBufferSize), \
4933 * NdisMTrIndicateReceiveComplete(
4934 * IN NDIS_HANDLE MiniportAdapterHandle);
4936 #define NdisMTrIndicateReceiveComplete(MiniportAdapterHandle) \
4938 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxCompleteHandler)( \
4939 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->TrDB); \
4946 IN NDIS_HANDLE LogHandle
,
4948 IN UINT LogBufferSize
);
4953 NdisMQueryAdapterResources(
4954 OUT PNDIS_STATUS Status
,
4955 IN NDIS_HANDLE WrapperConfigurationContext
,
4956 OUT PNDIS_RESOURCE_LIST ResourceList
,
4957 IN OUT PUINT BufferSize
);
4962 NdisTerminateWrapper(
4963 IN NDIS_HANDLE NdisWrapperHandle
,
4964 IN PVOID SystemSpecific
);
4970 IN NDIS_HANDLE MiniportAdapterHandle
,
4971 IN PVOID VirtualAddress
,
4976 /* Event functions */
4981 NdisInitializeEvent(
4982 IN PNDIS_EVENT Event
);
4988 IN PNDIS_EVENT Event
);
4994 IN PNDIS_EVENT Event
);
5000 IN PNDIS_EVENT Event
,
5005 /* NDIS intermediate miniport structures */
5007 typedef VOID (DDKAPI
*W_MINIPORT_CALLBACK
)(
5008 IN NDIS_HANDLE MiniportAdapterContext
,
5009 IN PVOID CallbackContext
);
5013 /* Routines for intermediate miniport drivers */
5018 NdisIMDeInitializeDeviceInstance(
5019 IN NDIS_HANDLE NdisMiniportHandle
);
5023 * NdisIMInitializeDeviceInstance(
5024 * IN NDIS_HANDLE DriverHandle,
5025 * IN PNDIS_STRING DeviceInstance);
5027 #define NdisIMInitializeDeviceInstance(DriverHandle, DeviceInstance) \
5028 NdisIMInitializeDeviceInstanceEx(DriverHandle, DeviceInstance, NULL)
5033 NdisIMRegisterLayeredMiniport(
5034 IN NDIS_HANDLE NdisWrapperHandle
,
5035 IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics
,
5036 IN UINT CharacteristicsLength
,
5037 OUT PNDIS_HANDLE DriverHandle
);
5040 /* Functions obsoleted by NDIS 5.0 */
5046 IN PNDIS_HANDLE NdisDmaHandle
);
5051 NdisSetupDmaTransfer(
5052 OUT PNDIS_STATUS Status
,
5053 IN PNDIS_HANDLE NdisDmaHandle
,
5054 IN PNDIS_BUFFER Buffer
,
5057 IN BOOLEAN WriteToDevice
);
5062 NdisUpcaseUnicodeString(
5063 OUT PUNICODE_STRING DestinationString
,
5064 IN PUNICODE_STRING SourceString
);
5067 /* Routines for NDIS protocol drivers */
5073 OUT PNDIS_STATUS Status
,
5074 IN NDIS_HANDLE NdisBindingHandle
,
5075 IN PNDIS_REQUEST NdisRequest
);
5081 OUT PNDIS_STATUS Status
,
5082 IN NDIS_HANDLE NdisBindingHandle
);
5088 OUT PNDIS_STATUS Status
,
5089 IN NDIS_HANDLE NdisBindingHandle
,
5090 IN PNDIS_PACKET Packet
);
5096 IN NDIS_HANDLE NdisBindingHandle
,
5097 IN PPNDIS_PACKET PacketArray
,
5098 IN UINT NumberOfPackets
);
5104 OUT PNDIS_STATUS Status
,
5105 IN NDIS_HANDLE NdisBindingHandle
,
5106 IN NDIS_HANDLE MacReceiveContext
,
5108 IN UINT BytesToTransfer
,
5109 IN OUT PNDIS_PACKET Packet
,
5110 OUT PUINT BytesTransferred
);
5116 OUT PNDIS_STATUS Status
,
5117 IN NDIS_HANDLE NdisBindingHandle
);
5122 NdisCompleteBindAdapter(
5123 IN NDIS_HANDLE BindAdapterContext
,
5124 IN NDIS_STATUS Status
,
5125 IN NDIS_STATUS OpenStatus
);
5130 NdisCompleteUnbindAdapter(
5131 IN NDIS_HANDLE UnbindAdapterContext
,
5132 IN NDIS_STATUS Status
);
5137 NdisDeregisterProtocol(
5138 OUT PNDIS_STATUS Status
,
5139 IN NDIS_HANDLE NdisProtocolHandle
);
5145 OUT PNDIS_STATUS Status
,
5146 OUT PNDIS_STATUS OpenErrorStatus
,
5147 OUT PNDIS_HANDLE NdisBindingHandle
,
5148 OUT PUINT SelectedMediumIndex
,
5149 IN PNDIS_MEDIUM MediumArray
,
5150 IN UINT MediumArraySize
,
5151 IN NDIS_HANDLE NdisProtocolHandle
,
5152 IN NDIS_HANDLE ProtocolBindingContext
,
5153 IN PNDIS_STRING AdapterName
,
5154 IN UINT OpenOptions
,
5155 IN PSTRING AddressingInformation
);
5160 NdisOpenProtocolConfiguration(
5161 OUT PNDIS_STATUS Status
,
5162 OUT PNDIS_HANDLE ConfigurationHandle
,
5163 IN PNDIS_STRING ProtocolSection
);
5168 NdisRegisterProtocol(
5169 OUT PNDIS_STATUS Status
,
5170 OUT PNDIS_HANDLE NdisProtocolHandle
,
5171 IN PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics
,
5172 IN UINT CharacteristicsLength
);
5177 NdisScheduleWorkItem(
5178 IN PNDIS_WORK_ITEM WorkItem
);
5180 /* Obsoleted in Windows XP */
5182 /* Prototypes for NDIS_MAC_CHARACTERISTICS */
5184 typedef NDIS_STATUS (*OPEN_ADAPTER_HANDLER
)(
5185 OUT PNDIS_STATUS OpenErrorStatus
,
5186 OUT NDIS_HANDLE
*MacBindingHandle
,
5187 OUT PUINT SelectedMediumIndex
,
5188 IN PNDIS_MEDIUM MediumArray
,
5189 IN UINT MediumArraySize
,
5190 IN NDIS_HANDLE NdisBindingContext
,
5191 IN NDIS_HANDLE MacAdapterContext
,
5192 IN UINT OpenOptions
,
5193 IN PSTRING AddressingInformation OPTIONAL
);
5195 typedef NDIS_STATUS (DDKAPI
*CLOSE_ADAPTER_HANDLER
)(
5196 IN NDIS_HANDLE MacBindingHandle
);
5198 typedef NDIS_STATUS (DDKAPI
*WAN_TRANSFER_DATA_HANDLER
)(
5201 typedef NDIS_STATUS (DDKAPI
*QUERY_GLOBAL_STATISTICS_HANDLER
)(
5202 IN NDIS_HANDLE MacAdapterContext
,
5203 IN PNDIS_REQUEST NdisRequest
);
5205 typedef VOID (DDKAPI
*UNLOAD_MAC_HANDLER
)(
5206 IN NDIS_HANDLE MacMacContext
);
5208 typedef NDIS_STATUS (DDKAPI
*ADD_ADAPTER_HANDLER
)(
5209 IN NDIS_HANDLE MacMacContext
,
5210 IN NDIS_HANDLE WrapperConfigurationContext
,
5211 IN PNDIS_STRING AdapterName
);
5213 typedef VOID (*REMOVE_ADAPTER_HANDLER
)(
5214 IN NDIS_HANDLE MacAdapterContext
);
5216 typedef struct _NDIS_MAC_CHARACTERISTICS
{
5217 UCHAR MajorNdisVersion
;
5218 UCHAR MinorNdisVersion
;
5221 OPEN_ADAPTER_HANDLER OpenAdapterHandler
;
5222 CLOSE_ADAPTER_HANDLER CloseAdapterHandler
;
5223 SEND_HANDLER SendHandler
;
5224 TRANSFER_DATA_HANDLER TransferDataHandler
;
5225 RESET_HANDLER ResetHandler
;
5226 REQUEST_HANDLER RequestHandler
;
5227 QUERY_GLOBAL_STATISTICS_HANDLER QueryGlobalStatisticsHandler
;
5228 UNLOAD_MAC_HANDLER UnloadMacHandler
;
5229 ADD_ADAPTER_HANDLER AddAdapterHandler
;
5230 REMOVE_ADAPTER_HANDLER RemoveAdapterHandler
;
5232 } NDIS_MAC_CHARACTERISTICS
, *PNDIS_MAC_CHARACTERISTICS
;
5234 typedef NDIS_MAC_CHARACTERISTICS NDIS_WAN_MAC_CHARACTERISTICS
;
5235 typedef NDIS_WAN_MAC_CHARACTERISTICS
*PNDIS_WAN_MAC_CHARACTERISTICS
;
5241 #endif /* __NDIS_H */