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_ - 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 * NDIS50_MINIPORT - Building NDIS 5.0 miniport driver
27 * NDIS51_MINIPORT - Building NDIS 5.1 miniport driver
33 #pragma GCC system_header
47 #define NDISAPI DECLSPEC_EXPORT
49 #define NDISAPI DECLSPEC_IMPORT
52 #if defined(NDIS50_MINIPORT)
55 #define NDIS_MINIPORT_MAJOR_VERSION 5
56 #define NDIS_MINIPORT_MINOR_VERSION 0
58 #endif /* NDIS50_MINIPORT */
60 #if defined(NDIS51_MINIPORT)
63 #define NDIS_MINIPORT_MAJOR_VERSION 5
64 #define NDIS_MINIPORT_MINOR_VERSION 1
66 #endif /* NDIS51_MINIPORT */
68 /* NDIS 3.0 is default */
69 #if !defined(NDIS30) || !defined(NDIS40) || !defined(NDIS50) || !defined(NDIS51)
71 #endif /* !NDIS30 || !NDIS40 || !NDIS50 || !NDIS51 */
75 typedef PVOID QUEUED_CLOSE
;
78 typedef ULONG NDIS_OID
, *PNDIS_OID
;
80 typedef struct _X_FILTER FDDI_FILTER
, *PFDDI_FILTER
;
81 typedef struct _X_FILTER TR_FILTER
, *PTR_FILTER
;
82 typedef struct _X_FILTER NULL_FILTER
, *PNULL_FILTER
;
84 typedef struct _REFERENCE
{
86 USHORT ReferenceCount
;
88 } REFERENCE
, * PREFERENCE
;
93 typedef struct _NDIS_SPIN_LOCK
{
96 } NDIS_SPIN_LOCK
, * PNDIS_SPIN_LOCK
;
98 typedef struct _NDIS_EVENT
{
100 } NDIS_EVENT
, *PNDIS_EVENT
;
102 typedef PVOID NDIS_HANDLE
, *PNDIS_HANDLE
;
103 typedef int NDIS_STATUS
, *PNDIS_STATUS
;
105 typedef ANSI_STRING NDIS_ANSI_STRING
, *PNDIS_ANSI_STRING
;
106 typedef UNICODE_STRING NDIS_STRING
, *PNDIS_STRING
;
108 typedef MDL NDIS_BUFFER
, *PNDIS_BUFFER
;
109 typedef ULONG NDIS_ERROR_CODE
, *PNDIS_ERROR_CODE
;
112 /* NDIS_STATUS constants */
113 #define NDIS_STATUS_SUCCESS ((NDIS_STATUS)STATUS_SUCCESS)
114 #define NDIS_STATUS_PENDING ((NDIS_STATUS)STATUS_PENDING)
115 #define NDIS_STATUS_NOT_RECOGNIZED ((NDIS_STATUS)0x00010001L)
116 #define NDIS_STATUS_NOT_COPIED ((NDIS_STATUS)0x00010002L)
117 #define NDIS_STATUS_NOT_ACCEPTED ((NDIS_STATUS)0x00010003L)
118 #define NDIS_STATUS_CALL_ACTIVE ((NDIS_STATUS)0x00010007L)
119 #define NDIS_STATUS_ONLINE ((NDIS_STATUS)0x40010003L)
120 #define NDIS_STATUS_RESET_START ((NDIS_STATUS)0x40010004L)
121 #define NDIS_STATUS_RESET_END ((NDIS_STATUS)0x40010005L)
122 #define NDIS_STATUS_RING_STATUS ((NDIS_STATUS)0x40010006L)
123 #define NDIS_STATUS_CLOSED ((NDIS_STATUS)0x40010007L)
124 #define NDIS_STATUS_WAN_LINE_UP ((NDIS_STATUS)0x40010008L)
125 #define NDIS_STATUS_WAN_LINE_DOWN ((NDIS_STATUS)0x40010009L)
126 #define NDIS_STATUS_WAN_FRAGMENT ((NDIS_STATUS)0x4001000AL)
127 #define NDIS_STATUS_MEDIA_CONNECT ((NDIS_STATUS)0x4001000BL)
128 #define NDIS_STATUS_MEDIA_DISCONNECT ((NDIS_STATUS)0x4001000CL)
129 #define NDIS_STATUS_HARDWARE_LINE_UP ((NDIS_STATUS)0x4001000DL)
130 #define NDIS_STATUS_HARDWARE_LINE_DOWN ((NDIS_STATUS)0x4001000EL)
131 #define NDIS_STATUS_INTERFACE_UP ((NDIS_STATUS)0x4001000FL)
132 #define NDIS_STATUS_INTERFACE_DOWN ((NDIS_STATUS)0x40010010L)
133 #define NDIS_STATUS_MEDIA_BUSY ((NDIS_STATUS)0x40010011L)
134 #define NDIS_STATUS_MEDIA_SPECIFIC_INDICATION ((NDIS_STATUS)0x40010012L)
135 #define NDIS_STATUS_WW_INDICATION NDIS_STATUS_MEDIA_SPECIFIC_INDICATION
136 #define NDIS_STATUS_LINK_SPEED_CHANGE ((NDIS_STATUS)0x40010013L)
137 #define NDIS_STATUS_WAN_GET_STATS ((NDIS_STATUS)0x40010014L)
138 #define NDIS_STATUS_WAN_CO_FRAGMENT ((NDIS_STATUS)0x40010015L)
139 #define NDIS_STATUS_WAN_CO_LINKPARAMS ((NDIS_STATUS)0x40010016L)
141 #define NDIS_STATUS_NOT_RESETTABLE ((NDIS_STATUS)0x80010001L)
142 #define NDIS_STATUS_SOFT_ERRORS ((NDIS_STATUS)0x80010003L)
143 #define NDIS_STATUS_HARD_ERRORS ((NDIS_STATUS)0x80010004L)
144 #define NDIS_STATUS_BUFFER_OVERFLOW ((NDIS_STATUS)STATUS_BUFFER_OVERFLOW)
146 #define NDIS_STATUS_FAILURE ((NDIS_STATUS)STATUS_UNSUCCESSFUL)
147 #define NDIS_STATUS_RESOURCES ((NDIS_STATUS)STATUS_INSUFFICIENT_RESOURCES)
148 #define NDIS_STATUS_CLOSING ((NDIS_STATUS)0xC0010002L)
149 #define NDIS_STATUS_BAD_VERSION ((NDIS_STATUS)0xC0010004L)
150 #define NDIS_STATUS_BAD_CHARACTERISTICS ((NDIS_STATUS)0xC0010005L)
151 #define NDIS_STATUS_ADAPTER_NOT_FOUND ((NDIS_STATUS)0xC0010006L)
152 #define NDIS_STATUS_OPEN_FAILED ((NDIS_STATUS)0xC0010007L)
153 #define NDIS_STATUS_DEVICE_FAILED ((NDIS_STATUS)0xC0010008L)
154 #define NDIS_STATUS_MULTICAST_FULL ((NDIS_STATUS)0xC0010009L)
155 #define NDIS_STATUS_MULTICAST_EXISTS ((NDIS_STATUS)0xC001000AL)
156 #define NDIS_STATUS_MULTICAST_NOT_FOUND ((NDIS_STATUS)0xC001000BL)
157 #define NDIS_STATUS_REQUEST_ABORTED ((NDIS_STATUS)0xC001000CL)
158 #define NDIS_STATUS_RESET_IN_PROGRESS ((NDIS_STATUS)0xC001000DL)
159 #define NDIS_STATUS_CLOSING_INDICATING ((NDIS_STATUS)0xC001000EL)
160 #define NDIS_STATUS_NOT_SUPPORTED ((NDIS_STATUS)STATUS_NOT_SUPPORTED)
161 #define NDIS_STATUS_INVALID_PACKET ((NDIS_STATUS)0xC001000FL)
162 #define NDIS_STATUS_OPEN_LIST_FULL ((NDIS_STATUS)0xC0010010L)
163 #define NDIS_STATUS_ADAPTER_NOT_READY ((NDIS_STATUS)0xC0010011L)
164 #define NDIS_STATUS_ADAPTER_NOT_OPEN ((NDIS_STATUS)0xC0010012L)
165 #define NDIS_STATUS_NOT_INDICATING ((NDIS_STATUS)0xC0010013L)
166 #define NDIS_STATUS_INVALID_LENGTH ((NDIS_STATUS)0xC0010014L)
167 #define NDIS_STATUS_INVALID_DATA ((NDIS_STATUS)0xC0010015L)
168 #define NDIS_STATUS_BUFFER_TOO_SHORT ((NDIS_STATUS)0xC0010016L)
169 #define NDIS_STATUS_INVALID_OID ((NDIS_STATUS)0xC0010017L)
170 #define NDIS_STATUS_ADAPTER_REMOVED ((NDIS_STATUS)0xC0010018L)
171 #define NDIS_STATUS_UNSUPPORTED_MEDIA ((NDIS_STATUS)0xC0010019L)
172 #define NDIS_STATUS_GROUP_ADDRESS_IN_USE ((NDIS_STATUS)0xC001001AL)
173 #define NDIS_STATUS_FILE_NOT_FOUND ((NDIS_STATUS)0xC001001BL)
174 #define NDIS_STATUS_ERROR_READING_FILE ((NDIS_STATUS)0xC001001CL)
175 #define NDIS_STATUS_ALREADY_MAPPED ((NDIS_STATUS)0xC001001DL)
176 #define NDIS_STATUS_RESOURCE_CONFLICT ((NDIS_STATUS)0xC001001EL)
177 #define NDIS_STATUS_NO_CABLE ((NDIS_STATUS)0xC001001FL)
179 #define NDIS_STATUS_INVALID_SAP ((NDIS_STATUS)0xC0010020L)
180 #define NDIS_STATUS_SAP_IN_USE ((NDIS_STATUS)0xC0010021L)
181 #define NDIS_STATUS_INVALID_ADDRESS ((NDIS_STATUS)0xC0010022L)
182 #define NDIS_STATUS_VC_NOT_ACTIVATED ((NDIS_STATUS)0xC0010023L)
183 #define NDIS_STATUS_DEST_OUT_OF_ORDER ((NDIS_STATUS)0xC0010024L)
184 #define NDIS_STATUS_VC_NOT_AVAILABLE ((NDIS_STATUS)0xC0010025L)
185 #define NDIS_STATUS_CELLRATE_NOT_AVAILABLE ((NDIS_STATUS)0xC0010026L)
186 #define NDIS_STATUS_INCOMPATABLE_QOS ((NDIS_STATUS)0xC0010027L)
187 #define NDIS_STATUS_AAL_PARAMS_UNSUPPORTED ((NDIS_STATUS)0xC0010028L)
188 #define NDIS_STATUS_NO_ROUTE_TO_DESTINATION ((NDIS_STATUS)0xC0010029L)
190 #define NDIS_STATUS_TOKEN_RING_OPEN_ERROR ((NDIS_STATUS)0xC0011000L)
191 #define NDIS_STATUS_INVALID_DEVICE_REQUEST ((NDIS_STATUS)STATUS_INVALID_DEVICE_REQUEST)
192 #define NDIS_STATUS_NETWORK_UNREACHABLE ((NDIS_STATUS)STATUS_NETWORK_UNREACHABLE)
195 /* NDIS error codes for error logging */
197 #define NDIS_ERROR_CODE_RESOURCE_CONFLICT EVENT_NDIS_RESOURCE_CONFLICT
198 #define NDIS_ERROR_CODE_OUT_OF_RESOURCES EVENT_NDIS_OUT_OF_RESOURCE
199 #define NDIS_ERROR_CODE_HARDWARE_FAILURE EVENT_NDIS_HARDWARE_FAILURE
200 #define NDIS_ERROR_CODE_ADAPTER_NOT_FOUND EVENT_NDIS_ADAPTER_NOT_FOUND
201 #define NDIS_ERROR_CODE_INTERRUPT_CONNECT EVENT_NDIS_INTERRUPT_CONNECT
202 #define NDIS_ERROR_CODE_DRIVER_FAILURE EVENT_NDIS_DRIVER_FAILURE
203 #define NDIS_ERROR_CODE_BAD_VERSION EVENT_NDIS_BAD_VERSION
204 #define NDIS_ERROR_CODE_TIMEOUT EVENT_NDIS_TIMEOUT
205 #define NDIS_ERROR_CODE_NETWORK_ADDRESS EVENT_NDIS_NETWORK_ADDRESS
206 #define NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION EVENT_NDIS_UNSUPPORTED_CONFIGURATION
207 #define NDIS_ERROR_CODE_INVALID_VALUE_FROM_ADAPTER EVENT_NDIS_INVALID_VALUE_FROM_ADAPTER
208 #define NDIS_ERROR_CODE_MISSING_CONFIGURATION_PARAMETER EVENT_NDIS_MISSING_CONFIGURATION_PARAMETER
209 #define NDIS_ERROR_CODE_BAD_IO_BASE_ADDRESS EVENT_NDIS_BAD_IO_BASE_ADDRESS
210 #define NDIS_ERROR_CODE_RECEIVE_SPACE_SMALL EVENT_NDIS_RECEIVE_SPACE_SMALL
211 #define NDIS_ERROR_CODE_ADAPTER_DISABLED EVENT_NDIS_ADAPTER_DISABLED
214 /* Memory allocation flags. Used by Ndis[Allocate|Free]Memory */
215 #define NDIS_MEMORY_CONTIGUOUS 0x00000001
216 #define NDIS_MEMORY_NONCACHED 0x00000002
218 /* NIC attribute flags. Used by NdisMSetAttributes(Ex) */
219 #define NDIS_ATTRIBUTE_IGNORE_PACKET_TIMEOUT 0x00000001
220 #define NDIS_ATTRIBUTE_IGNORE_REQUEST_TIMEOUT 0x00000002
221 #define NDIS_ATTRIBUTE_IGNORE_TOKEN_RING_ERRORS 0x00000004
222 #define NDIS_ATTRIBUTE_BUS_MASTER 0x00000008
223 #define NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER 0x00000010
224 #define NDIS_ATTRIBUTE_DESERIALIZE 0x00000020
225 #define NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND 0x00000040
226 #define NDIS_ATTRIBUTE_SURPRISE_REMOVE_OK 0x00000080
227 #define NDIS_ATTRIBUTE_NOT_CO_NDIS 0x00000100
228 #define NDIS_ATTRIBUTE_USES_SAFE_BUFFER_APIS 0x00000200
233 typedef union _NDIS_RW_LOCK_REFCOUNT
{
236 } NDIS_RW_LOCK_REFCOUNT
;
238 typedef struct _NDIS_RW_LOCK
{
247 NDIS_RW_LOCK_REFCOUNT RefCount
[MAXIMUM_PROCESSORS
];
248 } NDIS_RW_LOCK
, *PNDIS_RW_LOCK
;
250 typedef struct _LOCK_STATE
{
253 } LOCK_STATE
, *PLOCK_STATE
;
260 (*PNDIS_TIMER_FUNCTION
)(
261 /*IN*/ PVOID SystemSpecific1
,
262 /*IN*/ PVOID FunctionContext
,
263 /*IN*/ PVOID SystemSpecific2
,
264 /*IN*/ PVOID SystemSpecific3
);
266 typedef struct _NDIS_TIMER
{
269 } NDIS_TIMER
, *PNDIS_TIMER
;
275 typedef CM_MCA_POS_DATA NDIS_MCA_POS_DATA
, *PNDIS_MCA_POS_DATA
;
276 typedef CM_EISA_SLOT_INFORMATION NDIS_EISA_SLOT_INFORMATION
, *PNDIS_EISA_SLOT_INFORMATION
;
277 typedef CM_EISA_FUNCTION_INFORMATION NDIS_EISA_FUNCTION_INFORMATION
, *PNDIS_EISA_FUNCTION_INFORMATION
;
278 typedef CM_PARTIAL_RESOURCE_LIST NDIS_RESOURCE_LIST
, *PNDIS_RESOURCE_LIST
;
280 /* Hardware status codes (OID_GEN_HARDWARE_STATUS) */
281 typedef enum _NDIS_HARDWARE_STATUS
{
282 NdisHardwareStatusReady
,
283 NdisHardwareStatusInitializing
,
284 NdisHardwareStatusReset
,
285 NdisHardwareStatusClosing
,
286 NdisHardwareStatusNotReady
287 } NDIS_HARDWARE_STATUS
, *PNDIS_HARDWARE_STATUS
;
289 /* OID_GEN_GET_TIME_CAPS */
290 typedef struct _GEN_GET_TIME_CAPS
{
292 ULONG ClockPrecision
;
293 } GEN_GET_TIME_CAPS
, *PGEN_GET_TIME_CAPS
;
296 #define READABLE_LOCAL_CLOCK 0x00000001
297 #define CLOCK_NETWORK_DERIVED 0x00000002
298 #define CLOCK_PRECISION 0x00000004
299 #define RECEIVE_TIME_INDICATION_CAPABLE 0x00000008
300 #define TIMED_SEND_CAPABLE 0x00000010
301 #define TIME_STAMP_CAPABLE 0x00000020
303 /* OID_GEN_GET_NETCARD_TIME */
304 typedef struct _GEN_GET_NETCARD_TIME
{
306 } GEN_GET_NETCARD_TIME
, *PGEN_GET_NETCARD_TIME
;
308 /* NDIS driver medium (OID_GEN_MEDIA_SUPPORTED / OID_GEN_MEDIA_IN_USE) */
309 typedef enum _NDIS_MEDIUM
{
317 NdisMediumArcnet878_2
,
319 NdisMediumWirelessWan
,
325 } NDIS_MEDIUM
, *PNDIS_MEDIUM
;
327 /* NDIS packet filter bits (OID_GEN_CURRENT_PACKET_FILTER) */
328 #define NDIS_PACKET_TYPE_DIRECTED 0x00000001
329 #define NDIS_PACKET_TYPE_MULTICAST 0x00000002
330 #define NDIS_PACKET_TYPE_ALL_MULTICAST 0x00000004
331 #define NDIS_PACKET_TYPE_BROADCAST 0x00000008
332 #define NDIS_PACKET_TYPE_SOURCE_ROUTING 0x00000010
333 #define NDIS_PACKET_TYPE_PROMISCUOUS 0x00000020
334 #define NDIS_PACKET_TYPE_SMT 0x00000040
335 #define NDIS_PACKET_TYPE_ALL_LOCAL 0x00000080
336 #define NDIS_PACKET_TYPE_GROUP 0x00001000
337 #define NDIS_PACKET_TYPE_ALL_FUNCTIONAL 0x00002000
338 #define NDIS_PACKET_TYPE_FUNCTIONAL 0x00004000
339 #define NDIS_PACKET_TYPE_MAC_FRAME 0x00008000
341 /* NDIS protocol option bits (OID_GEN_PROTOCOL_OPTIONS) */
342 #define NDIS_PROT_OPTION_ESTIMATED_LENGTH 0x00000001
343 #define NDIS_PROT_OPTION_NO_LOOPBACK 0x00000002
344 #define NDIS_PROT_OPTION_NO_RSVD_ON_RCVPKT 0x00000004
346 /* NDIS MAC option bits (OID_GEN_MAC_OPTIONS) */
347 #define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA 0x00000001
348 #define NDIS_MAC_OPTION_RECEIVE_SERIALIZED 0x00000002
349 #define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND 0x00000004
350 #define NDIS_MAC_OPTION_NO_LOOPBACK 0x00000008
351 #define NDIS_MAC_OPTION_FULL_DUPLEX 0x00000010
352 #define NDIS_MAC_OPTION_EOTX_INDICATION 0x00000020
353 #define NDIS_MAC_OPTION_8021P_PRIORITY 0x00000040
354 #define NDIS_MAC_OPTION_RESERVED 0x80000000
356 /* State of the LAN media (OID_GEN_MEDIA_CONNECT_STATUS) */
357 typedef enum _NDIS_MEDIA_STATE
{
358 NdisMediaStateConnected
,
359 NdisMediaStateDisconnected
360 } NDIS_MEDIA_STATE
, *PNDIS_MEDIA_STATE
;
362 /* OID_GEN_SUPPORTED_GUIDS */
363 typedef struct _NDIS_GUID
{
371 } NDIS_GUID
, *PNDIS_GUID
;
373 #define NDIS_GUID_TO_OID 0x00000001
374 #define NDIS_GUID_TO_STATUS 0x00000002
375 #define NDIS_GUID_ANSI_STRING 0x00000004
376 #define NDIS_GUID_UNICODE_STRING 0x00000008
377 #define NDIS_GUID_ARRAY 0x00000010
380 typedef struct _NDIS_PACKET_POOL
{
381 NDIS_SPIN_LOCK SpinLock
;
382 struct _NDIS_PACKET
*FreeList
;
385 } NDIS_PACKET_POOL
, * PNDIS_PACKET_POOL
;
387 /* NDIS_PACKET_PRIVATE.Flags constants */
388 #define fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO 0x40
389 #define fPACKET_ALLOCATED_BY_NDIS 0x80
391 typedef struct _NDIS_PACKET_PRIVATE
{
396 PNDIS_PACKET_POOL Pool
;
400 UCHAR NdisPacketFlags
;
401 USHORT NdisPacketOobOffset
;
402 } NDIS_PACKET_PRIVATE
, * PNDIS_PACKET_PRIVATE
;
404 typedef struct _NDIS_PACKET
{
405 NDIS_PACKET_PRIVATE Private
;
406 _ANONYMOUS_UNION
union {
407 _ANONYMOUS_STRUCT
struct {
408 UCHAR MiniportReserved
[2 * sizeof(PVOID
)];
409 UCHAR WrapperReserved
[2 * sizeof(PVOID
)];
411 _ANONYMOUS_STRUCT
struct {
412 UCHAR MiniportReservedEx
[3 * sizeof(PVOID
)];
413 UCHAR WrapperReservedEx
[sizeof(PVOID
)];
415 _ANONYMOUS_STRUCT
struct {
416 UCHAR MacReserved
[4 * sizeof(PVOID
)];
419 ULONG_PTR Reserved
[2];
420 UCHAR ProtocolReserved
[1];
421 } NDIS_PACKET
, *PNDIS_PACKET
, **PPNDIS_PACKET
;
423 typedef enum _NDIS_CLASS_ID
{
424 NdisClass802_3Priority
,
425 NdisClassWirelessWanMbxMailbox
,
426 NdisClassIrdaPacketInfo
,
430 typedef struct MediaSpecificInformation
{
431 UINT NextEntryOffset
;
432 NDIS_CLASS_ID ClassId
;
434 UCHAR ClassInformation
[1];
435 } MEDIA_SPECIFIC_INFORMATION
;
437 typedef struct _NDIS_PACKET_OOB_DATA
{
438 _ANONYMOUS_UNION
union {
439 ULONGLONG TimeToSend
;
442 ULONGLONG TimeReceived
;
444 UINT SizeMediaSpecificInfo
;
445 PVOID MediaSpecificInformation
;
447 } NDIS_PACKET_OOB_DATA
, *PNDIS_PACKET_OOB_DATA
;
449 typedef struct _NDIS_PM_PACKET_PATTERN
{
456 } NDIS_PM_PACKET_PATTERN
, *PNDIS_PM_PACKET_PATTERN
;
459 /* Request types used by NdisRequest */
460 typedef enum _NDIS_REQUEST_TYPE
{
461 NdisRequestQueryInformation
,
462 NdisRequestSetInformation
,
463 NdisRequestQueryStatistics
,
467 NdisRequestTransferData
,
473 } NDIS_REQUEST_TYPE
, *PNDIS_REQUEST_TYPE
;
475 typedef struct _NDIS_REQUEST
{
476 UCHAR MacReserved
[4 * sizeof(PVOID
)];
477 NDIS_REQUEST_TYPE RequestType
;
479 struct QUERY_INFORMATION
{
481 PVOID InformationBuffer
;
482 UINT InformationBufferLength
;
486 struct SET_INFORMATION
{
488 PVOID InformationBuffer
;
489 UINT InformationBufferLength
;
494 #if (defined(NDIS50) || defined(NDIS51))
495 UCHAR NdisReserved
[9 * sizeof(PVOID
)];
497 UCHAR CallMgrReserved
[2 * sizeof(PVOID
)];
498 UCHAR ProtocolReserved
[2 * sizeof(PVOID
)];
500 UCHAR MiniportReserved
[2 * sizeof(PVOID
)];
502 } NDIS_REQUEST
, *PNDIS_REQUEST
;
506 /* Wide Area Networks definitions */
508 typedef struct _NDIS_WAN_PACKET
{
509 LIST_ENTRY WanPacketQueue
;
510 PUCHAR CurrentBuffer
;
514 PVOID ProtocolReserved1
;
515 PVOID ProtocolReserved2
;
516 PVOID ProtocolReserved3
;
517 PVOID ProtocolReserved4
;
522 } NDIS_WAN_PACKET
, *PNDIS_WAN_PACKET
;
526 /* DMA channel information */
528 typedef struct _NDIS_DMA_DESCRIPTION
{
530 BOOLEAN AutoInitialize
;
531 BOOLEAN DmaChannelSpecified
;
536 } NDIS_DMA_DESCRIPTION
, *PNDIS_DMA_DESCRIPTION
;
538 typedef struct _NDIS_DMA_BLOCK
{
539 PVOID MapRegisterBase
;
540 KEVENT AllocationEvent
;
541 PADAPTER_OBJECT SystemAdapterObject
;
544 } NDIS_DMA_BLOCK
, *PNDIS_DMA_BLOCK
;
547 /* Possible hardware architecture */
548 typedef enum _NDIS_INTERFACE_TYPE
{
549 NdisInterfaceInternal
= Internal
,
550 NdisInterfaceIsa
= Isa
,
551 NdisInterfaceEisa
= Eisa
,
552 NdisInterfaceMca
= MicroChannel
,
553 NdisInterfaceTurboChannel
= TurboChannel
,
554 NdisInterfacePci
= PCIBus
,
555 NdisInterfacePcMcia
= PCMCIABus
,
556 NdisInterfaceCBus
= CBus
,
557 NdisInterfaceMPIBus
= MPIBus
,
558 NdisInterfaceMPSABus
= MPSABus
,
559 NdisInterfaceProcessorInternal
= ProcessorInternal
,
560 NdisInterfaceInternalPowerBus
= InternalPowerBus
,
561 NdisInterfacePNPISABus
= PNPISABus
,
562 NdisInterfacePNPBus
= PNPBus
,
563 NdisMaximumInterfaceType
564 } NDIS_INTERFACE_TYPE
, *PNDIS_INTERFACE_TYPE
;
566 #define NdisInterruptLevelSensitive LevelSensitive
567 #define NdisInterruptLatched Latched
568 typedef KINTERRUPT_MODE NDIS_INTERRUPT_MODE
, *PNDIS_INTERRUPT_MODE
;
571 typedef enum _NDIS_PARAMETER_TYPE
{
572 NdisParameterInteger
,
573 NdisParameterHexInteger
,
575 NdisParameterMultiString
,
577 } NDIS_PARAMETER_TYPE
, *PNDIS_PARAMETER_TYPE
;
584 typedef struct _NDIS_CONFIGURATION_PARAMETER
{
585 NDIS_PARAMETER_TYPE ParameterType
;
588 NDIS_STRING StringData
;
589 BINARY_DATA BinaryData
;
591 } NDIS_CONFIGURATION_PARAMETER
, *PNDIS_CONFIGURATION_PARAMETER
;
594 typedef PHYSICAL_ADDRESS NDIS_PHYSICAL_ADDRESS
, *PNDIS_PHYSICAL_ADDRESS
;
596 typedef struct _NDIS_PHYSICAL_ADDRESS_UNIT
{
597 NDIS_PHYSICAL_ADDRESS PhysicalAddress
;
599 } NDIS_PHYSICAL_ADDRESS_UNIT
, *PNDIS_PHYSICAL_ADDRESS_UNIT
;
601 typedef struct _NDIS_WAN_LINE_DOWN
{
602 UCHAR RemoteAddress
[6];
603 UCHAR LocalAddress
[6];
604 } NDIS_WAN_LINE_DOWN
, *PNDIS_WAN_LINE_DOWN
;
606 typedef struct _NDIS_WAN_LINE_UP
{
608 ULONG MaximumTotalSize
;
609 NDIS_WAN_QUALITY Quality
;
611 UCHAR RemoteAddress
[6];
612 /*OUT*/ UCHAR LocalAddress
[6];
613 ULONG ProtocolBufferLength
;
614 PUCHAR ProtocolBuffer
;
616 NDIS_STRING DeviceName
;
617 } NDIS_WAN_LINE_UP
, *PNDIS_WAN_LINE_UP
;
621 (*ADAPTER_SHUTDOWN_HANDLER
)(
622 /*IN*/ PVOID ShutdownContext
);
625 typedef struct _OID_LIST OID_LIST
, *POID_LIST
;
629 typedef enum _NDIS_PNP_DEVICE_STATE
{
631 NdisPnPDeviceStarted
,
632 NdisPnPDeviceQueryStopped
,
633 NdisPnPDeviceStopped
,
634 NdisPnPDeviceQueryRemoved
,
635 NdisPnPDeviceRemoved
,
636 NdisPnPDeviceSurpriseRemoved
637 } NDIS_PNP_DEVICE_STATE
;
639 #define NDIS_DEVICE_NOT_STOPPABLE 0x00000001
640 #define NDIS_DEVICE_NOT_REMOVEABLE 0x00000002
641 #define NDIS_DEVICE_NOT_SUSPENDABLE 0x00000004
642 #define NDIS_DEVICE_DISABLE_PM 0x00000008
643 #define NDIS_DEVICE_DISABLE_WAKE_UP 0x00000010
644 #define NDIS_DEVICE_DISABLE_WAKE_ON_RECONNECT 0x00000020
645 #define NDIS_DEVICE_RESERVED 0x00000040
646 #define NDIS_DEVICE_DISABLE_WAKE_ON_MAGIC_PACKET 0x00000080
647 #define NDIS_DEVICE_DISABLE_WAKE_ON_PATTERN_MATCH 0x00000100
650 /* OID_GEN_NETWORK_LAYER_ADDRESSES */
651 typedef struct _NETWORK_ADDRESS
{
652 USHORT AddressLength
;
655 } NETWORK_ADDRESS
, *PNETWORK_ADDRESS
;
657 typedef struct _NETWORK_ADDRESS_LIST
{
660 NETWORK_ADDRESS Address
[1];
661 } NETWORK_ADDRESS_LIST
, *PNETWORK_ADDRESS_LIST
;
663 /* Protocol types supported by NDIS */
664 #define NDIS_PROTOCOL_ID_DEFAULT 0x00
665 #define NDIS_PROTOCOL_ID_TCP_IP 0x02
666 #define NDIS_PROTOCOL_ID_IPX 0x06
667 #define NDIS_PROTOCOL_ID_NBF 0x07
668 #define NDIS_PROTOCOL_ID_MAX 0x0F
669 #define NDIS_PROTOCOL_ID_MASK 0x0F
672 /* OID_GEN_TRANSPORT_HEADER_OFFSET */
673 typedef struct _TRANSPORT_HEADER_OFFSET
{
676 } TRANSPORT_HEADER_OFFSET
, *PTRANSPORT_HEADER_OFFSET
;
679 /* OID_GEN_CO_LINK_SPEED / OID_GEN_CO_MINIMUM_LINK_SPEED */
680 typedef struct _NDIS_CO_LINK_SPEED
{
683 } NDIS_CO_LINK_SPEED
, *PNDIS_CO_LINK_SPEED
;
685 typedef ULONG NDIS_AF
, *PNDIS_AF
;
686 #define CO_ADDRESS_FAMILY_Q2931 ((NDIS_AF)0x1)
687 #define CO_ADDRESS_FAMILY_PSCHED ((NDIS_AF)0x2)
688 #define CO_ADDRESS_FAMILY_L2TP ((NDIS_AF)0x3)
689 #define CO_ADDRESS_FAMILY_IRDA ((NDIS_AF)0x4)
690 #define CO_ADDRESS_FAMILY_1394 ((NDIS_AF)0x5)
691 #define CO_ADDRESS_FAMILY_PPP ((NDIS_AF)0x6)
692 #define CO_ADDRESS_FAMILY_TAPI ((NDIS_AF)0x800)
693 #define CO_ADDRESS_FAMILY_TAPI_PROXY ((NDIS_AF)0x801)
695 #define CO_ADDRESS_FAMILY_PROXY 0x80000000
698 NDIS_AF AddressFamily
;
701 } CO_ADDRESS_FAMILY
, *PCO_ADDRESS_FAMILY
;
703 typedef struct _CO_FLOW_PARAMETERS
{
705 ULONG TokenBucketSize
;
708 ULONG DelayVariation
;
709 SERVICETYPE ServiceType
;
711 ULONG MinimumPolicedSize
;
712 } CO_FLOW_PARAMETERS
, *PCO_FLOW_PARAMETERS
;
714 typedef struct _CO_SPECIFIC_PARAMETERS
{
718 } CO_SPECIFIC_PARAMETERS
, *PCO_SPECIFIC_PARAMETERS
;
720 typedef struct _CO_CALL_MANAGER_PARAMETERS
{
721 CO_FLOW_PARAMETERS Transmit
;
722 CO_FLOW_PARAMETERS Receive
;
723 CO_SPECIFIC_PARAMETERS CallMgrSpecific
;
724 } CO_CALL_MANAGER_PARAMETERS
, *PCO_CALL_MANAGER_PARAMETERS
;
726 /* CO_MEDIA_PARAMETERS.Flags constants */
727 #define RECEIVE_TIME_INDICATION 0x00000001
728 #define USE_TIME_STAMPS 0x00000002
729 #define TRANSMIT_VC 0x00000004
730 #define RECEIVE_VC 0x00000008
731 #define INDICATE_ERRED_PACKETS 0x00000010
732 #define INDICATE_END_OF_TX 0x00000020
733 #define RESERVE_RESOURCES_VC 0x00000040
734 #define ROUND_DOWN_FLOW 0x00000080
735 #define ROUND_UP_FLOW 0x00000100
737 typedef struct _CO_MEDIA_PARAMETERS
{
739 ULONG ReceivePriority
;
740 ULONG ReceiveSizeHint
;
741 CO_SPECIFIC_PARAMETERS MediaSpecific
;
742 } CO_MEDIA_PARAMETERS
, *PCO_MEDIA_PARAMETERS
;
744 /* CO_CALL_PARAMETERS.Flags constants */
745 #define PERMANENT_VC 0x00000001
746 #define CALL_PARAMETERS_CHANGED 0x00000002
747 #define QUERY_CALL_PARAMETERS 0x00000004
748 #define BROADCAST_VC 0x00000008
749 #define MULTIPOINT_VC 0x00000010
751 typedef struct _CO_CALL_PARAMETERS
{
753 PCO_CALL_MANAGER_PARAMETERS CallMgrParameters
;
754 PCO_MEDIA_PARAMETERS MediaParameters
;
755 } CO_CALL_PARAMETERS
, *PCO_CALL_PARAMETERS
;
757 typedef struct _CO_SAP
{
763 typedef struct _NDIS_IPSEC_PACKET_INFO
{
764 _ANONYMOUS_UNION
union {
766 NDIS_HANDLE OffloadHandle
;
767 NDIS_HANDLE NextOffloadHandle
;
770 ULONG SA_DELETE_REQ
: 1;
771 ULONG CRYPTO_DONE
: 1;
772 ULONG NEXT_CRYPTO_DONE
: 1;
776 } NDIS_IPSEC_PACKET_INFO
, *PNDIS_IPSEC_PACKET_INFO
;
778 /* NDIS_MAC_FRAGMENT.Errors constants */
779 #define WAN_ERROR_CRC 0x00000001
780 #define WAN_ERROR_FRAMING 0x00000002
781 #define WAN_ERROR_HARDWAREOVERRUN 0x00000004
782 #define WAN_ERROR_BUFFEROVERRUN 0x00000008
783 #define WAN_ERROR_TIMEOUT 0x00000010
784 #define WAN_ERROR_ALIGNMENT 0x00000020
786 typedef struct _NDIS_MAC_FRAGMENT
{
787 NDIS_HANDLE NdisLinkContext
;
789 } NDIS_MAC_FRAGMENT
, *PNDIS_MAC_FRAGMENT
;
791 typedef struct _NDIS_MAC_LINE_DOWN
{
792 NDIS_HANDLE NdisLinkContext
;
793 } NDIS_MAC_LINE_DOWN
, *PNDIS_MAC_LINE_DOWN
;
795 typedef struct _NDIS_MAC_LINE_UP
{
797 NDIS_WAN_QUALITY Quality
;
799 NDIS_HANDLE ConnectionWrapperID
;
800 NDIS_HANDLE NdisLinkHandle
;
801 NDIS_HANDLE NdisLinkContext
;
802 } NDIS_MAC_LINE_UP
, *PNDIS_MAC_LINE_UP
;
804 typedef struct _NDIS_PACKET_8021Q_INFO
{
805 _ANONYMOUS_UNION
union {
807 UINT32 UserPriority
: 3;
808 UINT32 CanonicalFormatId
: 1;
810 UINT32 Reserved
: 16;
814 } NDIS_PACKET_8021Q_INFO
, *PNDIS_PACKET_8021Q_INFO
;
816 typedef enum _NDIS_PER_PACKET_INFO
{
817 TcpIpChecksumPacketInfo
,
819 TcpLargeSendPacketInfo
,
820 ClassificationHandlePacketInfo
,
822 ScatterGatherListPacketInfo
,
827 } NDIS_PER_PACKET_INFO
, *PNDIS_PER_PACKET_INFO
;
829 typedef struct _NDIS_PACKET_EXTENSION
{
830 PVOID NdisPacketInfo
[MaxPerPacketInfo
];
831 } NDIS_PACKET_EXTENSION
, *PNDIS_PACKET_EXTENSION
;
835 * NDIS_GET_ORIGINAL_PACKET(
836 * IN PNDIS_PACKET Packet);
838 #define NDIS_GET_ORIGINAL_PACKET(Packet) \
839 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, OriginalPacketInfo)
843 * NDIS_GET_PACKET_CANCEL_ID(
844 * IN PNDIS_PACKET Packet);
846 #define NDIS_GET_PACKET_CANCEL_ID(Packet) \
847 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, PacketCancelId)
850 * PNDIS_PACKET_EXTENSION
851 * NDIS_PACKET_EXTENSION_FROM_PACKET(
852 * IN PNDIS_PACKET Packet);
854 #define NDIS_PACKET_EXTENSION_FROM_PACKET(Packet) \
855 ((PNDIS_PACKET_EXTENSION)((PUCHAR)(Packet) \
856 + (Packet)->Private.NdisPacketOobOffset + sizeof(NDIS_PACKET_OOB_DATA)))
860 * NDIS_PER_PACKET_INFO_FROM_PACKET(
861 * IN OUT PNDIS_PACKET Packet,
862 * IN NDIS_PER_PACKET_INFO InfoType);
864 #define NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, InfoType) \
865 ((PNDIS_PACKET_EXTENSION)((PUCHAR)(Packet) + (Packet)->Private.NdisPacketOobOffset \
866 + sizeof(NDIS_PACKET_OOB_DATA)))->NdisPacketInfo[(InfoType)]
870 * NDIS_SET_ORIGINAL_PACKET(
871 * IN OUT PNDIS_PACKET Packet,
872 * IN PNDIS_PACKET OriginalPacket);
874 #define NDIS_SET_ORIGINAL_PACKET(Packet, OriginalPacket) \
875 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, OriginalPacketInfo) = (OriginalPacket)
879 * NDIS_SET_PACKET_CANCEL_ID(
880 * IN PNDIS_PACKET Packet
881 * IN ULONG_PTR CancelId);
883 #define NDIS_SET_PACKET_CANCEL_ID(Packet, CancelId) \
884 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, PacketCancelId) = (CancelId)
886 typedef enum _NDIS_TASK
{
887 TcpIpChecksumNdisTask
,
889 TcpLargeSendNdisTask
,
891 } NDIS_TASK
, *PNDIS_TASK
;
893 typedef struct _NDIS_TASK_IPSEC
{
895 ULONG AH_ESP_COMBINED
;
896 ULONG TRANSPORT_TUNNEL_COMBINED
;
913 ULONG TRIPLE_DES
: 1;
920 } NDIS_TASK_IPSEC
, *PNDIS_TASK_IPSEC
;
922 typedef enum _NDIS_ENCAPSULATION
{
923 UNSPECIFIED_Encapsulation
,
925 IEEE_802_3_Encapsulation
,
926 IEEE_802_5_Encapsulation
,
927 LLC_SNAP_ROUTED_Encapsulation
,
928 LLC_SNAP_BRIDGED_Encapsulation
929 } NDIS_ENCAPSULATION
;
931 typedef struct _NDIS_ENCAPSULATION_FORMAT
{
932 NDIS_ENCAPSULATION Encapsulation
;
934 ULONG FixedHeaderSize
: 1;
937 ULONG EncapsulationHeaderSize
;
938 } NDIS_ENCAPSULATION_FORMAT
, *PNDIS_ENCAPSULATION_FORMAT
;
940 typedef struct _NDIS_TASK_OFFLOAD_HEADER
945 UCHAR OffsetFirstTask
;
946 NDIS_ENCAPSULATION_FORMAT EncapsulationFormat
;
947 } NDIS_TASK_OFFLOAD_HEADER
, *PNDIS_TASK_OFFLOAD_HEADER
;
949 typedef struct _NDIS_TASK_OFFLOAD
{
953 ULONG OffsetNextTask
;
954 ULONG TaskBufferLength
;
956 } NDIS_TASK_OFFLOAD
, *PNDIS_TASK_OFFLOAD
;
958 /* NDIS_TASK_OFFLOAD_HEADER.Version constants */
959 #define NDIS_TASK_OFFLOAD_VERSION 1
961 typedef struct _NDIS_TASK_TCP_IP_CHECKSUM
{
963 ULONG IpOptionsSupported
:1;
964 ULONG TcpOptionsSupported
:1;
971 ULONG IpOptionsSupported
: 1;
972 ULONG TcpOptionsSupported
: 1;
973 ULONG TcpChecksum
: 1;
974 ULONG UdpChecksum
: 1;
975 ULONG IpChecksum
: 1;
979 ULONG IpOptionsSupported
: 1;
980 ULONG TcpOptionsSupported
: 1;
981 ULONG TcpChecksum
: 1;
982 ULONG UdpChecksum
: 1;
986 ULONG IpOptionsSupported
: 1;
987 ULONG TcpOptionsSupported
: 1;
988 ULONG TcpChecksum
: 1;
989 ULONG UdpChecksum
: 1;
991 } NDIS_TASK_TCP_IP_CHECKSUM
, *PNDIS_TASK_TCP_IP_CHECKSUM
;
993 typedef struct _NDIS_TASK_TCP_LARGE_SEND
{
995 ULONG MaxOffLoadSize
;
996 ULONG MinSegmentCount
;
999 } NDIS_TASK_TCP_LARGE_SEND
, *PNDIS_TASK_TCP_LARGE_SEND
;
1001 typedef struct _NDIS_TCP_IP_CHECKSUM_PACKET_INFO
{
1002 _ANONYMOUS_UNION
union {
1004 ULONG NdisPacketChecksumV4
: 1;
1005 ULONG NdisPacketChecksumV6
: 1;
1006 ULONG NdisPacketTcpChecksum
: 1;
1007 ULONG NdisPacketUdpChecksum
: 1;
1008 ULONG NdisPacketIpChecksum
: 1;
1012 ULONG NdisPacketTcpChecksumFailed
: 1;
1013 ULONG NdisPacketUdpChecksumFailed
: 1;
1014 ULONG NdisPacketIpChecksumFailed
: 1;
1015 ULONG NdisPacketTcpChecksumSucceeded
: 1;
1016 ULONG NdisPacketUdpChecksumSucceeded
: 1;
1017 ULONG NdisPacketIpChecksumSucceeded
: 1;
1018 ULONG NdisPacketLoopback
: 1;
1022 } NDIS_TCP_IP_CHECKSUM_PACKET_INFO
, *PNDIS_TCP_IP_CHECKSUM_PACKET_INFO
;
1024 typedef struct _NDIS_WAN_CO_FRAGMENT
{
1026 } NDIS_WAN_CO_FRAGMENT
, *PNDIS_WAN_CO_FRAGMENT
;
1028 typedef struct _NDIS_WAN_FRAGMENT
{
1029 UCHAR RemoteAddress
[6];
1030 UCHAR LocalAddress
[6];
1031 } NDIS_WAN_FRAGMENT
, *PNDIS_WAN_FRAGMENT
;
1033 typedef struct _WAN_CO_LINKPARAMS
{
1034 ULONG TransmitSpeed
;
1037 } WAN_CO_LINKPARAMS
, *PWAN_CO_LINKPARAMS
;
1043 (*CM_ACTIVATE_VC_COMPLETE_HANDLER
)(
1044 /*IN*/ NDIS_STATUS Status
,
1045 /*IN*/ NDIS_HANDLE CallMgrVcContext
,
1046 /*IN*/ PCO_CALL_PARAMETERS CallParameters
);
1048 typedef NDIS_STATUS DDKAPI
1049 (*CM_ADD_PARTY_HANDLER
)(
1050 /*IN*/ NDIS_HANDLE CallMgrVcContext
,
1051 /*IN OUT*/ PCO_CALL_PARAMETERS CallParameters
,
1052 /*IN*/ NDIS_HANDLE NdisPartyHandle
,
1053 /*OUT*/ PNDIS_HANDLE CallMgrPartyContext
);
1055 typedef NDIS_STATUS DDKAPI
1056 (*CM_CLOSE_AF_HANDLER
)(
1057 /*IN*/ NDIS_HANDLE CallMgrAfContext
);
1059 typedef NDIS_STATUS DDKAPI
1060 (*CM_CLOSE_CALL_HANDLER
)(
1061 /*IN*/ NDIS_HANDLE CallMgrVcContext
,
1062 /*IN*/ NDIS_HANDLE CallMgrPartyContext
/*OPTIONAL*/,
1063 /*IN*/ PVOID CloseData
/*OPTIONAL*/,
1064 /*IN*/ UINT Size
/*OPTIONAL*/);
1066 typedef NDIS_STATUS DDKAPI
1067 (*CM_DEREG_SAP_HANDLER
)(
1068 /*IN*/ NDIS_HANDLE CallMgrSapContext
);
1071 (*CM_DEACTIVATE_VC_COMPLETE_HANDLER
)(
1072 /*IN*/ NDIS_STATUS Status
,
1073 /*IN*/ NDIS_HANDLE CallMgrVcContext
);
1075 typedef NDIS_STATUS DDKAPI
1076 (*CM_DROP_PARTY_HANDLER
)(
1077 /*IN*/ NDIS_HANDLE CallMgrPartyContext
,
1078 /*IN*/ PVOID CloseData
/*OPTIONAL*/,
1079 /*IN*/ UINT Size
/*OPTIONAL*/);
1082 (*CM_INCOMING_CALL_COMPLETE_HANDLER
)(
1083 /*IN*/ NDIS_STATUS Status
,
1084 /*IN*/ NDIS_HANDLE CallMgrVcContext
,
1085 /*IN*/ PCO_CALL_PARAMETERS CallParameters
);
1087 typedef NDIS_STATUS DDKAPI
1088 (*CM_MAKE_CALL_HANDLER
)(
1089 /*IN*/ NDIS_HANDLE CallMgrVcContext
,
1090 /*IN OUT*/ PCO_CALL_PARAMETERS CallParameters
,
1091 /*IN*/ NDIS_HANDLE NdisPartyHandle
/*OPTIONAL*/,
1092 /*OUT*/ PNDIS_HANDLE CallMgrPartyContext
/*OPTIONAL*/);
1094 typedef NDIS_STATUS DDKAPI
1095 (*CM_MODIFY_CALL_QOS_HANDLER
)(
1096 /*IN*/ NDIS_HANDLE CallMgrVcContext
,
1097 /*IN*/ PCO_CALL_PARAMETERS CallParameters
);
1099 typedef NDIS_STATUS DDKAPI
1100 (*CM_OPEN_AF_HANDLER
)(
1101 /*IN*/ NDIS_HANDLE CallMgrBindingContext
,
1102 /*IN*/ PCO_ADDRESS_FAMILY AddressFamily
,
1103 /*IN*/ NDIS_HANDLE NdisAfHandle
,
1104 /*OUT*/ PNDIS_HANDLE CallMgrAfContext
);
1106 typedef NDIS_STATUS DDKAPI
1107 (*CM_REG_SAP_HANDLER
)(
1108 /*IN*/ NDIS_HANDLE CallMgrAfContext
,
1110 /*IN*/ NDIS_HANDLE NdisSapHandle
,
1111 /*OUT*/ PNDIS_HANDLE CallMgrSapContext
);
1113 typedef NDIS_STATUS DDKAPI
1114 (*CO_CREATE_VC_HANDLER
)(
1115 /*IN*/ NDIS_HANDLE ProtocolAfContext
,
1116 /*IN*/ NDIS_HANDLE NdisVcHandle
,
1117 /*OUT*/ PNDIS_HANDLE ProtocolVcContext
);
1119 typedef NDIS_STATUS DDKAPI
1120 (*CO_DELETE_VC_HANDLER
)(
1121 /*IN*/ NDIS_HANDLE ProtocolVcContext
);
1124 (*CO_REQUEST_COMPLETE_HANDLER
)(
1125 /*IN*/ NDIS_STATUS Status
,
1126 /*IN*/ NDIS_HANDLE ProtocolAfContext
/*OPTIONAL*/,
1127 /*IN*/ NDIS_HANDLE ProtocolVcContext
/*OPTIONAL*/,
1128 /*IN*/ NDIS_HANDLE ProtocolPartyContext
/*OPTIONAL*/,
1129 /*IN*/ PNDIS_REQUEST NdisRequest
);
1131 typedef NDIS_STATUS DDKAPI
1132 (*CO_REQUEST_HANDLER
)(
1133 /*IN*/ NDIS_HANDLE ProtocolAfContext
,
1134 /*IN*/ NDIS_HANDLE ProtocolVcContext
/*OPTIONAL*/,
1135 /*IN*/ NDIS_HANDLE ProtocolPartyContext
/*OPTIONAL*/,
1136 /*IN OUT*/ PNDIS_REQUEST NdisRequest
);
1138 typedef struct _NDIS_CALL_MANAGER_CHARACTERISTICS
{
1143 CO_CREATE_VC_HANDLER CmCreateVcHandler
;
1144 CO_DELETE_VC_HANDLER CmDeleteVcHandler
;
1145 CM_OPEN_AF_HANDLER CmOpenAfHandler
;
1146 CM_CLOSE_AF_HANDLER CmCloseAfHandler
;
1147 CM_REG_SAP_HANDLER CmRegisterSapHandler
;
1148 CM_DEREG_SAP_HANDLER CmDeregisterSapHandler
;
1149 CM_MAKE_CALL_HANDLER CmMakeCallHandler
;
1150 CM_CLOSE_CALL_HANDLER CmCloseCallHandler
;
1151 CM_INCOMING_CALL_COMPLETE_HANDLER CmIncomingCallCompleteHandler
;
1152 CM_ADD_PARTY_HANDLER CmAddPartyHandler
;
1153 CM_DROP_PARTY_HANDLER CmDropPartyHandler
;
1154 CM_ACTIVATE_VC_COMPLETE_HANDLER CmActivateVcCompleteHandler
;
1155 CM_DEACTIVATE_VC_COMPLETE_HANDLER CmDeactivateVcCompleteHandler
;
1156 CM_MODIFY_CALL_QOS_HANDLER CmModifyCallQoSHandler
;
1157 CO_REQUEST_HANDLER CmRequestHandler
;
1158 CO_REQUEST_COMPLETE_HANDLER CmRequestCompleteHandler
;
1159 } NDIS_CALL_MANAGER_CHARACTERISTICS
, *PNDIS_CALL_MANAGER_CHARACTERISTICS
;
1163 /* Call Manager clients */
1165 typedef VOID (*CL_OPEN_AF_COMPLETE_HANDLER
)(
1166 /*IN*/ NDIS_STATUS Status
,
1167 /*IN*/ NDIS_HANDLE ProtocolAfContext
,
1168 /*IN*/ NDIS_HANDLE NdisAfHandle
);
1171 (*CL_CLOSE_AF_COMPLETE_HANDLER
)(
1172 /*IN*/ NDIS_STATUS Status
,
1173 /*IN*/ NDIS_HANDLE ProtocolAfContext
);
1176 (*CL_REG_SAP_COMPLETE_HANDLER
)(
1177 /*IN*/ NDIS_STATUS Status
,
1178 /*IN*/ NDIS_HANDLE ProtocolSapContext
,
1180 /*IN*/ NDIS_HANDLE NdisSapHandle
);
1183 (*CL_DEREG_SAP_COMPLETE_HANDLER
)(
1184 /*IN*/ NDIS_STATUS Status
,
1185 /*IN*/ NDIS_HANDLE ProtocolSapContext
);
1188 (*CL_MAKE_CALL_COMPLETE_HANDLER
)(
1189 /*IN*/ NDIS_STATUS Status
,
1190 /*IN*/ NDIS_HANDLE ProtocolVcContext
,
1191 /*IN*/ NDIS_HANDLE NdisPartyHandle
/*OPTIONAL*/,
1192 /*IN*/ PCO_CALL_PARAMETERS CallParameters
);
1195 (*CL_MODIFY_CALL_QOS_COMPLETE_HANDLER
)(
1196 /*IN*/ NDIS_STATUS Status
,
1197 /*IN*/ NDIS_HANDLE ProtocolVcContext
,
1198 /*IN*/ PCO_CALL_PARAMETERS CallParameters
);
1201 (*CL_CLOSE_CALL_COMPLETE_HANDLER
)(
1202 /*IN*/ NDIS_STATUS Status
,
1203 /*IN*/ NDIS_HANDLE ProtocolVcContext
,
1204 /*IN*/ NDIS_HANDLE ProtocolPartyContext
/*OPTIONAL*/);
1207 (*CL_ADD_PARTY_COMPLETE_HANDLER
)(
1208 /*IN*/ NDIS_STATUS Status
,
1209 /*IN*/ NDIS_HANDLE ProtocolPartyContext
,
1210 /*IN*/ NDIS_HANDLE NdisPartyHandle
,
1211 /*IN*/ PCO_CALL_PARAMETERS CallParameters
);
1214 (*CL_DROP_PARTY_COMPLETE_HANDLER
)(
1215 /*IN*/ NDIS_STATUS Status
,
1216 /*IN*/ NDIS_HANDLE ProtocolPartyContext
);
1218 typedef NDIS_STATUS DDKAPI
1219 (*CL_INCOMING_CALL_HANDLER
)(
1220 /*IN*/ NDIS_HANDLE ProtocolSapContext
,
1221 /*IN*/ NDIS_HANDLE ProtocolVcContext
,
1222 /*IN OUT*/ PCO_CALL_PARAMETERS CallParameters
);
1225 (*CL_INCOMING_CALL_QOS_CHANGE_HANDLER
)(
1226 /*IN*/ NDIS_HANDLE ProtocolVcContext
,
1227 /*IN*/ PCO_CALL_PARAMETERS CallParameters
);
1230 (*CL_INCOMING_CLOSE_CALL_HANDLER
)(
1231 /*IN*/ NDIS_STATUS CloseStatus
,
1232 /*IN*/ NDIS_HANDLE ProtocolVcContext
,
1233 /*IN*/ PVOID CloseData
/*OPTIONAL*/,
1234 /*IN*/ UINT Size
/*OPTIONAL*/);
1237 (*CL_INCOMING_DROP_PARTY_HANDLER
)(
1238 /*IN*/ NDIS_STATUS DropStatus
,
1239 /*IN*/ NDIS_HANDLE ProtocolPartyContext
,
1240 /*IN*/ PVOID CloseData
/*OPTIONAL*/,
1241 /*IN*/ UINT Size
/*OPTIONAL*/);
1244 (*CL_CALL_CONNECTED_HANDLER
)(
1245 /*IN*/ NDIS_HANDLE ProtocolVcContext
);
1248 typedef struct _NDIS_CLIENT_CHARACTERISTICS
{
1253 CO_CREATE_VC_HANDLER ClCreateVcHandler
;
1254 CO_DELETE_VC_HANDLER ClDeleteVcHandler
;
1255 CO_REQUEST_HANDLER ClRequestHandler
;
1256 CO_REQUEST_COMPLETE_HANDLER ClRequestCompleteHandler
;
1257 CL_OPEN_AF_COMPLETE_HANDLER ClOpenAfCompleteHandler
;
1258 CL_CLOSE_AF_COMPLETE_HANDLER ClCloseAfCompleteHandler
;
1259 CL_REG_SAP_COMPLETE_HANDLER ClRegisterSapCompleteHandler
;
1260 CL_DEREG_SAP_COMPLETE_HANDLER ClDeregisterSapCompleteHandler
;
1261 CL_MAKE_CALL_COMPLETE_HANDLER ClMakeCallCompleteHandler
;
1262 CL_MODIFY_CALL_QOS_COMPLETE_HANDLER ClModifyCallQoSCompleteHandler
;
1263 CL_CLOSE_CALL_COMPLETE_HANDLER ClCloseCallCompleteHandler
;
1264 CL_ADD_PARTY_COMPLETE_HANDLER ClAddPartyCompleteHandler
;
1265 CL_DROP_PARTY_COMPLETE_HANDLER ClDropPartyCompleteHandler
;
1266 CL_INCOMING_CALL_HANDLER ClIncomingCallHandler
;
1267 CL_INCOMING_CALL_QOS_CHANGE_HANDLER ClIncomingCallQoSChangeHandler
;
1268 CL_INCOMING_CLOSE_CALL_HANDLER ClIncomingCloseCallHandler
;
1269 CL_INCOMING_DROP_PARTY_HANDLER ClIncomingDropPartyHandler
;
1270 CL_CALL_CONNECTED_HANDLER ClCallConnectedHandler
;
1271 } NDIS_CLIENT_CHARACTERISTICS
, *PNDIS_CLIENT_CHARACTERISTICS
;
1274 /* NDIS protocol structures */
1276 /* Prototypes for NDIS 3.0 protocol characteristics */
1279 (*OPEN_ADAPTER_COMPLETE_HANDLER
)(
1280 /*IN*/ NDIS_HANDLE ProtocolBindingContext
,
1281 /*IN*/ NDIS_STATUS Status
,
1282 /*IN*/ NDIS_STATUS OpenErrorStatus
);
1285 (*CLOSE_ADAPTER_COMPLETE_HANDLER
)(
1286 /*IN*/ NDIS_HANDLE ProtocolBindingContext
,
1287 /*IN*/ NDIS_STATUS Status
);
1290 (*RESET_COMPLETE_HANDLER
)(
1291 /*IN*/ NDIS_HANDLE ProtocolBindingContext
,
1292 /*IN*/ NDIS_STATUS Status
);
1295 (*REQUEST_COMPLETE_HANDLER
)(
1296 /*IN*/ NDIS_HANDLE ProtocolBindingContext
,
1297 /*IN*/ PNDIS_REQUEST NdisRequest
,
1298 /*IN*/ NDIS_STATUS Status
);
1302 /*IN*/ NDIS_HANDLE ProtocolBindingContext
,
1303 /*IN*/ NDIS_STATUS GeneralStatus
,
1304 /*IN*/ PVOID StatusBuffer
,
1305 /*IN*/ UINT StatusBufferSize
);
1308 (*STATUS_COMPLETE_HANDLER
)(
1309 /*IN*/ NDIS_HANDLE ProtocolBindingContext
);
1312 (*SEND_COMPLETE_HANDLER
)(
1313 /*IN*/ NDIS_HANDLE ProtocolBindingContext
,
1314 /*IN*/ PNDIS_PACKET Packet
,
1315 /*IN*/ NDIS_STATUS Status
);
1318 (*WAN_SEND_COMPLETE_HANDLER
)(
1319 /*IN*/ NDIS_HANDLE ProtocolBindingContext
,
1320 /*IN*/ PNDIS_WAN_PACKET Packet
,
1321 /*IN*/ NDIS_STATUS Status
);
1324 (*TRANSFER_DATA_COMPLETE_HANDLER
)(
1325 /*IN*/ NDIS_HANDLE ProtocolBindingContext
,
1326 /*IN*/ PNDIS_PACKET Packet
,
1327 /*IN*/ NDIS_STATUS Status
,
1328 /*IN*/ UINT BytesTransferred
);
1331 (*WAN_TRANSFER_DATA_COMPLETE_HANDLER
)(
1335 typedef NDIS_STATUS DDKAPI
1337 /*IN*/ NDIS_HANDLE ProtocolBindingContext
,
1338 /*IN*/ NDIS_HANDLE MacReceiveContext
,
1339 /*IN*/ PVOID HeaderBuffer
,
1340 /*IN*/ UINT HeaderBufferSize
,
1341 /*IN*/ PVOID LookAheadBuffer
,
1342 /*IN*/ UINT LookaheadBufferSize
,
1343 /*IN*/ UINT PacketSize
);
1345 typedef NDIS_STATUS DDKAPI
1346 (*WAN_RECEIVE_HANDLER
)(
1347 /*IN*/ NDIS_HANDLE NdisLinkHandle
,
1348 /*IN*/ PUCHAR Packet
,
1349 /*IN*/ ULONG PacketSize
);
1352 (*RECEIVE_COMPLETE_HANDLER
)(
1353 /*IN*/ NDIS_HANDLE ProtocolBindingContext
);
1356 /* Protocol characteristics for NDIS 3.0 protocols */
1358 #define NDIS30_PROTOCOL_CHARACTERISTICS_S \
1359 UCHAR MajorNdisVersion; \
1360 UCHAR MinorNdisVersion; \
1361 _ANONYMOUS_UNION union { \
1365 OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler; \
1366 CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler; \
1367 _ANONYMOUS_UNION union { \
1368 SEND_COMPLETE_HANDLER SendCompleteHandler; \
1369 WAN_SEND_COMPLETE_HANDLER WanSendCompleteHandler; \
1370 } DUMMYUNIONNAME2; \
1371 _ANONYMOUS_UNION union { \
1372 TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; \
1373 WAN_TRANSFER_DATA_COMPLETE_HANDLER WanTransferDataCompleteHandler; \
1374 } DUMMYUNIONNAME3; \
1375 RESET_COMPLETE_HANDLER ResetCompleteHandler; \
1376 REQUEST_COMPLETE_HANDLER RequestCompleteHandler; \
1377 _ANONYMOUS_UNION union { \
1378 RECEIVE_HANDLER ReceiveHandler; \
1379 WAN_RECEIVE_HANDLER WanReceiveHandler; \
1380 } DUMMYUNIONNAME4; \
1381 RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; \
1382 STATUS_HANDLER StatusHandler; \
1383 STATUS_COMPLETE_HANDLER StatusCompleteHandler; \
1386 typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS
{
1387 NDIS30_PROTOCOL_CHARACTERISTICS_S
1388 } NDIS30_PROTOCOL_CHARACTERISTICS
, *PNDIS30_PROTOCOL_CHARACTERISTICS
;
1391 /* Prototypes for NDIS 4.0 protocol characteristics */
1394 (*RECEIVE_PACKET_HANDLER
)(
1395 /*IN*/ NDIS_HANDLE ProtocolBindingContext
,
1396 /*IN*/ PNDIS_PACKET Packet
);
1400 /*OUT*/ PNDIS_STATUS Status
,
1401 /*IN*/ NDIS_HANDLE BindContext
,
1402 /*IN*/ PNDIS_STRING DeviceName
,
1403 /*IN*/ PVOID SystemSpecific1
,
1404 /*IN*/ PVOID SystemSpecific2
);
1408 /*OUT*/ PNDIS_STATUS Status
,
1409 /*IN*/ NDIS_HANDLE ProtocolBindingContext
,
1410 /*IN*/ NDIS_HANDLE UnbindContext
);
1412 typedef NDIS_STATUS DDKAPI
1413 (*PNP_EVENT_HANDLER
)(
1414 /*IN*/ NDIS_HANDLE ProtocolBindingContext
,
1415 /*IN*/ PNET_PNP_EVENT NetPnPEvent
);
1418 (*UNLOAD_PROTOCOL_HANDLER
)(
1422 /* Protocol characteristics for NDIS 4.0 protocols */
1426 #define NDIS40_PROTOCOL_CHARACTERISTICS_S \
1427 NDIS30_PROTOCOL_CHARACTERISTICS Ndis30Chars; \
1428 RECEIVE_PACKET_HANDLER ReceivePacketHandler; \
1429 BIND_HANDLER BindAdapterHandler; \
1430 UNBIND_HANDLER UnbindAdapterHandler; \
1431 PNP_EVENT_HANDLER PnPEventHandler; \
1432 UNLOAD_PROTOCOL_HANDLER UnloadHandler;
1434 #else /* !__cplusplus */
1436 #define NDIS40_PROTOCOL_CHARACTERISTICS_S \
1437 NDIS30_PROTOCOL_CHARACTERISTICS_S \
1438 RECEIVE_PACKET_HANDLER ReceivePacketHandler; \
1439 BIND_HANDLER BindAdapterHandler; \
1440 UNBIND_HANDLER UnbindAdapterHandler; \
1441 PNP_EVENT_HANDLER PnPEventHandler; \
1442 UNLOAD_PROTOCOL_HANDLER UnloadHandler;
1444 #endif /* __cplusplus */
1446 typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS
{
1447 NDIS40_PROTOCOL_CHARACTERISTICS_S
1448 } NDIS40_PROTOCOL_CHARACTERISTICS
, *PNDIS40_PROTOCOL_CHARACTERISTICS
;
1450 /* Prototypes for NDIS 5.0 protocol characteristics */
1453 (*CO_SEND_COMPLETE_HANDLER
)(
1454 /*IN*/ NDIS_STATUS Status
,
1455 /*IN*/ NDIS_HANDLE ProtocolVcContext
,
1456 /*IN*/ PNDIS_PACKET Packet
);
1459 (*CO_STATUS_HANDLER
)(
1460 /*IN*/ NDIS_HANDLE ProtocolBindingContext
,
1461 /*IN*/ NDIS_HANDLE ProtocolVcContext
/*OPTIONAL*/,
1462 /*IN*/ NDIS_STATUS GeneralStatus
,
1463 /*IN*/ PVOID StatusBuffer
,
1464 /*IN*/ UINT StatusBufferSize
);
1467 (*CO_RECEIVE_PACKET_HANDLER
)(
1468 /*IN*/ NDIS_HANDLE ProtocolBindingContext
,
1469 /*IN*/ NDIS_HANDLE ProtocolVcContext
,
1470 /*IN*/ PNDIS_PACKET Packet
);
1473 (*CO_AF_REGISTER_NOTIFY_HANDLER
)(
1474 /*IN*/ NDIS_HANDLE ProtocolBindingContext
,
1475 /*IN*/ PCO_ADDRESS_FAMILY AddressFamily
);
1477 #ifdef __cplusplus \
1479 #define NDIS50_PROTOCOL_CHARACTERISTICS_S \
1480 NDIS40_PROTOCOL_CHARACTERISTICS Ndis40Chars; \
1481 PVOID ReservedHandlers[4]; \
1482 CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler; \
1483 CO_STATUS_HANDLER CoStatusHandler; \
1484 CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler; \
1485 CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler;
1487 #else /* !__cplusplus */
1489 #define NDIS50_PROTOCOL_CHARACTERISTICS_S \
1490 NDIS40_PROTOCOL_CHARACTERISTICS_S \
1491 PVOID ReservedHandlers[4]; \
1492 CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler; \
1493 CO_STATUS_HANDLER CoStatusHandler; \
1494 CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler; \
1495 CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler;
1497 #endif /* !__cplusplus */
1499 typedef struct _NDIS50_PROTOCOL_CHARACTERISTICS
{
1500 NDIS50_PROTOCOL_CHARACTERISTICS_S
1501 } NDIS50_PROTOCOL_CHARACTERISTICS
, *PNDIS50_PROTOCOL_CHARACTERISTICS
;
1503 #if defined(NDIS50) || defined(NDIS51)
1504 typedef struct _NDIS_PROTOCOL_CHARACTERISTICS
{
1505 NDIS50_PROTOCOL_CHARACTERISTICS_S
;
1506 } NDIS_PROTOCOL_CHARACTERISTICS
, *PNDIS_PROTOCOL_CHARACTERISTICS
;
1507 #elif defined(NDIS40)
1508 typedef struct _NDIS_PROTOCOL_CHARACTERISTICS
{
1509 NDIS40_PROTOCOL_CHARACTERISTICS_S
;
1510 } NDIS_PROTOCOL_CHARACTERISTICS
, *PNDIS_PROTOCOL_CHARACTERISTICS
;
1511 #elif defined(NDIS30)
1512 typedef struct _NDIS_PROTOCOL_CHARACTERISTICS
{
1513 NDIS30_PROTOCOL_CHARACTERISTICS_S
1514 } NDIS_PROTOCOL_CHARACTERISTICS
, *PNDIS_PROTOCOL_CHARACTERISTICS
;
1516 #error Define an NDIS version
1521 /* Buffer management routines */
1527 /*OUT*/ PNDIS_STATUS Status
,
1528 /*OUT*/ PNDIS_BUFFER
*Buffer
,
1529 /*IN*/ NDIS_HANDLE PoolHandle
,
1530 /*IN*/ PVOID VirtualAddress
,
1531 /*IN*/ UINT Length
);
1537 NdisAllocateBufferPool(
1538 /*OUT*/ PNDIS_STATUS Status
,
1539 /*OUT*/ PNDIS_HANDLE PoolHandle
,
1540 /*IN*/ UINT NumberOfDescriptors
);
1546 /*OUT*/ PNDIS_STATUS Status
,
1547 /*OUT*/ PNDIS_PACKET
*Packet
,
1548 /*IN*/ NDIS_HANDLE PoolHandle
);
1553 NdisAllocatePacketPool(
1554 /*OUT*/ PNDIS_STATUS Status
,
1555 /*OUT*/ PNDIS_HANDLE PoolHandle
,
1556 /*IN*/ UINT NumberOfDescriptors
,
1557 /*IN*/ UINT ProtocolReservedLength
);
1559 #define PROTOCOL_RESERVED_SIZE_IN_PACKET (4 * sizeof(PVOID))
1565 /*OUT*/ PNDIS_STATUS Status
,
1566 /*OUT*/ PNDIS_BUFFER
*Buffer
,
1567 /*IN*/ NDIS_HANDLE PoolHandle
,
1568 /*IN*/ PVOID MemoryDescriptor
,
1570 /*IN*/ UINT Length
);
1575 NdisCopyFromPacketToPacket(
1576 /*IN*/ PNDIS_PACKET Destination
,
1577 /*IN*/ UINT DestinationOffset
,
1578 /*IN*/ UINT BytesToCopy
,
1579 /*IN*/ PNDIS_PACKET Source
,
1580 /*IN*/ UINT SourceOffset
,
1581 /*OUT*/ PUINT BytesCopied
);
1586 NdisDprAllocatePacket(
1587 /*OUT*/ PNDIS_STATUS Status
,
1588 /*OUT*/ PNDIS_PACKET
*Packet
,
1589 /*IN*/ NDIS_HANDLE PoolHandle
);
1594 NdisDprAllocatePacketNonInterlocked(
1595 /*OUT*/ PNDIS_STATUS Status
,
1596 /*OUT*/ PNDIS_PACKET
*Packet
,
1597 /*IN*/ NDIS_HANDLE PoolHandle
);
1603 /*IN*/ PNDIS_PACKET Packet
);
1608 NdisDprFreePacketNonInterlocked(
1609 /*IN*/ PNDIS_PACKET Packet
);
1615 /*IN*/ NDIS_HANDLE PoolHandle
);
1621 /*IN*/ PNDIS_PACKET Packet
);
1627 /*IN*/ NDIS_HANDLE PoolHandle
);
1633 /*IN*/ PNDIS_PACKET
*PacketsToReturn
,
1634 /*IN*/ UINT NumberOfPackets
);
1639 NdisUnchainBufferAtBack(
1640 /*IN OUT*/ PNDIS_PACKET Packet
,
1641 /*OUT*/ PNDIS_BUFFER
*Buffer
);
1646 NdisUnchainBufferAtFront(
1647 /*IN OUT*/ PNDIS_PACKET Packet
,
1648 /*OUT*/ PNDIS_BUFFER
*Buffer
);
1653 NdisAdjustBufferLength(
1654 /*IN*/ PNDIS_BUFFER Buffer
,
1655 /*IN*/ UINT Length
);
1661 /*IN*/ PNDIS_BUFFER Buffer
);
1666 NdisBufferVirtualAddress(
1667 /*IN*/ PNDIS_BUFFER Buffer
);
1672 NDIS_BUFFER_TO_SPAN_PAGES(
1673 /*IN*/ PNDIS_BUFFER Buffer
);
1679 /*IN*/ PNDIS_BUFFER Buffer
);
1684 NdisGetBufferPhysicalArraySize(
1685 /*IN*/ PNDIS_BUFFER Buffer
,
1686 /*OUT*/ PUINT ArraySize
);
1691 NdisGetFirstBufferFromPacket(
1692 /*IN*/ PNDIS_PACKET _Packet
,
1693 /*OUT*/ PNDIS_BUFFER
*_FirstBuffer
,
1694 /*OUT*/ PVOID
*_FirstBufferVA
,
1695 /*OUT*/ PUINT _FirstBufferLength
,
1696 /*OUT*/ PUINT _TotalBufferLength
);
1702 /*IN*/ PNDIS_BUFFER Buffer
,
1703 /*OUT*/ PVOID
*VirtualAddress
/*OPTIONAL*/,
1704 /*OUT*/ PUINT Length
);
1709 NdisQueryBufferOffset(
1710 /*IN*/ PNDIS_BUFFER Buffer
,
1711 /*OUT*/ PUINT Offset
,
1712 /*OUT*/ PUINT Length
);
1718 /*IN*/ PNDIS_BUFFER Buffer
);
1723 * NdisGetBufferPhysicalArraySize(
1724 * IN PNDIS_BUFFER Buffer,
1725 * OUT PUINT ArraySize);
1727 #define NdisGetBufferPhysicalArraySize(Buffer, \
1730 (*(ArraySize) = NDIS_BUFFER_TO_SPAN_PAGES(Buffer)) \
1736 * NdisGetFirstBufferFromPacket(
1737 * IN PNDIS_PACKET _Packet,
1738 * OUT PNDIS_BUFFER * _FirstBuffer,
1739 * OUT PVOID * _FirstBufferVA,
1740 * OUT PUINT _FirstBufferLength,
1741 * OUT PUINT _TotalBufferLength)
1743 #define NdisGetFirstBufferFromPacket(_Packet, \
1746 _FirstBufferLength, \
1747 _TotalBufferLength) \
1749 PNDIS_BUFFER _Buffer; \
1751 _Buffer = (_Packet)->Private.Head; \
1752 *(_FirstBuffer) = _Buffer; \
1753 if (_Buffer != NULL) \
1755 *(_FirstBufferVA) = MmGetSystemAddressForMdl(_Buffer); \
1756 *(_FirstBufferLength) = MmGetMdlByteCount(_Buffer); \
1757 _Buffer = _Buffer->Next; \
1758 *(_TotalBufferLength) = *(_FirstBufferLength); \
1759 while (_Buffer != NULL) { \
1760 *(_TotalBufferLength) += MmGetMdlByteCount(_Buffer); \
1761 _Buffer = _Buffer->Next; \
1766 *(_FirstBufferVA) = 0; \
1767 *(_FirstBufferLength) = 0; \
1768 *(_TotalBufferLength) = 0; \
1774 * NdisGetFirstBufferFromPacketSafe(
1775 * IN PNDIS_PACKET _Packet,
1776 * OUT PNDIS_BUFFER * _FirstBuffer,
1777 * OUT PVOID * _FirstBufferVA,
1778 * OUT PUINT _FirstBufferLength,
1779 * OUT PUINT _TotalBufferLength),
1780 * IN MM_PAGE_PRIORITY _Priority)
1782 #define NdisGetFirstBufferFromPacketSafe(_Packet, \
1785 _FirstBufferLength, \
1786 _TotalBufferLength, \
1789 PNDIS_BUFFER _Buffer; \
1791 _Buffer = (_Packet)->Private.Head; \
1792 *(_FirstBuffer) = _Buffer; \
1793 if (_Buffer != NULL) \
1795 *(_FirstBufferVA) = MmGetSystemAddressForMdlSafe(_Buffer, _Priority); \
1796 *(_FirstBufferLength) = MmGetMdlByteCount(_Buffer); \
1797 _Buffer = _Buffer->Next; \
1798 *(_TotalBufferLength) = *(_FirstBufferLength); \
1799 while (_Buffer != NULL) { \
1800 *(_TotalBufferLength) += MmGetMdlByteCount(_Buffer); \
1801 _Buffer = _Buffer->Next; \
1806 *(_FirstBufferVA) = 0; \
1807 *(_FirstBufferLength) = 0; \
1808 *(_TotalBufferLength) = 0; \
1815 * IN PNDIS_BUFFER Buffer,
1816 * OUT PVOID *VirtualAddress OPTIONAL,
1819 #define NdisQueryBuffer(Buffer, \
1823 if (VirtualAddress) \
1824 *((PVOID*)VirtualAddress) = MmGetSystemAddressForMdl(Buffer); \
1826 *((PUINT)Length) = MmGetMdlByteCount(Buffer); \
1832 * NdisQueryBufferOffset(
1833 * IN PNDIS_BUFFER Buffer,
1835 * OUT PUINT Length);
1837 #define NdisQueryBufferOffset(Buffer, \
1841 *((PUINT)Offset) = MmGetMdlByteOffset(Buffer); \
1842 *((PUINT)Length) = MmGetMdlByteCount(Buffer); \
1848 * NDIS_BUFFER_LINKAGE(
1849 * IN PNDIS_BUFFER Buffer);
1851 #define NDIS_BUFFER_LINKAGE(Buffer)(Buffer)->Next;
1856 * NdisChainBufferAtBack(
1857 * IN OUT PNDIS_PACKET Packet,
1858 * IN OUT PNDIS_BUFFER Buffer)
1860 #define NdisChainBufferAtBack(Packet, \
1863 PNDIS_BUFFER NdisBuffer = (Buffer); \
1865 while (NdisBuffer->Next != NULL) \
1866 NdisBuffer = NdisBuffer->Next; \
1868 NdisBuffer->Next = NULL; \
1870 if ((Packet)->Private.Head != NULL) \
1871 (Packet)->Private.Tail->Next = (Buffer); \
1873 (Packet)->Private.Head = (Buffer); \
1875 (Packet)->Private.Tail = NdisBuffer; \
1876 (Packet)->Private.ValidCounts = FALSE; \
1882 * NdisChainBufferAtFront(
1883 * IN OUT PNDIS_PACKET Packet,
1884 * IN OUT PNDIS_BUFFER Buffer)
1886 #define NdisChainBufferAtFront(Packet, \
1889 PNDIS_BUFFER _NdisBuffer = (Buffer); \
1891 while (_NdisBuffer->Next != NULL) \
1892 _NdisBuffer = _NdisBuffer->Next; \
1894 if ((Packet)->Private.Head == NULL) \
1895 (Packet)->Private.Tail = _NdisBuffer; \
1897 _NdisBuffer->Next = (Packet)->Private.Head; \
1898 (Packet)->Private.Head = (Buffer); \
1899 (Packet)->Private.ValidCounts = FALSE; \
1905 * NdisGetNextBuffer(
1906 * IN PNDIS_BUFFER CurrentBuffer,
1907 * OUT PNDIS_BUFFER * NextBuffer)
1909 #define NdisGetNextBuffer(CurrentBuffer, \
1912 *(NextBuffer) = (CurrentBuffer)->Next; \
1918 * NdisGetPacketFlags(
1919 * IN PNDIS_PACKET Packet);
1921 #define NdisGetPacketFlags(Packet)(Packet)->Private.Flags;
1926 * NdisClearPacketFlags(
1927 * IN PNDIS_PACKET Packet,
1930 #define NdisClearPacketFlags(Packet, Flags) \
1931 (Packet)->Private.Flags &= ~(Flags)
1936 * NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(
1937 * IN PNDIS_PACKET Packet,
1938 * IN PPVOID pMediaSpecificInfo,
1939 * IN PUINT pSizeMediaSpecificInfo);
1941 #define NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(_Packet, \
1942 _pMediaSpecificInfo, \
1943 _pSizeMediaSpecificInfo) \
1945 if (!((_Packet)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS) || \
1946 !((_Packet)->Private.NdisPacketFlags & fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO)) \
1948 *(_pMediaSpecificInfo) = NULL; \
1949 *(_pSizeMediaSpecificInfo) = 0; \
1953 *(_pMediaSpecificInfo) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
1954 (_Packet)->Private.NdisPacketOobOffset))->MediaSpecificInformation; \
1955 *(_pSizeMediaSpecificInfo) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
1956 (_Packet)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo; \
1963 * NDIS_GET_PACKET_PROTOCOL_TYPE(
1964 * IN PNDIS_PACKET Packet);
1966 #define NDIS_GET_PACKET_PROTOCOL_TYPE(_Packet) \
1967 ((_Packet)->Private.Flags & NDIS_PROTOCOL_ID_MASK)
1971 * NDIS_GET_PACKET_HEADER_SIZE(
1972 * IN PNDIS_PACKET Packet);
1974 #define NDIS_GET_PACKET_HEADER_SIZE(_Packet) \
1975 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
1976 (_Packet)->Private.NdisPacketOobOffset))->HeaderSize
1981 * NDIS_GET_PACKET_STATUS(
1982 * IN PNDIS_PACKET Packet);
1984 #define NDIS_GET_PACKET_STATUS(_Packet) \
1985 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
1986 (_Packet)->Private.NdisPacketOobOffset))->Status
1991 * NDIS_GET_PACKET_TIME_RECEIVED(
1992 * IN PNDIS_PACKET Packet);
1994 #define NDIS_GET_PACKET_TIME_RECEIVED(_Packet) \
1995 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
1996 (_Packet)->Private.NdisPacketOobOffset))->TimeReceived
2001 * NDIS_GET_PACKET_TIME_SENT(
2002 * IN PNDIS_PACKET Packet);
2004 #define NDIS_GET_PACKET_TIME_SENT(_Packet) \
2005 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
2006 (_Packet)->Private.NdisPacketOobOffset))->TimeSent
2011 * NDIS_GET_PACKET_TIME_TO_SEND(
2012 * IN PNDIS_PACKET Packet);
2014 #define NDIS_GET_PACKET_TIME_TO_SEND(_Packet) \
2015 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
2016 (_Packet)->Private.NdisPacketOobOffset))->TimeToSend
2020 * PNDIS_PACKET_OOB_DATA
2021 * NDIS_OOB_DATA_FROM_PACKET(
2022 * IN PNDIS_PACKET Packet);
2024 #define NDIS_OOB_DATA_FROM_PACKET(_Packet) \
2025 (PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
2026 (_Packet)->Private.NdisPacketOobOffset)
2032 * IN PNDIS_PACKET Packet,
2033 * OUT PUINT PhysicalBufferCount OPTIONAL,
2034 * OUT PUINT BufferCount OPTIONAL,
2035 * OUT PNDIS_BUFFER *FirstBuffer OPTIONAL,
2036 * OUT PUINT TotalPacketLength OPTIONAL);
2038 #define NdisQueryPacket(Packet, \
2039 PhysicalBufferCount, \
2042 TotalPacketLength) \
2045 *((PNDIS_BUFFER*)FirstBuffer) = (Packet)->Private.Head; \
2046 if ((TotalPacketLength) || (BufferCount) || (PhysicalBufferCount)) \
2048 if (!(Packet)->Private.ValidCounts) { \
2050 UINT _PacketLength; \
2051 PNDIS_BUFFER _NdisBuffer; \
2052 UINT _PhysicalBufferCount = 0; \
2053 UINT _TotalPacketLength = 0; \
2056 for (_NdisBuffer = (Packet)->Private.Head; \
2057 _NdisBuffer != (PNDIS_BUFFER)NULL; \
2058 _NdisBuffer = _NdisBuffer->Next) \
2060 _PhysicalBufferCount += NDIS_BUFFER_TO_SPAN_PAGES(_NdisBuffer); \
2061 NdisQueryBufferOffset(_NdisBuffer, &_Offset, &_PacketLength); \
2062 _TotalPacketLength += _PacketLength; \
2065 (Packet)->Private.PhysicalCount = _PhysicalBufferCount; \
2066 (Packet)->Private.TotalLength = _TotalPacketLength; \
2067 (Packet)->Private.Count = _Count; \
2068 (Packet)->Private.ValidCounts = TRUE; \
2071 if (PhysicalBufferCount) \
2072 *((PUINT)PhysicalBufferCount) = (Packet)->Private.PhysicalCount; \
2075 *((PUINT)BufferCount) = (Packet)->Private.Count; \
2077 if (TotalPacketLength) \
2078 *((PUINT)TotalPacketLength) = (Packet)->Private.TotalLength; \
2084 * NdisQueryPacketLength(
2085 * IN PNDIS_PACKET Packet,
2086 * OUT PUINT PhysicalBufferCount OPTIONAL,
2087 * OUT PUINT BufferCount OPTIONAL,
2088 * OUT PNDIS_BUFFER *FirstBuffer OPTIONAL,
2089 * OUT PUINT TotalPacketLength OPTIONAL);
2091 #define NdisQueryPacketLength(Packet, \
2092 TotalPacketLength) \
2094 if ((TotalPacketLength)) \
2096 if (!(Packet)->Private.ValidCounts) { \
2098 UINT _PacketLength; \
2099 PNDIS_BUFFER _NdisBuffer; \
2100 UINT _PhysicalBufferCount = 0; \
2101 UINT _TotalPacketLength = 0; \
2104 for (_NdisBuffer = (Packet)->Private.Head; \
2105 _NdisBuffer != (PNDIS_BUFFER)NULL; \
2106 _NdisBuffer = _NdisBuffer->Next) \
2108 _PhysicalBufferCount += NDIS_BUFFER_TO_SPAN_PAGES(_NdisBuffer); \
2109 NdisQueryBufferOffset(_NdisBuffer, &_Offset, &_PacketLength); \
2110 _TotalPacketLength += _PacketLength; \
2113 (Packet)->Private.PhysicalCount = _PhysicalBufferCount; \
2114 (Packet)->Private.TotalLength = _TotalPacketLength; \
2115 (Packet)->Private.Count = _Count; \
2116 (Packet)->Private.ValidCounts = TRUE; \
2119 if (TotalPacketLength) \
2120 *((PUINT)TotalPacketLength) = (Packet)->Private.TotalLength; \
2127 * NdisRecalculatePacketCounts(
2128 * IN OUT PNDIS_PACKET Packet);
2130 #define NdisRecalculatePacketCounts(Packet) \
2132 PNDIS_BUFFER _Buffer = (Packet)->Private.Head; \
2133 if (_Buffer != NULL) \
2135 while (_Buffer->Next != NULL) \
2137 ´_Buffer = _Buffer->Next; \
2139 (Packet)->Private.Tail = _Buffer; \
2141 (Packet)->Private.ValidCounts = FALSE; \
2147 * NdisReinitializePacket(
2148 * IN OUT PNDIS_PACKET Packet);
2150 #define NdisReinitializePacket(Packet) \
2152 (Packet)->Private.Head = (PNDIS_BUFFER)NULL; \
2153 (Packet)->Private.ValidCounts = FALSE; \
2159 * NdisSetPacketFlags(
2160 * IN PNDIS_PACKET Packet,
2163 #define NdisSetPacketFlags(Packet, Flags) \
2164 (Packet)->Private.Flags |= (Flags);
2169 * NDIS_SET_PACKET_HEADER_SIZE(
2170 * IN PNDIS_PACKET Packet,
2173 #define NDIS_SET_PACKET_HEADER_SIZE(_Packet, _HdrSize) \
2174 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
2175 (_Packet)->Private.NdisPacketOobOffset))->HeaderSize = (_HdrSize)
2180 * NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(
2181 * IN PNDIS_PACKET Packet,
2182 * IN PVOID MediaSpecificInfo,
2183 * IN UINT SizeMediaSpecificInfo);
2185 #define NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(_Packet, \
2186 _MediaSpecificInfo, \
2187 _SizeMediaSpecificInfo) \
2189 if ((_Packet)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS) \
2191 (_Packet)->Private.NdisPacketFlags |= fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO; \
2192 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
2193 (_Packet)->Private.NdisPacketOobOffset))->MediaSpecificInformation = \
2194 (_MediaSpecificInfo); \
2195 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
2196 (_Packet)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo = \
2197 (_SizeMediaSpecificInfo); \
2204 * NDIS_SET_PACKET_STATUS(
2205 * IN PNDIS_PACKET Packet,
2206 * IN NDIS_STATUS Status);
2208 #define NDIS_SET_PACKET_STATUS(_Packet, _Status) \
2209 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
2210 (_Packet)->Private.NdisPacketOobOffset))->Status = (_Status)
2215 * NDIS_SET_PACKET_TIME_RECEIVED(
2216 * IN PNDIS_PACKET Packet,
2217 * IN ULONGLONG TimeReceived);
2219 #define NDIS_SET_PACKET_TIME_RECEIVED(_Packet, _TimeReceived) \
2220 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
2221 (_Packet)->Private.NdisPacketOobOffset))->TimeReceived = (_TimeReceived)
2226 * NDIS_SET_PACKET_TIME_SENT(
2227 * IN PNDIS_PACKET Packet,
2228 * IN ULONGLONG TimeSent);
2230 #define NDIS_SET_PACKET_TIME_SENT(_Packet, _TimeSent) \
2231 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
2232 (_Packet)->Private.NdisPacketOobOffset))->TimeSent = (_TimeSent)
2237 * NDIS_SET_PACKET_TIME_TO_SEND(
2238 * IN PNDIS_PACKET Packet,
2239 * IN ULONGLONG TimeToSend);
2241 #define NDIS_SET_PACKET_TIME_TO_SEND(_Packet, _TimeToSend) \
2242 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
2243 (_Packet)->Private.NdisPacketOobOffset))->TimeToSend = (_TimeToSend)
2249 * IN PNDIS_PACKET Packet,
2252 #define NdisSetSendFlags(_Packet,_Flags)(_Packet)->Private.Flags = (_Flags)
2256 /* Memory management routines */
2260 * NdisCreateLookaheadBufferFromSharedMemory(
2261 * IN PVOID pSharedMemory,
2262 * IN UINT LookaheadLength,
2263 * OUT PVOID *pLookaheadBuffer)
2265 #define NdisCreateLookaheadBufferFromSharedMemory(_pSharedMemory, \
2267 _pLookaheadBuffer) \
2268 ((*(_pLookaheadBuffer)) = (_pSharedMemory))
2272 * NdisDestroyLookaheadBufferFromSharedMemory(
2273 * IN PVOID pLookaheadBuffer)
2275 #define NdisDestroyLookaheadBufferFromSharedMemory(_pLookaheadBuffer)
2281 * NdisMoveFromMappedMemory(
2282 * OUT PVOID Destination,
2286 #define NdisMoveFromMappedMemory(Destination, Source, Length) \
2287 NdisMoveMappedMemory(Destination, Source, Length)
2291 * NdisMoveMappedMemory(
2292 * OUT PVOID Destination,
2296 #define NdisMoveMappedMemory(Destination, Source, Length) \
2297 RtlCopyMemory(Destination, Source, Length)
2301 * NdisMoveToMappedMemory(
2302 * OUT PVOID Destination,
2306 #define NdisMoveToMappedMemory(Destination, Source, Length) \
2307 NdisMoveMappedMemory(Destination, Source, Length)
2313 * NdisMUpdateSharedMemory(
2314 * IN NDIS_HANDLE MiniportAdapterHandle,
2316 * IN PVOID VirtualAddress,
2317 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
2319 #define NdisMUpdateSharedMemory(_H, _L, _V, _P) \
2320 NdisUpdateSharedMemory(_H, _L, _V, _P)
2326 /*OUT*/ PVOID
*VirtualAddress
,
2328 /*IN*/ UINT MemoryFlags
,
2329 /*IN*/ NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress
);
2335 /*IN*/ PVOID VirtualAddress
,
2337 /*IN*/ UINT MemoryFlags
);
2342 NdisImmediateReadSharedMemory(
2343 /*IN*/ NDIS_HANDLE WrapperConfigurationContext
,
2344 /*IN*/ ULONG SharedMemoryAddress
,
2345 /*OUT*/ PUCHAR Buffer
,
2346 /*IN*/ ULONG Length
);
2351 NdisImmediateWriteSharedMemory(
2352 /*IN*/ NDIS_HANDLE WrapperConfigurationContext
,
2353 /*IN*/ ULONG SharedMemoryAddress
,
2354 /*IN*/ PUCHAR Buffer
,
2355 /*IN*/ ULONG Length
);
2360 NdisMAllocateSharedMemory(
2361 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
2362 /*IN*/ ULONG Length
,
2363 /*IN*/ BOOLEAN Cached
,
2364 /*OUT*/ PVOID
*VirtualAddress
,
2365 /*OUT*/ PNDIS_PHYSICAL_ADDRESS PhysicalAddress
);
2370 NdisMAllocateSharedMemoryAsync(
2371 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
2372 /*IN*/ ULONG Length
,
2373 /*IN*/ BOOLEAN Cached
,
2374 /*IN*/ PVOID Context
);
2378 #define NdisUpdateSharedMemory(NdisAdapterHandle, \
2388 NdisUpdateSharedMemory(
2389 /*IN*/ NDIS_HANDLE NdisAdapterHandle
,
2390 /*IN*/ ULONG Length
,
2391 /*IN*/ PVOID VirtualAddress
,
2392 /*IN*/ NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
2394 #endif /* defined(NDIS50) */
2398 * NdisGetPhysicalAddressHigh(
2399 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
2401 #define NdisGetPhysicalAddressHigh(PhysicalAddress) \
2402 ((PhysicalAddress).HighPart)
2406 * NdisSetPhysicalAddressHigh(
2407 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
2410 #define NdisSetPhysicalAddressHigh(PhysicalAddress, Value) \
2411 ((PhysicalAddress).HighPart) = (Value)
2415 * NdisGetPhysicalAddressLow(
2416 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
2418 #define NdisGetPhysicalAddressLow(PhysicalAddress) \
2419 ((PhysicalAddress).LowPart)
2424 * NdisSetPhysicalAddressLow(
2425 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
2428 #define NdisSetPhysicalAddressLow(PhysicalAddress, Value) \
2429 ((PhysicalAddress).LowPart) = (Value)
2433 * NDIS_PHYSICAL_ADDRESS_CONST(
2437 #define NDIS_PHYSICAL_ADDRESS_CONST(Low, High) \
2438 { {(ULONG)(Low), (LONG)(High)} }
2443 * IN CONST VOID *Source1,
2444 * IN CONST VOID *Source2,
2447 #define NdisEqualMemory(Source1, Source2, Length) \
2448 RtlEqualMemory(Source1, Source2, Length)
2453 * IN PVOID Destination,
2457 #define NdisFillMemory(Destination, Length, Fill) \
2458 RtlFillMemory(Destination, Length, Fill)
2462 * NdisZeroMappedMemory(
2463 * IN PVOID Destination,
2466 #define NdisZeroMappedMemory(Destination, Length) \
2467 RtlZeroMemory(Destination, Length)
2472 * OUT PVOID Destination,
2476 #define NdisMoveMemory(Destination, Source, Length) \
2477 RtlCopyMemory(Destination, Source, Length)
2482 * NdisRetrieveUlong(
2483 * IN PULONG DestinationAddress,
2484 * IN PULONG SourceAddress);
2486 #define NdisRetrieveUlong(DestinationAddress, SourceAddress) \
2487 RtlRetrieveUlong(DestinationAddress, SourceAddress)
2493 * IN PULONG DestinationAddress,
2496 #define NdisStoreUlong(DestinationAddress, Value) \
2497 RtlStoreUlong(DestinationAddress, Value)
2503 * IN PVOID Destination,
2506 #define NdisZeroMemory(Destination, Length) \
2507 RtlZeroMemory(Destination, Length)
2511 /* Configuration routines */
2516 NdisOpenConfiguration(
2517 /*OUT*/ PNDIS_STATUS Status
,
2518 /*OUT*/ PNDIS_HANDLE ConfigurationHandle
,
2519 /*IN*/ NDIS_HANDLE WrapperConfigurationContext
);
2524 NdisReadNetworkAddress(
2525 /*OUT*/ PNDIS_STATUS Status
,
2526 /*OUT*/ PVOID
*NetworkAddress
,
2527 /*OUT*/ PUINT NetworkAddressLength
,
2528 /*IN*/ NDIS_HANDLE ConfigurationHandle
);
2533 NdisReadEisaSlotInformation(
2534 /*OUT*/ PNDIS_STATUS Status
,
2535 /*IN*/ NDIS_HANDLE WrapperConfigurationContext
,
2536 /*OUT*/ PUINT SlotNumber
,
2537 /*OUT*/ PNDIS_EISA_FUNCTION_INFORMATION EisaData
);
2542 NdisReadEisaSlotInformationEx(
2543 /*OUT*/ PNDIS_STATUS Status
,
2544 /*IN*/ NDIS_HANDLE WrapperConfigurationContext
,
2545 /*OUT*/ PUINT SlotNumber
,
2546 /*OUT*/ PNDIS_EISA_FUNCTION_INFORMATION
*EisaData
,
2547 /*OUT*/ PUINT NumberOfFunctions
);
2552 NdisReadPciSlotInformation(
2553 /*IN*/ NDIS_HANDLE NdisAdapterHandle
,
2554 /*IN*/ ULONG SlotNumber
,
2555 /*IN*/ ULONG Offset
,
2556 /*IN*/ PVOID Buffer
,
2557 /*IN*/ ULONG Length
);
2562 NdisWritePciSlotInformation(
2563 /*IN*/ NDIS_HANDLE NdisAdapterHandle
,
2564 /*IN*/ ULONG SlotNumber
,
2565 /*IN*/ ULONG Offset
,
2566 /*IN*/ PVOID Buffer
,
2567 /*IN*/ ULONG Length
);
2571 /* String management routines */
2576 NdisAnsiStringToUnicodeString(
2577 /*IN OUT*/ PNDIS_STRING DestinationString
,
2578 /*IN*/ PNDIS_ANSI_STRING SourceString
);
2583 * IN PNDIS_STRING String1,
2584 * IN PNDIS_STRING String2,
2585 * IN BOOLEAN CaseInsensitive);
2587 #define NdisEqualString(_String1, _String2, _CaseInsensitive) \
2588 RtlEqualUnicodeString(_String1, _String2, _CaseInsensitive)
2594 /*IN OUT*/ PNDIS_ANSI_STRING DestinationString
,
2595 /*IN*/ PCSTR SourceString
);
2600 NdisInitUnicodeString(
2601 /*IN OUT*/ PNDIS_STRING DestinationString
,
2602 /*IN*/ PCWSTR SourceString
);
2607 NdisUnicodeStringToAnsiString(
2608 /*IN OUT*/ PNDIS_ANSI_STRING DestinationString
,
2609 /*IN*/ PNDIS_STRING SourceString
);
2611 #define NdisFreeString(_s) NdisFreeMemory((_s).Buffer, (_s).MaximumLength, 0)
2612 #define NdisPrintString(_s) DbgPrint("%ls", (_s).Buffer)
2615 /* Spin lock reoutines */
2619 * NdisAllocateSpinLock(
2620 * IN PNDIS_SPIN_LOCK SpinLock);
2622 #define NdisAllocateSpinLock(_SpinLock) \
2623 KeInitializeSpinLock(&(_SpinLock)->SpinLock)
2628 * IN PNDIS_SPIN_LOCK SpinLock);
2630 #define NdisFreeSpinLock(_SpinLock)
2634 * NdisAcquireSpinLock(
2635 * IN PNDIS_SPIN_LOCK SpinLock);
2637 #define NdisAcquireSpinLock(_SpinLock) \
2638 KeAcquireSpinLock(&(_SpinLock)->SpinLock, &(_SpinLock)->OldIrql)
2642 * NdisReleaseSpinLock(
2643 * IN PNDIS_SPIN_LOCK SpinLock);
2645 #define NdisReleaseSpinLock(_SpinLock) \
2646 KeReleaseSpinLock(&(_SpinLock)->SpinLock, (_SpinLock)->OldIrql)
2650 * NdisDprAcquireSpinLock(
2651 * IN PNDIS_SPIN_LOCK SpinLock);
2653 #define NdisDprAcquireSpinLock(_SpinLock) \
2655 KeAcquireSpinLockAtDpcLevel(&(_SpinLock)->SpinLock); \
2656 (_SpinLock)->OldIrql = DISPATCH_LEVEL; \
2661 * NdisDprReleaseSpinLock(
2662 * IN PNDIS_SPIN_LOCK SpinLock);
2664 #define NdisDprReleaseSpinLock(_SpinLock) \
2665 KeReleaseSpinLockFromDpcLevel(&(_SpinLock)->SpinLock)
2673 * NdisRawReadPortBufferUchar(
2675 * OUT PUCHAR Buffer,
2678 #define NdisRawReadPortBufferUchar(Port, Buffer, Length) \
2679 READ_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length))
2683 * NdisRawReadPortBufferUlong(
2685 * OUT PULONG Buffer,
2688 #define NdisRawReadPortBufferUlong(Port, Buffer, Length) \
2689 READ_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length))
2693 * NdisRawReadPortBufferUshort(
2695 * OUT PUSHORT Buffer,
2698 #define NdisRawReadPortBufferUshort(Port, Buffer, Length) \
2699 READ_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length))
2704 * NdisRawReadPortUchar(
2708 #define NdisRawReadPortUchar(Port, Data) \
2709 *(Data) = READ_PORT_UCHAR((PUCHAR)(Port))
2713 * NdisRawReadPortUlong(
2717 #define NdisRawReadPortUlong(Port, Data) \
2718 *(Data) = READ_PORT_ULONG((PULONG)(Port))
2722 * NdisRawReadPortUshort(
2724 * OUT PUSHORT Data);
2726 #define NdisRawReadPortUshort(Port, Data) \
2727 *(Data) = READ_PORT_USHORT((PUSHORT)(Port))
2732 * NdisRawWritePortBufferUchar(
2737 #define NdisRawWritePortBufferUchar(Port, Buffer, Length) \
2738 WRITE_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length))
2742 * NdisRawWritePortBufferUlong(
2747 #define NdisRawWritePortBufferUlong(Port, Buffer, Length) \
2748 WRITE_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length))
2752 * NdisRawWritePortBufferUshort(
2754 * IN PUSHORT Buffer,
2757 #define NdisRawWritePortBufferUshort(Port, Buffer, Length) \
2758 WRITE_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length))
2763 * NdisRawWritePortUchar(
2767 #define NdisRawWritePortUchar(Port, Data) \
2768 WRITE_PORT_UCHAR((PUCHAR)(Port), (UCHAR)(Data))
2772 * NdisRawWritePortUlong(
2776 #define NdisRawWritePortUlong(Port, Data) \
2777 WRITE_PORT_ULONG((PULONG)(Port), (ULONG)(Data))
2781 * NdisRawWritePortUshort(
2785 #define NdisRawWritePortUshort(Port, Data) \
2786 WRITE_PORT_USHORT((PUSHORT)(Port), (USHORT)(Data))
2791 * NdisReadRegisterUchar(
2792 * IN PUCHAR Register,
2795 #define NdisReadRegisterUchar(Register, Data) \
2796 *(Data) = *(Register)
2800 * NdisReadRegisterUlong(
2801 * IN PULONG Register,
2804 #define NdisReadRegisterUlong(Register, Data) \
2805 *(Data) = *(Register)
2809 * NdisReadRegisterUshort(
2810 * IN PUSHORT Register,
2811 * OUT PUSHORT Data);
2813 #define NdisReadRegisterUshort(Register, Data) \
2814 *(Data) = *(Register)
2818 * NdisReadRegisterUchar(
2819 * IN PUCHAR Register,
2822 #define NdisWriteRegisterUchar(Register, Data) \
2823 WRITE_REGISTER_UCHAR((Register), (Data))
2827 * NdisReadRegisterUlong(
2828 * IN PULONG Register,
2831 #define NdisWriteRegisterUlong(Register, Data) \
2832 WRITE_REGISTER_ULONG((Register), (Data))
2836 * NdisReadRegisterUshort(
2837 * IN PUSHORT Register,
2840 #define NdisWriteRegisterUshort(Register, Data) \
2841 WRITE_REGISTER_USHORT((Register), (Data))
2848 * NdisInitializeListHead(
2849 * IN PLIST_ENTRY ListHead);
2851 #define NdisInitializeListHead(_ListHead) \
2852 InitializeListHead(_ListHead)
2856 * NdisInterlockedInsertHeadList(
2857 * IN PLIST_ENTRY ListHead,
2858 * IN PLIST_ENTRY ListEntry,
2859 * IN PNDIS_SPIN_LOCK SpinLock);
2861 #define NdisInterlockedInsertHeadList(_ListHead, _ListEntry, _SpinLock) \
2862 ExInterlockedInsertHeadList(_ListHead, _ListEntry, &(_SpinLock)->SpinLock)
2866 * NdisInterlockedInsertTailList(
2867 * IN PLIST_ENTRY ListHead,
2868 * IN PLIST_ENTRY ListEntry,
2869 * IN PNDIS_SPIN_LOCK SpinLock);
2871 #define NdisInterlockedInsertTailList(_ListHead, _ListEntry, _SpinLock) \
2872 ExInterlockedInsertTailList(_ListHead, _ListEntry, &(_SpinLock)->SpinLock)
2876 * NdisInterlockedRemoveHeadList(
2877 * IN PLIST_ENTRY ListHead,
2878 * IN PNDIS_SPIN_LOCK SpinLock);
2880 #define NdisInterlockedRemoveHeadList(_ListHead, _SpinLock) \
2881 ExInterlockedRemoveHeadList(_ListHead, &(_SpinLock)->SpinLock)
2885 * NdisInitializeSListHead(
2886 * IN PSLIST_HEADER SListHead);
2888 #define NdisInitializeSListHead(SListHead) ExInitializeSListHead(SListHead)
2891 * USHORT NdisQueryDepthSList(
2892 * IN PSLIST_HEADER SListHead);
2894 #define NdisQueryDepthSList(SListHead) ExQueryDepthSList(SListHead)
2898 /* Interlocked routines */
2902 * NdisInterlockedDecrement(
2905 #define NdisInterlockedDecrement(Addend) InterlockedDecrement(Addend)
2909 * NdisInterlockedIncrement(
2912 #define NdisInterlockedIncrement(Addend) InterlockedIncrement(Addend)
2916 * NdisInterlockedAddUlong(
2918 * IN ULONG Increment,
2919 * IN PNDIS_SPIN_LOCK SpinLock);
2921 #define NdisInterlockedAddUlong(_Addend, _Increment, _SpinLock) \
2922 ExInterlockedAddUlong(_Addend, _Increment, &(_SpinLock)->SpinLock)
2926 /* Miscellaneous routines */
2931 NdisCloseConfiguration(
2932 /*IN*/ NDIS_HANDLE ConfigurationHandle
);
2937 NdisReadConfiguration(
2938 /*OUT*/ PNDIS_STATUS Status
,
2939 /*OUT*/ PNDIS_CONFIGURATION_PARAMETER
*ParameterValue
,
2940 /*IN*/ NDIS_HANDLE ConfigurationHandle
,
2941 /*IN*/ PNDIS_STRING Keyword
,
2942 /*IN*/ NDIS_PARAMETER_TYPE ParameterType
);
2947 NdisWriteConfiguration(
2948 /*OUT*/ PNDIS_STATUS Status
,
2949 /*IN*/ NDIS_HANDLE WrapperConfigurationContext
,
2950 /*IN*/ PNDIS_STRING Keyword
,
2951 /*IN*/ PNDIS_CONFIGURATION_PARAMETER
*ParameterValue
);
2956 NdisWriteErrorLogEntry(
2957 /*IN*/ NDIS_HANDLE NdisAdapterHandle
,
2958 /*IN*/ NDIS_ERROR_CODE ErrorCode
,
2959 /*IN*/ ULONG NumberOfErrorValues
,
2964 * NdisStallExecution(
2965 * IN UINT MicrosecondsToStall)
2967 #define NdisStallExecution KeStallExecutionProcessor
2971 * NdisGetCurrentSystemTime(
2972 * IN PLARGE_INTEGER pSystemTime);
2974 #define NdisGetCurrentSystemTime KeQuerySystemTime
2979 NdisGetCurrentProcessorCpuUsage(
2980 /*OUT*/ PULONG pCpuUsage
);
2984 /* NDIS helper macros */
2988 * NDIS_INIT_FUNCTION(FunctionName)
2990 #define NDIS_INIT_FUNCTION(FunctionName) \
2991 alloc_text(init, FunctionName)
2995 * NDIS_PAGABLE_FUNCTION(FunctionName)
2997 #define NDIS_PAGEABLE_FUNCTION(FunctionName) \
2998 alloc_text(page, FunctionName)
3000 #define NDIS_PAGABLE_FUNCTION NDIS_PAGEABLE_FUNCTION
3003 /* NDIS 4.0 extensions */
3008 NdisMFreeSharedMemory(
3009 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
3010 /*IN*/ ULONG Length
,
3011 /*IN*/ BOOLEAN Cached
,
3012 /*IN*/ PVOID VirtualAddress
,
3013 /*IN*/ NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
3018 NdisMWanIndicateReceive(
3019 /*OUT*/ PNDIS_STATUS Status
,
3020 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
3021 /*IN*/ NDIS_HANDLE NdisLinkContext
,
3022 /*IN*/ PUCHAR PacketBuffer
,
3023 /*IN*/ UINT PacketSize
);
3025 #define NdisMIndicateReceivePacket(_handle, _packets, _number) \
3027 (*((PNDIS_MINIPORT_BLOCK)(_handle))->PacketIndicateHandler)(_handle, _packets, _number); \
3033 NdisMWanIndicateReceiveComplete(
3034 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
);
3039 NdisMWanSendComplete(
3040 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
3041 /*IN*/ PNDIS_WAN_PACKET Packet
,
3042 /*IN*/ NDIS_STATUS Status
);
3047 NdisPciAssignResources(
3048 /*IN*/ NDIS_HANDLE NdisMacHandle
,
3049 /*IN*/ NDIS_HANDLE NdisWrapperHandle
,
3050 /*IN*/ NDIS_HANDLE WrapperConfigurationContext
,
3051 /*IN*/ ULONG SlotNumber
,
3052 /*OUT*/ PNDIS_RESOURCE_LIST
*AssignedResources
);
3055 /* NDIS 5.0 extensions */
3060 NdisAcquireReadWriteLock(
3061 /*IN*/ PNDIS_RW_LOCK Lock
,
3062 /*IN*/ BOOLEAN fWrite
,
3063 /*IN*/ PLOCK_STATE LockState
);
3068 NdisAllocateMemoryWithTag(
3069 /*OUT*/ PVOID
*VirtualAddress
,
3076 NdisAllocatePacketPoolEx(
3077 /*OUT*/ PNDIS_STATUS Status
,
3078 /*OUT*/ PNDIS_HANDLE PoolHandle
,
3079 /*IN*/ UINT NumberOfDescriptors
,
3080 /*IN*/ UINT NumberOfOverflowDescriptors
,
3081 /*IN*/ UINT ProtocolReservedLength
);
3086 NdisCompletePnPEvent(
3087 /*IN*/ NDIS_STATUS Status
,
3088 /*IN*/ NDIS_HANDLE NdisBindingHandle
,
3089 /*IN*/ PNET_PNP_EVENT NetPnPEvent
);
3094 NdisGetCurrentProcessorCounts(
3095 /*OUT*/ PULONG pIdleCount
,
3096 /*OUT*/ PULONG pKernelAndUser
,
3097 /*OUT*/ PULONG pIndex
);
3102 NdisGetDriverHandle(
3103 /*IN*/ PNDIS_HANDLE NdisBindingHandle
,
3104 /*OUT*/ PNDIS_HANDLE NdisDriverHandle
);
3109 NdisGetReceivedPacket(
3110 /*IN*/ PNDIS_HANDLE NdisBindingHandle
,
3111 /*IN*/ PNDIS_HANDLE MacContext
);
3116 NdisGetSystemUptime(
3117 /*OUT*/ PULONG pSystemUpTime
);
3122 NdisInitializeReadWriteLock(
3123 /*IN*/ PNDIS_RW_LOCK Lock
);
3128 NdisMDeregisterDevice(
3129 /*IN*/ NDIS_HANDLE NdisDeviceHandle
);
3134 NdisMGetDeviceProperty(
3135 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
3136 /*IN OUT*/ PDEVICE_OBJECT
*PhysicalDeviceObject
/*OPTIONAL*/,
3137 /*IN OUT*/ PDEVICE_OBJECT
*FunctionalDeviceObject
/*OPTIONAL*/,
3138 /*IN OUT*/ PDEVICE_OBJECT
*NextDeviceObject
/*OPTIONAL*/,
3139 /*IN OUT*/ PCM_RESOURCE_LIST
*AllocatedResources
/*OPTIONAL*/,
3140 /*IN OUT*/ PCM_RESOURCE_LIST
*AllocatedResourcesTranslated
/*OPTIONAL*/);
3145 NdisMInitializeScatterGatherDma(
3146 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
3147 /*IN*/ BOOLEAN Dma64BitAddresses
,
3148 /*IN*/ ULONG MaximumPhysicalMapping
);
3153 NdisMPromoteMiniport(
3154 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
);
3159 NdisMQueryAdapterInstanceName(
3160 /*OUT*/ PNDIS_STRING AdapterInstanceName
,
3161 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
);
3166 NdisMRegisterDevice(
3167 /*IN*/ NDIS_HANDLE NdisWrapperHandle
,
3168 /*IN*/ PNDIS_STRING DeviceName
,
3169 /*IN*/ PNDIS_STRING SymbolicName
,
3170 /*IN*/ PDRIVER_DISPATCH MajorFunctions
[],
3171 /*OUT*/ PDEVICE_OBJECT
*pDeviceObject
,
3172 /*OUT*/ NDIS_HANDLE
*NdisDeviceHandle
);
3177 NdisMRegisterUnloadHandler(
3178 /*IN*/ NDIS_HANDLE NdisWrapperHandle
,
3179 /*IN*/ PDRIVER_UNLOAD UnloadHandler
);
3184 NdisMRemoveMiniport(
3185 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
);
3190 NdisMSetMiniportSecondary(
3191 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
3192 /*IN*/ NDIS_HANDLE PrimaryMiniportAdapterHandle
);
3197 NdisOpenConfigurationKeyByIndex(
3198 /*OUT*/ PNDIS_STATUS Status
,
3199 /*IN*/ NDIS_HANDLE ConfigurationHandle
,
3201 /*OUT*/ PNDIS_STRING KeyName
,
3202 /*OUT*/ PNDIS_HANDLE KeyHandle
);
3207 NdisOpenConfigurationKeyByName(
3208 /*OUT*/ PNDIS_STATUS Status
,
3209 /*IN*/ NDIS_HANDLE ConfigurationHandle
,
3210 /*IN*/ PNDIS_STRING SubKeyName
,
3211 /*OUT*/ PNDIS_HANDLE SubKeyHandle
);
3216 NdisPacketPoolUsage(
3217 /*IN*/ NDIS_HANDLE PoolHandle
);
3222 NdisSetPacketPoolProtocolId(
3223 /*IN*/ NDIS_HANDLE PacketPoolHandle
,
3224 /*IN*/ UINT ProtocolId
);
3229 NdisQueryAdapterInstanceName(
3230 /*OUT*/ PNDIS_STRING AdapterInstanceName
,
3231 /*IN*/ NDIS_HANDLE NdisBindingHandle
);
3236 NdisReadPcmciaAttributeMemory(
3237 /*IN*/ NDIS_HANDLE NdisAdapterHandle
,
3238 /*IN*/ ULONG Offset
,
3239 /*IN*/ PVOID Buffer
,
3240 /*IN*/ ULONG Length
);
3245 NdisReleaseReadWriteLock(
3246 /*IN*/ PNDIS_RW_LOCK Lock
,
3247 /*IN*/ PLOCK_STATE LockState
);
3252 NdisWriteEventLogEntry(
3253 /*IN*/ PVOID LogHandle
,
3254 /*IN*/ NDIS_STATUS EventCode
,
3255 /*IN*/ ULONG UniqueEventValue
,
3256 /*IN*/ USHORT NumStrings
,
3257 /*IN*/ PVOID StringsList
/*OPTIONAL*/,
3258 /*IN*/ ULONG DataSize
,
3259 /*IN*/ PVOID Data
/*OPTIONAL*/);
3264 NdisWritePcmciaAttributeMemory(
3265 /*IN*/ NDIS_HANDLE NdisAdapterHandle
,
3266 /*IN*/ ULONG Offset
,
3267 /*IN*/ PVOID Buffer
,
3268 /*IN*/ ULONG Length
);
3271 /* Connectionless services */
3277 /*IN*/ NDIS_HANDLE NdisVcHandle
,
3278 /*IN*/ NDIS_HANDLE ProtocolPartyContext
,
3279 /*IN OUT*/ PCO_CALL_PARAMETERS CallParameters
,
3280 /*OUT*/ PNDIS_HANDLE NdisPartyHandle
);
3285 NdisClCloseAddressFamily(
3286 /*IN*/ NDIS_HANDLE NdisAfHandle
);
3292 /*IN*/ NDIS_HANDLE NdisVcHandle
,
3293 /*IN*/ NDIS_HANDLE NdisPartyHandle
/*OPTIONAL*/,
3294 /*IN*/ PVOID Buffer
/*OPTIONAL*/,
3300 NdisClDeregisterSap(
3301 /*IN*/ NDIS_HANDLE NdisSapHandle
);
3307 /*IN*/ NDIS_HANDLE NdisPartyHandle
,
3308 /*IN*/ PVOID Buffer
/*OPTIONAL*/,
3314 NdisClIncomingCallComplete(
3315 /*IN*/ NDIS_STATUS Status
,
3316 /*IN*/ NDIS_HANDLE NdisVcHandle
,
3317 /*IN*/ PCO_CALL_PARAMETERS CallParameters
);
3323 /*IN*/ NDIS_HANDLE NdisVcHandle
,
3324 /*IN OUT*/ PCO_CALL_PARAMETERS CallParameters
,
3325 /*IN*/ NDIS_HANDLE ProtocolPartyContext
/*OPTIONAL*/,
3326 /*OUT*/ PNDIS_HANDLE NdisPartyHandle
/*OPTIONAL*/);
3331 NdisClModifyCallQoS(
3332 /*IN*/ NDIS_HANDLE NdisVcHandle
,
3333 /*IN*/ PCO_CALL_PARAMETERS CallParameters
);
3339 NdisClOpenAddressFamily(
3340 /*IN*/ NDIS_HANDLE NdisBindingHandle
,
3341 /*IN*/ PCO_ADDRESS_FAMILY AddressFamily
,
3342 /*IN*/ NDIS_HANDLE ProtocolAfContext
,
3343 /*IN*/ PNDIS_CLIENT_CHARACTERISTICS ClCharacteristics
,
3344 /*IN*/ UINT SizeOfClCharacteristics
,
3345 /*OUT*/ PNDIS_HANDLE NdisAfHandle
);
3351 /*IN*/ NDIS_HANDLE NdisAfHandle
,
3352 /*IN*/ NDIS_HANDLE ProtocolSapContext
,
3354 /*OUT*/ PNDIS_HANDLE NdisSapHandle
);
3357 /* Call Manager services */
3363 /*IN*/ NDIS_HANDLE NdisVcHandle
,
3364 /*IN OUT*/ PCO_CALL_PARAMETERS CallParameters
);
3369 NdisCmAddPartyComplete(
3370 /*IN*/ NDIS_STATUS Status
,
3371 /*IN*/ NDIS_HANDLE NdisPartyHandle
,
3372 /*IN*/ NDIS_HANDLE CallMgrPartyContext
/*OPTIONAL*/,
3373 /*IN*/ PCO_CALL_PARAMETERS CallParameters
);
3378 NdisCmCloseAddressFamilyComplete(
3379 /*IN*/ NDIS_STATUS Status
,
3380 /*IN*/ NDIS_HANDLE NdisAfHandle
);
3385 NdisCmCloseCallComplete(
3386 /*IN*/ NDIS_STATUS Status
,
3387 /*IN*/ NDIS_HANDLE NdisVcHandle
,
3388 /*IN*/ NDIS_HANDLE NdisPartyHandle
/*OPTIONAL*/);
3394 /*IN*/ NDIS_HANDLE NdisVcHandle
);
3399 NdisCmDeregisterSapComplete(
3400 /*IN*/ NDIS_STATUS Status
,
3401 /*IN*/ NDIS_HANDLE NdisSapHandle
);
3406 NdisCmDispatchCallConnected(
3407 /*IN*/ NDIS_HANDLE NdisVcHandle
);
3412 NdisCmDispatchIncomingCall(
3413 /*IN*/ NDIS_HANDLE NdisSapHandle
,
3414 /*IN*/ NDIS_HANDLE NdisVcHandle
,
3415 /*IN*/ PCO_CALL_PARAMETERS CallParameters
);
3420 NdisCmDispatchIncomingCallQoSChange(
3421 /*IN*/ NDIS_HANDLE NdisVcHandle
,
3422 /*IN*/ PCO_CALL_PARAMETERS CallParameters
);
3427 NdisCmDispatchIncomingCloseCall(
3428 /*IN*/ NDIS_STATUS CloseStatus
,
3429 /*IN*/ NDIS_HANDLE NdisVcHandle
,
3430 /*IN*/ PVOID Buffer
/*OPTIONAL*/,
3436 NdisCmDispatchIncomingDropParty(
3437 /*IN*/ NDIS_STATUS DropStatus
,
3438 /*IN*/ NDIS_HANDLE NdisPartyHandle
,
3439 /*IN*/ PVOID Buffer
/*OPTIONAL*/,
3445 NdisCmDropPartyComplete(
3446 /*IN*/ NDIS_STATUS Status
,
3447 /*IN*/ NDIS_HANDLE NdisPartyHandle
);
3452 NdisCmMakeCallComplete(
3453 /*IN*/ NDIS_STATUS Status
,
3454 /*IN*/ NDIS_HANDLE NdisVcHandle
,
3455 /*IN*/ NDIS_HANDLE NdisPartyHandle
/*OPTIONAL*/,
3456 /*IN*/ NDIS_HANDLE CallMgrPartyContext
/*OPTIONAL*/,
3457 /*IN*/ PCO_CALL_PARAMETERS CallParameters
);
3462 NdisCmModifyCallQoSComplete(
3463 /*IN*/ NDIS_STATUS Status
,
3464 /*IN*/ NDIS_HANDLE NdisVcHandle
,
3465 /*IN*/ PCO_CALL_PARAMETERS CallParameters
);
3470 NdisCmOpenAddressFamilyComplete(
3471 /*IN*/ NDIS_STATUS Status
,
3472 /*IN*/ NDIS_HANDLE NdisAfHandle
,
3473 /*IN*/ NDIS_HANDLE CallMgrAfContext
);
3478 NdisCmRegisterAddressFamily(
3479 /*IN*/ NDIS_HANDLE NdisBindingHandle
,
3480 /*IN*/ PCO_ADDRESS_FAMILY AddressFamily
,
3481 /*IN*/ PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics
,
3482 /*IN*/ UINT SizeOfCmCharacteristics
);
3487 NdisCmRegisterSapComplete(
3488 /*IN*/ NDIS_STATUS Status
,
3489 /*IN*/ NDIS_HANDLE NdisSapHandle
,
3490 /*IN*/ NDIS_HANDLE CallMgrSapContext
);
3497 /*IN*/ NDIS_HANDLE NdisVcHandle
,
3498 /*IN*/ PCO_CALL_PARAMETERS CallParameters
);
3504 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
3505 /*IN*/ NDIS_HANDLE NdisAfHandle
,
3506 /*IN*/ NDIS_HANDLE MiniportVcContext
,
3507 /*OUT*/ PNDIS_HANDLE NdisVcHandle
);
3512 NdisMCmDeactivateVc(
3513 /*IN*/ NDIS_HANDLE NdisVcHandle
);
3519 /*IN*/ NDIS_HANDLE NdisVcHandle
);
3524 NdisMCmRegisterAddressFamily(
3525 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
3526 /*IN*/ PCO_ADDRESS_FAMILY AddressFamily
,
3527 /*IN*/ PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics
,
3528 /*IN*/ UINT SizeOfCmCharacteristics
);
3534 /*IN*/ NDIS_HANDLE NdisAfHandle
,
3535 /*IN*/ NDIS_HANDLE NdisVcHandle
/*OPTIONAL*/,
3536 /*IN*/ NDIS_HANDLE NdisPartyHandle
/*OPTIONAL*/,
3537 /*IN OUT*/ PNDIS_REQUEST NdisRequest
);
3540 /* Connection-oriented services */
3546 /*IN*/ NDIS_HANDLE NdisBindingHandle
,
3547 /*IN*/ NDIS_HANDLE NdisAfHandle
/*OPTIONAL*/,
3548 /*IN*/ NDIS_HANDLE ProtocolVcContext
,
3549 /*IN OUT*/ PNDIS_HANDLE NdisVcHandle
);
3555 /*IN*/ NDIS_HANDLE NdisVcHandle
);
3561 /*IN*/ NDIS_HANDLE NdisBindingHandle
,
3562 /*IN*/ NDIS_HANDLE NdisAfHandle
/*OPTIONAL*/,
3563 /*IN*/ NDIS_HANDLE NdisVcHandle
/*OPTIONAL*/,
3564 /*IN*/ NDIS_HANDLE NdisPartyHandle
/*OPTIONAL*/,
3565 /*IN OUT*/ PNDIS_REQUEST NdisRequest
);
3570 NdisCoRequestComplete(
3571 /*IN*/ NDIS_STATUS Status
,
3572 /*IN*/ NDIS_HANDLE NdisAfHandle
,
3573 /*IN*/ NDIS_HANDLE NdisVcHandle
/*OPTIONAL*/,
3574 /*IN*/ NDIS_HANDLE NdisPartyHandle
/*OPTIONAL*/,
3575 /*IN*/ PNDIS_REQUEST NdisRequest
);
3581 /*IN*/ NDIS_HANDLE NdisVcHandle
,
3582 /*IN*/ PPNDIS_PACKET PacketArray
,
3583 /*IN*/ UINT NumberOfPackets
);
3588 NdisMCoActivateVcComplete(
3589 /*IN*/ NDIS_STATUS Status
,
3590 /*IN*/ NDIS_HANDLE NdisVcHandle
,
3591 /*IN*/ PCO_CALL_PARAMETERS CallParameters
);
3596 NdisMCoDeactivateVcComplete(
3597 /*IN*/ NDIS_STATUS Status
,
3598 /*IN*/ NDIS_HANDLE NdisVcHandle
);
3603 NdisMCoIndicateReceivePacket(
3604 /*IN*/ NDIS_HANDLE NdisVcHandle
,
3605 /*IN*/ PPNDIS_PACKET PacketArray
,
3606 /*IN*/ UINT NumberOfPackets
);
3611 NdisMCoIndicateStatus(
3612 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
3613 /*IN*/ NDIS_HANDLE NdisVcHandle
/*OPTIONAL*/,
3614 /*IN*/ NDIS_STATUS GeneralStatus
,
3615 /*IN*/ PVOID StatusBuffer
/*OPTIONAL*/,
3616 /*IN*/ ULONG StatusBufferSize
);
3621 NdisMCoReceiveComplete(
3622 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
);
3627 NdisMCoRequestComplete(
3628 /*IN*/ NDIS_STATUS Status
,
3629 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
3630 /*IN*/ PNDIS_REQUEST Request
);
3635 NdisMCoSendComplete(
3636 /*IN*/ NDIS_STATUS Status
,
3637 /*IN*/ NDIS_HANDLE NdisVcHandle
,
3638 /*IN*/ PNDIS_PACKET Packet
);
3641 /* NDIS 5.0 extensions for intermediate drivers */
3646 NdisIMAssociateMiniport(
3647 /*IN*/ NDIS_HANDLE DriverHandle
,
3648 /*IN*/ NDIS_HANDLE ProtocolHandle
);
3653 NdisIMCancelInitializeDeviceInstance(
3654 /*IN*/ NDIS_HANDLE DriverHandle
,
3655 /*IN*/ PNDIS_STRING DeviceInstance
);
3660 NdisIMCopySendCompletePerPacketInfo(
3661 /*IN*/ PNDIS_PACKET DstPacket
,
3662 /*IN*/ PNDIS_PACKET SrcPacket
);
3667 NdisIMCopySendPerPacketInfo(
3668 /*IN*/ PNDIS_PACKET DstPacket
,
3669 /*IN*/ PNDIS_PACKET SrcPacket
);
3674 NdisIMDeregisterLayeredMiniport(
3675 /*IN*/ NDIS_HANDLE DriverHandle
);
3680 NdisIMGetBindingContext(
3681 /*IN*/ NDIS_HANDLE NdisBindingHandle
);
3686 NdisIMGetDeviceContext(
3687 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
);
3692 NdisIMInitializeDeviceInstanceEx(
3693 /*IN*/ NDIS_HANDLE DriverHandle
,
3694 /*IN*/ PNDIS_STRING DriverInstance
,
3695 /*IN*/ NDIS_HANDLE DeviceContext
/*OPTIONAL*/);
3700 NdisInterlockedPopEntrySList(
3701 /*IN*/ PSLIST_HEADER ListHead
,
3702 /*IN*/ PKSPIN_LOCK Lock
);
3707 NdisInterlockedPushEntrySList(
3708 /*IN*/ PSLIST_HEADER ListHead
,
3709 /*IN*/ PSINGLE_LIST_ENTRY ListEntry
,
3710 /*IN*/ PKSPIN_LOCK Lock
);
3715 NdisQueryBufferSafe(
3716 /*IN*/ PNDIS_BUFFER Buffer
,
3717 /*OUT*/ PVOID
*VirtualAddress
/*OPTIONAL*/,
3718 /*OUT*/ PUINT Length
,
3719 /*IN*/ UINT Priority
);
3722 /* Prototypes for NDIS_MINIPORT_CHARACTERISTICS */
3724 typedef BOOLEAN DDKAPI
3725 (*W_CHECK_FOR_HANG_HANDLER
)(
3726 /*IN*/ NDIS_HANDLE MiniportAdapterContext
);
3729 (*W_DISABLE_INTERRUPT_HANDLER
)(
3730 /*IN*/ NDIS_HANDLE MiniportAdapterContext
);
3733 (*W_ENABLE_INTERRUPT_HANDLER
)(
3734 /*IN*/ NDIS_HANDLE MiniportAdapterContext
);
3738 /*IN*/ NDIS_HANDLE MiniportAdapterContext
);
3741 (*W_HANDLE_INTERRUPT_HANDLER
)(
3742 /*IN*/ NDIS_HANDLE MiniportAdapterContext
);
3744 typedef NDIS_STATUS DDKAPI
3745 (*W_INITIALIZE_HANDLER
)(
3746 /*OUT*/ PNDIS_STATUS OpenErrorStatus
,
3747 /*OUT*/ PUINT SelectedMediumIndex
,
3748 /*IN*/ PNDIS_MEDIUM MediumArray
,
3749 /*IN*/ UINT MediumArraySize
,
3750 /*IN*/ NDIS_HANDLE MiniportAdapterContext
,
3751 /*IN*/ NDIS_HANDLE WrapperConfigurationContext
);
3755 /*OUT*/ PBOOLEAN InterruptRecognized
,
3756 /*OUT*/ PBOOLEAN QueueMiniportHandleInterrupt
,
3757 /*IN*/ NDIS_HANDLE MiniportAdapterContext
);
3759 typedef NDIS_STATUS DDKAPI
3760 (*W_QUERY_INFORMATION_HANDLER
)(
3761 /*IN*/ NDIS_HANDLE MiniportAdapterContext
,
3762 /*IN*/ NDIS_OID Oid
,
3763 /*IN*/ PVOID InformationBuffer
,
3764 /*IN*/ ULONG InformationBufferLength
,
3765 /*OUT*/ PULONG BytesWritten
,
3766 /*OUT*/ PULONG BytesNeeded
);
3768 typedef NDIS_STATUS DDKAPI
3769 (*W_RECONFIGURE_HANDLER
)(
3770 /*OUT*/ PNDIS_STATUS OpenErrorStatus
,
3771 /*IN*/ NDIS_HANDLE MiniportAdapterContext
,
3772 /*IN*/ NDIS_HANDLE WrapperConfigurationContext
);
3774 typedef NDIS_STATUS DDKAPI
3776 /*OUT*/ PBOOLEAN AddressingReset
,
3777 /*IN*/ NDIS_HANDLE MiniportAdapterContext
);
3779 typedef NDIS_STATUS DDKAPI
3781 /*IN*/ NDIS_HANDLE MiniportAdapterContext
,
3782 /*IN*/ PNDIS_PACKET Packet
,
3785 typedef NDIS_STATUS DDKAPI
3787 /*IN*/ NDIS_HANDLE MiniportAdapterContext
,
3788 /*IN*/ NDIS_HANDLE NdisLinkHandle
,
3789 /*IN*/ PNDIS_WAN_PACKET Packet
);
3791 typedef NDIS_STATUS DDKAPI
3792 (*W_SET_INFORMATION_HANDLER
)(
3793 /*IN*/ NDIS_HANDLE MiniportAdapterContext
,
3794 /*IN*/ NDIS_OID Oid
,
3795 /*IN*/ PVOID InformationBuffer
,
3796 /*IN*/ ULONG InformationBufferLength
,
3797 /*OUT*/ PULONG BytesRead
,
3798 /*OUT*/ PULONG BytesNeeded
);
3800 typedef NDIS_STATUS DDKAPI
3801 (*W_TRANSFER_DATA_HANDLER
)(
3802 /*OUT*/ PNDIS_PACKET Packet
,
3803 /*OUT*/ PUINT BytesTransferred
,
3804 /*IN*/ NDIS_HANDLE MiniportAdapterContext
,
3805 /*IN*/ NDIS_HANDLE MiniportReceiveContext
,
3806 /*IN*/ UINT ByteOffset
,
3807 /*IN*/ UINT BytesToTransfer
);
3809 typedef NDIS_STATUS DDKAPI
3810 (*WM_TRANSFER_DATA_HANDLER
)(
3814 /* NDIS structures available only to miniport drivers */
3816 #define NDIS30_MINIPORT_CHARACTERISTICS_S \
3817 UCHAR MajorNdisVersion; \
3818 UCHAR MinorNdisVersion; \
3820 W_CHECK_FOR_HANG_HANDLER CheckForHangHandler; \
3821 W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler; \
3822 W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler; \
3823 W_HALT_HANDLER HaltHandler; \
3824 W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler; \
3825 W_INITIALIZE_HANDLER InitializeHandler; \
3826 W_ISR_HANDLER ISRHandler; \
3827 W_QUERY_INFORMATION_HANDLER QueryInformationHandler; \
3828 W_RECONFIGURE_HANDLER ReconfigureHandler; \
3829 W_RESET_HANDLER ResetHandler; \
3830 _ANONYMOUS_UNION union { \
3831 W_SEND_HANDLER SendHandler; \
3832 WM_SEND_HANDLER WanSendHandler; \
3833 } _UNION_NAME(u1); \
3834 W_SET_INFORMATION_HANDLER SetInformationHandler; \
3835 _ANONYMOUS_UNION union { \
3836 W_TRANSFER_DATA_HANDLER TransferDataHandler; \
3837 WM_TRANSFER_DATA_HANDLER WanTransferDataHandler; \
3840 typedef struct _NDIS30_MINIPORT_CHARACTERISTICS
{
3841 NDIS30_MINIPORT_CHARACTERISTICS_S
3842 } NDIS30_MINIPORT_CHARACTERISTICS
, *PSNDIS30_MINIPORT_CHARACTERISTICS
;
3845 /* Extensions for NDIS 4.0 miniports */
3848 (*W_SEND_PACKETS_HANDLER
)(
3849 /*IN*/ NDIS_HANDLE MiniportAdapterContext
,
3850 /*IN*/ PPNDIS_PACKET PacketArray
,
3851 /*IN*/ UINT NumberOfPackets
);
3854 (*W_RETURN_PACKET_HANDLER
)(
3855 /*IN*/ NDIS_HANDLE MiniportAdapterContext
,
3856 /*IN*/ PNDIS_PACKET Packet
);
3859 (*W_ALLOCATE_COMPLETE_HANDLER
)(
3860 /*IN*/ NDIS_HANDLE MiniportAdapterContext
,
3861 /*IN*/ PVOID VirtualAddress
,
3862 /*IN*/ PNDIS_PHYSICAL_ADDRESS PhysicalAddress
,
3863 /*IN*/ ULONG Length
,
3864 /*IN*/ PVOID Context
);
3868 #define NDIS40_MINIPORT_CHARACTERISTICS_S \
3869 NDIS30_MINIPORT_CHARACTERISTICS Ndis30Chars; \
3870 W_RETURN_PACKET_HANDLER ReturnPacketHandler; \
3871 W_SEND_PACKETS_HANDLER SendPacketsHandler; \
3872 W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler;
3874 #else /* !__cplusplus */
3876 #define NDIS40_MINIPORT_CHARACTERISTICS_S \
3877 NDIS30_MINIPORT_CHARACTERISTICS_S \
3878 W_RETURN_PACKET_HANDLER ReturnPacketHandler; \
3879 W_SEND_PACKETS_HANDLER SendPacketsHandler; \
3880 W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler;
3882 #endif /* !__cplusplus */
3884 typedef struct _NDIS40_MINIPORT_CHARACTERISTICS
{
3885 NDIS40_MINIPORT_CHARACTERISTICS_S
3886 } NDIS40_MINIPORT_CHARACTERISTICS
, *PNDIS40_MINIPORT_CHARACTERISTICS
;
3889 /* Extensions for NDIS 5.0 miniports */
3891 typedef NDIS_STATUS DDKAPI
3892 (*W_CO_CREATE_VC_HANDLER
)(
3893 /*IN*/ NDIS_HANDLE MiniportAdapterContext
,
3894 /*IN*/ NDIS_HANDLE NdisVcHandle
,
3895 /*OUT*/ PNDIS_HANDLE MiniportVcContext
);
3897 typedef NDIS_STATUS DDKAPI
3898 (*W_CO_DELETE_VC_HANDLER
)(
3899 /*IN*/ NDIS_HANDLE MiniportVcContext
);
3901 typedef NDIS_STATUS DDKAPI
3902 (*W_CO_ACTIVATE_VC_HANDLER
)(
3903 /*IN*/ NDIS_HANDLE MiniportVcContext
,
3904 /*IN OUT*/ PCO_CALL_PARAMETERS CallParameters
);
3906 typedef NDIS_STATUS DDKAPI
3907 (*W_CO_DEACTIVATE_VC_HANDLER
)(
3908 /*IN*/ NDIS_HANDLE MiniportVcContext
);
3911 (*W_CO_SEND_PACKETS_HANDLER
)(
3912 /*IN*/ NDIS_HANDLE MiniportVcContext
,
3913 /*IN*/ PPNDIS_PACKET PacketArray
,
3914 /*IN*/ UINT NumberOfPackets
);
3916 typedef NDIS_STATUS DDKAPI
3917 (*W_CO_REQUEST_HANDLER
)(
3918 /*IN*/ NDIS_HANDLE MiniportAdapterContext
,
3919 /*IN*/ NDIS_HANDLE MiniportVcContext
/*OPTIONAL*/,
3920 /*IN OUT*/ PNDIS_REQUEST NdisRequest
);
3924 #define NDIS50_MINIPORT_CHARACTERISTICS_S \
3925 NDIS40_MINIPORT_CHARACTERISTICS Ndis40Chars; \
3926 W_CO_CREATE_VC_HANDLER CoCreateVcHandler; \
3927 W_CO_DELETE_VC_HANDLER CoDeleteVcHandler; \
3928 W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler; \
3929 W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler; \
3930 W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler; \
3931 W_CO_REQUEST_HANDLER CoRequestHandler;
3933 #else /* !__cplusplus */
3935 #define NDIS50_MINIPORT_CHARACTERISTICS_S \
3936 NDIS40_MINIPORT_CHARACTERISTICS_S \
3937 W_CO_CREATE_VC_HANDLER CoCreateVcHandler; \
3938 W_CO_DELETE_VC_HANDLER CoDeleteVcHandler; \
3939 W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler; \
3940 W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler; \
3941 W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler; \
3942 W_CO_REQUEST_HANDLER CoRequestHandler;
3944 #endif /* !__cplusplus */
3946 typedef struct _NDIS50_MINIPORT_CHARACTERISTICS
{
3947 NDIS50_MINIPORT_CHARACTERISTICS_S
3948 } NDIS50_MINIPORT_CHARACTERISTICS
, *PSNDIS50_MINIPORT_CHARACTERISTICS
;
3951 /* Extensions for NDIS 5.1 miniports */
3954 (*W_CANCEL_SEND_PACKETS_HANDLER
)(
3955 /*IN*/ NDIS_HANDLE MiniportAdapterContext
,
3956 /*IN*/ PVOID CancelId
);
3960 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
3961 NDIS50_MINIPORT_CHARACTERISTICS_S
3962 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
3963 #elif defined(NDIS50)
3964 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
3965 NDIS50_MINIPORT_CHARACTERISTICS_S
3966 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
3967 #elif defined(NDIS40)
3968 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
3969 NDIS40_MINIPORT_CHARACTERISTICS_S
3970 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
3971 #elif defined(NDIS30)
3972 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
3973 NDIS30_MINIPORT_CHARACTERISTICS_S
3974 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
3978 typedef NDIS_STATUS DDKAPI
3980 /*IN*/ NDIS_HANDLE MacBindingHandle
,
3981 /*IN*/ PNDIS_PACKET Packet
);
3983 typedef NDIS_STATUS DDKAPI
3984 (*TRANSFER_DATA_HANDLER
)(
3985 /*IN*/ NDIS_HANDLE MacBindingHandle
,
3986 /*IN*/ NDIS_HANDLE MacReceiveContext
,
3987 /*IN*/ UINT ByteOffset
,
3988 /*IN*/ UINT BytesToTransfer
,
3989 /*OUT*/ PNDIS_PACKET Packet
,
3990 /*OUT*/ PUINT BytesTransferred
);
3992 typedef NDIS_STATUS DDKAPI
3994 /*IN*/ NDIS_HANDLE MacBindingHandle
);
3996 typedef NDIS_STATUS DDKAPI
3998 /*IN*/ NDIS_HANDLE MacBindingHandle
,
3999 /*IN*/ PNDIS_REQUEST NdisRequest
);
4003 /* Structures available only to full MAC drivers */
4005 typedef BOOLEAN DDKAPI
4006 (*PNDIS_INTERRUPT_SERVICE
)(
4007 /*IN*/ PVOID InterruptContext
);
4010 (*PNDIS_DEFERRED_PROCESSING
)(
4011 /*IN*/ PVOID SystemSpecific1
,
4012 /*IN*/ PVOID InterruptContext
,
4013 /*IN*/ PVOID SystemSpecific2
,
4014 /*IN*/ PVOID SystemSpecific3
);
4018 typedef struct _NDIS_MINIPORT_BLOCK NDIS_MINIPORT_BLOCK
, *PNDIS_MINIPORT_BLOCK
;
4019 typedef struct _NDIS_PROTOCOL_BLOCK NDIS_PROTOCOL_BLOCK
, *PNDIS_PROTOCOL_BLOCK
;
4020 typedef struct _NDIS_OPEN_BLOCK NDIS_OPEN_BLOCK
, *PNDIS_OPEN_BLOCK
;
4021 typedef struct _NDIS_M_DRIVER_BLOCK NDIS_M_DRIVER_BLOCK
, *PNDIS_M_DRIVER_BLOCK
;
4022 typedef struct _NDIS_AF_LIST NDIS_AF_LIST
, *PNDIS_AF_LIST
;
4025 typedef struct _NDIS_MINIPORT_INTERRUPT
{
4026 PKINTERRUPT InterruptObject
;
4027 KSPIN_LOCK DpcCountLock
;
4028 PVOID MiniportIdField
;
4029 W_ISR_HANDLER MiniportIsr
;
4030 W_HANDLE_INTERRUPT_HANDLER MiniportDpc
;
4032 PNDIS_MINIPORT_BLOCK Miniport
;
4035 KEVENT DpcsCompletedEvent
;
4036 BOOLEAN SharedInterrupt
;
4037 BOOLEAN IsrRequested
;
4038 } NDIS_MINIPORT_INTERRUPT
, *PNDIS_MINIPORT_INTERRUPT
;
4040 typedef struct _NDIS_MINIPORT_TIMER
{
4043 PNDIS_TIMER_FUNCTION MiniportTimerFunction
;
4044 PVOID MiniportTimerContext
;
4045 PNDIS_MINIPORT_BLOCK Miniport
;
4046 struct _NDIS_MINIPORT_TIMER
*NextDeferredTimer
;
4047 } NDIS_MINIPORT_TIMER
, *PNDIS_MINIPORT_TIMER
;
4049 typedef struct _NDIS_INTERRUPT
{
4050 PKINTERRUPT InterruptObject
;
4051 KSPIN_LOCK DpcCountLock
;
4052 PNDIS_INTERRUPT_SERVICE MacIsr
;
4053 PNDIS_DEFERRED_PROCESSING MacDpc
;
4055 PVOID InterruptContext
;
4058 KEVENT DpcsCompletedEvent
;
4059 } NDIS_INTERRUPT
, *PNDIS_INTERRUPT
;
4062 typedef struct _MAP_REGISTER_ENTRY
{
4064 BOOLEAN WriteToDevice
;
4065 } MAP_REGISTER_ENTRY
, *PMAP_REGISTER_ENTRY
;
4068 typedef enum _NDIS_WORK_ITEM_TYPE
{
4069 NdisWorkItemRequest
,
4071 NdisWorkItemReturnPackets
,
4072 NdisWorkItemResetRequested
,
4073 NdisWorkItemResetInProgress
,
4075 NdisWorkItemSendLoopback
,
4076 NdisWorkItemMiniportCallback
,
4078 } NDIS_WORK_ITEM_TYPE
, *PNDIS_WORK_ITEM_TYPE
;
4080 #define NUMBER_OF_WORK_ITEM_TYPES NdisMaxWorkItems
4081 #define NUMBER_OF_SINGLE_WORK_ITEMS 6
4083 typedef struct _NDIS_MINIPORT_WORK_ITEM
{
4084 SINGLE_LIST_ENTRY Link
;
4085 NDIS_WORK_ITEM_TYPE WorkItemType
;
4086 PVOID WorkItemContext
;
4087 } NDIS_MINIPORT_WORK_ITEM
, *PNDIS_MINIPORT_WORK_ITEM
;
4090 typedef struct _NDIS_BIND_PATHS
{
4092 NDIS_STRING Paths
[1];
4093 } NDIS_BIND_PATHS
, *PNDIS_BIND_PATHS
;
4095 #define DECLARE_UNKNOWN_STRUCT(BaseName) \
4096 typedef struct _##BaseName BaseName, *P##BaseName;
4098 #define DECLARE_UNKNOWN_PROTOTYPE(Name) \
4099 typedef VOID (*(Name))(VOID);
4101 #define ETH_LENGTH_OF_ADDRESS 6
4103 DECLARE_UNKNOWN_STRUCT(ETH_BINDING_INFO
)
4105 DECLARE_UNKNOWN_PROTOTYPE(ETH_ADDRESS_CHANGE
)
4106 DECLARE_UNKNOWN_PROTOTYPE(ETH_FILTER_CHANGE
)
4107 DECLARE_UNKNOWN_PROTOTYPE(ETH_DEFERRED_CLOSE
)
4109 typedef struct _ETH_FILTER
{
4110 PNDIS_SPIN_LOCK Lock
;
4111 CHAR (*MCastAddressBuf
)[ETH_LENGTH_OF_ADDRESS
];
4112 struct _NDIS_MINIPORT_BLOCK
*Miniport
;
4113 UINT CombinedPacketFilter
;
4114 PETH_BINDING_INFO OpenList
;
4115 ETH_ADDRESS_CHANGE AddressChangeAction
;
4116 ETH_FILTER_CHANGE FilterChangeAction
;
4117 ETH_DEFERRED_CLOSE CloseAction
;
4118 UINT MaxMulticastAddresses
;
4120 UCHAR AdapterAddress
[ETH_LENGTH_OF_ADDRESS
];
4121 UINT OldCombinedPacketFilter
;
4122 CHAR (*OldMCastAddressBuf
)[ETH_LENGTH_OF_ADDRESS
];
4123 UINT OldNumAddresses
;
4124 PETH_BINDING_INFO DirectedList
;
4125 PETH_BINDING_INFO BMList
;
4126 PETH_BINDING_INFO MCastSet
;
4131 } ETH_FILTER
, *PETH_FILTER
;
4134 (*ETH_RCV_COMPLETE_HANDLER
)(
4135 /*IN*/ PETH_FILTER Filter
);
4138 (*ETH_RCV_INDICATE_HANDLER
)(
4139 /*IN*/ PETH_FILTER Filter
,
4140 /*IN*/ NDIS_HANDLE MacReceiveContext
,
4141 /*IN*/ PCHAR Address
,
4142 /*IN*/ PVOID HeaderBuffer
,
4143 /*IN*/ UINT HeaderBufferSize
,
4144 /*IN*/ PVOID LookaheadBuffer
,
4145 /*IN*/ UINT LookaheadBufferSize
,
4146 /*IN*/ UINT PacketSize
);
4149 (*FDDI_RCV_COMPLETE_HANDLER
)(
4150 /*IN*/ PFDDI_FILTER Filter
);
4153 (*FDDI_RCV_INDICATE_HANDLER
)(
4154 /*IN*/ PFDDI_FILTER Filter
,
4155 /*IN*/ NDIS_HANDLE MacReceiveContext
,
4156 /*IN*/ PCHAR Address
,
4157 /*IN*/ UINT AddressLength
,
4158 /*IN*/ PVOID HeaderBuffer
,
4159 /*IN*/ UINT HeaderBufferSize
,
4160 /*IN*/ PVOID LookaheadBuffer
,
4161 /*IN*/ UINT LookaheadBufferSize
,
4162 /*IN*/ UINT PacketSize
);
4165 (*FILTER_PACKET_INDICATION_HANDLER
)(
4166 /*IN*/ NDIS_HANDLE Miniport
,
4167 /*IN*/ PPNDIS_PACKET PacketArray
,
4168 /*IN*/ UINT NumberOfPackets
);
4171 (*TR_RCV_COMPLETE_HANDLER
)(
4172 /*IN*/ PTR_FILTER Filter
);
4175 (*TR_RCV_INDICATE_HANDLER
)(
4176 /*IN*/ PTR_FILTER Filter
,
4177 /*IN*/ NDIS_HANDLE MacReceiveContext
,
4178 /*IN*/ PVOID HeaderBuffer
,
4179 /*IN*/ UINT HeaderBufferSize
,
4180 /*IN*/ PVOID LookaheadBuffer
,
4181 /*IN*/ UINT LookaheadBufferSize
,
4182 /*IN*/ UINT PacketSize
);
4185 (*WAN_RCV_COMPLETE_HANDLER
)(
4186 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
4187 /*IN*/ NDIS_HANDLE NdisLinkContext
);
4191 /*OUT*/ PNDIS_STATUS Status
,
4192 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
4193 /*IN*/ NDIS_HANDLE NdisLinkContext
,
4194 /*IN*/ PUCHAR Packet
,
4195 /*IN*/ ULONG PacketSize
);
4197 typedef VOID DDKFASTAPI
4198 (*NDIS_M_DEQUEUE_WORK_ITEM
)(
4199 /*IN*/ PNDIS_MINIPORT_BLOCK Miniport
,
4200 /*IN*/ NDIS_WORK_ITEM_TYPE WorkItemType
,
4201 /*OUT*/ PVOID
*WorkItemContext
);
4203 typedef NDIS_STATUS DDKFASTAPI
4204 (*NDIS_M_QUEUE_NEW_WORK_ITEM
)(
4205 /*IN*/ PNDIS_MINIPORT_BLOCK Miniport
,
4206 /*IN*/ NDIS_WORK_ITEM_TYPE WorkItemType
,
4207 /*IN*/ PVOID WorkItemContext
);
4209 typedef NDIS_STATUS DDKFASTAPI
4210 (*NDIS_M_QUEUE_WORK_ITEM
)(
4211 /*IN*/ PNDIS_MINIPORT_BLOCK Miniport
,
4212 /*IN*/ NDIS_WORK_ITEM_TYPE WorkItemType
,
4213 /*IN*/ PVOID WorkItemContext
);
4216 (*NDIS_M_REQ_COMPLETE_HANDLER
)(
4217 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
4218 /*IN*/ NDIS_STATUS Status
);
4221 (*NDIS_M_RESET_COMPLETE_HANDLER
)(
4222 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
4223 /*IN*/ NDIS_STATUS Status
,
4224 /*IN*/ BOOLEAN AddressingReset
);
4227 (*NDIS_M_SEND_COMPLETE_HANDLER
)(
4228 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
4229 /*IN*/ PNDIS_PACKET Packet
,
4230 /*IN*/ NDIS_STATUS Status
);
4233 (*NDIS_M_SEND_RESOURCES_HANDLER
)(
4234 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
);
4236 typedef BOOLEAN DDKFASTAPI
4237 (*NDIS_M_START_SENDS
)(
4238 /*IN*/ PNDIS_MINIPORT_BLOCK Miniport
);
4241 (*NDIS_M_STATUS_HANDLER
)(
4242 /*IN*/ NDIS_HANDLE MiniportHandle
,
4243 /*IN*/ NDIS_STATUS GeneralStatus
,
4244 /*IN*/ PVOID StatusBuffer
,
4245 /*IN*/ UINT StatusBufferSize
);
4248 (*NDIS_M_STS_COMPLETE_HANDLER
)(
4249 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
);
4252 (*NDIS_M_TD_COMPLETE_HANDLER
)(
4253 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
4254 /*IN*/ PNDIS_PACKET Packet
,
4255 /*IN*/ NDIS_STATUS Status
,
4256 /*IN*/ UINT BytesTransferred
);
4258 typedef VOID (DDKAPI
*NDIS_WM_SEND_COMPLETE_HANDLER
)(
4259 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
4260 /*IN*/ PVOID Packet
,
4261 /*IN*/ NDIS_STATUS Status
);
4266 #define ARC_SEND_BUFFERS 8
4267 #define ARC_HEADER_SIZE 4
4269 typedef struct _NDIS_ARC_BUF
{
4270 NDIS_HANDLE ArcnetBufferPool
;
4271 PUCHAR ArcnetLookaheadBuffer
;
4273 ARC_BUFFER_LIST ArcnetBuffers
[ARC_SEND_BUFFERS
];
4274 } NDIS_ARC_BUF
, *PNDIS_ARC_BUF
;
4278 #define NDIS_MINIPORT_WORK_QUEUE_SIZE 10
4280 typedef struct _NDIS_LOG
{
4281 PNDIS_MINIPORT_BLOCK Miniport
;
4289 } NDIS_LOG
, *PNDIS_LOG
;
4291 typedef struct _FILTERDBS
{
4292 _ANONYMOUS_UNION
union {
4294 PNULL_FILTER NullDB
;
4297 PFDDI_FILTER FddiDB
;
4302 #endif /* !ARCNET */
4303 } FILTERDBS
, *PFILTERDBS
;
4306 struct _NDIS_MINIPORT_BLOCK
{
4308 PNDIS_MINIPORT_BLOCK NextMiniport
;
4309 PNDIS_M_DRIVER_BLOCK DriverHandle
;
4310 NDIS_HANDLE MiniportAdapterContext
;
4311 UNICODE_STRING MiniportName
;
4312 PNDIS_BIND_PATHS BindPaths
;
4313 NDIS_HANDLE OpenQueue
;
4315 NDIS_HANDLE DeviceContext
;
4319 UCHAR AssignedProcessor
;
4321 PNDIS_REQUEST MediaRequest
;
4322 PNDIS_MINIPORT_INTERRUPT Interrupt
;
4325 LIST_ENTRY PacketList
;
4326 PNDIS_PACKET FirstPendingPacket
;
4327 PNDIS_PACKET ReturnPacketsQueue
;
4328 ULONG RequestBuffer
;
4329 PVOID SetMCastBuffer
;
4330 PNDIS_MINIPORT_BLOCK PrimaryMiniport
;
4331 PVOID WrapperContext
;
4332 PVOID BusDataContext
;
4333 ULONG PnPCapabilities
;
4334 PCM_RESOURCE_LIST Resources
;
4335 NDIS_TIMER WakeUpDpcTimer
;
4336 UNICODE_STRING BaseName
;
4337 UNICODE_STRING SymbolicLinkName
;
4338 ULONG CheckForHangSeconds
;
4340 USHORT CFHangCurrentTick
;
4341 NDIS_STATUS ResetStatus
;
4342 NDIS_HANDLE ResetOpen
;
4343 FILTERDBS FilterDbs
;
4344 FILTER_PACKET_INDICATION_HANDLER PacketIndicateHandler
;
4345 NDIS_M_SEND_COMPLETE_HANDLER SendCompleteHandler
;
4346 NDIS_M_SEND_RESOURCES_HANDLER SendResourcesHandler
;
4347 NDIS_M_RESET_COMPLETE_HANDLER ResetCompleteHandler
;
4348 NDIS_MEDIUM MediaType
;
4350 NDIS_INTERFACE_TYPE BusType
;
4351 NDIS_INTERFACE_TYPE AdapterType
;
4352 PDEVICE_OBJECT DeviceObject
;
4353 PDEVICE_OBJECT PhysicalDeviceObject
;
4354 PDEVICE_OBJECT NextDeviceObject
;
4355 PMAP_REGISTER_ENTRY MapRegisters
;
4356 PNDIS_AF_LIST CallMgrAfList
;
4357 PVOID MiniportThread
;
4359 USHORT SetInfoBufLen
;
4360 USHORT MaxSendPackets
;
4361 NDIS_STATUS FakeStatus
;
4363 PUNICODE_STRING pAdapterInstanceName
;
4364 PNDIS_MINIPORT_TIMER TimerQueue
;
4366 PNDIS_REQUEST PendingRequest
;
4367 UINT MaximumLongAddresses
;
4368 UINT MaximumShortAddresses
;
4369 UINT CurrentLookahead
;
4370 UINT MaximumLookahead
;
4371 W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler
;
4372 W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler
;
4373 W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler
;
4374 W_SEND_PACKETS_HANDLER SendPacketsHandler
;
4375 NDIS_M_START_SENDS DeferredSendHandler
;
4376 ETH_RCV_INDICATE_HANDLER EthRxIndicateHandler
;
4377 TR_RCV_INDICATE_HANDLER TrRxIndicateHandler
;
4378 FDDI_RCV_INDICATE_HANDLER FddiRxIndicateHandler
;
4379 ETH_RCV_COMPLETE_HANDLER EthRxCompleteHandler
;
4380 TR_RCV_COMPLETE_HANDLER TrRxCompleteHandler
;
4381 FDDI_RCV_COMPLETE_HANDLER FddiRxCompleteHandler
;
4382 NDIS_M_STATUS_HANDLER StatusHandler
;
4383 NDIS_M_STS_COMPLETE_HANDLER StatusCompleteHandler
;
4384 NDIS_M_TD_COMPLETE_HANDLER TDCompleteHandler
;
4385 NDIS_M_REQ_COMPLETE_HANDLER QueryCompleteHandler
;
4386 NDIS_M_REQ_COMPLETE_HANDLER SetCompleteHandler
;
4387 NDIS_WM_SEND_COMPLETE_HANDLER WanSendCompleteHandler
;
4388 WAN_RCV_HANDLER WanRcvHandler
;
4389 WAN_RCV_COMPLETE_HANDLER WanRcvCompleteHandler
;
4391 PNDIS_MINIPORT_BLOCK NextGlobalMiniport
;
4392 SINGLE_LIST_ENTRY WorkQueue
[NUMBER_OF_WORK_ITEM_TYPES
];
4393 SINGLE_LIST_ENTRY SingleWorkItems
[NUMBER_OF_SINGLE_WORK_ITEMS
];
4396 UCHAR ArcnetAddress
;
4398 _ANONYMOUS_UNION
union {
4400 PNDIS_ARC_BUF ArcBuf
;
4406 PCM_RESOURCE_LIST AllocatedResources
;
4407 PCM_RESOURCE_LIST AllocatedResourcesTranslated
;
4408 SINGLE_LIST_ENTRY PatternList
;
4409 NDIS_PNP_CAPABILITIES PMCapabilities
;
4410 DEVICE_CAPABILITIES DeviceCaps
;
4412 DEVICE_POWER_STATE CurrentDevicePowerState
;
4414 SYSTEM_POWER_STATE WaitWakeSystemState
;
4415 LARGE_INTEGER VcIndex
;
4416 KSPIN_LOCK VcCountLock
;
4417 LIST_ENTRY WmiEnabledVcs
;
4418 PNDIS_GUID pNdisGuidMap
;
4419 PNDIS_GUID pCustomGuidMap
;
4421 USHORT cNdisGuidMap
;
4422 USHORT cCustomGuidMap
;
4423 USHORT CurrentMapRegister
;
4424 PKEVENT AllocationEvent
;
4425 USHORT BaseMapRegistersNeeded
;
4426 USHORT SGMapRegistersNeeded
;
4427 ULONG MaximumPhysicalMapping
;
4428 NDIS_TIMER MediaDisconnectTimer
;
4429 USHORT MediaDisconnectTimeOut
;
4430 USHORT InstanceNumber
;
4431 NDIS_EVENT OpenReadyEvent
;
4432 NDIS_PNP_DEVICE_STATE PnPDeviceState
;
4433 NDIS_PNP_DEVICE_STATE OldPnPDeviceState
;
4434 PGET_SET_DEVICE_DATA SetBusData
;
4435 PGET_SET_DEVICE_DATA GetBusData
;
4439 NDIS_STATS NdisStats
;
4443 PNDIS_PACKET IndicatedPacket
[MAXIMUM_PROCESSORS
];
4444 PKEVENT RemoveReadyEvent
;
4445 PKEVENT AllOpensClosedEvent
;
4446 PKEVENT AllRequestsCompletedEvent
;
4448 NDIS_MINIPORT_WORK_ITEM WorkItemBuffer
[NUMBER_OF_SINGLE_WORK_ITEMS
];
4449 PDMA_ADAPTER SystemAdapterObject
;
4450 ULONG DriverVerifyFlags
;
4452 USHORT InternalResetCount
;
4453 USHORT MiniportResetCount
;
4454 USHORT MediaSenseConnectCount
;
4455 USHORT MediaSenseDisconnectCount
;
4456 PNDIS_PACKET
*xPackets
;
4457 ULONG UserModeOpenReferences
;
4458 _ANONYMOUS_UNION
union {
4459 PVOID SavedSendHandler
;
4460 PVOID SavedWanSendHandler
;
4462 PVOID SavedSendPacketsHandler
;
4463 PVOID SavedCancelSendPacketsHandler
;
4464 W_SEND_PACKETS_HANDLER WSendPacketsHandler
;
4465 ULONG MiniportAttributes
;
4466 PDMA_ADAPTER SavedSystemAdapterObject
;
4468 USHORT CFHangXTicks
;
4470 ULONG IndicatedPacketsCount
;
4471 ULONG PhysicalMediumType
;
4472 PNDIS_REQUEST LastRequest
;
4473 LONG DmaAdapterRefCount
;
4479 KSPIN_LOCK TimerQueueLock
;
4480 PKEVENT ResetCompletedEvent
;
4481 PKEVENT QueuedBindingCompletedEvent
;
4482 PKEVENT DmaResourcesReleasedEvent
;
4483 FILTER_PACKET_INDICATION_HANDLER SavedPacketIndicateHandler
;
4484 ULONG RegisteredInterrupts
;
4485 PNPAGED_LOOKASIDE_LIST SGListLookasideList
;
4486 ULONG ScatterGatherListSize
;
4491 /* Handler prototypes for NDIS_OPEN_BLOCK */
4493 typedef NDIS_STATUS (DDKAPI
*WAN_SEND_HANDLER
)(
4494 /*IN*/ NDIS_HANDLE MacBindingHandle
,
4495 /*IN*/ NDIS_HANDLE LinkHandle
,
4496 /*IN*/ PVOID Packet
);
4498 /* NDIS 4.0 extension */
4500 typedef VOID (DDKAPI
*SEND_PACKETS_HANDLER
)(
4501 /*IN*/ NDIS_HANDLE MiniportAdapterContext
,
4502 /*IN*/ PPNDIS_PACKET PacketArray
,
4503 /*IN*/ UINT NumberOfPackets
);
4506 typedef struct _NDIS_COMMON_OPEN_BLOCK
{
4508 NDIS_HANDLE BindingHandle
;
4509 PNDIS_MINIPORT_BLOCK MiniportHandle
;
4510 PNDIS_PROTOCOL_BLOCK ProtocolHandle
;
4511 NDIS_HANDLE ProtocolBindingContext
;
4512 PNDIS_OPEN_BLOCK MiniportNextOpen
;
4513 PNDIS_OPEN_BLOCK ProtocolNextOpen
;
4514 NDIS_HANDLE MiniportAdapterContext
;
4519 PNDIS_STRING BindDeviceName
;
4520 KSPIN_LOCK Reserved5
;
4521 PNDIS_STRING RootDeviceName
;
4522 _ANONYMOUS_UNION
union {
4523 SEND_HANDLER SendHandler
;
4524 WAN_SEND_HANDLER WanSendHandler
;
4526 TRANSFER_DATA_HANDLER TransferDataHandler
;
4527 SEND_COMPLETE_HANDLER SendCompleteHandler
;
4528 TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler
;
4529 RECEIVE_HANDLER ReceiveHandler
;
4530 RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler
;
4531 WAN_RECEIVE_HANDLER WanReceiveHandler
;
4532 REQUEST_COMPLETE_HANDLER RequestCompleteHandler
;
4533 RECEIVE_PACKET_HANDLER ReceivePacketHandler
;
4534 SEND_PACKETS_HANDLER SendPacketsHandler
;
4535 RESET_HANDLER ResetHandler
;
4536 REQUEST_HANDLER RequestHandler
;
4537 RESET_COMPLETE_HANDLER ResetCompleteHandler
;
4538 STATUS_HANDLER StatusHandler
;
4539 STATUS_COMPLETE_HANDLER StatusCompleteHandler
;
4543 KSPIN_LOCK SpinLock
;
4544 NDIS_HANDLE FilterHandle
;
4545 ULONG ProtocolOptions
;
4546 USHORT CurrentLookahead
;
4547 USHORT ConnectDampTicks
;
4548 USHORT DisconnectDampTicks
;
4549 W_SEND_HANDLER WSendHandler
;
4550 W_TRANSFER_DATA_HANDLER WTransferDataHandler
;
4551 W_SEND_PACKETS_HANDLER WSendPacketsHandler
;
4552 W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler
;
4554 PKEVENT CloseCompleteEvent
;
4557 PNDIS_OPEN_BLOCK NextGlobalOpen
;
4559 } NDIS_COMMON_OPEN_BLOCK
;
4561 struct _NDIS_OPEN_BLOCK
4563 NDIS_COMMON_OPEN_BLOCK NdisCommonOpenBlock
;
4565 struct _NDIS_OPEN_CO
4567 struct _NDIS_CO_AF_BLOCK
* NextAf
;
4568 W_CO_CREATE_VC_HANDLER MiniportCoCreateVcHandler
;
4569 W_CO_REQUEST_HANDLER MiniportCoRequestHandler
;
4570 CO_CREATE_VC_HANDLER CoCreateVcHandler
;
4571 CO_DELETE_VC_HANDLER CoDeleteVcHandler
;
4572 PVOID CmActivateVcCompleteHandler
;
4573 PVOID CmDeactivateVcCompleteHandler
;
4574 PVOID CoRequestCompleteHandler
;
4575 LIST_ENTRY ActiveVcHead
;
4576 LIST_ENTRY InactiveVcHead
;
4577 LONG PendingAfNotifications
;
4578 PKEVENT AfNotifyCompleteEvent
;
4585 /* Routines for NDIS miniport drivers */
4590 NdisMInitializeTimer(
4591 /*IN*/ /*OUT*/ PNDIS_MINIPORT_TIMER Timer
,
4592 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
4593 /*IN*/ PNDIS_TIMER_FUNCTION TimerFunction
,
4594 /*IN*/ PVOID FunctionContext
);
4599 NdisMSetPeriodicTimer(
4600 /*IN*/ PNDIS_MINIPORT_TIMER Timer
,
4601 /*IN*/ UINT MillisecondsPeriod
);
4607 /*IN*/ PNDIS_MINIPORT_TIMER Timer
,
4608 /*OUT*/ PBOOLEAN TimerCancelled
);
4613 NdisInitializeWrapper(
4614 /*OUT*/ PNDIS_HANDLE NdisWrapperHandle
,
4615 /*IN*/ PVOID SystemSpecific1
,
4616 /*IN*/ PVOID SystemSpecific2
,
4617 /*IN*/ PVOID SystemSpecific3
);
4622 NdisMAllocateMapRegisters(
4623 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
4624 /*IN*/ UINT DmaChannel
,
4625 /*IN*/ BOOLEAN Dma32BitAddresses
,
4626 /*IN*/ ULONG PhysicalMapRegistersNeeded
,
4627 /*IN*/ ULONG MaximumPhysicalMapping
);
4631 * NdisMArcIndicateReceive(
4632 * IN NDIS_HANDLE MiniportAdapterHandle,
4633 * IN PUCHAR HeaderBuffer,
4634 * IN PUCHAR DataBuffer,
4637 #define NdisMArcIndicateReceive(MiniportAdapterHandle, \
4642 ArcFilterDprIndicateReceive( \
4643 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.ArcDB), \
4651 * NdisMArcIndicateReceiveComplete(
4652 * IN NDIS_HANDLE MiniportAdapterHandle);
4654 #define NdisMArcIndicateReceiveComplete(MiniportAdapterHandle) \
4656 if (((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->EthDB) \
4658 NdisMEthIndicateReceiveComplete(_H); \
4661 ArcFilterDprIndicateReceiveComplete( \
4662 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->ArcDB); \
4669 /*IN*/ NDIS_HANDLE LogHandle
);
4675 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
4677 /*OUT*/ PNDIS_HANDLE LogHandle
);
4682 NdisMDeregisterAdapterShutdownHandler(
4683 /*IN*/ NDIS_HANDLE MiniportHandle
);
4688 NdisMDeregisterInterrupt(
4689 /*IN*/ PNDIS_MINIPORT_INTERRUPT Interrupt
);
4694 NdisMDeregisterIoPortRange(
4695 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
4696 /*IN*/ UINT InitialPort
,
4697 /*IN*/ UINT NumberOfPorts
,
4698 /*IN*/ PVOID PortOffset
);
4702 * NdisMEthIndicateReceive(
4703 * IN NDIS_HANDLE MiniportAdapterHandle,
4704 * IN NDIS_HANDLE MiniportReceiveContext,
4705 * IN PVOID HeaderBuffer,
4706 * IN UINT HeaderBufferSize,
4707 * IN PVOID LookaheadBuffer,
4708 * IN UINT LookaheadBufferSize,
4709 * IN UINT PacketSize);
4711 #define NdisMEthIndicateReceive(MiniportAdapterHandle, \
4712 MiniportReceiveContext, \
4716 LookaheadBufferSize, \
4719 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxIndicateHandler)( \
4720 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.EthDB), \
4721 (MiniportReceiveContext), \
4724 (HeaderBufferSize), \
4725 (LookaheadBuffer), \
4726 (LookaheadBufferSize), \
4732 * NdisMEthIndicateReceiveComplete(
4733 * IN NDIS_HANDLE MiniportAdapterHandle);
4735 #define NdisMEthIndicateReceiveComplete(MiniportAdapterHandle) \
4737 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxCompleteHandler)( \
4738 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FilterDbs.EthDB); \
4743 * NdisMFddiIndicateReceive(
4744 * IN NDIS_HANDLE MiniportAdapterHandle,
4745 * IN NDIS_HANDLE MiniportReceiveContext,
4746 * IN PVOID HeaderBuffer,
4747 * IN UINT HeaderBufferSize,
4748 * IN PVOID LookaheadBuffer,
4749 * IN UINT LookaheadBufferSize,
4750 * IN UINT PacketSize);
4752 #define NdisMFddiIndicateReceive(MiniportAdapterHandle, \
4753 MiniportReceiveContext, \
4757 LookaheadBufferSize, \
4760 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxIndicateHandler)( \
4761 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.FddiDB), \
4762 (MiniportReceiveContext), \
4763 (PUCHAR)(HeaderBuffer) + 1, \
4764 (((*(PUCHAR*)(HeaderBuffer)) & 0x40) ? \
4765 FDDI_LENGTH_OF_LONG_ADDRESS : \
4766 FDDI_LENGTH_OF_SHORT_ADDRESS), \
4768 (HeaderBufferSize), \
4769 (LookaheadBuffer), \
4770 (LookaheadBufferSize), \
4778 * NdisMFddiIndicateReceiveComplete(
4779 * IN NDIS_HANDLE MiniportAdapterHandle);
4781 #define NdisMFddiIndicateReceiveComplete(MiniportAdapterHandle) \
4783 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxCompleteHandler)( \
4784 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FilterDbs.FddiDB); \
4791 /*IN*/ NDIS_HANDLE LogHandle
);
4796 NdisMFreeMapRegisters(
4797 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
);
4801 * NdisMIndicateStatus(
4802 * IN NDIS_HANDLE MiniportAdapterHandle,
4803 * IN NDIS_STATUS GeneralStatus,
4804 * IN PVOID StatusBuffer,
4805 * IN UINT StatusBufferSize);
4808 #define NdisMIndicateStatus(MiniportAdapterHandle, \
4809 GeneralStatus, StatusBuffer, StatusBufferSize) \
4810 (*((PNDIS_MINIPORT_BLOCK)(_M))->StatusHandler)( \
4811 MiniportAdapterHandle, GeneralStatus, StatusBuffer, StatusBufferSize)
4815 * NdisMIndicateStatusComplete(
4816 * IN NDIS_HANDLE MiniportAdapterHandle);
4818 #define NdisMIndicateStatusComplete(MiniportAdapterHandle) \
4819 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->StatusCompleteHandler)( \
4820 MiniportAdapterHandle)
4824 * NdisMInitializeWrapper(
4825 * OUT PNDIS_HANDLE NdisWrapperHandle,
4826 * IN PVOID SystemSpecific1,
4827 * IN PVOID SystemSpecific2,
4828 * IN PVOID SystemSpecific3);
4830 #define NdisMInitializeWrapper(NdisWrapperHandle, \
4834 NdisInitializeWrapper((NdisWrapperHandle), \
4835 (SystemSpecific1), \
4836 (SystemSpecific2), \
4843 /*OUT*/ PVOID
*VirtualAddress
,
4844 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
4845 /*IN*/ NDIS_PHYSICAL_ADDRESS PhysicalAddress
,
4846 /*IN*/ UINT Length
);
4850 * NdisMQueryInformationComplete(
4851 * IN NDIS_HANDLE MiniportAdapterHandle,
4852 * IN NDIS_STATUS Status);
4854 #define NdisMQueryInformationComplete(MiniportAdapterHandle, Status) \
4855 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->QueryCompleteHandler)(MiniportAdapterHandle, Status)
4860 NdisMRegisterAdapterShutdownHandler(
4861 /*IN*/ NDIS_HANDLE MiniportHandle
,
4862 /*IN*/ PVOID ShutdownContext
,
4863 /*IN*/ ADAPTER_SHUTDOWN_HANDLER ShutdownHandler
);
4868 NdisMRegisterInterrupt(
4869 /*OUT*/ PNDIS_MINIPORT_INTERRUPT Interrupt
,
4870 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
4871 /*IN*/ UINT InterruptVector
,
4872 /*IN*/ UINT InterruptLevel
,
4873 /*IN*/ BOOLEAN RequestIsr
,
4874 /*IN*/ BOOLEAN SharedInterrupt
,
4875 /*IN*/ NDIS_INTERRUPT_MODE InterruptMode
);
4880 NdisMRegisterIoPortRange(
4881 /*OUT*/ PVOID
*PortOffset
,
4882 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
4883 /*IN*/ UINT InitialPort
,
4884 /*IN*/ UINT NumberOfPorts
);
4889 NdisMRegisterMiniport(
4890 /*IN*/ NDIS_HANDLE NdisWrapperHandle
,
4891 /*IN*/ PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics
,
4892 /*IN*/ UINT CharacteristicsLength
);
4895 #if !defined(_NDIS_)
4899 * NdisMResetComplete(
4900 * IN NDIS_HANDLE MiniportAdapterHandle,
4901 * IN NDIS_STATUS Status,
4902 * IN BOOLEAN AddressingReset);
4904 #define NdisMResetComplete(MiniportAdapterHandle, \
4908 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->ResetCompleteHandler)( \
4909 MiniportAdapterHandle, Status, AddressingReset); \
4914 * NdisMSendComplete(
4915 * IN NDIS_HANDLE MiniportAdapterHandle,
4916 * IN PNDIS_PACKET Packet,
4917 * IN NDIS_STATUS Status);
4919 #define NdisMSendComplete(MiniportAdapterHandle, \
4923 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SendCompleteHandler)( \
4924 MiniportAdapterHandle, Packet, Status); \
4929 * NdisMSendResourcesAvailable(
4930 * IN NDIS_HANDLE MiniportAdapterHandle);
4932 #define NdisMSendResourcesAvailable(MiniportAdapterHandle) \
4934 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SendResourcesHandler)( \
4935 MiniportAdapterHandle); \
4940 * NdisMTransferDataComplete(
4941 * IN NDIS_HANDLE MiniportAdapterHandle,
4942 * IN PNDIS_PACKET Packet,
4943 * IN NDIS_STATUS Status,
4944 * IN UINT BytesTransferred);
4946 #define NdisMTransferDataComplete(MiniportAdapterHandle, \
4951 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TDCompleteHandler)( \
4952 MiniportAdapterHandle, Packet, Status, BytesTransferred) \
4955 #endif /* !_NDIS_ */
4960 * NdisMSetAttributes(
4961 * IN NDIS_HANDLE MiniportAdapterHandle,
4962 * IN NDIS_HANDLE MiniportAdapterContext,
4963 * IN BOOLEAN BusMaster,
4964 * IN NDIS_INTERFACE_TYPE AdapterType);
4966 #define NdisMSetAttributes(MiniportAdapterHandle, \
4967 MiniportAdapterContext, \
4970 NdisMSetAttributesEx(MiniportAdapterHandle, \
4971 MiniportAdapterContext, \
4973 (BusMaster) ? NDIS_ATTRIBUTE_BUS_MASTER : 0, \
4979 NdisMSetAttributesEx(
4980 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
4981 /*IN*/ NDIS_HANDLE MiniportAdapterContext
,
4982 /*IN*/ UINT CheckForHangTimeInSeconds
/*OPTIONAL*/,
4983 /*IN*/ ULONG AttributeFlags
,
4984 /*IN*/ NDIS_INTERFACE_TYPE AdapterType
);
4988 * NdisMSetInformationComplete(
4989 * IN NDIS_HANDLE MiniportAdapterHandle,
4990 * IN NDIS_STATUS Status);
4992 #define NdisMSetInformationComplete(MiniportAdapterHandle, \
4994 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SetCompleteHandler)( \
4995 MiniportAdapterHandle, Status)
5001 /*IN*/ ULONG MicrosecondsToSleep
);
5006 NdisMSynchronizeWithInterrupt(
5007 /*IN*/ PNDIS_MINIPORT_INTERRUPT Interrupt
,
5008 /*IN*/ PVOID SynchronizeFunction
,
5009 /*IN*/ PVOID SynchronizeContext
);
5013 * NdisMTrIndicateReceive(
5014 * IN NDIS_HANDLE MiniportAdapterHandle,
5015 * IN NDIS_HANDLE MiniportReceiveContext,
5016 * IN PVOID HeaderBuffer,
5017 * IN UINT HeaderBufferSize,
5018 * IN PVOID LookaheadBuffer,
5019 * IN UINT LookaheadBufferSize,
5020 * IN UINT PacketSize);
5022 #define NdisMTrIndicateReceive(MiniportAdapterHandle, \
5023 MiniportReceiveContext, \
5027 LookaheadBufferSize, \
5030 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxIndicateHandler)( \
5031 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.TrDB), \
5032 (MiniportReceiveContext), \
5035 (HeaderBufferSize), \
5036 (LookaheadBuffer), \
5037 (LookaheadBufferSize), \
5043 * NdisMTrIndicateReceiveComplete(
5044 * IN NDIS_HANDLE MiniportAdapterHandle);
5046 #define NdisMTrIndicateReceiveComplete(MiniportAdapterHandle) \
5048 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxCompleteHandler)( \
5049 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FilterDbs.TrDB); \
5056 /*IN*/ NDIS_HANDLE LogHandle
,
5057 /*IN*/ PVOID LogBuffer
,
5058 /*IN*/ UINT LogBufferSize
);
5063 NdisMQueryAdapterResources(
5064 /*OUT*/ PNDIS_STATUS Status
,
5065 /*IN*/ NDIS_HANDLE WrapperConfigurationContext
,
5066 /*OUT*/ PNDIS_RESOURCE_LIST ResourceList
,
5067 /*IN OUT*/ PUINT BufferSize
);
5072 NdisTerminateWrapper(
5073 /*IN*/ NDIS_HANDLE NdisWrapperHandle
,
5074 /*IN*/ PVOID SystemSpecific
);
5080 /*IN*/ NDIS_HANDLE MiniportAdapterHandle
,
5081 /*IN*/ PVOID VirtualAddress
,
5082 /*IN*/ UINT Length
);
5086 /* NDIS intermediate miniport structures */
5088 typedef VOID (DDKAPI
*W_MINIPORT_CALLBACK
)(
5089 /*IN*/ NDIS_HANDLE MiniportAdapterContext
,
5090 /*IN*/ PVOID CallbackContext
);
5094 /* Routines for intermediate miniport drivers */
5099 NdisIMDeInitializeDeviceInstance(
5100 /*IN*/ NDIS_HANDLE NdisMiniportHandle
);
5104 * NdisIMInitializeDeviceInstance(
5105 * IN NDIS_HANDLE DriverHandle,
5106 * IN PNDIS_STRING DeviceInstance);
5108 #define NdisIMInitializeDeviceInstance(DriverHandle, DeviceInstance) \
5109 NdisIMInitializeDeviceInstanceEx(DriverHandle, DeviceInstance, NULL)
5114 NdisIMRegisterLayeredMiniport(
5115 /*IN*/ NDIS_HANDLE NdisWrapperHandle
,
5116 /*IN*/ PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics
,
5117 /*IN*/ UINT CharacteristicsLength
,
5118 /*OUT*/ PNDIS_HANDLE DriverHandle
);
5121 /* Functions obsoleted by NDIS 5.0 */
5127 /*IN*/ PNDIS_HANDLE NdisDmaHandle
);
5132 NdisSetupDmaTransfer(
5133 /*OUT*/ PNDIS_STATUS Status
,
5134 /*IN*/ PNDIS_HANDLE NdisDmaHandle
,
5135 /*IN*/ PNDIS_BUFFER Buffer
,
5136 /*IN*/ ULONG Offset
,
5137 /*IN*/ ULONG Length
,
5138 /*IN*/ BOOLEAN WriteToDevice
);
5143 NdisUpcaseUnicodeString(
5144 /*OUT*/ PUNICODE_STRING DestinationString
,
5145 /*IN*/ PUNICODE_STRING SourceString
);
5148 /* Routines for NDIS protocol drivers */
5154 /*OUT*/ PNDIS_STATUS Status
,
5155 /*IN*/ NDIS_HANDLE NdisBindingHandle
,
5156 /*IN*/ PNDIS_REQUEST NdisRequest
);
5162 /*OUT*/ PNDIS_STATUS Status
,
5163 /*IN*/ NDIS_HANDLE NdisBindingHandle
);
5169 /*OUT*/ PNDIS_STATUS Status
,
5170 /*IN*/ NDIS_HANDLE NdisBindingHandle
,
5171 /*IN*/ PNDIS_PACKET Packet
);
5177 /*IN*/ NDIS_HANDLE NdisBindingHandle
,
5178 /*IN*/ PPNDIS_PACKET PacketArray
,
5179 /*IN*/ UINT NumberOfPackets
);
5185 /*OUT*/ PNDIS_STATUS Status
,
5186 /*IN*/ NDIS_HANDLE NdisBindingHandle
,
5187 /*IN*/ NDIS_HANDLE MacReceiveContext
,
5188 /*IN*/ UINT ByteOffset
,
5189 /*IN*/ UINT BytesToTransfer
,
5190 /*IN OUT*/ PNDIS_PACKET Packet
,
5191 /*OUT*/ PUINT BytesTransferred
);
5197 /*OUT*/ PNDIS_STATUS Status
,
5198 /*IN*/ NDIS_HANDLE NdisBindingHandle
);
5203 NdisCompleteBindAdapter(
5204 /*IN*/ NDIS_HANDLE BindAdapterContext
,
5205 /*IN*/ NDIS_STATUS Status
,
5206 /*IN*/ NDIS_STATUS OpenStatus
);
5211 NdisCompleteUnbindAdapter(
5212 /*IN*/ NDIS_HANDLE UnbindAdapterContext
,
5213 /*IN*/ NDIS_STATUS Status
);
5218 NdisDeregisterProtocol(
5219 /*OUT*/ PNDIS_STATUS Status
,
5220 /*IN*/ NDIS_HANDLE NdisProtocolHandle
);
5226 /*OUT*/ PNDIS_STATUS Status
,
5227 /*OUT*/ PNDIS_STATUS OpenErrorStatus
,
5228 /*OUT*/ PNDIS_HANDLE NdisBindingHandle
,
5229 /*OUT*/ PUINT SelectedMediumIndex
,
5230 /*IN*/ PNDIS_MEDIUM MediumArray
,
5231 /*IN*/ UINT MediumArraySize
,
5232 /*IN*/ NDIS_HANDLE NdisProtocolHandle
,
5233 /*IN*/ NDIS_HANDLE ProtocolBindingContext
,
5234 /*IN*/ PNDIS_STRING AdapterName
,
5235 /*IN*/ UINT OpenOptions
,
5236 /*IN*/ PSTRING AddressingInformation
);
5241 NdisOpenProtocolConfiguration(
5242 /*OUT*/ PNDIS_STATUS Status
,
5243 /*OUT*/ PNDIS_HANDLE ConfigurationHandle
,
5244 /*IN*/ PNDIS_STRING ProtocolSection
);
5249 NdisRegisterProtocol(
5250 /*OUT*/ PNDIS_STATUS Status
,
5251 /*OUT*/ PNDIS_HANDLE NdisProtocolHandle
,
5252 /*IN*/ PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics
,
5253 /*IN*/ UINT CharacteristicsLength
);
5255 /* Obsoleted in Windows XP */
5257 /* Prototypes for NDIS_MAC_CHARACTERISTICS */
5259 typedef NDIS_STATUS (*OPEN_ADAPTER_HANDLER
)(
5260 /*OUT*/ PNDIS_STATUS OpenErrorStatus
,
5261 /*OUT*/ NDIS_HANDLE
*MacBindingHandle
,
5262 /*OUT*/ PUINT SelectedMediumIndex
,
5263 /*IN*/ PNDIS_MEDIUM MediumArray
,
5264 /*IN*/ UINT MediumArraySize
,
5265 /*IN*/ NDIS_HANDLE NdisBindingContext
,
5266 /*IN*/ NDIS_HANDLE MacAdapterContext
,
5267 /*IN*/ UINT OpenOptions
,
5268 /*IN*/ PSTRING AddressingInformation
/*OPTIONAL*/);
5270 typedef NDIS_STATUS (DDKAPI
*CLOSE_ADAPTER_HANDLER
)(
5271 /*IN*/ NDIS_HANDLE MacBindingHandle
);
5273 typedef NDIS_STATUS (DDKAPI
*WAN_TRANSFER_DATA_HANDLER
)(
5276 typedef NDIS_STATUS (DDKAPI
*QUERY_GLOBAL_STATISTICS_HANDLER
)(
5277 /*IN*/ NDIS_HANDLE MacAdapterContext
,
5278 /*IN*/ PNDIS_REQUEST NdisRequest
);
5280 typedef VOID (DDKAPI
*UNLOAD_MAC_HANDLER
)(
5281 /*IN*/ NDIS_HANDLE MacMacContext
);
5283 typedef NDIS_STATUS (DDKAPI
*ADD_ADAPTER_HANDLER
)(
5284 /*IN*/ NDIS_HANDLE MacMacContext
,
5285 /*IN*/ NDIS_HANDLE WrapperConfigurationContext
,
5286 /*IN*/ PNDIS_STRING AdapterName
);
5288 typedef VOID (*REMOVE_ADAPTER_HANDLER
)(
5289 /*IN*/ NDIS_HANDLE MacAdapterContext
);
5291 typedef struct _NDIS_MAC_CHARACTERISTICS
{
5292 UCHAR MajorNdisVersion
;
5293 UCHAR MinorNdisVersion
;
5295 OPEN_ADAPTER_HANDLER OpenAdapterHandler
;
5296 CLOSE_ADAPTER_HANDLER CloseAdapterHandler
;
5297 SEND_HANDLER SendHandler
;
5298 TRANSFER_DATA_HANDLER TransferDataHandler
;
5299 RESET_HANDLER ResetHandler
;
5300 REQUEST_HANDLER RequestHandler
;
5301 QUERY_GLOBAL_STATISTICS_HANDLER QueryGlobalStatisticsHandler
;
5302 UNLOAD_MAC_HANDLER UnloadMacHandler
;
5303 ADD_ADAPTER_HANDLER AddAdapterHandler
;
5304 REMOVE_ADAPTER_HANDLER RemoveAdapterHandler
;
5306 } NDIS_MAC_CHARACTERISTICS
, *PNDIS_MAC_CHARACTERISTICS
;
5308 typedef NDIS_MAC_CHARACTERISTICS NDIS_WAN_MAC_CHARACTERISTICS
;
5309 typedef NDIS_WAN_MAC_CHARACTERISTICS
*PNDIS_WAN_MAC_CHARACTERISTICS
;
5315 #endif /* __NDIS_H */