2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS NDIS library
4 * FILE: include/net/ndis.h
5 * PURPOSE: Structures used by NDIS drivers
6 * DEFINES: i386 - Target platform is i386
7 * NDIS_WRAPPER - Define only for NDIS wrapper library
8 * NDIS_MINIPORT_DRIVER - Define only for NDIS miniport drivers
9 * BINARY_COMPATIBLE - 0 = Use macros for some features
10 * - 1 = Use imports for features not available
11 * NDIS40 - Use NDIS 4.0 structures by default
12 * NDIS50 - Use NDIS 5.0 structures by default
20 #endif /* __cplusplus */
28 /* Windows 9x compatibillity for miniports on x86 platform */
29 #ifndef BINARY_COMPATIBLE
30 #if defined(NDIS_MINIPORT_DRIVER) && defined(i386)
31 #define BINARY_COMPATIBLE 1
33 #define BINARY_COMPATIBLE 0
40 /* The NDIS library export functions. NDIS miniport drivers import functions */
44 #define EXPIMP __declspec(dllexport)
46 #define EXPIMP STDCALL
49 #else /* NDIS_WRAPPER */
52 #define EXPIMP __declspec(dllimport)
54 #define EXPIMP STDCALL
57 #endif /* NDIS_WRAPPER */
61 #ifdef NDIS_MINIPORT_DRIVER
65 #else /* NDIS_MINIPORT_DRIVER */
70 typedef ULONG ULONG_PTR
, *PULONG_PTR
;
73 #include <ddk/ntddk.h>
75 /* FIXME: Missed some definitions in there */
77 typedef struct _DMA_CONFIGURATION_BYTE0
83 } DMA_CONFIGURATION_BYTE0
;
85 typedef struct _DMA_CONFIGURATION_BYTE1
91 } DMA_CONFIGURATION_BYTE1
;
94 typedef struct _CM_MCA_POS_DATA
101 } CM_MCA_POS_DATA
, *PCM_MCA_POS_DATA
;
103 typedef struct _EISA_MEMORY_TYPE
112 } EISA_MEMORY_TYPE
, *PEISA_MEMORY_TYPE
;
114 typedef struct _EISA_MEMORY_CONFIGURATION
116 EISA_MEMORY_TYPE ConfigurationByte
;
118 USHORT AddressLowWord
;
119 UCHAR AddressHighByte
;
121 } EISA_MEMORY_CONFIGURATION
, *PEISA_MEMORY_CONFIGURATION
;
124 typedef struct _EISA_IRQ_DESCRIPTOR
128 UCHAR LevelTriggered
:1;
131 } EISA_IRQ_DESCRIPTOR
, *PEISA_IRQ_DESCRIPTOR
;
133 typedef struct _EISA_IRQ_CONFIGURATION
135 EISA_IRQ_DESCRIPTOR ConfigurationByte
;
137 } EISA_IRQ_CONFIGURATION
, *PEISA_IRQ_CONFIGURATION
;
139 typedef struct _EISA_DMA_CONFIGURATION
141 DMA_CONFIGURATION_BYTE0 ConfigurationByte0
;
142 DMA_CONFIGURATION_BYTE1 ConfigurationByte1
;
143 } EISA_DMA_CONFIGURATION
, *PEISA_DMA_CONFIGURATION
;
146 typedef struct _EISA_PORT_DESCRIPTOR
152 } EISA_PORT_DESCRIPTOR
, *PEISA_PORT_DESCRIPTOR
;
154 typedef struct _EISA_PORT_CONFIGURATION
156 EISA_PORT_DESCRIPTOR Configuration
;
158 } EISA_PORT_CONFIGURATION
, *PEISA_PORT_CONFIGURATION
;
160 typedef struct _CM_EISA_SLOT_INFORMATION
167 UCHAR NumberFunctions
;
168 UCHAR FunctionInformation
;
170 } CM_EISA_SLOT_INFORMATION
, *PCM_EISA_SLOT_INFORMATION
;
172 typedef struct _CM_EISA_FUNCTION_INFORMATION
179 UCHAR Selections
[26];
181 UCHAR TypeString
[80];
182 EISA_MEMORY_CONFIGURATION EisaMemory
[9];
183 EISA_IRQ_CONFIGURATION EisaIrq
[7];
184 EISA_DMA_CONFIGURATION EisaDma
[4];
185 EISA_PORT_CONFIGURATION EisaPort
[20];
186 UCHAR InitializationData
[60];
187 } CM_EISA_FUNCTION_INFORMATION
, *PCM_EISA_FUNCTION_INFORMATION
;
189 #endif /* _MSC_VER */
191 /* FIXME: Missed some definitions in there */
193 typedef CONST CHAR
*PCSTR
;
195 /* Could be defined in tdi.h */
197 typedef signed int INT
, *PINT
;
200 #endif /* NDIS_MINIPORT_DRIVER */
202 #include "netevent.h"
209 typedef ULONG ULONG_PTR
, *PULONG_PTR
;
212 #if defined(NDIS_MINIPORT_DRIVER) || !defined(_MSC_VER)
214 typedef struct _GUID
{
221 #endif /* NDIS_MINIPORT_DRIVER || _MSC_VER */
224 /* NDIS base types */
226 typedef struct _NDIS_SPIN_LOCK
230 } NDIS_SPIN_LOCK
, * PNDIS_SPIN_LOCK
;
232 typedef struct _NDIS_EVENT
235 } NDIS_EVENT
, *PNDIS_EVENT
;
237 typedef PVOID NDIS_HANDLE
, *PNDIS_HANDLE
;
238 typedef int NDIS_STATUS
, *PNDIS_STATUS
;
240 typedef UNICODE_STRING NDIS_STRING
, *PNDIS_STRING
;
242 typedef PCSTR NDIS_ANSI_STRING
, *PNDIS_ANSI_STRING
;
244 typedef MDL NDIS_BUFFER
, *PNDIS_BUFFER
;
246 /* NDIS_STATUS constants */
247 #define NDIS_STATUS_SUCCESS ((NDIS_STATUS)STATUS_SUCCESS)
248 #define NDIS_STATUS_PENDING ((NDIS_STATUS)STATUS_PENDING)
249 #define NDIS_STATUS_NOT_RECOGNIZED ((NDIS_STATUS)0x00010001L)
250 #define NDIS_STATUS_NOT_COPIED ((NDIS_STATUS)0x00010002L)
251 #define NDIS_STATUS_NOT_ACCEPTED ((NDIS_STATUS)0x00010003L)
252 #define NDIS_STATUS_CALL_ACTIVE ((NDIS_STATUS)0x00010007L)
254 #define NDIS_STATUS_ONLINE ((NDIS_STATUS)0x40010003L)
255 #define NDIS_STATUS_RESET_START ((NDIS_STATUS)0x40010004L)
256 #define NDIS_STATUS_RESET_END ((NDIS_STATUS)0x40010005L)
257 #define NDIS_STATUS_RING_STATUS ((NDIS_STATUS)0x40010006L)
258 #define NDIS_STATUS_CLOSED ((NDIS_STATUS)0x40010007L)
259 #define NDIS_STATUS_WAN_LINE_UP ((NDIS_STATUS)0x40010008L)
260 #define NDIS_STATUS_WAN_LINE_DOWN ((NDIS_STATUS)0x40010009L)
261 #define NDIS_STATUS_WAN_FRAGMENT ((NDIS_STATUS)0x4001000AL)
262 #define NDIS_STATUS_MEDIA_CONNECT ((NDIS_STATUS)0x4001000BL)
263 #define NDIS_STATUS_MEDIA_DISCONNECT ((NDIS_STATUS)0x4001000CL)
264 #define NDIS_STATUS_HARDWARE_LINE_UP ((NDIS_STATUS)0x4001000DL)
265 #define NDIS_STATUS_HARDWARE_LINE_DOWN ((NDIS_STATUS)0x4001000EL)
266 #define NDIS_STATUS_INTERFACE_UP ((NDIS_STATUS)0x4001000FL)
267 #define NDIS_STATUS_INTERFACE_DOWN ((NDIS_STATUS)0x40010010L)
268 #define NDIS_STATUS_MEDIA_BUSY ((NDIS_STATUS)0x40010011L)
269 #define NDIS_STATUS_WW_INDICATION ((NDIS_STATUS)0x40010012L)
270 #define NDIS_STATUS_TAPI_INDICATION ((NDIS_STATUS)0x40010080L)
272 #define NDIS_STATUS_NOT_RESETTABLE ((NDIS_STATUS)0x80010001L)
273 #define NDIS_STATUS_SOFT_ERRORS ((NDIS_STATUS)0x80010003L)
274 #define NDIS_STATUS_HARD_ERRORS ((NDIS_STATUS)0x80010004L)
275 #define NDIS_STATUS_BUFFER_OVERFLOW ((NDIS_STATUS)STATUS_BUFFER_OVERFLOW)
277 #define NDIS_STATUS_FAILURE ((NDIS_STATUS)STATUS_UNSUCCESSFUL)
278 #define NDIS_STATUS_RESOURCES ((NDIS_STATUS)STATUS_INSUFFICIENT_RESOURCES)
279 #define NDIS_STATUS_CLOSING ((NDIS_STATUS)0xC0010002L)
280 #define NDIS_STATUS_BAD_VERSION ((NDIS_STATUS)0xC0010004L)
281 #define NDIS_STATUS_BAD_CHARACTERISTICS ((NDIS_STATUS)0xC0010005L)
282 #define NDIS_STATUS_ADAPTER_NOT_FOUND ((NDIS_STATUS)0xC0010006L)
283 #define NDIS_STATUS_OPEN_FAILED ((NDIS_STATUS)0xC0010007L)
284 #define NDIS_STATUS_DEVICE_FAILED ((NDIS_STATUS)0xC0010008L)
285 #define NDIS_STATUS_MULTICAST_FULL ((NDIS_STATUS)0xC0010009L)
286 #define NDIS_STATUS_MULTICAST_EXISTS ((NDIS_STATUS)0xC001000AL)
287 #define NDIS_STATUS_MULTICAST_NOT_FOUND ((NDIS_STATUS)0xC001000BL)
288 #define NDIS_STATUS_REQUEST_ABORTED ((NDIS_STATUS)0xC001000CL)
289 #define NDIS_STATUS_RESET_IN_PROGRESS ((NDIS_STATUS)0xC001000DL)
290 #define NDIS_STATUS_CLOSING_INDICATING ((NDIS_STATUS)0xC001000EL)
291 #define NDIS_STATUS_NOT_SUPPORTED ((NDIS_STATUS)STATUS_NOT_SUPPORTED)
292 #define NDIS_STATUS_INVALID_PACKET ((NDIS_STATUS)0xC001000FL)
293 #define NDIS_STATUS_OPEN_LIST_FULL ((NDIS_STATUS)0xC0010010L)
294 #define NDIS_STATUS_ADAPTER_NOT_READY ((NDIS_STATUS)0xC0010011L)
295 #define NDIS_STATUS_ADAPTER_NOT_OPEN ((NDIS_STATUS)0xC0010012L)
296 #define NDIS_STATUS_NOT_INDICATING ((NDIS_STATUS)0xC0010013L)
297 #define NDIS_STATUS_INVALID_LENGTH ((NDIS_STATUS)0xC0010014L)
298 #define NDIS_STATUS_INVALID_DATA ((NDIS_STATUS)0xC0010015L)
299 #define NDIS_STATUS_BUFFER_TOO_SHORT ((NDIS_STATUS)0xC0010016L)
300 #define NDIS_STATUS_INVALID_OID ((NDIS_STATUS)0xC0010017L)
301 #define NDIS_STATUS_ADAPTER_REMOVED ((NDIS_STATUS)0xC0010018L)
302 #define NDIS_STATUS_UNSUPPORTED_MEDIA ((NDIS_STATUS)0xC0010019L)
303 #define NDIS_STATUS_GROUP_ADDRESS_IN_USE ((NDIS_STATUS)0xC001001AL)
304 #define NDIS_STATUS_FILE_NOT_FOUND ((NDIS_STATUS)0xC001001BL)
305 #define NDIS_STATUS_ERROR_READING_FILE ((NDIS_STATUS)0xC001001CL)
306 #define NDIS_STATUS_ALREADY_MAPPED ((NDIS_STATUS)0xC001001DL)
307 #define NDIS_STATUS_RESOURCE_CONFLICT ((NDIS_STATUS)0xC001001EL)
308 #define NDIS_STATUS_NO_CABLE ((NDIS_STATUS)0xC001001FL)
310 #define NDIS_STATUS_INVALID_SAP ((NDIS_STATUS)0xC0010020L)
311 #define NDIS_STATUS_SAP_IN_USE ((NDIS_STATUS)0xC0010021L)
312 #define NDIS_STATUS_INVALID_ADDRESS ((NDIS_STATUS)0xC0010022L)
313 #define NDIS_STATUS_VC_NOT_ACTIVATED ((NDIS_STATUS)0xC0010023L)
314 #define NDIS_STATUS_DEST_OUT_OF_ORDER ((NDIS_STATUS)0xC0010024L)
315 #define NDIS_STATUS_VC_NOT_AVAILABLE ((NDIS_STATUS)0xC0010025L)
316 #define NDIS_STATUS_CELLRATE_NOT_AVAILABLE ((NDIS_STATUS)0xC0010026L)
317 #define NDIS_STATUS_INCOMPATABLE_QOS ((NDIS_STATUS)0xC0010027L)
318 #define NDIS_STATUS_AAL_PARAMS_UNSUPPORTED ((NDIS_STATUS)0xC0010028L)
319 #define NDIS_STATUS_NO_ROUTE_TO_DESTINATION ((NDIS_STATUS)0xC0010029L)
321 #define NDIS_STATUS_TOKEN_RING_OPEN_ERROR ((NDIS_STATUS)0xC0011000L)
324 /* NDIS error codes for error logging */
326 #define NDIS_ERROR_CODE ULONG
328 #define NDIS_ERROR_CODE_RESOURCE_CONFLICT EVENT_NDIS_RESOURCE_CONFLICT
329 #define NDIS_ERROR_CODE_OUT_OF_RESOURCES EVENT_NDIS_OUT_OF_RESOURCE
330 #define NDIS_ERROR_CODE_HARDWARE_FAILURE EVENT_NDIS_HARDWARE_FAILURE
331 #define NDIS_ERROR_CODE_ADAPTER_NOT_FOUND EVENT_NDIS_ADAPTER_NOT_FOUND
332 #define NDIS_ERROR_CODE_INTERRUPT_CONNECT EVENT_NDIS_INTERRUPT_CONNECT
333 #define NDIS_ERROR_CODE_DRIVER_FAILURE EVENT_NDIS_DRIVER_FAILURE
334 #define NDIS_ERROR_CODE_BAD_VERSION EVENT_NDIS_BAD_VERSION
335 #define NDIS_ERROR_CODE_TIMEOUT EVENT_NDIS_TIMEOUT
336 #define NDIS_ERROR_CODE_NETWORK_ADDRESS EVENT_NDIS_NETWORK_ADDRESS
337 #define NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION EVENT_NDIS_UNSUPPORTED_CONFIGURATION
338 #define NDIS_ERROR_CODE_INVALID_VALUE_FROM_ADAPTER EVENT_NDIS_INVALID_VALUE_FROM_ADAPTER
339 #define NDIS_ERROR_CODE_MISSING_CONFIGURATION_PARAMETER EVENT_NDIS_MISSING_CONFIGURATION_PARAMETER
340 #define NDIS_ERROR_CODE_BAD_IO_BASE_ADDRESS EVENT_NDIS_BAD_IO_BASE_ADDRESS
341 #define NDIS_ERROR_CODE_RECEIVE_SPACE_SMALL EVENT_NDIS_RECEIVE_SPACE_SMALL
342 #define NDIS_ERROR_CODE_ADAPTER_DISABLED EVENT_NDIS_ADAPTER_DISABLED
345 /* Memory allocation flags. Used by Ndis(Allocate|Free)Memory */
346 #define NDIS_MEMORY_CONTIGUOUS 0x00000001
347 #define NDIS_MEMORY_NONCACHED 0x00000002
349 /* NIC attribute flags. Used by NdisMSetAttributes(Ex) */
350 #define NDIS_ATTRIBUTE_IGNORE_PACKET_TIMEOUT 0x00000001
351 #define NDIS_ATTRIBUTE_IGNORE_REQUEST_TIMEOUT 0x00000002
352 #define NDIS_ATTRIBUTE_IGNORE_TOKEN_RING_ERRORS 0x00000004
353 #define NDIS_ATTRIBUTE_BUS_MASTER 0x00000008
354 #define NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER 0x00000010
358 #define MAXIMUM_PROCESSORS 32
364 typedef union _NDIS_RW_LOCK_REFCOUNT
368 } NDIS_RW_LOCK_REFCOUNT
;
370 typedef struct _NDIS_RW_LOCK
382 NDIS_RW_LOCK_REFCOUNT RefCount
[MAXIMUM_PROCESSORS
];
383 } NDIS_RW_LOCK
, *PNDIS_RW_LOCK
;
385 typedef struct _LOCK_STATE
389 } LOCK_STATE
, *PLOCK_STATE
;
395 typedef VOID (*PNDIS_TIMER_FUNCTION
)(
396 IN PVOID SystemSpecific1
,
397 IN PVOID FunctionContext
,
398 IN PVOID SystemSpecific2
,
399 IN PVOID SystemSpecific3
);
401 typedef struct _NDIS_TIMER
405 } NDIS_TIMER
, *PNDIS_TIMER
;
411 typedef CM_MCA_POS_DATA NDIS_MCA_POS_DATA
, *PNDIS_MCA_POS_DATA
;
412 typedef CM_EISA_SLOT_INFORMATION NDIS_EISA_SLOT_INFORMATION
, *PNDIS_EISA_SLOT_INFORMATION
;
413 typedef CM_EISA_FUNCTION_INFORMATION NDIS_EISA_FUNCTION_INFORMATION
, *PNDIS_EISA_FUNCTION_INFORMATION
;
414 typedef CM_PARTIAL_RESOURCE_LIST NDIS_RESOURCE_LIST
, *PNDIS_RESOURCE_LIST
;
416 /* Hardware status codes (OID_GEN_HARDWARE_STATUS) */
417 typedef enum _NDIS_HARDWARE_STATUS
419 NdisHardwareStatusReady
,
420 NdisHardwareStatusInitializing
,
421 NdisHardwareStatusReset
,
422 NdisHardwareStatusClosing
,
423 NdisHardwareStatusNotReady
424 } NDIS_HARDWARE_STATUS
, *PNDIS_HARDWARE_STATUS
;
426 /* OID_GEN_GET_TIME_CAPS */
427 typedef struct _GEN_GET_TIME_CAPS
430 ULONG ClockPrecision
;
431 } GEN_GET_TIME_CAPS
, *PGEN_GET_TIME_CAPS
;
434 #define READABLE_LOCAL_CLOCK 0x00000001
435 #define CLOCK_NETWORK_DERIVED 0x00000002
436 #define CLOCK_PRECISION 0x00000004
437 #define RECEIVE_TIME_INDICATION_CAPABLE 0x00000008
438 #define TIMED_SEND_CAPABLE 0x00000010
439 #define TIME_STAMP_CAPABLE 0x00000020
441 /* OID_GEN_GET_NETCARD_TIME */
442 typedef struct _GEN_GET_NETCARD_TIME
445 } GEN_GET_NETCARD_TIME
, *PGEN_GET_NETCARD_TIME
;
447 /* NDIS driver medium (OID_GEN_MEDIA_SUPPORTED / OID_GEN_MEDIA_IN_USE) */
448 typedef enum _NDIS_MEDIUM
455 NdisMediumDix
, /* Defined for convenience, not a real medium */
457 NdisMediumArcnet878_2
,
459 NdisMediumWirelessWan
,
465 } NDIS_MEDIUM
, *PNDIS_MEDIUM
;
467 /* NDIS packet filter bits (OID_GEN_CURRENT_PACKET_FILTER) */
468 #define NDIS_PACKET_TYPE_DIRECTED 0x00000001
469 #define NDIS_PACKET_TYPE_MULTICAST 0x00000002
470 #define NDIS_PACKET_TYPE_ALL_MULTICAST 0x00000004
471 #define NDIS_PACKET_TYPE_BROADCAST 0x00000008
472 #define NDIS_PACKET_TYPE_SOURCE_ROUTING 0x00000010
473 #define NDIS_PACKET_TYPE_PROMISCUOUS 0x00000020
474 #define NDIS_PACKET_TYPE_SMT 0x00000040
475 #define NDIS_PACKET_TYPE_ALL_LOCAL 0x00000080
476 #define NDIS_PACKET_TYPE_GROUP 0x00001000
477 #define NDIS_PACKET_TYPE_ALL_FUNCTIONAL 0x00002000
478 #define NDIS_PACKET_TYPE_FUNCTIONAL 0x00004000
479 #define NDIS_PACKET_TYPE_MAC_FRAME 0x00008000
481 /* NDIS protocol option bits (OID_GEN_PROTOCOL_OPTIONS) */
482 #define NDIS_PROT_OPTION_ESTIMATED_LENGTH 0x00000001
483 #define NDIS_PROT_OPTION_NO_LOOPBACK 0x00000002
484 #define NDIS_PROT_OPTION_NO_RSVD_ON_RCVPKT 0x00000004
486 /* NDIS MAC option bits (OID_GEN_MAC_OPTIONS) */
487 #define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA 0x00000001
488 #define NDIS_MAC_OPTION_RECEIVE_SERIALIZED 0x00000002
489 #define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND 0x00000004
490 #define NDIS_MAC_OPTION_NO_LOOPBACK 0x00000008
491 #define NDIS_MAC_OPTION_FULL_DUPLEX 0x00000010
492 #define NDIS_MAC_OPTION_EOTX_INDICATION 0x00000020
493 #define NDIS_MAC_OPTION_8021P_PRIORITY 0x00000040
494 #define NDIS_MAC_OPTION_RESERVED 0x80000000
496 /* State of the LAN media (OID_GEN_MEDIA_CONNECT_STATUS) */
497 typedef enum _NDIS_MEDIA_STATE
499 NdisMediaStateConnected
,
500 NdisMediaStateDisconnected
501 } NDIS_MEDIA_STATE
, *PNDIS_MEDIA_STATE
;
503 /* OID_GEN_SUPPORTED_GUIDS */
504 typedef struct _NDIS_GUID
514 } NDIS_GUID
, *PNDIS_GUID
;
516 #define NDIS_GUID_TO_OID 0x00000001
517 #define NDIS_GUID_TO_STATUS 0x00000002
518 #define NDIS_GUID_ANSI_STRING 0x00000004
519 #define NDIS_GUID_UNICODE_STRING 0x00000008
520 #define NDIS_GUID_ARRAY 0x00000010
524 typedef struct _NDIS_PACKET_POOL
526 NDIS_SPIN_LOCK SpinLock
;
527 struct _NDIS_PACKET
*FreeList
;
530 } NDIS_PACKET_POOL
, * PNDIS_PACKET_POOL
;
532 typedef struct _NDIS_PACKET_PRIVATE
538 PNDIS_PACKET_POOL Pool
;
540 ULONG Flags
; /* See fPACKET_xxx bits below */
542 UCHAR NdisPacketFlags
;
543 USHORT NdisPacketOobOffset
;
544 } NDIS_PACKET_PRIVATE
, * PNDIS_PACKET_PRIVATE
;
546 #define fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO 0x40
547 #define fPACKET_ALLOCATED_BY_NDIS 0x80
549 typedef struct _NDIS_PACKET
{
550 NDIS_PACKET_PRIVATE Private
;
553 UCHAR MiniportReserved
[2*sizeof(PVOID
)];
554 UCHAR WrapperReserved
[2*sizeof(PVOID
)];
557 UCHAR MiniportReservedEx
[3*sizeof(PVOID
)];
558 UCHAR WrapperReservedEx
[sizeof(PVOID
)];
561 UCHAR MacReserved
[4*sizeof(PVOID
)];
564 ULONG_PTR Reserved
[2];
565 UCHAR ProtocolReserved
[1];
566 } NDIS_PACKET
, *PNDIS_PACKET
, **PPNDIS_PACKET
;
568 typedef struct _NDIS_PACKET_OOB_DATA
{
570 ULONGLONG TimeToSend
;
573 ULONGLONG TimeReceived
;
575 UINT SizeMediaSpecificInfo
;
576 PVOID MediaSpecificInformation
;
578 } NDIS_PACKET_OOB_DATA
, *PNDIS_PACKET_OOB_DATA
;
580 typedef struct _NDIS_PM_PACKET_PATTERN
588 } NDIS_PM_PACKET_PATTERN
, *PNDIS_PM_PACKET_PATTERN
;
591 /* Request types used by NdisRequest */
592 typedef enum _NDIS_REQUEST_TYPE
594 NdisRequestQueryInformation
,
595 NdisRequestSetInformation
,
596 NdisRequestQueryStatistics
,
600 NdisRequestTransferData
,
606 } NDIS_REQUEST_TYPE
, *PNDIS_REQUEST_TYPE
;
608 typedef struct _NDIS_REQUEST
{
609 UCHAR MacReserved
[16];
610 NDIS_REQUEST_TYPE RequestType
;
612 struct QUERY_INFORMATION
{
614 PVOID InformationBuffer
;
615 UINT InformationBufferLength
;
619 struct SET_INFORMATION
{
621 PVOID InformationBuffer
;
622 UINT InformationBufferLength
;
627 } NDIS_REQUEST
, *PNDIS_REQUEST
;
631 /* Wide Area Networks definitions */
633 typedef struct _NDIS_WAN_PACKET
635 LIST_ENTRY WanPacketQueue
;
636 PUCHAR CurrentBuffer
;
640 PVOID ProtocolReserved1
;
641 PVOID ProtocolReserved2
;
642 PVOID ProtocolReserved3
;
643 PVOID ProtocolReserved4
;
648 } NDIS_WAN_PACKET
, *PNDIS_WAN_PACKET
;
652 /* DMA channel information */
654 typedef struct _NDIS_DMA_DESCRIPTION
657 BOOLEAN AutoInitialize
;
658 BOOLEAN DmaChannelSpecified
;
663 } NDIS_DMA_DESCRIPTION
, *PNDIS_DMA_DESCRIPTION
;
665 typedef struct _NDIS_DMA_BLOCK
667 PVOID MapRegisterBase
;
668 KEVENT AllocationEvent
;
669 PADAPTER_OBJECT SystemAdapterObject
;
671 } NDIS_DMA_BLOCK
, *PNDIS_DMA_BLOCK
;
674 /* Possible hardware architecture */
675 typedef enum _NDIS_INTERFACE_TYPE
677 NdisInterfaceInternal
= Internal
,
678 NdisInterfaceIsa
= Isa
,
679 NdisInterfaceEisa
= Eisa
,
680 NdisInterfaceMca
= MicroChannel
,
681 NdisInterfaceTurboChannel
= TurboChannel
,
682 NdisInterfacePci
= PCIBus
,
683 NdisInterfacePcMcia
= PCMCIABus
684 } NDIS_INTERFACE_TYPE
, *PNDIS_INTERFACE_TYPE
;
686 #define NdisInterruptLatched Latched
687 #define NdisInterruptLevelSensitive LevelSensitive
688 typedef KINTERRUPT_MODE NDIS_INTERRUPT_MODE
, *PNDIS_INTERRUPT_MODE
;
691 typedef enum _NDIS_PARAMETER_TYPE
693 NdisParameterInteger
,
694 NdisParameterHexInteger
,
696 NdisParameterMultiString
697 } NDIS_PARAMETER_TYPE
, *PNDIS_PARAMETER_TYPE
;
699 typedef struct _NDIS_CONFIGURATION_PARAMETER
701 NDIS_PARAMETER_TYPE ParameterType
;
705 NDIS_STRING StringData
;
707 } NDIS_CONFIGURATION_PARAMETER
, *PNDIS_CONFIGURATION_PARAMETER
;
710 typedef PHYSICAL_ADDRESS NDIS_PHYSICAL_ADDRESS
, *PNDIS_PHYSICAL_ADDRESS
;
712 typedef struct _NDIS_PHYSICAL_ADDRESS_UNIT
714 NDIS_PHYSICAL_ADDRESS PhysicalAddress
;
716 } NDIS_PHYSICAL_ADDRESS_UNIT
, *PNDIS_PHYSICAL_ADDRESS_UNIT
;
719 typedef VOID (*ADAPTER_SHUTDOWN_HANDLER
)(
720 IN PVOID ShutdownContext
);
724 #if defined(NDIS_WRAPPER) || !defined(NDIS_MINIPORT_DRIVER)
726 /* Structures available only to full MAC drivers */
728 typedef BOOLEAN (*PNDIS_INTERRUPT_SERVICE
)(
729 IN PVOID InterruptContext
);
731 typedef VOID (*PNDIS_DEFERRED_PROCESSING
)(
732 IN PVOID SystemSpecific1
,
733 IN PVOID InterruptContext
,
734 IN PVOID SystemSpecific2
,
735 IN PVOID SystemSpecific3
);
738 typedef struct _NDIS_INTERRUPT
740 PKINTERRUPT InterruptObject
;
741 KSPIN_LOCK DpcCountLock
;
742 PNDIS_INTERRUPT_SERVICE MacIsr
;
743 PNDIS_DEFERRED_PROCESSING MacDpc
;
745 PVOID InterruptContext
;
748 /* Used to tell when all DPCs for the adapter are completed */
749 KEVENT DpcsCompletedEvent
;
750 } NDIS_INTERRUPT
, *PNDIS_INTERRUPT
;
753 /* NDIS adapter information */
755 typedef NDIS_STATUS (*PNDIS_ACTIVATE_CALLBACK
)(
756 IN NDIS_HANDLE NdisAdatperHandle
,
757 IN NDIS_HANDLE MacAdapterContext
,
758 IN ULONG DmaChannel
);
760 typedef struct _NDIS_PORT_DESCRIPTOR
765 } NDIS_PORT_DESCRIPTOR
, *PNDIS_PORT_DESCRIPTOR
;
767 typedef struct _NDIS_ADAPTER_INFORMATION
771 BOOLEAN Dma32BitAddresses
;
772 PNDIS_ACTIVATE_CALLBACK ActivateCallback
;
773 NDIS_INTERFACE_TYPE AdapterType
;
774 ULONG PhysicalMapRegistersNeeded
;
775 ULONG MaximumPhysicalMapping
;
776 ULONG NumberOfPortDescriptors
;
777 NDIS_PORT_DESCRIPTOR PortDescriptors
[1];
778 } NDIS_ADAPTER_INFORMATION
, *PNDIS_ADAPTER_INFORMATION
;
781 /* Prototypes for NDIS_MAC_CHARACTERISTICS */
783 typedef NDIS_STATUS (*OPEN_ADAPTER_HANDLER
)(
784 OUT PNDIS_STATUS OpenErrorStatus
,
785 OUT NDIS_HANDLE
* MacBindingHandle
,
786 OUT PUINT SelectedMediumIndex
,
787 IN PNDIS_MEDIUM MediumArray
,
788 IN UINT MediumArraySize
,
789 IN NDIS_HANDLE NdisBindingContext
,
790 IN NDIS_HANDLE MacAdapterContext
,
792 IN PSTRING AddressingInformation OPTIONAL
);
794 typedef NDIS_STATUS (*CLOSE_ADAPTER_HANDLER
)(
795 IN NDIS_HANDLE MacBindingHandle
);
797 typedef NDIS_STATUS (*SEND_HANDLER
)(
798 IN NDIS_HANDLE MacBindingHandle
,
799 IN PNDIS_PACKET Packet
);
801 typedef NDIS_STATUS (*WAN_SEND_HANDLER
)(
802 IN NDIS_HANDLE MacBindingHandle
,
803 IN PNDIS_WAN_PACKET Packet
);
805 typedef NDIS_STATUS (*TRANSFER_DATA_HANDLER
)(
806 IN NDIS_HANDLE MacBindingHandle
,
807 IN NDIS_HANDLE MacReceiveContext
,
809 IN UINT BytesToTransfer
,
810 OUT PNDIS_PACKET Packet
,
811 OUT PUINT BytesTransferred
);
813 typedef NDIS_STATUS (*WAN_TRANSFER_DATA_HANDLER
)(
816 typedef NDIS_STATUS (*RESET_HANDLER
)(
817 IN NDIS_HANDLE MacBindingHandle
);
819 typedef NDIS_STATUS (*REQUEST_HANDLER
)(
820 IN NDIS_HANDLE MacBindingHandle
,
821 IN PNDIS_REQUEST NdisRequest
);
823 typedef NDIS_STATUS (*QUERY_GLOBAL_STATISTICS_HANDLER
)(
824 IN NDIS_HANDLE MacAdapterContext
,
825 IN PNDIS_REQUEST NdisRequest
);
827 typedef VOID (*UNLOAD_MAC_HANDLER
)(
828 IN NDIS_HANDLE MacMacContext
);
830 typedef NDIS_STATUS (*ADD_ADAPTER_HANDLER
)(
831 IN NDIS_HANDLE MacMacContext
,
832 IN NDIS_HANDLE WrapperConfigurationContext
,
833 IN PNDIS_STRING AdapterName
);
835 typedef VOID (*REMOVE_ADAPTER_HANDLER
)(
836 IN NDIS_HANDLE MacAdapterContext
);
838 typedef struct _NDIS_MAC_CHARACTERISTICS
840 UCHAR MajorNdisVersion
;
841 UCHAR MinorNdisVersion
;
843 OPEN_ADAPTER_HANDLER OpenAdapterHandler
;
844 CLOSE_ADAPTER_HANDLER CloseAdapterHandler
;
845 SEND_HANDLER SendHandler
;
846 TRANSFER_DATA_HANDLER TransferDataHandler
;
847 RESET_HANDLER ResetHandler
;
848 REQUEST_HANDLER RequestHandler
;
849 QUERY_GLOBAL_STATISTICS_HANDLER QueryGlobalStatisticsHandler
;
850 UNLOAD_MAC_HANDLER UnloadMacHandler
;
851 ADD_ADAPTER_HANDLER AddAdapterHandler
;
852 REMOVE_ADAPTER_HANDLER RemoveAdapterHandler
;
854 } NDIS_MAC_CHARACTERISTICS
, *PNDIS_MAC_CHARACTERISTICS
;
856 typedef NDIS_MAC_CHARACTERISTICS NDIS_WAN_MAC_CHARACTERISTICS
;
857 typedef NDIS_WAN_MAC_CHARACTERISTICS
*PNDIS_WAN_MAC_CHARACTERISTICS
;
861 /* Functions available only to full MAC drivers */
865 NdisAllocateSharedMemory(
866 IN NDIS_HANDLE NdisAdapterHandle
,
869 OUT PVOID
*VirtualAddress
,
870 OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress
);
874 NdisCompleteCloseAdapter(
875 IN NDIS_HANDLE NdisBindingContext
,
876 IN NDIS_STATUS Status
);
880 NdisCompleteOpenAdapter(
881 IN NDIS_HANDLE NdisBindingContext
,
882 IN NDIS_STATUS Status
,
883 IN NDIS_STATUS OpenErrorStatus
);
887 NdisDeregisterAdapter(
888 IN NDIS_HANDLE NdisAdapterHandle
);
892 NdisDeregisterAdapterShutdownHandler(
893 IN NDIS_HANDLE NdisAdapterHandle
);
897 NdisFreeSharedMemory(
898 IN NDIS_HANDLE NdisAdapterHandle
,
901 IN PVOID VirtualAddress
,
902 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
906 NdisInitializeInterrupt(
907 OUT PNDIS_STATUS Status
,
908 IN OUT PNDIS_INTERRUPT Interrupt
,
909 IN NDIS_HANDLE NdisAdapterHandle
,
910 IN PNDIS_INTERRUPT_SERVICE InterruptServiceRoutine
,
911 IN PVOID InterruptContext
,
912 IN PNDIS_DEFERRED_PROCESSING DeferredProcessingRoutine
,
913 IN UINT InterruptVector
,
914 IN UINT InterruptLevel
,
915 IN BOOLEAN SharedInterrupt
,
916 IN NDIS_INTERRUPT_MODE InterruptMode
);
921 OUT PNDIS_STATUS Status
,
922 OUT PVOID
*VirtualAddress
,
923 IN NDIS_HANDLE NdisAdapterHandle
,
924 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
,
930 OUT PNDIS_HANDLE NdisAdapterHandle
,
931 IN NDIS_HANDLE NdisMacHandle
,
932 IN NDIS_HANDLE MacAdapterContext
,
933 IN NDIS_HANDLE WrapperConfigurationContext
,
934 IN PNDIS_STRING AdapterName
,
935 IN PVOID AdapterInformation
);
939 NdisRegisterAdapterShutdownHandler(
940 IN NDIS_HANDLE NdisAdapterHandle
,
941 IN PVOID ShutdownContext
,
942 IN ADAPTER_SHUTDOWN_HANDLER ShutdownHandler
);
947 OUT PNDIS_STATUS Status
,
948 OUT PNDIS_HANDLE NdisMacHandle
,
949 IN NDIS_HANDLE NdisWrapperHandle
,
950 IN NDIS_HANDLE MacMacContext
,
951 IN PNDIS_MAC_CHARACTERISTICS MacCharacteristics
,
952 IN UINT CharacteristicsLength
);
956 NdisReleaseAdapterResources(
957 IN NDIS_HANDLE NdisAdapterHandle
);
962 IN PNDIS_INTERRUPT Interrupt
);
964 #endif /* NDIS_WRAPPER || !NDIS_MINIPORT_DRIVER */
970 typedef struct _ATM_ADDRESS ATM_ADDRESS
, *PATM_ADDRESS
;
973 /* OID_GEN_NETWORK_LAYER_ADDRESSES */
974 typedef struct _NETWORK_ADDRESS
976 USHORT AddressLength
;
979 } NETWORK_ADDRESS
, *PNETWORK_ADDRESS
;
981 typedef struct _NETWORK_ADDRESS_LIST
985 NETWORK_ADDRESS Address
[1];
986 } NETWORK_ADDRESS_LIST
, *PNETWORK_ADDRESS_LIST
;
988 /* Protocol types supported by NDIS */
989 #define NDIS_PROTOCOL_ID_DEFAULT 0x00
990 #define NDIS_PROTOCOL_ID_TCP_IP 0x02
991 #define NDIS_PROTOCOL_ID_IPX 0x06
992 #define NDIS_PROTOCOL_ID_NBF 0x07
993 #define NDIS_PROTOCOL_ID_MAX 0x0F
994 #define NDIS_PROTOCOL_ID_MASK 0x0F
996 /* OID_GEN_TRANSPORT_HEADER_OFFSET */
997 typedef struct _TRANSPORT_HEADER_OFFSET
1000 USHORT HeaderOffset
;
1001 } TRANSPORT_HEADER_OFFSET
, *PTRANSPORT_HEADER_OFFSET
;
1004 /* OID_GEN_CO_LINK_SPEED / OID_GEN_CO_MINIMUM_LINK_SPEED */
1005 typedef struct _NDIS_CO_LINK_SPEED
1009 } NDIS_CO_LINK_SPEED
, *PNDIS_CO_LINK_SPEED
;
1012 typedef enum _NDIS_AF
1014 CO_ADDRESS_FAMILY_Q2931
= 1,
1015 CO_ADDRESS_FAMILY_SPANS
,
1016 } NDIS_AF
, *PNDIS_AF
;
1020 NDIS_AF AddressFamily
;
1023 } CO_ADDRESS_FAMILY
, *PCO_ADDRESS_FAMILY
;
1032 typedef struct _CO_FLOW_PARAMETERS
1034 ULONG TokenRate
; /* In Bytes/sec */
1035 ULONG TokenBucketSize
; /* In Bytes */
1036 ULONG PeakBandwidth
; /* In Bytes/sec */
1037 ULONG Latency
; /* In microseconds */
1038 ULONG DelayVariation
; /* In microseconds */
1039 GUARANTEE LevelOfGuarantee
; /* Guaranteed, Predictive or Best Effort */
1040 ULONG CostOfCall
; /* Reserved for future use, */
1041 /* must be set to 0 now */
1042 ULONG NetworkAvailability
; /* read-only: 1 if accessible, 0 if not */
1043 ULONG MaxSduSize
; /* In Bytes */
1044 } CO_FLOW_PARAMETERS
, *PCO_FLOW_PARAMETERS
;
1046 typedef struct _CO_SPECIFIC_PARAMETERS
1050 UCHAR Parameters
[1];
1051 } CO_SPECIFIC_PARAMETERS
, *PCO_SPECIFIC_PARAMETERS
;
1053 typedef struct _CO_CALL_MANAGER_PARAMETERS
{
1054 CO_FLOW_PARAMETERS Transmit
;
1055 CO_FLOW_PARAMETERS Receive
;
1056 CO_SPECIFIC_PARAMETERS CallMgrSpecific
;
1057 } CO_CALL_MANAGER_PARAMETERS
, *PCO_CALL_MANAGER_PARAMETERS
;
1059 typedef struct _CO_MEDIA_PARAMETERS
1062 ULONG ReceivePriority
;
1063 ULONG ReceiveSizeHint
;
1064 CO_SPECIFIC_PARAMETERS MediaSpecific
;
1065 } CO_MEDIA_PARAMETERS
, *PCO_MEDIA_PARAMETERS
;
1067 /* Definitions for the flags in CO_MEDIA_PARAMETERS */
1068 #define RECEIVE_TIME_INDICATION 0x00000001
1069 #define USE_TIME_STAMPS 0x00000002
1070 #define TRANSMIT_VC 0x00000004
1071 #define RECEIVE_VC 0x00000008
1072 #define INDICATE_ERRED_PACKETS 0x00000010
1073 #define INDICATE_END_OF_TX 0x00000020
1074 #define RESERVE_RESOURCES_VC 0x00000040
1075 #define ROUND_DOWN_FLOW 0x00000080
1076 #define ROUND_UP_FLOW 0x00000100
1078 typedef struct _CO_CALL_PARAMETERS
1081 PCO_CALL_MANAGER_PARAMETERS CallMgrParameters
;
1082 PCO_MEDIA_PARAMETERS MediaParameters
;
1083 } CO_CALL_PARAMETERS
, *PCO_CALL_PARAMETERS
;
1085 typedef struct _CO_SAP
{
1091 typedef struct _NDIS_IPSEC_PACKET_INFO
1097 NDIS_HANDLE OffloadHandle
;
1098 NDIS_HANDLE NextOffloadHandle
;
1103 ULONG SA_DELETE_REQ
:1;
1104 ULONG CRYPTO_DONE
:1;
1105 ULONG NEXT_CRYPTO_DONE
:1;
1109 } NDIS_IPSEC_PACKET_INFO
, *PNDIS_IPSEC_PACKET_INFO
;
1112 /* Plug and play and power management */
1114 /* PnP and PM event codes */
1115 typedef enum _NET_PNP_EVENT_CODE
1119 NetEventQueryRemoveDevice
,
1120 NetEventCancelRemoveDevice
,
1121 NetEventReconfigure
,
1123 NetEventBindsComplete
,
1124 NetEventPnPCapabilities
,
1126 } NET_PNP_EVENT_CODE
, *PNET_PNP_EVENT_CODE
;
1128 /* Networking PnP event indication structure */
1129 typedef struct _NET_PNP_EVENT
1132 NET_PNP_EVENT_CODE NetEvent
;
1133 /* Event specific data */
1135 /* Length of event specific data */
1138 /* Reserved areas */
1139 ULONG_PTR NdisReserved
[4];
1140 ULONG_PTR TransportReserved
[4];
1141 ULONG_PTR TdiReserved
[4];
1142 ULONG_PTR TdiClientReserved
[4];
1143 } NET_PNP_EVENT
, *PNET_PNP_EVENT
;
1145 /* Device power state structure */
1146 typedef enum _NET_DEVICE_POWER_STATE
1148 NetDeviceStateUnspecified
= 0,
1153 NetDeviceStateMaximum
1154 } NET_DEVICE_POWER_STATE
, *PNET_DEVICE_POWER_STATE
;
1160 typedef NDIS_STATUS (*CO_CREATE_VC_HANDLER
)(
1161 IN NDIS_HANDLE ProtocolAfContext
,
1162 IN NDIS_HANDLE NdisVcHandle
,
1163 OUT PNDIS_HANDLE ProtocolVcContext
);
1165 typedef NDIS_STATUS (*CO_DELETE_VC_HANDLER
)(
1166 IN NDIS_HANDLE ProtocolVcContext
);
1168 typedef NDIS_STATUS (*CO_REQUEST_HANDLER
)(
1169 IN NDIS_HANDLE ProtocolAfContext
,
1170 IN NDIS_HANDLE ProtocolVcContext OPTIONAL
,
1171 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
,
1172 IN OUT PNDIS_REQUEST NdisRequest
);
1174 typedef VOID (*CO_REQUEST_COMPLETE_HANDLER
)(
1175 IN NDIS_STATUS Status
,
1176 IN NDIS_HANDLE ProtocolAfContext OPTIONAL
,
1177 IN NDIS_HANDLE ProtocolVcContext OPTIONAL
,
1178 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
,
1179 IN PNDIS_REQUEST NdisRequest
);
1182 typedef NDIS_STATUS (*CM_OPEN_AF_HANDLER
)(
1183 IN NDIS_HANDLE CallMgrBindingContext
,
1184 IN PCO_ADDRESS_FAMILY AddressFamily
,
1185 IN NDIS_HANDLE NdisAfHandle
,
1186 OUT PNDIS_HANDLE CallMgrAfContext
1191 (*CM_CLOSE_AF_HANDLER
)(
1192 IN NDIS_HANDLE CallMgrAfContext
1197 (*CM_REG_SAP_HANDLER
)(
1198 IN NDIS_HANDLE CallMgrAfContext
,
1200 IN NDIS_HANDLE NdisSapHandle
,
1201 OUT PNDIS_HANDLE CallMgrSapContext
1206 (*CM_DEREG_SAP_HANDLER
)(
1207 IN NDIS_HANDLE CallMgrSapContext
1212 (*CM_MAKE_CALL_HANDLER
)(
1213 IN NDIS_HANDLE CallMgrVcContext
,
1214 IN OUT PCO_CALL_PARAMETERS CallParameters
,
1215 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
1216 OUT PNDIS_HANDLE CallMgrPartyContext OPTIONAL
1221 (*CM_CLOSE_CALL_HANDLER
)(
1222 IN NDIS_HANDLE CallMgrVcContext
,
1223 IN NDIS_HANDLE CallMgrPartyContext OPTIONAL
,
1224 IN PVOID CloseData OPTIONAL
,
1225 IN UINT Size OPTIONAL
1230 (*CM_INCOMING_CALL_COMPLETE_HANDLER
)(
1231 IN NDIS_STATUS Status
,
1232 IN NDIS_HANDLE CallMgrVcContext
,
1233 IN PCO_CALL_PARAMETERS CallParameters
1238 (*CM_ADD_PARTY_HANDLER
)(
1239 IN NDIS_HANDLE CallMgrVcContext
,
1240 IN OUT PCO_CALL_PARAMETERS CallParameters
,
1241 IN NDIS_HANDLE NdisPartyHandle
,
1242 OUT PNDIS_HANDLE CallMgrPartyContext
1247 (*CM_DROP_PARTY_HANDLER
)(
1248 IN NDIS_HANDLE CallMgrPartyContext
,
1249 IN PVOID CloseData OPTIONAL
,
1250 IN UINT Size OPTIONAL
1255 (*CM_ACTIVATE_VC_COMPLETE_HANDLER
)(
1256 IN NDIS_STATUS Status
,
1257 IN NDIS_HANDLE CallMgrVcContext
,
1258 IN PCO_CALL_PARAMETERS CallParameters
1263 (*CM_DEACTIVATE_VC_COMPLETE_HANDLER
)(
1264 IN NDIS_STATUS Status
,
1265 IN NDIS_HANDLE CallMgrVcContext
1270 (*CM_MODIFY_CALL_QOS_HANDLER
)(
1271 IN NDIS_HANDLE CallMgrVcContext
,
1272 IN PCO_CALL_PARAMETERS CallParameters
1275 typedef struct _NDIS_CALL_MANAGER_CHARACTERISTICS
1283 CO_CREATE_VC_HANDLER CmCreateVcHandler
;
1284 CO_DELETE_VC_HANDLER CmDeleteVcHandler
;
1285 CM_OPEN_AF_HANDLER CmOpenAfHandler
;
1286 CM_CLOSE_AF_HANDLER CmCloseAfHandler
;
1287 CM_REG_SAP_HANDLER CmRegisterSapHandler
;
1288 CM_DEREG_SAP_HANDLER CmDeregisterSapHandler
;
1289 CM_MAKE_CALL_HANDLER CmMakeCallHandler
;
1290 CM_CLOSE_CALL_HANDLER CmCloseCallHandler
;
1291 CM_INCOMING_CALL_COMPLETE_HANDLER CmIncomingCallCompleteHandler
;
1292 CM_ADD_PARTY_HANDLER CmAddPartyHandler
;
1293 CM_DROP_PARTY_HANDLER CmDropPartyHandler
;
1294 CM_ACTIVATE_VC_COMPLETE_HANDLER CmActivateVcCompleteHandler
;
1295 CM_DEACTIVATE_VC_COMPLETE_HANDLER CmDeactivateVcCompleteHandler
;
1296 CM_MODIFY_CALL_QOS_HANDLER CmModifyCallQoSHandler
;
1297 CO_REQUEST_HANDLER CmRequestHandler
;
1298 CO_REQUEST_COMPLETE_HANDLER CmRequestCompleteHandler
;
1299 } NDIS_CALL_MANAGER_CHARACTERISTICS
, *PNDIS_CALL_MANAGER_CHARACTERISTICS
;
1303 /* Call Manager clients */
1305 typedef VOID (*CL_OPEN_AF_COMPLETE_HANDLER
)(
1306 IN NDIS_STATUS Status
,
1307 IN NDIS_HANDLE ProtocolAfContext
,
1308 IN NDIS_HANDLE NdisAfHandle
);
1310 typedef VOID (*CL_CLOSE_AF_COMPLETE_HANDLER
)(
1311 IN NDIS_STATUS Status
,
1312 IN NDIS_HANDLE ProtocolAfContext
);
1314 typedef VOID (*CL_REG_SAP_COMPLETE_HANDLER
)(
1315 IN NDIS_STATUS Status
,
1316 IN NDIS_HANDLE ProtocolSapContext
,
1318 IN NDIS_HANDLE NdisSapHandle
);
1320 typedef VOID (*CL_DEREG_SAP_COMPLETE_HANDLER
)(
1321 IN NDIS_STATUS Status
,
1322 IN NDIS_HANDLE ProtocolSapContext
);
1324 typedef VOID (*CL_MAKE_CALL_COMPLETE_HANDLER
)(
1325 IN NDIS_STATUS Status
,
1326 IN NDIS_HANDLE ProtocolVcContext
,
1327 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
1328 IN PCO_CALL_PARAMETERS CallParameters
);
1330 typedef VOID (*CL_MODIFY_CALL_QOS_COMPLETE_HANDLER
)(
1331 IN NDIS_STATUS Status
,
1332 IN NDIS_HANDLE ProtocolVcContext
,
1333 IN PCO_CALL_PARAMETERS CallParameters
);
1335 typedef VOID (*CL_CLOSE_CALL_COMPLETE_HANDLER
)(
1336 IN NDIS_STATUS Status
,
1337 IN NDIS_HANDLE ProtocolVcContext
,
1338 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
);
1340 typedef VOID (*CL_ADD_PARTY_COMPLETE_HANDLER
)(
1341 IN NDIS_STATUS Status
,
1342 IN NDIS_HANDLE ProtocolPartyContext
,
1343 IN NDIS_HANDLE NdisPartyHandle
,
1344 IN PCO_CALL_PARAMETERS CallParameters
);
1346 typedef VOID (*CL_DROP_PARTY_COMPLETE_HANDLER
)(
1347 IN NDIS_STATUS Status
,
1348 IN NDIS_HANDLE ProtocolPartyContext
);
1350 typedef NDIS_STATUS (*CL_INCOMING_CALL_HANDLER
)(
1351 IN NDIS_HANDLE ProtocolSapContext
,
1352 IN NDIS_HANDLE ProtocolVcContext
,
1353 IN OUT PCO_CALL_PARAMETERS CallParameters
);
1355 typedef VOID (*CL_INCOMING_CALL_QOS_CHANGE_HANDLER
)(
1356 IN NDIS_HANDLE ProtocolVcContext
,
1357 IN PCO_CALL_PARAMETERS CallParameters
);
1359 typedef VOID (*CL_INCOMING_CLOSE_CALL_HANDLER
)(
1360 IN NDIS_STATUS CloseStatus
,
1361 IN NDIS_HANDLE ProtocolVcContext
,
1362 IN PVOID CloseData OPTIONAL
,
1363 IN UINT Size OPTIONAL
);
1365 typedef VOID (*CL_INCOMING_DROP_PARTY_HANDLER
)(
1366 IN NDIS_STATUS DropStatus
,
1367 IN NDIS_HANDLE ProtocolPartyContext
,
1368 IN PVOID CloseData OPTIONAL
,
1369 IN UINT Size OPTIONAL
);
1371 typedef VOID (*CL_CALL_CONNECTED_HANDLER
)(
1372 IN NDIS_HANDLE ProtocolVcContext
);
1375 typedef struct _NDIS_CLIENT_CHARACTERISTICS
1383 CO_CREATE_VC_HANDLER ClCreateVcHandler
;
1384 CO_DELETE_VC_HANDLER ClDeleteVcHandler
;
1385 CO_REQUEST_HANDLER ClRequestHandler
;
1386 CO_REQUEST_COMPLETE_HANDLER ClRequestCompleteHandler
;
1387 CL_OPEN_AF_COMPLETE_HANDLER ClOpenAfCompleteHandler
;
1388 CL_CLOSE_AF_COMPLETE_HANDLER ClCloseAfCompleteHandler
;
1389 CL_REG_SAP_COMPLETE_HANDLER ClRegisterSapCompleteHandler
;
1390 CL_DEREG_SAP_COMPLETE_HANDLER ClDeregisterSapCompleteHandler
;
1391 CL_MAKE_CALL_COMPLETE_HANDLER ClMakeCallCompleteHandler
;
1392 CL_MODIFY_CALL_QOS_COMPLETE_HANDLER ClModifyCallQoSCompleteHandler
;
1393 CL_CLOSE_CALL_COMPLETE_HANDLER ClCloseCallCompleteHandler
;
1394 CL_ADD_PARTY_COMPLETE_HANDLER ClAddPartyCompleteHandler
;
1395 CL_DROP_PARTY_COMPLETE_HANDLER ClDropPartyCompleteHandler
;
1396 CL_INCOMING_CALL_HANDLER ClIncomingCallHandler
;
1397 CL_INCOMING_CALL_QOS_CHANGE_HANDLER ClIncomingCallQoSChangeHandler
;
1398 CL_INCOMING_CLOSE_CALL_HANDLER ClIncomingCloseCallHandler
;
1399 CL_INCOMING_DROP_PARTY_HANDLER ClIncomingDropPartyHandler
;
1400 CL_CALL_CONNECTED_HANDLER ClCallConnectedHandler
;
1401 } NDIS_CLIENT_CHARACTERISTICS
, *PNDIS_CLIENT_CHARACTERISTICS
;
1407 /* NDIS protocol structures */
1409 /* Prototypes for NDIS 3.0 protocol characteristics */
1411 typedef VOID (*OPEN_ADAPTER_COMPLETE_HANDLER
)(
1412 IN NDIS_HANDLE ProtocolBindingContext
,
1413 IN NDIS_STATUS Status
,
1414 IN NDIS_STATUS OpenErrorStatus
);
1416 typedef VOID (*CLOSE_ADAPTER_COMPLETE_HANDLER
)(
1417 IN NDIS_HANDLE ProtocolBindingContext
,
1418 IN NDIS_STATUS Status
);
1420 typedef VOID (*RESET_COMPLETE_HANDLER
)(
1421 IN NDIS_HANDLE ProtocolBindingContext
,
1422 IN NDIS_STATUS Status
);
1424 typedef VOID (*REQUEST_COMPLETE_HANDLER
)(
1425 IN NDIS_HANDLE ProtocolBindingContext
,
1426 IN PNDIS_REQUEST NdisRequest
,
1427 IN NDIS_STATUS Status
);
1429 typedef VOID (*STATUS_HANDLER
)(
1430 IN NDIS_HANDLE ProtocolBindingContext
,
1431 IN NDIS_STATUS GeneralStatus
,
1432 IN PVOID StatusBuffer
,
1433 IN UINT StatusBufferSize
);
1435 typedef VOID (*STATUS_COMPLETE_HANDLER
)(
1436 IN NDIS_HANDLE ProtocolBindingContext
);
1438 typedef VOID (*SEND_COMPLETE_HANDLER
)(
1439 IN NDIS_HANDLE ProtocolBindingContext
,
1440 IN PNDIS_PACKET Packet
,
1441 IN NDIS_STATUS Status
);
1443 typedef VOID (*WAN_SEND_COMPLETE_HANDLER
)(
1444 IN NDIS_HANDLE ProtocolBindingContext
,
1445 IN PNDIS_WAN_PACKET Packet
,
1446 IN NDIS_STATUS Status
);
1448 typedef VOID (*TRANSFER_DATA_COMPLETE_HANDLER
)(
1449 IN NDIS_HANDLE ProtocolBindingContext
,
1450 IN PNDIS_PACKET Packet
,
1451 IN NDIS_STATUS Status
,
1452 IN UINT BytesTransferred
);
1454 typedef VOID (*WAN_TRANSFER_DATA_COMPLETE_HANDLER
)(
1457 typedef NDIS_STATUS (*RECEIVE_HANDLER
)(
1458 IN NDIS_HANDLE ProtocolBindingContext
,
1459 IN NDIS_HANDLE MacReceiveContext
,
1460 IN PVOID HeaderBuffer
,
1461 IN UINT HeaderBufferSize
,
1462 IN PVOID LookAheadBuffer
,
1463 IN UINT LookaheadBufferSize
,
1464 IN UINT PacketSize
);
1466 typedef NDIS_STATUS (*WAN_RECEIVE_HANDLER
)(
1467 IN NDIS_HANDLE NdisLinkHandle
,
1469 IN ULONG PacketSize
);
1471 typedef VOID (*RECEIVE_COMPLETE_HANDLER
)(
1472 IN NDIS_HANDLE ProtocolBindingContext
);
1475 /* Protocol characteristics for NDIS 3.0 protocols */
1476 typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS
1478 UCHAR MajorNdisVersion
;
1479 UCHAR MinorNdisVersion
;
1485 OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler
;
1486 CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler
;
1489 SEND_COMPLETE_HANDLER SendCompleteHandler
;
1490 WAN_SEND_COMPLETE_HANDLER WanSendCompleteHandler
;
1494 TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler
;
1495 WAN_TRANSFER_DATA_COMPLETE_HANDLER WanTransferDataCompleteHandler
;
1498 RESET_COMPLETE_HANDLER ResetCompleteHandler
;
1499 REQUEST_COMPLETE_HANDLER RequestCompleteHandler
;
1502 RECEIVE_HANDLER ReceiveHandler
;
1503 WAN_RECEIVE_HANDLER WanReceiveHandler
;
1505 RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler
;
1506 STATUS_HANDLER StatusHandler
;
1507 STATUS_COMPLETE_HANDLER StatusCompleteHandler
;
1509 } NDIS30_PROTOCOL_CHARACTERISTICS
;
1512 /* Prototypes for NDIS 4.0 protocol characteristics */
1514 typedef INT (*RECEIVE_PACKET_HANDLER
)(
1515 IN NDIS_HANDLE ProtocolBindingContext
,
1516 IN PNDIS_PACKET Packet
);
1518 typedef VOID (*BIND_HANDLER
)(
1519 OUT PNDIS_STATUS Status
,
1520 IN NDIS_HANDLE BindContext
,
1521 IN PNDIS_STRING DeviceName
,
1522 IN PVOID SystemSpecific1
,
1523 IN PVOID SystemSpecific2
);
1525 typedef VOID (*UNBIND_HANDLER
)(
1526 OUT PNDIS_STATUS Status
,
1527 IN NDIS_HANDLE ProtocolBindingContext
,
1528 IN NDIS_HANDLE UnbindContext
);
1530 typedef VOID (*TRANSLATE_HANDLER
)(
1531 OUT PNDIS_STATUS Status
,
1532 IN NDIS_HANDLE ProtocolBindingContext
,
1533 OUT PNET_PNP_ID IdList
,
1534 IN ULONG IdListLength
,
1535 OUT PULONG BytesReturned
);
1537 typedef VOID (*UNLOAD_PROTOCOL_HANDLER
)(
1541 /* Protocol characteristics for NDIS 4.0 protocols */
1543 typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS
1545 NDIS30_PROTOCOL_CHARACTERISTICS
;
1547 RECEIVE_PACKET_HANDLER ReceivePacketHandler
;
1548 BIND_HANDLER BindAdapterHandler
;
1549 UNBIND_HANDLER UnbindAdapterHandler
;
1550 TRANSLATE_HANDLER TranslateHandler
;
1551 UNLOAD_PROTOCOL_HANDLER UnloadHandler
;
1552 } NDIS40_PROTOCOL_CHARACTERISTICS
;
1556 /* Prototypes for NDIS 5.0 protocol characteristics */
1560 typedef VOID (*CO_SEND_COMPLETE_HANDLER
)(
1561 IN NDIS_STATUS Status
,
1562 IN NDIS_HANDLE ProtocolVcContext
,
1563 IN PNDIS_PACKET Packet
);
1565 typedef VOID (*CO_STATUS_HANDLER
)(
1566 IN NDIS_HANDLE ProtocolBindingContext
,
1567 IN NDIS_HANDLE ProtocolVcContext OPTIONAL
,
1568 IN NDIS_STATUS GeneralStatus
,
1569 IN PVOID StatusBuffer
,
1570 IN UINT StatusBufferSize
);
1572 typedef UINT (*CO_RECEIVE_PACKET_HANDLER
)(
1573 IN NDIS_HANDLE ProtocolBindingContext
,
1574 IN NDIS_HANDLE ProtocolVcContext
,
1575 IN PNDIS_PACKET Packet
);
1577 typedef VOID (*CO_AF_REGISTER_NOTIFY_HANDLER
)(
1578 IN NDIS_HANDLE ProtocolBindingContext
,
1579 IN PCO_ADDRESS_FAMILY AddressFamily
);
1582 typedef struct _NDIS50_PROTOCOL_CHARACTERISTICS
1584 NDIS40_PROTOCOL_CHARACTERISTICS
;
1586 PVOID ReservedHandlers
[4];
1588 CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler
;
1589 CO_STATUS_HANDLER CoStatusHandler
;
1590 CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler
;
1591 CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler
;
1592 } NDIS50_PROTOCOL_CHARACTERISTICS
;
1599 typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS NDIS_PROTOCOL_CHARACTERISTICS
;
1601 typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS NDIS_PROTOCOL_CHARACTERISTICS
;
1604 typedef struct _NDIS50_PROTOCOL_CHARACTERISTICS NDIS_PROTOCOL_CHARACTERISTICS
;
1607 typedef NDIS_PROTOCOL_CHARACTERISTICS
*PNDIS_PROTOCOL_CHARACTERISTICS
;
1611 /* Buffer management routines */
1616 OUT PNDIS_STATUS Status
,
1617 OUT PNDIS_BUFFER
*Buffer
,
1618 IN NDIS_HANDLE PoolHandle
,
1619 IN PVOID VirtualAddress
,
1624 NdisAllocateBufferPool(
1625 OUT PNDIS_STATUS Status
,
1626 OUT PNDIS_HANDLE PoolHandle
,
1627 IN UINT NumberOfDescriptors
);
1632 OUT PNDIS_STATUS Status
,
1633 OUT PNDIS_PACKET
*Packet
,
1634 IN NDIS_HANDLE PoolHandle
);
1638 NdisAllocatePacketPool(
1639 OUT PNDIS_STATUS Status
,
1640 OUT PNDIS_HANDLE PoolHandle
,
1641 IN UINT NumberOfDescriptors
,
1642 IN UINT ProtocolReservedLength
);
1647 OUT PNDIS_STATUS Status
,
1648 OUT PNDIS_BUFFER
*Buffer
,
1649 IN NDIS_HANDLE PoolHandle
,
1650 IN PVOID MemoryDescriptor
,
1656 NdisCopyFromPacketToPacket(
1657 IN PNDIS_PACKET Destination
,
1658 IN UINT DestinationOffset
,
1659 IN UINT BytesToCopy
,
1660 IN PNDIS_PACKET Source
,
1661 IN UINT SourceOffset
,
1662 OUT PUINT BytesCopied
);
1666 NdisDprAllocatePacket(
1667 OUT PNDIS_STATUS Status
,
1668 OUT PNDIS_PACKET
*Packet
,
1669 IN NDIS_HANDLE PoolHandle
);
1673 NdisDprAllocatePacketNonInterlocked(
1674 OUT PNDIS_STATUS Status
,
1675 OUT PNDIS_PACKET
*Packet
,
1676 IN NDIS_HANDLE PoolHandle
);
1681 IN PNDIS_PACKET Packet
);
1685 NdisDprFreePacketNonInterlocked(
1686 IN PNDIS_PACKET Packet
);
1691 IN NDIS_HANDLE PoolHandle
);
1696 IN PNDIS_PACKET Packet
);
1701 IN NDIS_HANDLE PoolHandle
);
1706 IN PNDIS_PACKET
*PacketsToReturn
,
1707 IN UINT NumberOfPackets
);
1711 NdisUnchainBufferAtBack(
1712 IN OUT PNDIS_PACKET Packet
,
1713 OUT PNDIS_BUFFER
*Buffer
);
1717 NdisUnchainBufferAtFront(
1718 IN OUT PNDIS_PACKET Packet
,
1719 OUT PNDIS_BUFFER
*Buffer
);
1721 #if BINARY_COMPATIBLE
1725 NdisAdjustBufferLength(
1726 IN PNDIS_BUFFER Buffer
,
1731 NDIS_BUFFER_TO_SPAN_PAGES(
1732 IN PNDIS_BUFFER Buffer
);
1737 IN PNDIS_BUFFER Buffer
);
1741 NdisGetBufferPhysicalArraySize(
1742 IN PNDIS_BUFFER Buffer
,
1743 OUT PUINT ArraySize
);
1747 NdisGetFirstBufferFromPacket(
1748 IN PNDIS_PACKET _Packet
,
1749 OUT PNDIS_BUFFER
*_FirstBuffer
,
1750 OUT PVOID
*_FirstBufferVA
,
1751 OUT PUINT _FirstBufferLength
,
1752 OUT PUINT _TotalBufferLength
);
1757 IN PNDIS_BUFFER Buffer
,
1758 OUT PVOID
*VirtualAddress OPTIONAL
,
1763 NdisQueryBufferOffset(
1764 IN PNDIS_BUFFER Buffer
,
1768 #else /* BINARY_COMPATIBLE */
1771 * PVOID NdisAdjustBufferLength(
1772 * IN PNDIS_BUFFER Buffer,
1775 #define NdisAdjustBufferLength(Buffer, \
1778 (Buffer)->ByteCount = (Length); \
1783 * ULONG NDIS_BUFFER_TO_SPAN_PAGES(
1784 * IN PNDIS_BUFFER Buffer);
1786 #define NDIS_BUFFER_TO_SPAN_PAGES(Buffer) \
1788 MmGetMdlByteCount(Buffer) == 0 ? \
1790 ADDRESS_AND_SIZE_TO_SPAN_PAGES( \
1791 MmGetMdlVirtualAddress(Buffer), \
1792 MmGetMdlByteCount(Buffer)) \
1799 * VOID NdisFreeBuffer(
1800 * IN PNDIS_BUFFER Buffer);
1802 #define NdisFreeBuffer(Buffer) \
1804 IoFreeMdl(Buffer) /* ??? */ \
1812 IN PNDIS_BUFFER Buffer
);
1818 * VOID NdisGetBufferPhysicalArraySize(
1819 * IN PNDIS_BUFFER Buffer,
1820 * OUT PUINT ArraySize);
1822 #define NdisGetBufferPhysicalArraySize(Buffer, \
1829 * VOID NdisGetFirstBufferFromPacket(
1830 * IN PNDIS_PACKET _Packet,
1831 * OUT PNDIS_BUFFER * _FirstBuffer,
1832 * OUT PVOID * _FirstBufferVA,
1833 * OUT PUINT _FirstBufferLength,
1834 * OUT PUINT _TotalBufferLength)
1836 #define NdisGetFirstBufferFromPacket(Packet, \
1839 FirstBufferLength, \
1840 TotalBufferLength) \
1842 PNDIS_BUFFER _Buffer; \
1844 _Buffer = (Packet)->Private.Head; \
1845 *(FirstBuffer) = _Buffer; \
1846 *(FirstBufferVA) = MmGetMdlVirtualAddress(_Buffer); \
1847 if (_Buffer != NULL) { \
1848 *(FirstBufferLength) = MmGetMdlByteCount(_Buffer); \
1849 _Buffer = _Buffer->Next; \
1851 *(FirstBufferLength) = 0; \
1852 *(TotalBufferLength) = *(FirstBufferLength); \
1853 while (_Buffer != NULL) { \
1854 *(TotalBufferLength) += MmGetMdlByteCount(_Buffer); \
1855 _Buffer = _Buffer->Next; \
1860 * VOID NdisQueryBuffer(
1861 * IN PNDIS_BUFFER Buffer,
1862 * OUT PVOID *VirtualAddress OPTIONAL,
1865 #define NdisQueryBuffer(Buffer, \
1869 if (VirtualAddress != NULL) \
1870 *(PVOID*)(VirtualAddress) = MmGetSystemAddressForMdl(Buffer); \
1872 *(Length) = MmGetMdlByteCount(Buffer); \
1877 * VOID NdisQueryBufferOffset(
1878 * IN PNDIS_BUFFER Buffer,
1880 * OUT PUINT Length);
1882 #define NdisQueryBufferOffset(Buffer, \
1886 *(PUINT)(Offset) = MmGetMdlByteOffset(Buffer); \
1887 *(PUINT)(Length) = MmGetMdlByteCount(Buffer); \
1890 #endif /* BINARY_COMPATIBLE */
1894 * PVOID NDIS_BUFFER_LINKAGE(
1895 * IN PNDIS_BUFFER Buffer);
1897 #define NDIS_BUFFER_LINKAGE(Buffer) \
1904 * VOID NdisChainBufferAtBack(
1905 * IN OUT PNDIS_PACKET Packet,
1906 * IN OUT PNDIS_BUFFER Buffer)
1908 #define NdisChainBufferAtBack(Packet, \
1911 PNDIS_BUFFER NdisBuffer = (Buffer); \
1913 while (NdisBuffer->Next != NULL) \
1914 NdisBuffer = NdisBuffer->Next; \
1916 NdisBuffer->Next = NULL; \
1918 if ((Packet)->Private.Head != NULL) \
1919 (Packet)->Private.Tail->Next = (Buffer); \
1921 (Packet)->Private.Head = (Buffer); \
1923 (Packet)->Private.Tail = NdisBuffer; \
1924 (Packet)->Private.ValidCounts = FALSE; \
1929 * VOID NdisChainBufferAtFront(
1930 * IN OUT PNDIS_PACKET Packet,
1931 * IN OUT PNDIS_BUFFER Buffer)
1933 #define NdisChainBufferAtFront(Packet, \
1936 PNDIS_BUFFER _NdisBuffer = (Buffer); \
1938 while (_NdisBuffer->Next != NULL) \
1939 _NdisBuffer = _NdisBuffer->Next; \
1941 if ((Packet)->Private.Head == NULL) \
1942 (Packet)->Private.Tail = _NdisBuffer; \
1944 _NdisBuffer->Next = (Packet)->Private.Head; \
1945 (Packet)->Private.Head = (Buffer); \
1946 (Packet)->Private.ValidCounts = FALSE; \
1951 * VOID NdisGetNextBuffer(
1952 * IN PNDIS_BUFFER CurrentBuffer,
1953 * OUT PNDIS_BUFFER * NextBuffer)
1955 #define NdisGetNextBuffer(CurrentBuffer, \
1958 *(NextBuffer) = (CurrentBuffer)->Next; \
1963 * UINT NdisGetPacketFlags(
1964 * IN PNDIS_PACKET Packet);
1966 #define NdisGetPacketFlags(Packet) \
1968 (Packet)->Private.Flags; \
1973 * UINT NDIS_GET_PACKET_HEADER_SIZE(
1974 * IN PNDIS_PACKET Packet);
1976 #define NDIS_GET_PACKET_HEADER_SIZE(Packet) \
1982 * VOID NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(
1983 * IN PNDIS_PACKET Packet,
1984 * IN PPVOID pMediaSpecificInfo,
1985 * IN PUINT pSizeMediaSpecificInfo);
1987 #define NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(Packet, \
1988 pMediaSpecificInfo, \
1989 pSizeMediaSpecificInfo) \
1995 * VOID NDIS_STATUS NDIS_GET_PACKET_STATUS(
1996 * IN PNDIS_PACKET Packet);
1998 #define NDIS_GET_PACKET_STATUS (Packet) \
2004 * ULONGLONG NDIS_GET_PACKET_TIME_RECEIVED(
2005 * IN PNDIS_PACKET Packet);
2007 #define NDIS_GET_PACKET_TIME_RECEIVED(Packet) \
2013 * ULONGLONG NDIS_GET_PACKET_TIME_SENT(
2014 * IN PNDIS_PACKET Packet);
2016 #define NDIS_GET_PACKET_TIME_SENT(Packet) \
2022 * ULONGLONG NDIS_GET_PACKET_TIME_TO_SEND(
2023 * IN PNDIS_PACKET Packet);
2025 #define NDIS_GET_PACKET_TIME_TO_SEND(Packet) \
2031 * PNDIS_PACKET_OOB_DATA NDIS_OOB_DATA_FROM_PACKET(
2032 * IN PNDIS_PACKET _Packet);
2034 #define NDIS_OOB_DATA_FROM_PACKET(_Packet) \
2040 * VOID NdisQueryPacket(
2041 * IN PNDIS_PACKET Packet,
2042 * OUT PUINT PhysicalBufferCount OPTIONAL,
2043 * OUT PUINT BufferCount OPTIONAL,
2044 * OUT PNDIS_BUFFER *FirstBuffer OPTIONAL,
2045 * OUT PUINT TotalPacketLength OPTIONAL);
2047 #define NdisQueryPacket(Packet, \
2048 PhysicalBufferCount, \
2051 TotalPacketLength) \
2053 if ((FirstBuffer) != NULL) \
2054 *(FirstBuffer) = (Packet)->Private.Head; \
2055 if ((TotalPacketLength) || (BufferCount) || (PhysicalBufferCount)) { \
2056 if (!(Packet)->Private.ValidCounts) { \
2058 UINT _PacketLength; \
2059 PNDIS_BUFFER _NdisBuffer; \
2060 UINT _PhysicalBufferCount = 0; \
2061 UINT _TotalPacketLength = 0; \
2064 for (_NdisBuffer = (Packet)->Private.Head; \
2065 _NdisBuffer != (PNDIS_BUFFER)NULL; \
2066 _NdisBuffer = _NdisBuffer->Next) { \
2067 _PhysicalBufferCount += NDIS_BUFFER_TO_SPAN_PAGES(_NdisBuffer); \
2068 NdisQueryBufferOffset(_NdisBuffer, &_Offset, &_PacketLength); \
2069 _TotalPacketLength += _PacketLength; \
2072 (Packet)->Private.PhysicalCount = _PhysicalBufferCount; \
2073 (Packet)->Private.TotalLength = _TotalPacketLength; \
2074 (Packet)->Private.Count = _Count; \
2075 (Packet)->Private.ValidCounts = TRUE; \
2078 if (PhysicalBufferCount) \
2079 *(PUINT)(PhysicalBufferCount) = (Packet)->Private.PhysicalCount; \
2082 *(PUINT)(BufferCount) = (Packet)->Private.Count; \
2084 if (TotalPacketLength) \
2085 *(PUINT)(TotalPacketLength) = (Packet)->Private.TotalLength; \
2090 * VOID NdisRecalculatePacketCounts(
2091 * IN OUT PNDIS_PACKET Packet);
2093 #define NdisRecalculatePacketCounts(Packet) \
2099 * VOID NdisReinitializePacket(
2100 * IN OUT PNDIS_PACKET Packet);
2102 #define NdisReinitializePacketCounts(Packet) \
2108 * VOID NdisSetPacketFlags(
2109 * IN PNDIS_PACKET Packet,
2112 #define NdisSetPacketFlags(Packet, Flags) \
2113 (Packet)->Private.Flags = (Flags);
2117 * NDIS_SET_PACKET_HEADER_SIZE(
2118 * IN PNDIS_PACKET Packet,
2121 #define NDIS_SET_PACKET_HEADER_SIZE(Packet, \
2128 * NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(
2129 * IN PNDIS_PACKET Packet,
2130 * IN PVOID MediaSpecificInfo,
2131 * IN UINT SizeMediaSpecificInfo);
2133 #define NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(Packet, \
2134 MediaSpecificInfo, \
2135 SizeMediaSpecificInfo) \
2141 * NDIS_SET_PACKET_STATUS(
2142 * IN PNDIS_PACKET Packet,
2143 * IN NDIS_STATUS Status);
2145 #define NDIS_SET_PACKET_STATUS(Packet, \
2152 * NDIS_SET_PACKET_TIME_RECEIVED(
2153 * IN PNDIS_PACKET Packet,
2154 * IN ULONGLONG TimeReceived);
2156 #define NDIS_SET_PACKET_TIME_RECEIVED(Packet) \
2163 * NDIS_SET_PACKET_TIME_SENT(
2164 * IN PNDIS_PACKET Packet,
2165 * IN ULONGLONG TimeSent);
2167 #define NDIS_SET_PACKET_TIME_SENT(Packet, \
2175 * NDIS_SET_PACKET_TIME_TO_SEND(
2176 * IN PNDIS_PACKET Packet,
2177 * IN ULONGLONG TimeToSend);
2179 #define NDIS_SET_PACKET_TIME_TO_SEND(Packet, \
2186 * VOID NdisSetSendFlags(
2187 * IN PNDIS_PACKET Packet,
2190 #define NdisSetSendFlags(Packet, Flags)( \
2191 NdisSetPacketFlags((Packet), (Flags)))
2195 /* Memory management routines */
2199 NdisCreateLookaheadBufferFromSharedMemory(
2200 IN PVOID pSharedMemory
,
2201 IN UINT LookaheadLength
,
2202 OUT PVOID
*pLookaheadBuffer
);
2206 NdisDestroyLookaheadBufferFromSharedMemory(
2207 IN PVOID pLookaheadBuffer
);
2211 NdisMoveFromMappedMemory(
2212 OUT PVOID Destination
,
2218 NdisMoveMappedMemory(
2219 OUT PVOID Destination
,
2225 NdisMoveToMappedMemory(
2226 OUT PVOID Destination
,
2232 NdisMUpdateSharedMemory(
2233 IN NDIS_HANDLE MiniportAdapterHandle
,
2235 IN PVOID VirtualAddress
,
2236 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
2241 OUT PVOID
*VirtualAddress
,
2243 IN UINT MemoryFlags
,
2244 IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress
);
2249 IN PVOID VirtualAddress
,
2251 IN UINT MemoryFlags
);
2255 NdisImmediateReadSharedMemory(
2256 IN NDIS_HANDLE WrapperConfigurationContext
,
2257 IN ULONG SharedMemoryAddress
,
2263 NdisImmediateWriteSharedMemory(
2264 IN NDIS_HANDLE WrapperConfigurationContext
,
2265 IN ULONG SharedMemoryAddress
,
2271 NdisMAllocateSharedMemory(
2272 IN NDIS_HANDLE MiniportAdapterHandle
,
2275 OUT PVOID
*VirtualAddress
,
2276 OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress
);
2280 NdisMAllocateSharedMemoryAsync(
2281 IN NDIS_HANDLE MiniportAdapterHandle
,
2288 NdisMFreeSharedMemory(
2289 IN NDIS_HANDLE MiniportAdapterHandle
,
2292 IN PVOID VirtualAddress
,
2293 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
2297 NdisUpdateSharedMemory(
2298 IN NDIS_HANDLE NdisAdapterHandle
,
2300 IN PVOID VirtualAddress
,
2301 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
2305 * ULONG NdisGetPhysicalAddressHigh(
2306 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
2308 #define NdisGetPhysicalAddressHigh(PhysicalAddress) \
2309 ((PhysicalAddress).HighPart)
2312 * VOID NdisSetPhysicalAddressHigh(
2313 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
2316 #define NdisSetPhysicalAddressHigh(PhysicalAddress, Value) \
2317 ((PhysicalAddress).HighPart) = (Value)
2320 * ULONG NdisGetPhysicalAddressLow(
2321 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
2323 #define NdisGetPhysicalAddressLow(PhysicalAddress) \
2324 ((PhysicalAddress).LowPart)
2328 * VOID NdisSetPhysicalAddressLow(
2329 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
2332 #define NdisSetPhysicalAddressLow(PhysicalAddress, Value) \
2333 ((PhysicalAddress).LowPart) = (Value)
2336 * VOID NDIS_PHYSICAL_ADDRESS_CONST(
2340 #define NDIS_PHYSICAL_ADDRESS_CONST(Low, High) \
2341 { {(ULONG)(Low), (LONG)(High)} }
2345 * VOID NdisMoveMemory(
2346 * OUT PVOID Destination,
2350 #define NdisMoveMemory(Destination, Source, Length) \
2351 RtlCopyMemory(Destination, Source, Length)
2355 * VOID NdisRetrieveUlong(
2356 * IN PULONG DestinationAddress,
2357 * IN PULONG SourceAddress);
2359 #define NdisRetrieveUlong(DestinationAddress, SourceAddress) \
2360 RtlRetrieveUlong(DestinationAddress, SourceAddress)
2364 * VOID NdisStoreUlong(
2365 * IN PULONG DestinationAddress,
2368 #define NdisStoreUlong(DestinationAddress, Value) \
2369 RtlStoreUlong(DestinationAddress, Value)
2373 * VOID NdisZeroMemory(
2374 * IN PVOID Destination,
2377 #define NdisZeroMemory(Destination, Length) \
2378 RtlZeroMemory(Destination, Length)
2382 /* String management routines */
2384 #if BINARY_COMPATIBLE
2388 NdisAnsiStringToUnicodeString(
2389 IN OUT PNDIS_STRING DestinationString
,
2390 IN PNDIS_ANSI_STRING SourceString
);
2395 IN PNDIS_STRING String1
,
2396 IN PNDIS_STRING String2
,
2397 IN BOOLEAN CaseInsensitive
);
2402 IN OUT PNDIS_ANSI_STRING DestinationString
,
2403 IN PCSTR SourceString
);
2407 NdisInitUnicodeString(
2408 IN OUT PNDIS_STRING DestinationString
,
2409 IN PCWSTR SourceString
);
2413 NdisUnicodeStringToAnsiString(
2414 IN OUT PNDIS_ANSI_STRING DestinationString
,
2415 IN PNDIS_STRING SourceString
);
2417 #else /* BINARY_COMPATIBLE */
2420 * NDIS_STATUS NdisAnsiStringToUnicodeString(
2421 * IN OUT PNDIS_STRING DestinationString,
2422 * IN PNDIS_ANSI_STRING SourceString);
2424 #define NdisAnsiStringToUnicodeString(DestinationString, \
2426 RtlAnsiStringToUnicodeString((DestinationString), (SourceString), FALSE)
2429 * BOOLEAN NdisEqualString(
2430 * IN PNDIS_STRING String1,
2431 * IN PNDIS_STRING String2,
2432 * IN BOOLEAN CaseInsensitive)
2434 #define NdisEqualString(String1, \
2437 RtlEqualUnicodeString((String1), (String2), (CaseInsensitive))
2440 * VOID NdisInitAnsiString(
2441 * IN OUT PNDIS_ANSI_STRING DestinationString,
2442 * IN PCSTR SourceString)
2444 #define NdisInitAnsiString(DestinationString, \
2446 RtlInitString((DestinationString), (SourceString))
2449 * VOID NdisInitUnicodeString(
2450 * IN OUT PNDIS_STRING DestinationString,
2451 * IN PCWSTR SourceString)
2453 #define NdisInitUnicodeString(DestinationString, \
2455 RtlInitUnicodeString((DestinationString), (SourceString))
2458 * NDIS_STATUS NdisUnicodeStringToAnsiString(
2459 * IN OUT PNDIS_ANSI_STRING DestinationString,
2460 * IN PNDIS_STRING SourceString)
2462 #define NdisUnicodeStringToAnsiString(DestinationString, \
2464 RtlUnicodeStringToAnsiString((DestinationString), (SourceString), FALSE)
2466 #endif /* BINARY_COMPATIBLE */
2468 #define NdisFreeString(_s) NdisFreeMemory((s).Buffer, (s).MaximumLength, 0)
2469 #define NdisPrintString(_s) DbgPrint("%ls", (s).Buffer)
2476 * VOID NdisRawReadPortBufferUchar(
2478 * OUT PUCHAR Buffer,
2481 #define NdisRawReadPortBufferUchar(Port, Buffer, Length) \
2482 READ_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length))
2485 * VOID NdisRawReadPortBufferUlong(
2487 * OUT PULONG Buffer,
2490 #define NdisRawReadPortBufferUlong(Port, Buffer, Length) \
2491 READ_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length))
2494 * VOID NdisRawReadPortBufferUshort(
2496 * OUT PUSHORT Buffer,
2499 #define NdisRawReadPortBufferUshort(Port, Buffer, Length) \
2500 READ_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length))
2504 * VOID NdisRawReadPortUchar(
2508 #define NdisRawReadPortUchar(Port, Data) \
2509 *(Data) = READ_PORT_UCHAR((PUCHAR)(Port))
2512 * VOID NdisRawReadPortUlong(
2516 #define NdisRawReadPortUlong(Port, Data) \
2517 *(Data) = READ_PORT_ULONG((PULONG)(Port))
2520 * VOID NdisRawReadPortUshort(
2522 * OUT PUSHORT Data);
2524 #define NdisRawReadPortUshort(Port, Data) \
2525 *(Data) = READ_PORT_USHORT((PUSHORT)(Port))
2529 * VOID NdisRawWritePortBufferUchar(
2534 #define NdisRawWritePortBufferUchar(Port, Buffer, Length) \
2535 WRITE_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length))
2538 * VOID NdisRawWritePortBufferUlong(
2543 #define NdisRawWritePortBufferUlong(Port, Buffer, Length) \
2544 WRITE_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length))
2547 * VOID NdisRawWritePortBufferUshort(
2549 * IN PUSHORT Buffer,
2552 #define NdisRawWritePortBufferUshort(Port, Buffer, Length) \
2553 WRITE_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length))
2557 * VOID NdisRawWritePortUchar(
2561 #define NdisRawWritePortUchar(Port, Data) \
2562 WRITE_PORT_UCHAR((PUCHAR)(Port), (UCHAR)(Data))
2565 * VOID NdisRawWritePortUlong(
2569 #define NdisRawWritePortUlong(Port, Data) \
2570 WRITE_PORT_ULONG((PULONG)(Port), (ULONG)(Data))
2573 * VOID NdisRawWritePortUshort(
2577 #define NdisRawWritePortUshort(Port, Data) \
2578 WRITE_PORT_USHORT((PUSHORT)(Port), (USHORT)(Data))
2582 * VOID NdisReadRegisterUchar(
2583 * IN PUCHAR Register,
2586 #define NdisReadRegisterUchar(Register, Data) \
2587 *((PUCHAR)(Data)) = *(Register)
2590 * VOID NdisReadRegisterUlong(
2591 * IN PULONG Register,
2594 #define NdisReadRegisterUlong(Register, Data) \
2595 *((PULONG)(Data)) = *(Register)
2598 * VOID NdisReadRegisterUshort(
2599 * IN PUSHORT Register,
2600 * OUT PUSHORT Data);
2602 #define NdisReadRegisterUshort(Register, Data) \
2603 *((PUSHORT)(Data)) = *(Register)
2607 * VOID NdisReadRegisterUchar(
2608 * IN PUCHAR Register,
2611 #define NdisWriteRegisterUchar(Register, Data) \
2612 WRITE_REGISTER_UCHAR((Register), (Data))
2615 * VOID NdisReadRegisterUlong(
2616 * IN PULONG Register,
2619 #define NdisWriteRegisterUlong(Register, Data) \
2620 WRITE_REGISTER_ULONG((Register), (Data))
2623 * VOID NdisReadRegisterUshort(
2624 * IN PUSHORT Register,
2627 #define NdisWriteRegisterUshort(Register, Data) \
2628 WRITE_REGISTER_USHORT((Register), (Data))
2635 OUT PNDIS_STATUS Status
,
2636 IN NDIS_HANDLE NdisBindingHandle
);
2640 NdisCloseConfiguration(
2641 IN NDIS_HANDLE ConfigurationHandle
);
2645 NdisCompleteBindAdapter(
2646 IN NDIS_HANDLE BindAdapterContext
,
2647 IN NDIS_STATUS Status
,
2648 IN NDIS_STATUS OpenStatus
);
2652 NdisCompleteUnbindAdapter(
2653 IN NDIS_HANDLE UnbindAdapterContext
,
2654 IN NDIS_STATUS Status
);
2658 NdisDeregisterProtocol(
2659 OUT PNDIS_STATUS Status
,
2660 IN NDIS_HANDLE NdisProtocolHandle
);
2664 NdisInitializeListHead(
2665 IN PLIST_ENTRY ListHead
);
2669 NdisInterlockedAddUlong(
2672 IN PNDIS_SPIN_LOCK SpinLock
);
2676 NdisInterlockedInsertHeadList(
2677 IN PLIST_ENTRY ListHead
,
2678 IN PLIST_ENTRY ListEntry
,
2679 IN PNDIS_SPIN_LOCK SpinLock
);
2683 NdisInterlockedInsertTailList(
2684 IN PLIST_ENTRY ListHead
,
2685 IN PLIST_ENTRY ListEntry
,
2686 IN PNDIS_SPIN_LOCK SpinLock
);
2690 NdisInterlockedRemoveHeadList(
2691 IN PLIST_ENTRY ListHead
,
2692 IN PNDIS_SPIN_LOCK SpinLock
);
2697 OUT PNDIS_STATUS Status
,
2698 OUT PNDIS_STATUS OpenErrorStatus
,
2699 OUT PNDIS_HANDLE NdisBindingHandle
,
2700 OUT PUINT SelectedMediumIndex
,
2701 IN PNDIS_MEDIUM MediumArray
,
2702 IN UINT MediumArraySize
,
2703 IN NDIS_HANDLE NdisProtocolHandle
,
2704 IN NDIS_HANDLE ProtocolBindingContext
,
2705 IN PNDIS_STRING AdapterName
,
2706 IN UINT OpenOptions
,
2707 IN PSTRING AddressingInformation
);
2711 NdisOpenProtocolConfiguration(
2712 OUT PNDIS_STATUS Status
,
2713 OUT PNDIS_HANDLE ConfigurationHandle
,
2714 IN PNDIS_STRING ProtocolSection
);
2718 NdisQueryReceiveInformation(
2719 IN NDIS_HANDLE NdisBindingHandle
,
2720 IN NDIS_HANDLE MacContext
,
2721 OUT PLONGLONG TimeSent OPTIONAL
,
2722 OUT PLONGLONG TimeReceived OPTIONAL
,
2725 OUT PUINT SizeNeeded
);
2729 NdisReadConfiguration(
2730 OUT PNDIS_STATUS Status
,
2731 OUT PNDIS_CONFIGURATION_PARAMETER
*ParameterValue
,
2732 IN NDIS_HANDLE ConfigurationHandle
,
2733 IN PNDIS_STRING Keyword
,
2734 IN NDIS_PARAMETER_TYPE ParameterType
);
2738 NdisRegisterProtocol(
2739 OUT PNDIS_STATUS Status
,
2740 OUT PNDIS_HANDLE NdisProtocolHandle
,
2741 IN PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics
,
2742 IN UINT CharacteristicsLength
);
2747 OUT PNDIS_STATUS Status
,
2748 IN NDIS_HANDLE NdisBindingHandle
,
2749 IN PNDIS_REQUEST NdisRequest
);
2754 OUT PNDIS_STATUS Status
,
2755 IN NDIS_HANDLE NdisBindingHandle
);
2760 IN PNDIS_PACKET
*PacketsToReturn
,
2761 IN UINT NumberOfPackets
);
2766 OUT PNDIS_STATUS Status
,
2767 IN NDIS_HANDLE NdisBindingHandle
,
2768 IN PNDIS_PACKET Packet
);
2773 IN NDIS_HANDLE NdisBindingHandle
,
2774 IN PPNDIS_PACKET PacketArray
,
2775 IN UINT NumberOfPackets
);
2780 OUT PNDIS_STATUS Status
,
2781 IN NDIS_HANDLE NdisBindingHandle
,
2782 IN NDIS_HANDLE MacReceiveContext
,
2784 IN UINT BytesToTransfer
,
2785 IN OUT PNDIS_PACKET Packet
,
2786 OUT PUINT BytesTransferred
);
2790 NdisWriteConfiguration(
2791 OUT PNDIS_STATUS Status
,
2792 IN NDIS_HANDLE WrapperConfigurationContext
,
2793 IN PNDIS_STRING Keyword
,
2794 IN PNDIS_CONFIGURATION_PARAMETER
*ParameterValue
);
2799 NdisWriteErrorLogEntry(
2800 IN NDIS_HANDLE NdisAdapterHandle,
2801 IN NDIS_ERROR_CODE ErrorCode,
2802 IN ULONG NumberOfErrorValues,
2809 * VOID NdisStallExecution(
2810 * IN UINT MicrosecondsToStall)
2812 #define NdisStallExecution(MicroSecondsToStall) \
2813 KeStallExecutionProcessor(MicroSecondsToStall)
2817 /* NDIS helper macros */
2820 * NDIS_INIT_FUNCTION(FunctionName)
2822 #define NDIS_INIT_FUNCTION(FunctionName) \
2823 alloc_text(init, FunctionName)
2826 * NDIS_PAGABLE_FUNCTION(FunctionName)
2828 #define NDIS_PAGABLE_FUNCTION(FunctionName) \
2829 alloc_text(page, FunctionName)
2833 /* NDIS 4.0 extensions */
2839 NdisMFreeSharedMemory(
2840 IN NDIS_HANDLE MiniportAdapterHandle
,
2843 IN PVOID VirtualAddress
,
2844 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
2848 NdisMWanIndicateReceive(
2849 OUT PNDIS_STATUS Status
,
2850 IN NDIS_HANDLE MiniportAdapterHandle
,
2851 IN NDIS_HANDLE NdisLinkContext
,
2852 IN PUCHAR PacketBuffer
,
2853 IN UINT PacketSize
);
2857 NdisMWanIndicateReceiveComplete(
2858 IN NDIS_HANDLE MiniportAdapterHandle
);
2862 NdisMWanSendComplete(
2863 IN NDIS_HANDLE MiniportAdapterHandle
,
2864 IN PNDIS_WAN_PACKET Packet
,
2865 IN NDIS_STATUS Status
);
2869 NdisPciAssignResources(
2870 IN NDIS_HANDLE NdisMacHandle
,
2871 IN NDIS_HANDLE NdisWrapperHandle
,
2872 IN NDIS_HANDLE WrapperConfigurationContext
,
2873 IN ULONG SlotNumber
,
2874 OUT PNDIS_RESOURCE_LIST
*AssignedResources
);
2878 NdisReadEisaSlotInformationEx(
2879 OUT PNDIS_STATUS Status
,
2880 IN NDIS_HANDLE WrapperConfigurationContext
,
2881 OUT PUINT SlotNumber
,
2882 OUT PNDIS_EISA_FUNCTION_INFORMATION
*EisaData
,
2883 OUT PUINT NumberOfFunctions
);
2887 NdisReadMcaPosInformation(
2888 OUT PNDIS_STATUS Status
,
2889 IN NDIS_HANDLE WrapperConfigurationContext
,
2890 IN PUINT ChannelNumber
,
2891 OUT PNDIS_MCA_POS_DATA McaData
);
2897 /* NDIS 5.0 extensions */
2903 NdisAcquireReadWriteLock(
2904 IN PNDIS_RW_LOCK Lock
,
2906 IN PLOCK_STATE LockState
);
2910 NdisAllocateMemoryWithTag(
2911 OUT PVOID
*VirtualAddress
,
2917 NdisAllocatePacketPoolEx(
2918 OUT PNDIS_STATUS Status
,
2919 OUT PNDIS_HANDLE PoolHandle
,
2920 IN UINT NumberOfDescriptors
,
2921 IN UINT NumberOfOverflowDescriptors
,
2922 IN UINT ProtocolReservedLength
);
2927 IN PNDIS_BUFFER Buffer
);
2931 NdisBufferVirtualAddress(
2932 IN PNDIS_BUFFER Buffer
);
2936 NdisCompletePnPEvent(
2937 IN NDIS_STATUS Status
,
2938 IN NDIS_HANDLE NdisBindingHandle
,
2939 IN PNET_PNP_EVENT NetPnPEvent
);
2943 NdisConvertStringToAtmAddress(
2944 OUT PNDIS_STATUS Status
,
2945 IN PNDIS_STRING String
,
2946 OUT PATM_ADDRESS AtmAddress
);
2950 NdisGetCurrentProcessorCounts(
2951 OUT PULONG pIdleCount
,
2952 OUT PULONG pKernelAndUser
,
2957 NdisGetDriverHandle(
2958 IN PNDIS_HANDLE NdisBindingHandle
,
2959 OUT PNDIS_HANDLE NdisDriverHandle
);
2963 NdisGetReceivedPacket(
2964 IN PNDIS_HANDLE NdisBindingHandle
,
2965 IN PNDIS_HANDLE MacContext
);
2969 NdisGetSystemUptime(
2970 OUT PULONG pSystemUpTime
);
2974 NdisInitializeReadWriteLock(
2975 IN PNDIS_RW_LOCK Lock
);
2979 NdisInterlockedDecrement(
2984 NdisInterlockedIncrement(
2989 NdisInterlockedPopEntrySList(
2990 IN PSLIST_HEADER ListHead
,
2991 IN PKSPIN_LOCK Lock
);
2995 NdisInterlockedPushEntrySList(
2996 IN PSLIST_HEADER ListHead
,
2997 IN PSINGLE_LIST_ENTRY ListEntry
,
2998 IN PKSPIN_LOCK Lock
);
3003 NdisMDeregisterDevice(
3004 IN NDIS_HANDLE NdisDeviceHandle
);
3008 NdisMGetDeviceProperty(
3009 IN NDIS_HANDLE MiniportAdapterHandle
,
3010 IN OUT PDEVICE_OBJECT
*PhysicalDeviceObject OPTIONAL
,
3011 IN OUT PDEVICE_OBJECT
*FunctionalDeviceObject OPTIONAL
,
3012 IN OUT PDEVICE_OBJECT
*NextDeviceObject OPTIONAL
,
3013 IN OUT PCM_RESOURCE_LIST
*AllocatedResources OPTIONAL
,
3014 IN OUT PCM_RESOURCE_LIST
*AllocatedResourcesTranslated OPTIONAL
);
3018 NdisMInitializeScatterGatherDma(
3019 IN NDIS_HANDLE MiniportAdapterHandle
,
3020 IN BOOLEAN Dma64BitAddresses
,
3021 IN ULONG MaximumPhysicalMapping
);
3025 NdisMPromoteMiniport(
3026 IN NDIS_HANDLE MiniportAdapterHandle
);
3030 NdisMQueryAdapterInstanceName(
3031 OUT PNDIS_STRING AdapterInstanceName
,
3032 IN NDIS_HANDLE MiniportAdapterHandle
);
3036 NdisMRegisterDevice(
3037 IN NDIS_HANDLE NdisWrapperHandle
,
3038 IN PNDIS_STRING DeviceName
,
3039 IN PNDIS_STRING SymbolicName
,
3040 IN PDRIVER_DISPATCH MajorFunctions
[],
3041 OUT PDEVICE_OBJECT
*pDeviceObject
,
3042 OUT NDIS_HANDLE
*NdisDeviceHandle
);
3046 NdisMRegisterUnloadHandler(
3047 IN NDIS_HANDLE NdisWrapperHandle
,
3048 IN PDRIVER_UNLOAD UnloadHandler
);
3052 NdisMRemoveMiniport(
3053 IN NDIS_HANDLE MiniportAdapterHandle
);
3057 NdisMSetMiniportSecondary(
3058 IN NDIS_HANDLE MiniportAdapterHandle
,
3059 IN NDIS_HANDLE PrimaryMiniportAdapterHandle
);
3063 NdisOpenConfigurationKeyByIndex(
3064 OUT PNDIS_STATUS Status
,
3065 IN NDIS_HANDLE ConfigurationHandle
,
3067 OUT PNDIS_STRING KeyName
,
3068 OUT PNDIS_HANDLE KeyHandle
);
3072 NdisOpenConfigurationKeyByName(
3073 OUT PNDIS_STATUS Status
,
3074 IN NDIS_HANDLE ConfigurationHandle
,
3075 IN PNDIS_STRING SubKeyName
,
3076 OUT PNDIS_HANDLE SubKeyHandle
);
3080 NdisPacketPoolUsage(
3081 IN NDIS_HANDLE PoolHandle
);
3085 NdisQueryAdapterInstanceName(
3086 OUT PNDIS_STRING AdapterInstanceName
,
3087 IN NDIS_HANDLE NdisBindingHandle
);
3091 NdisQueryBufferSafe(
3092 IN PNDIS_BUFFER Buffer
,
3093 OUT PVOID
*VirtualAddress OPTIONAL
,
3099 NdisReadPcmciaAttributeMemory(
3100 IN NDIS_HANDLE NdisAdapterHandle
,
3107 NdisReleaseReadWriteLock(
3108 IN PNDIS_RW_LOCK Lock
,
3109 IN PLOCK_STATE LockState
);
3114 NdisWriteEventLogEntry(
3116 IN NDIS_STATUS EventCode
,
3117 IN ULONG UniqueEventValue
,
3118 IN USHORT NumStrings
,
3119 IN PVOID StringsList OPTIONAL
,
3121 IN PVOID Data OPTIONAL
);
3125 NdisWritePcmciaAttributeMemory(
3126 IN NDIS_HANDLE NdisAdapterHandle
,
3132 /* Connectionless services */
3137 IN NDIS_HANDLE NdisVcHandle
,
3138 IN NDIS_HANDLE ProtocolPartyContext
,
3139 IN OUT PCO_CALL_PARAMETERS CallParameters
,
3140 OUT PNDIS_HANDLE NdisPartyHandle
);
3144 NdisClCloseAddressFamily(
3145 IN NDIS_HANDLE NdisAfHandle
);
3150 IN NDIS_HANDLE NdisVcHandle
,
3151 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
3152 IN PVOID Buffer OPTIONAL
,
3157 NdisClDeregisterSap(
3158 IN NDIS_HANDLE NdisSapHandle
);
3163 IN NDIS_HANDLE NdisPartyHandle
,
3164 IN PVOID Buffer OPTIONAL
,
3169 NdisClIncomingCallComplete(
3170 IN NDIS_STATUS Status
,
3171 IN NDIS_HANDLE NdisVcHandle
,
3172 IN PCO_CALL_PARAMETERS CallParameters
);
3177 IN NDIS_HANDLE NdisVcHandle
,
3178 IN OUT PCO_CALL_PARAMETERS CallParameters
,
3179 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
,
3180 OUT PNDIS_HANDLE NdisPartyHandle OPTIONAL
);
3184 NdisClModifyCallQoS(
3185 IN NDIS_HANDLE NdisVcHandle
,
3186 IN PCO_CALL_PARAMETERS CallParameters
);
3191 NdisClOpenAddressFamily(
3192 IN NDIS_HANDLE NdisBindingHandle
,
3193 IN PCO_ADDRESS_FAMILY AddressFamily
,
3194 IN NDIS_HANDLE ProtocolAfContext
,
3195 IN PNDIS_CLIENT_CHARACTERISTICS ClCharacteristics
,
3196 IN UINT SizeOfClCharacteristics
,
3197 OUT PNDIS_HANDLE NdisAfHandle
);
3202 IN NDIS_HANDLE NdisAfHandle
,
3203 IN NDIS_HANDLE ProtocolSapContext
,
3205 OUT PNDIS_HANDLE NdisSapHandle
);
3208 /* Call Manager services */
3213 IN NDIS_HANDLE NdisVcHandle
,
3214 IN OUT PCO_CALL_PARAMETERS CallParameters
);
3218 NdisCmAddPartyComplete(
3219 IN NDIS_STATUS Status
,
3220 IN NDIS_HANDLE NdisPartyHandle
,
3221 IN NDIS_HANDLE CallMgrPartyContext OPTIONAL
,
3222 IN PCO_CALL_PARAMETERS CallParameters
);
3226 NdisCmCloseAddressFamilyComplete(
3227 IN NDIS_STATUS Status
,
3228 IN NDIS_HANDLE NdisAfHandle
);
3232 NdisCmCloseCallComplete(
3233 IN NDIS_STATUS Status
,
3234 IN NDIS_HANDLE NdisVcHandle
,
3235 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
);
3240 IN NDIS_HANDLE NdisVcHandle
);
3244 NdisCmDeregisterSapComplete(
3245 IN NDIS_STATUS Status
,
3246 IN NDIS_HANDLE NdisSapHandle
);
3250 NdisCmDispatchCallConnected(
3251 IN NDIS_HANDLE NdisVcHandle
);
3255 NdisCmDispatchIncomingCall(
3256 IN NDIS_HANDLE NdisSapHandle
,
3257 IN NDIS_HANDLE NdisVcHandle
,
3258 IN PCO_CALL_PARAMETERS CallParameters
);
3262 NdisCmDispatchIncomingCallQoSChange(
3263 IN NDIS_HANDLE NdisVcHandle
,
3264 IN PCO_CALL_PARAMETERS CallParameters
);
3268 NdisCmDispatchIncomingCloseCall(
3269 IN NDIS_STATUS CloseStatus
,
3270 IN NDIS_HANDLE NdisVcHandle
,
3271 IN PVOID Buffer OPTIONAL
,
3276 NdisCmDispatchIncomingDropParty(
3277 IN NDIS_STATUS DropStatus
,
3278 IN NDIS_HANDLE NdisPartyHandle
,
3279 IN PVOID Buffer OPTIONAL
,
3284 NdisCmDropPartyComplete(
3285 IN NDIS_STATUS Status
,
3286 IN NDIS_HANDLE NdisPartyHandle
);
3290 NdisCmMakeCallComplete(
3291 IN NDIS_STATUS Status
,
3292 IN NDIS_HANDLE NdisVcHandle
,
3293 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
3294 IN NDIS_HANDLE CallMgrPartyContext OPTIONAL
,
3295 IN PCO_CALL_PARAMETERS CallParameters
);
3299 NdisCmModifyCallQoSComplete(
3300 IN NDIS_STATUS Status
,
3301 IN NDIS_HANDLE NdisVcHandle
,
3302 IN PCO_CALL_PARAMETERS CallParameters
);
3306 NdisCmOpenAddressFamilyComplete(
3307 IN NDIS_STATUS Status
,
3308 IN NDIS_HANDLE NdisAfHandle
,
3309 IN NDIS_HANDLE CallMgrAfContext
);
3313 NdisCmRegisterAddressFamily(
3314 IN NDIS_HANDLE NdisBindingHandle
,
3315 IN PCO_ADDRESS_FAMILY AddressFamily
,
3316 IN PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics
,
3317 IN UINT SizeOfCmCharacteristics
);
3321 NdisCmRegisterSapComplete(
3322 IN NDIS_STATUS Status
,
3323 IN NDIS_HANDLE NdisSapHandle
,
3324 IN NDIS_HANDLE CallMgrSapContext
);
3330 IN NDIS_HANDLE NdisVcHandle
,
3331 IN PCO_CALL_PARAMETERS CallParameters
);
3336 IN NDIS_HANDLE MiniportAdapterHandle
,
3337 IN NDIS_HANDLE NdisAfHandle
,
3338 IN NDIS_HANDLE MiniportVcContext
,
3339 OUT PNDIS_HANDLE NdisVcHandle
);
3343 NdisMCmDeactivateVc(
3344 IN NDIS_HANDLE NdisVcHandle
);
3349 IN NDIS_HANDLE NdisVcHandle
);
3353 NdisMCmRegisterAddressFamily(
3354 IN NDIS_HANDLE MiniportAdapterHandle
,
3355 IN PCO_ADDRESS_FAMILY AddressFamily
,
3356 IN PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics
,
3357 IN UINT SizeOfCmCharacteristics
);
3362 IN NDIS_HANDLE NdisAfHandle
,
3363 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
3364 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
3365 IN OUT PNDIS_REQUEST NdisRequest
);
3368 /* Connection-oriented services */
3373 IN NDIS_HANDLE NdisBindingHandle
,
3374 IN NDIS_HANDLE NdisAfHandle OPTIONAL
,
3375 IN NDIS_HANDLE ProtocolVcContext
,
3376 IN OUT PNDIS_HANDLE NdisVcHandle
);
3381 IN NDIS_HANDLE NdisVcHandle
);
3386 IN NDIS_HANDLE NdisBindingHandle
,
3387 IN NDIS_HANDLE NdisAfHandle OPTIONAL
,
3388 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
3389 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
3390 IN OUT PNDIS_REQUEST NdisRequest
);
3394 NdisCoRequestComplete(
3395 IN NDIS_STATUS Status
,
3396 IN NDIS_HANDLE NdisAfHandle
,
3397 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
3398 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
3399 IN PNDIS_REQUEST NdisRequest
);
3404 IN NDIS_HANDLE NdisVcHandle
,
3405 IN PPNDIS_PACKET PacketArray
,
3406 IN UINT NumberOfPackets
);
3411 NdisMCoActivateVcComplete(
3412 IN NDIS_STATUS Status
,
3413 IN NDIS_HANDLE NdisVcHandle
,
3414 IN PCO_CALL_PARAMETERS CallParameters
);
3418 NdisMCoDeactivateVcComplete(
3419 IN NDIS_STATUS Status
,
3420 IN NDIS_HANDLE NdisVcHandle
);
3424 NdisMCoIndicateReceivePacket(
3425 IN NDIS_HANDLE NdisVcHandle
,
3426 IN PPNDIS_PACKET PacketArray
,
3427 IN UINT NumberOfPackets
);
3431 NdisMCoIndicateStatus(
3432 IN NDIS_HANDLE MiniportAdapterHandle
,
3433 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
3434 IN NDIS_STATUS GeneralStatus
,
3435 IN PVOID StatusBuffer OPTIONAL
,
3436 IN ULONG StatusBufferSize
);
3440 NdisMCoReceiveComplete(
3441 IN NDIS_HANDLE MiniportAdapterHandle
);
3445 NdisMCoRequestComplete(
3446 IN NDIS_STATUS Status
,
3447 IN NDIS_HANDLE MiniportAdapterHandle
,
3448 IN PNDIS_REQUEST Request
);
3452 NdisMCoSendComplete(
3453 IN NDIS_STATUS Status
,
3454 IN NDIS_HANDLE NdisVcHandle
,
3455 IN PNDIS_PACKET Packet
);
3458 /* NDIS 5.0 extensions for intermediate drivers */
3462 NdisIMAssociateMiniport(
3463 IN NDIS_HANDLE DriverHandle
,
3464 IN NDIS_HANDLE ProtocolHandle
);
3468 NdisIMCancelInitializeDeviceInstance(
3469 IN NDIS_HANDLE DriverHandle
,
3470 IN PNDIS_STRING DeviceInstance
);
3474 NdisIMCopySendCompletePerPacketInfo(
3475 IN PNDIS_PACKET DstPacket
,
3476 IN PNDIS_PACKET SrcPacket
);
3480 NdisIMCopySendPerPacketInfo(
3481 IN PNDIS_PACKET DstPacket
,
3482 IN PNDIS_PACKET SrcPacket
);
3486 NdisIMDeregisterLayeredMiniport(
3487 IN NDIS_HANDLE DriverHandle
);
3491 NdisIMGetBindingContext(
3492 IN NDIS_HANDLE NdisBindingHandle
);
3496 NdisIMGetDeviceContext(
3497 IN NDIS_HANDLE MiniportAdapterHandle
);
3501 NdisIMInitializeDeviceInstanceEx(
3502 IN NDIS_HANDLE DriverHandle
,
3503 IN PNDIS_STRING DriverInstance
,
3504 IN NDIS_HANDLE DeviceContext OPTIONAL
);
3510 /* NDIS structures available only to miniport drivers */
3512 #if defined(NDIS_WRAPPER) || defined(NDIS_MINIPORT_DRIVER)
3514 /* Obsolete technology specific defines */
3516 #define DECLARE_UNKNOWN_STRUCT(BaseName) \
3517 typedef struct _##BaseName BaseName, *P##BaseName;
3519 #define DECLARE_UNKNOWN_PROTOTYPE(Name) \
3520 typedef VOID (*##Name)(VOID);
3525 DECLARE_UNKNOWN_STRUCT(ARC_FILTER
)
3530 ArcFilterDprIndicateReceive(
3531 IN PARC_FILTER Filter
,
3532 IN PUCHAR pRawHeader
,
3538 ArcFilterDprIndicateReceiveComplete(
3539 IN PARC_FILTER Filter
);
3544 #define ETH_LENGTH_OF_ADDRESS 6
3546 DECLARE_UNKNOWN_STRUCT(ETH_FILTER
)
3548 DECLARE_UNKNOWN_PROTOTYPE(ETH_ADDRESS_CHANGE
)
3549 DECLARE_UNKNOWN_PROTOTYPE(ETH_FILTER_CHANGE
)
3550 DECLARE_UNKNOWN_PROTOTYPE(ETH_DEFERRED_CLOSE
)
3555 EthChangeFilterAddresses(
3556 IN PETH_FILTER Filter
,
3557 IN NDIS_HANDLE NdisFilterHandle
,
3558 IN PNDIS_REQUEST NdisRequest
,
3559 IN UINT AddressCount
,
3560 IN CHAR Addresses
[] [ETH_LENGTH_OF_ADDRESS
],
3566 IN UINT MaximumMulticastAddresses
,
3567 IN ETH_ADDRESS_CHANGE AddressChangeAction
,
3568 IN ETH_FILTER_CHANGE FilterChangeAction
,
3569 IN ETH_DEFERRED_CLOSE CloseAction
,
3570 IN PUCHAR AdapterAddress
,
3571 IN PNDIS_SPIN_LOCK Lock
,
3572 OUT PETH_FILTER
*Filter
);
3577 IN PETH_FILTER Filter
);
3581 EthDeleteFilterOpenAdapter(
3582 IN PETH_FILTER Filter
,
3583 IN NDIS_HANDLE NdisFilterHandle
,
3584 IN PNDIS_REQUEST NdisRequest
);
3589 IN PETH_FILTER Filter
,
3590 IN NDIS_HANDLE NdisFilterHandle
,
3591 IN PNDIS_REQUEST NdisRequest
,
3592 IN UINT FilterClasses
,
3597 EthFilterIndicateReceive(
3598 IN PETH_FILTER Filter
,
3599 IN NDIS_HANDLE MacReceiveContext
,
3601 IN PVOID HeaderBuffer
,
3602 IN UINT HeaderBufferSize
,
3603 IN PVOID LookaheadBuffer
,
3604 IN UINT LookaheadBufferSize
,
3605 IN UINT PacketSize
);
3609 EthFilterIndicateReceiveComplete(
3610 IN PETH_FILTER Filter
);
3614 EthNoteFilterOpenAdapter(
3615 IN PETH_FILTER Filter
,
3616 IN NDIS_HANDLE MacBindingHandle
,
3617 IN NDIS_HANDLE NdisBindingContext
,
3618 OUT PNDIS_HANDLE NdisFilterHandle
);
3622 EthNumberOfOpenFilterAddresses(
3623 IN PETH_FILTER Filter
,
3624 IN NDIS_HANDLE NdisFilterHandle
);
3628 EthQueryGlobalFilterAddresses (
3629 OUT PNDIS_STATUS Status
,
3630 IN PETH_FILTER Filter
,
3631 IN UINT SizeOfArray
,
3632 OUT PUINT NumberOfAddresses
,
3633 IN OUT CHAR AddressArray
[] [ETH_LENGTH_OF_ADDRESS
]);
3637 EthQueryOpenFilterAddresses(
3638 OUT PNDIS_STATUS Status
,
3639 IN PETH_FILTER Filter
,
3640 IN NDIS_HANDLE NdisFilterHandle
,
3641 IN UINT SizeOfArray
,
3642 OUT PUINT NumberOfAddresses
,
3643 IN OUT CHAR AddressArray
[] [ETH_LENGTH_OF_ADDRESS
]);
3647 EthShouldAddressLoopBack(
3648 IN PETH_FILTER Filter
,
3649 IN CHAR Address
[ETH_LENGTH_OF_ADDRESS
]);
3654 #define FDDI_LENGTH_OF_LONG_ADDRESS 6
3655 #define FDDI_LENGTH_OF_SHORT_ADDRESS 2
3657 DECLARE_UNKNOWN_STRUCT(FDDI_FILTER
)
3659 DECLARE_UNKNOWN_PROTOTYPE(FDDI_ADDRESS_CHANGE
)
3660 DECLARE_UNKNOWN_PROTOTYPE(FDDI_FILTER_CHANGE
)
3661 DECLARE_UNKNOWN_PROTOTYPE(FDDI_DEFERRED_CLOSE
)
3666 FddiChangeFilterLongAddresses(
3667 IN PFDDI_FILTER Filter
,
3668 IN NDIS_HANDLE NdisFilterHandle
,
3669 IN PNDIS_REQUEST NdisRequest
,
3670 IN UINT AddressCount
,
3671 IN CHAR Addresses
[] [FDDI_LENGTH_OF_LONG_ADDRESS
],
3676 FddiChangeFilterShortAddresses(
3677 IN PFDDI_FILTER Filter
,
3678 IN NDIS_HANDLE NdisFilterHandle
,
3679 IN PNDIS_REQUEST NdisRequest
,
3680 IN UINT AddressCount
,
3681 IN CHAR Addresses
[] [FDDI_LENGTH_OF_SHORT_ADDRESS
],
3687 IN UINT MaximumMulticastLongAddresses
,
3688 IN UINT MaximumMulticastShortAddresses
,
3689 IN FDDI_ADDRESS_CHANGE AddressChangeAction
,
3690 IN FDDI_FILTER_CHANGE FilterChangeAction
,
3691 IN FDDI_DEFERRED_CLOSE CloseAction
,
3692 IN PUCHAR AdapterLongAddress
,
3693 IN PUCHAR AdapterShortAddress
,
3694 IN PNDIS_SPIN_LOCK Lock
,
3695 OUT PFDDI_FILTER
*Filter
);
3700 IN PFDDI_FILTER Filter
);
3704 FddiDeleteFilterOpenAdapter(
3705 IN PFDDI_FILTER Filter
,
3706 IN NDIS_HANDLE NdisFilterHandle
,
3707 IN PNDIS_REQUEST NdisRequest
);
3712 IN PFDDI_FILTER Filter
,
3713 IN NDIS_HANDLE NdisFilterHandle
,
3714 IN PNDIS_REQUEST NdisRequest
,
3715 IN UINT FilterClasses
,
3720 FddiFilterIndicateReceive(
3721 IN PFDDI_FILTER Filter
,
3722 IN NDIS_HANDLE MacReceiveContext
,
3724 IN UINT AddressLength
,
3725 IN PVOID HeaderBuffer
,
3726 IN UINT HeaderBufferSize
,
3727 IN PVOID LookaheadBuffer
,
3728 IN UINT LookaheadBufferSize
,
3729 IN UINT PacketSize
);
3733 FddiFilterIndicateReceiveComplete(
3734 IN PFDDI_FILTER Filter
);
3738 FddiNoteFilterOpenAdapter(
3739 IN PFDDI_FILTER Filter
,
3740 IN NDIS_HANDLE MacBindingHandle
,
3741 IN NDIS_HANDLE NdisBindingContext
,
3742 OUT PNDIS_HANDLE NdisFilterHandle
);
3746 FddiNumberOfOpenFilterLongAddresses(
3747 IN PFDDI_FILTER Filter
,
3748 IN NDIS_HANDLE NdisFilterHandle
);
3752 FddiNumberOfOpenFilterShortAddresses(
3753 IN PFDDI_FILTER Filter
,
3754 IN NDIS_HANDLE NdisFilterHandle
);
3758 FddiQueryGlobalFilterLongAddresses(
3759 OUT PNDIS_STATUS Status
,
3760 IN PFDDI_FILTER Filter
,
3761 IN UINT SizeOfArray
,
3762 OUT PUINT NumberOfAddresses
,
3763 IN OUT CHAR AddressArray
[] [FDDI_LENGTH_OF_LONG_ADDRESS
]);
3767 FddiQueryGlobalFilterShortAddresses(
3768 OUT PNDIS_STATUS Status
,
3769 IN PFDDI_FILTER Filter
,
3770 IN UINT SizeOfArray
,
3771 OUT PUINT NumberOfAddresses
,
3772 IN OUT CHAR AddressArray
[] [FDDI_LENGTH_OF_SHORT_ADDRESS
]);
3776 FddiQueryOpenFilterLongAddresses(
3777 OUT PNDIS_STATUS Status
,
3778 IN PFDDI_FILTER Filter
,
3779 IN NDIS_HANDLE NdisFilterHandle
,
3780 IN UINT SizeOfArray
,
3781 OUT PUINT NumberOfAddresses
,
3782 IN OUT CHAR AddressArray
[] [FDDI_LENGTH_OF_LONG_ADDRESS
]);
3786 FddiQueryOpenFilterShortAddresses(
3787 OUT PNDIS_STATUS Status
,
3788 IN PFDDI_FILTER Filter
,
3789 IN NDIS_HANDLE NdisFilterHandle
,
3790 IN UINT SizeOfArray
,
3791 OUT PUINT NumberOfAddresses
,
3792 IN OUT CHAR AddressArray
[] [FDDI_LENGTH_OF_SHORT_ADDRESS
]);
3796 FddiShouldAddressLoopBack(
3797 IN PFDDI_FILTER Filter
,
3799 IN UINT LengthOfAddress
);
3804 #define TR_LENGTH_OF_FUNCTIONAL 4
3805 #define TR_LENGTH_OF_ADDRESS 6
3807 DECLARE_UNKNOWN_STRUCT(TR_FILTER
)
3809 DECLARE_UNKNOWN_PROTOTYPE(TR_ADDRESS_CHANGE
)
3810 DECLARE_UNKNOWN_PROTOTYPE(TR_GROUP_CHANGE
)
3811 DECLARE_UNKNOWN_PROTOTYPE(TR_FILTER_CHANGE
)
3812 DECLARE_UNKNOWN_PROTOTYPE(TR_DEFERRED_CLOSE
)
3817 TrChangeFunctionalAddress(
3818 IN PTR_FILTER Filter
,
3819 IN NDIS_HANDLE NdisFilterHandle
,
3820 IN PNDIS_REQUEST NdisRequest
,
3821 IN CHAR FunctionalAddressArray
[TR_LENGTH_OF_FUNCTIONAL
],
3826 TrChangeGroupAddress(
3827 IN PTR_FILTER Filter
,
3828 IN NDIS_HANDLE NdisFilterHandle
,
3829 IN PNDIS_REQUEST NdisRequest
,
3830 IN CHAR GroupAddressArray
[TR_LENGTH_OF_FUNCTIONAL
],
3836 IN TR_ADDRESS_CHANGE AddressChangeAction
,
3837 IN TR_GROUP_CHANGE GroupChangeAction
,
3838 IN TR_FILTER_CHANGE FilterChangeAction
,
3839 IN TR_DEFERRED_CLOSE CloseAction
,
3840 IN PUCHAR AdapterAddress
,
3841 IN PNDIS_SPIN_LOCK Lock
,
3842 OUT PTR_FILTER
*Filter
);
3847 IN PTR_FILTER Filter
);
3851 TrDeleteFilterOpenAdapter (
3852 IN PTR_FILTER Filter
,
3853 IN NDIS_HANDLE NdisFilterHandle
,
3854 IN PNDIS_REQUEST NdisRequest
);
3859 IN PTR_FILTER Filter
,
3860 IN NDIS_HANDLE NdisFilterHandle
,
3861 IN PNDIS_REQUEST NdisRequest
,
3862 IN UINT FilterClasses
,
3867 TrFilterIndicateReceive(
3868 IN PTR_FILTER Filter
,
3869 IN NDIS_HANDLE MacReceiveContext
,
3870 IN PVOID HeaderBuffer
,
3871 IN UINT HeaderBufferSize
,
3872 IN PVOID LookaheadBuffer
,
3873 IN UINT LookaheadBufferSize
,
3874 IN UINT PacketSize
);
3878 TrFilterIndicateReceiveComplete(
3879 IN PTR_FILTER Filter
);
3883 TrNoteFilterOpenAdapter(
3884 IN PTR_FILTER Filter
,
3885 IN NDIS_HANDLE MacBindingHandle
,
3886 IN NDIS_HANDLE NdisBindingContext
,
3887 OUT PNDIS_HANDLE NdisFilterHandle
);
3891 TrShouldAddressLoopBack(
3892 IN PTR_FILTER Filter
,
3893 IN CHAR DestinationAddress
[TR_LENGTH_OF_ADDRESS
],
3894 IN CHAR SourceAddress
[TR_LENGTH_OF_ADDRESS
]);
3898 /* Prototypes for NDIS_MINIPORT_CHARACTERISTICS */
3900 typedef BOOLEAN (*W_CHECK_FOR_HANG_HANDLER
)(
3901 IN NDIS_HANDLE MiniportAdapterContext
);
3903 typedef VOID (*W_DISABLE_INTERRUPT_HANDLER
)(
3904 IN NDIS_HANDLE MiniportAdapterContext
);
3906 typedef VOID (*W_ENABLE_INTERRUPT_HANDLER
)(
3907 IN NDIS_HANDLE MiniportAdapterContext
);
3909 typedef VOID (*W_HALT_HANDLER
)(
3910 IN NDIS_HANDLE MiniportAdapterContext
);
3912 typedef VOID (*W_HANDLE_INTERRUPT_HANDLER
)(
3913 IN NDIS_HANDLE MiniportAdapterContext
);
3915 typedef NDIS_STATUS (*W_INITIALIZE_HANDLER
)(
3916 OUT PNDIS_STATUS OpenErrorStatus
,
3917 OUT PUINT SelectedMediumIndex
,
3918 IN PNDIS_MEDIUM MediumArray
,
3919 IN UINT MediumArraySize
,
3920 IN NDIS_HANDLE MiniportAdapterContext
,
3921 IN NDIS_HANDLE WrapperConfigurationContext
);
3923 typedef VOID (*W_ISR_HANDLER
)(
3924 OUT PBOOLEAN InterruptRecognized
,
3925 OUT PBOOLEAN QueueMiniportHandleInterrupt
,
3926 IN NDIS_HANDLE MiniportAdapterContext
);
3928 typedef NDIS_STATUS (*W_QUERY_INFORMATION_HANDLER
)(
3929 IN NDIS_HANDLE MiniportAdapterContext
,
3931 IN PVOID InformationBuffer
,
3932 IN ULONG InformationBufferLength
,
3933 OUT PULONG BytesWritten
,
3934 OUT PULONG BytesNeeded
);
3936 typedef NDIS_STATUS (*W_RECONFIGURE_HANDLER
)(
3937 OUT PNDIS_STATUS OpenErrorStatus
,
3938 IN NDIS_HANDLE MiniportAdapterContext
,
3939 IN NDIS_HANDLE WrapperConfigurationContext
);
3941 typedef NDIS_STATUS (*W_RESET_HANDLER
)(
3942 OUT PBOOLEAN AddressingReset
,
3943 IN NDIS_HANDLE MiniportAdapterContext
);
3945 typedef NDIS_STATUS (*W_SEND_HANDLER
)(
3946 IN NDIS_HANDLE MiniportAdapterContext
,
3947 IN PNDIS_PACKET Packet
,
3950 typedef NDIS_STATUS (*WM_SEND_HANDLER
)(
3951 IN NDIS_HANDLE MiniportAdapterContext
,
3952 IN NDIS_HANDLE NdisLinkHandle
,
3953 IN PNDIS_WAN_PACKET Packet
);
3955 typedef NDIS_STATUS (*W_SET_INFORMATION_HANDLER
)(
3956 IN NDIS_HANDLE MiniportAdapterContext
,
3958 IN PVOID InformationBuffer
,
3959 IN ULONG InformationBufferLength
,
3960 OUT PULONG BytesRead
,
3961 OUT PULONG BytesNeeded
);
3963 typedef NDIS_STATUS (*W_TRANSFER_DATA_HANDLER
)(
3964 OUT PNDIS_PACKET Packet
,
3965 OUT PUINT BytesTransferred
,
3966 IN NDIS_HANDLE MiniportAdapterContext
,
3967 IN NDIS_HANDLE MiniportReceiveContext
,
3969 IN UINT BytesToTransfer
);
3971 typedef NDIS_STATUS (*WM_TRANSFER_DATA_HANDLER
)(
3974 typedef struct _NDIS30_MINIPORT_CHARACTERISTICS
3976 UCHAR MajorNdisVersion
;
3977 UCHAR MinorNdisVersion
;
3979 W_CHECK_FOR_HANG_HANDLER CheckForHangHandler
;
3980 W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler
;
3981 W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler
;
3982 W_HALT_HANDLER HaltHandler
;
3983 W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler
;
3984 W_INITIALIZE_HANDLER InitializeHandler
;
3985 W_ISR_HANDLER ISRHandler
;
3986 W_QUERY_INFORMATION_HANDLER QueryInformationHandler
;
3987 W_RECONFIGURE_HANDLER ReconfigureHandler
;
3988 W_RESET_HANDLER ResetHandler
;
3991 W_SEND_HANDLER SendHandler
;
3992 WM_SEND_HANDLER WanSendHandler
;
3994 W_SET_INFORMATION_HANDLER SetInformationHandler
;
3997 W_TRANSFER_DATA_HANDLER TransferDataHandler
;
3998 WM_TRANSFER_DATA_HANDLER WanTransferDataHandler
;
4000 } NDIS30_MINIPORT_CHARACTERISTICS
;
4003 /* Extensions for NDIS 4.0 miniports */
4006 typedef VOID (*W_RETURN_PACKET_HANDLER
)(
4007 IN NDIS_HANDLE MiniportAdapterContext
,
4008 IN PNDIS_PACKET Packet
);
4010 typedef VOID (*W_SEND_PACKETS_HANDLER
)(
4011 IN NDIS_HANDLE MiniportAdapterContext
,
4012 IN PPNDIS_PACKET PacketArray
,
4013 IN UINT NumberOfPackets
);
4015 typedef VOID (*W_ALLOCATE_COMPLETE_HANDLER
)(
4016 IN NDIS_HANDLE MiniportAdapterContext
,
4017 IN PVOID VirtualAddress
,
4018 IN PNDIS_PHYSICAL_ADDRESS PhysicalAddress
,
4022 typedef struct _NDIS40_MINIPORT_CHARACTERISTICS
4024 NDIS30_MINIPORT_CHARACTERISTICS
;
4026 W_RETURN_PACKET_HANDLER ReturnPacketHandler
;
4027 W_SEND_PACKETS_HANDLER SendPacketsHandler
;
4028 W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler
;
4029 } NDIS40_MINIPORT_CHARACTERISTICS
;
4033 /* Extensions for NDIS 5.0 miniports */
4037 typedef NDIS_STATUS (*W_CO_CREATE_VC_HANDLER
)(
4038 IN NDIS_HANDLE MiniportAdapterContext
,
4039 IN NDIS_HANDLE NdisVcHandle
,
4040 OUT PNDIS_HANDLE MiniportVcContext
);
4042 typedef NDIS_STATUS (*W_CO_DELETE_VC_HANDLER
)(
4043 IN NDIS_HANDLE MiniportVcContext
);
4045 typedef NDIS_STATUS (*W_CO_ACTIVATE_VC_HANDLER
)(
4046 IN NDIS_HANDLE MiniportVcContext
,
4047 IN OUT PCO_CALL_PARAMETERS CallParameters
);
4049 typedef NDIS_STATUS (*W_CO_DEACTIVATE_VC_HANDLER
)(
4050 IN NDIS_HANDLE MiniportVcContext
);
4052 typedef VOID (*W_CO_SEND_PACKETS_HANDLER
)(
4053 IN NDIS_HANDLE MiniportVcContext
,
4054 IN PPNDIS_PACKET PacketArray
,
4055 IN UINT NumberOfPackets
);
4057 typedef NDIS_STATUS (*W_CO_REQUEST_HANDLER
)(
4058 IN NDIS_HANDLE MiniportAdapterContext
,
4059 IN NDIS_HANDLE MiniportVcContext OPTIONAL
,
4060 IN OUT PNDIS_REQUEST NdisRequest
);
4062 typedef struct _NDIS50_MINIPORT_CHARACTERISTICS
4064 NDIS40_MINIPORT_CHARACTERISTICS
;
4066 W_CO_CREATE_VC_HANDLER CoCreateVcHandler
;
4067 W_CO_DELETE_VC_HANDLER CoDeleteVcHandler
;
4068 W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler
;
4069 W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler
;
4070 W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler
;
4071 W_CO_REQUEST_HANDLER CoRequestHandler
;
4072 } NDIS50_MINIPORT_CHARACTERISTICS
;
4079 typedef struct _NDIS30_MINIPORT_CHARACTERISTICS NDIS_MINIPORT_CHARACTERISTICS
;
4081 typedef struct _NDIS40_MINIPORT_CHARACTERISTICS NDIS_MINIPORT_CHARACTERISTICS
;
4084 typedef struct _NDIS50_MINIPORT_CHARACTERISTICS NDIS_MINIPORT_CHARACTERISTICS
;
4087 typedef NDIS_MINIPORT_CHARACTERISTICS
*PNDIS_MINIPORT_CHARACTERISTICS
;
4090 typedef struct _NDIS_MINIPORT_BLOCK NDIS_MINIPORT_BLOCK
, *PNDIS_MINIPORT_BLOCK
;
4093 typedef struct _NDIS_MINIPORT_INTERRUPT
4095 PKINTERRUPT InterruptObject
;
4096 KSPIN_LOCK DpcCountLock
;
4097 PVOID MiniportIdField
;
4098 W_ISR_HANDLER MiniportIsr
;
4099 W_HANDLE_INTERRUPT_HANDLER MiniportDpc
;
4101 PNDIS_MINIPORT_BLOCK Miniport
;
4106 KEVENT DpcsCompletedEvent
;
4108 BOOLEAN SharedInterrupt
;
4109 BOOLEAN IsrRequested
;
4110 } NDIS_MINIPORT_INTERRUPT
, *PNDIS_MINIPORT_INTERRUPT
;
4113 typedef struct _NDIS_MINIPORT_TIMER
4117 PNDIS_TIMER_FUNCTION MiniportTimerFunction
;
4118 PVOID MiniportTimerContext
;
4119 PNDIS_MINIPORT_BLOCK Miniport
;
4120 struct _NDIS_MINIPORT_TIMER
*NextDeferredTimer
;
4121 } NDIS_MINIPORT_TIMER
, *PNDIS_MINIPORT_TIMER
;
4125 /* NDIS intermediate miniport structures */
4127 typedef VOID (*W_MINIPORT_CALLBACK
)(
4128 IN NDIS_HANDLE MiniportAdapterContext
,
4129 IN PVOID CallbackContext
);
4132 /* Routines for NDIS miniport drivers */
4137 IN NDIS_HANDLE LogHandle
);
4142 IN NDIS_HANDLE MiniportAdapterHandle
,
4144 OUT PNDIS_HANDLE LogHandle
);
4148 NdisMDeregisterAdapterShutdownHandler(
4149 IN NDIS_HANDLE MiniportHandle
);
4154 IN NDIS_HANDLE LogHandle
);
4158 NdisMIndicateStatus(
4159 IN NDIS_HANDLE MiniportAdapterHandle
,
4160 IN NDIS_STATUS GeneralStatus
,
4161 IN PVOID StatusBuffer
,
4162 IN UINT StatusBufferSize
);
4166 NdisMIndicateStatusComplete(
4167 IN NDIS_HANDLE MiniportAdapterHandle
);
4171 NdisInitializeWrapper(
4172 OUT PNDIS_HANDLE NdisWrapperHandle
,
4173 IN PVOID SystemSpecific1
,
4174 IN PVOID SystemSpecific2
,
4175 IN PVOID SystemSpecific3
);
4178 * VOID NdisMInitializeWrapper(
4179 * OUT PNDIS_HANDLE NdisWrapperHandle,
4180 * IN PVOID SystemSpecific1,
4181 * IN PVOID SystemSpecific2,
4182 * IN PVOID SystemSpecific3);
4184 #define NdisMInitializeWrapper(n, s1, s2, s3) \
4185 NdisInitializeWrapper((n),(s1),(s2),(s3))
4189 NdisMRegisterAdapterShutdownHandler(
4190 IN NDIS_HANDLE MiniportHandle
,
4191 IN PVOID ShutdownContext
,
4192 IN ADAPTER_SHUTDOWN_HANDLER ShutdownHandler
);
4196 NdisMRegisterMiniport(
4197 IN NDIS_HANDLE NdisWrapperHandle
,
4198 IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics
,
4199 IN UINT CharacteristicsLength
);
4204 IN NDIS_HANDLE MiniportAdapterHandle
,
4205 IN NDIS_STATUS Status
,
4206 IN BOOLEAN AddressingReset
);
4211 IN NDIS_HANDLE MiniportAdapterHandle
,
4212 IN PNDIS_PACKET Packet
,
4213 IN NDIS_STATUS Status
);
4217 NdisMSendResourcesAvailable(
4218 IN NDIS_HANDLE MiniportAdapterHandle
);
4223 IN NDIS_HANDLE MiniportAdapterHandle
,
4224 IN NDIS_HANDLE MiniportAdapterContext
,
4225 IN BOOLEAN BusMaster
,
4226 IN NDIS_INTERFACE_TYPE AdapterType
);
4230 NdisMSetAttributesEx(
4231 IN NDIS_HANDLE MiniportAdapterHandle
,
4232 IN NDIS_HANDLE MiniportAdapterContext
,
4233 IN UINT CheckForHangTimeInSeconds OPTIONAL
,
4234 IN ULONG AttributeFlags
,
4235 IN NDIS_INTERFACE_TYPE AdapterType
);
4240 IN ULONG MicrosecondsToSleep
);
4244 NdisMSynchronizeWithInterrupt(
4245 IN PNDIS_MINIPORT_INTERRUPT Interrupt
,
4246 IN PVOID SynchronizeFunction
,
4247 IN PVOID SynchronizeContext
);
4252 IN NDIS_HANDLE LogHandle
,
4254 IN UINT LogBufferSize
);
4258 NdisTerminateWrapper(
4259 IN NDIS_HANDLE NdisWrapperHandle
,
4260 IN PVOID SystemSpecific
);
4264 /* Routines for intermediate miniport drivers */
4268 NdisIMDeInitializeDeviceInstance(
4269 IN NDIS_HANDLE NdisMiniportHandle
);
4273 NdisIMInitializeDeviceInstance(
4274 IN NDIS_HANDLE DriverHandle
,
4275 IN PNDIS_STRING DeviceInstance
);
4279 NdisIMQueueMiniportCallback(
4280 IN NDIS_HANDLE MiniportAdapterHandle
,
4281 IN W_MINIPORT_CALLBACK CallbackRoutine
,
4282 IN PVOID CallbackContext
);
4286 NdisIMRegisterLayeredMiniport(
4287 IN NDIS_HANDLE NdisWrapperHandle
,
4288 IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics
,
4289 IN UINT CharacteristicsLength
,
4290 OUT PNDIS_HANDLE DriverHandle
);
4295 IN NDIS_HANDLE MiniportAdapterHandle
,
4296 IN NDIS_HANDLE SwitchHandle
);
4300 NdisIMSwitchToMiniport(
4301 IN NDIS_HANDLE MiniportAdapterHandle
,
4302 OUT PNDIS_HANDLE SwitchHandle
);
4307 NdisMSetResetTimeout(
4308 IN NDIS_HANDLE MiniportAdapterHandle
,
4309 IN UINT TimeInSeconds
);
4313 NdisMAllocateMapRegisters(
4314 IN NDIS_HANDLE MiniportAdapterHandle
,
4316 IN BOOLEAN Dma32BitAddresses
,
4317 IN ULONG PhysicalMapRegistersNeeded
,
4318 IN ULONG MaximumPhysicalMapping
);
4322 NdisMFreeMapRegisters(
4323 IN NDIS_HANDLE MiniportAdapterHandle
);
4327 NdisMRegisterIoPortRange(
4328 OUT PVOID
* PortOffset
,
4329 IN NDIS_HANDLE MiniportAdapterHandle
,
4330 IN UINT InitialPort
,
4331 IN UINT NumberOfPorts
);
4335 NdisMDeregisterIoPortRange(
4336 IN NDIS_HANDLE MiniportAdapterHandle
,
4337 IN UINT InitialPort
,
4338 IN UINT NumberOfPorts
,
4339 IN PVOID PortOffset
);
4344 OUT PVOID
* VirtualAddress
,
4345 IN NDIS_HANDLE MiniportAdapterHandle
,
4346 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
,
4352 IN NDIS_HANDLE MiniportAdapterHandle
,
4353 IN PVOID VirtualAddress
,
4358 NdisMRegisterInterrupt(
4359 OUT PNDIS_MINIPORT_INTERRUPT Interrupt
,
4360 IN NDIS_HANDLE MiniportAdapterHandle
,
4361 IN UINT InterruptVector
,
4362 IN UINT InterruptLevel
,
4363 IN BOOLEAN RequestIsr
,
4364 IN BOOLEAN SharedInterrupt
,
4365 IN NDIS_INTERRUPT_MODE InterruptMode
);
4369 NdisMDeregisterInterrupt(
4370 IN PNDIS_MINIPORT_INTERRUPT Interrupt
);
4374 NdisMSynchronizeWithInterrupt(
4375 IN PNDIS_MINIPORT_INTERRUPT Interrupt
,
4376 IN PVOID SynchronizeFunction
,
4377 IN PVOID SynchronizeContext
);
4381 NdisMQueryAdapterResources(
4382 OUT PNDIS_STATUS Status
,
4383 IN NDIS_HANDLE WrapperConfigurationContext
,
4384 OUT PNDIS_RESOURCE_LIST ResourceList
,
4385 IN OUT PUINT BufferSize
);
4388 /* Functions obsoleted by NDIS 5.0 */
4393 IN PNDIS_HANDLE NdisDmaHandle
);
4397 NdisFreeSharedMemory(
4398 IN NDIS_HANDLE NdisAdapterHandle
,
4401 IN PVOID VirtualAddress
,
4402 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
4406 NdisIMQueueMiniportCallback(
4407 IN NDIS_HANDLE MiniportAdapterHandle
,
4408 IN W_MINIPORT_CALLBACK CallbackRoutine
,
4409 IN PVOID CallbackContext
);
4414 IN NDIS_HANDLE MiniportAdapterHandle
,
4415 IN NDIS_HANDLE SwitchHandle
);
4419 NdisIMSwitchToMiniport(
4420 IN NDIS_HANDLE MiniportAdapterHandle
,
4421 OUT PNDIS_HANDLE SwitchHandle
);
4425 NdisSetupDmaTransfer(
4426 OUT PNDIS_STATUS Status
,
4427 IN PNDIS_HANDLE NdisDmaHandle
,
4428 IN PNDIS_BUFFER Buffer
,
4431 IN BOOLEAN WriteToDevice
);
4435 NdisUpcaseUnicodeString(
4436 OUT PUNICODE_STRING DestinationString
,
4437 IN PUNICODE_STRING SourceString
);
4441 NdisUpdateSharedMemory(
4442 IN NDIS_HANDLE NdisAdapterHandle
,
4444 IN PVOID VirtualAddress
,
4445 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
4447 #endif /* NDIS_WRAPPER || NDIS_MINIPORT_DRIVER */
4451 #endif /* __cplusplus */
4453 #endif /* __NDIS_H */