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
42 #define FASTCALL __attribute__((fastcall))
45 /* The NDIS library export functions. NDIS miniport drivers import functions */
49 #define EXPIMP __declspec(dllexport)
51 #define EXPIMP STDCALL
54 #else /* NDIS_WRAPPER */
57 #define EXPIMP __declspec(dllimport)
59 #define EXPIMP STDCALL
62 #endif /* NDIS_WRAPPER */
66 #ifdef NDIS_MINIPORT_DRIVER
70 #else /* NDIS_MINIPORT_DRIVER */
75 typedef ULONG ULONG_PTR
, *PULONG_PTR
;
78 #include <ddk/ntddk.h>
80 /* FIXME: Missed some definitions in there */
82 typedef struct _DMA_CONFIGURATION_BYTE0
88 } DMA_CONFIGURATION_BYTE0
;
90 typedef struct _DMA_CONFIGURATION_BYTE1
96 } DMA_CONFIGURATION_BYTE1
;
99 typedef struct _EISA_MEMORY_TYPE
108 } EISA_MEMORY_TYPE
, *PEISA_MEMORY_TYPE
;
110 typedef struct _EISA_MEMORY_CONFIGURATION
112 EISA_MEMORY_TYPE ConfigurationByte
;
114 USHORT AddressLowWord
;
115 UCHAR AddressHighByte
;
117 } EISA_MEMORY_CONFIGURATION
, *PEISA_MEMORY_CONFIGURATION
;
120 typedef struct _EISA_IRQ_DESCRIPTOR
124 UCHAR LevelTriggered
:1;
127 } EISA_IRQ_DESCRIPTOR
, *PEISA_IRQ_DESCRIPTOR
;
129 typedef struct _EISA_IRQ_CONFIGURATION
131 EISA_IRQ_DESCRIPTOR ConfigurationByte
;
133 } EISA_IRQ_CONFIGURATION
, *PEISA_IRQ_CONFIGURATION
;
135 typedef struct _EISA_DMA_CONFIGURATION
137 DMA_CONFIGURATION_BYTE0 ConfigurationByte0
;
138 DMA_CONFIGURATION_BYTE1 ConfigurationByte1
;
139 } EISA_DMA_CONFIGURATION
, *PEISA_DMA_CONFIGURATION
;
142 typedef struct _EISA_PORT_DESCRIPTOR
148 } EISA_PORT_DESCRIPTOR
, *PEISA_PORT_DESCRIPTOR
;
150 typedef struct _EISA_PORT_CONFIGURATION
152 EISA_PORT_DESCRIPTOR Configuration
;
154 } EISA_PORT_CONFIGURATION
, *PEISA_PORT_CONFIGURATION
;
156 typedef struct _CM_EISA_SLOT_INFORMATION
163 UCHAR NumberFunctions
;
164 UCHAR FunctionInformation
;
166 } CM_EISA_SLOT_INFORMATION
, *PCM_EISA_SLOT_INFORMATION
;
168 typedef struct _CM_EISA_FUNCTION_INFORMATION
175 UCHAR Selections
[26];
177 UCHAR TypeString
[80];
178 EISA_MEMORY_CONFIGURATION EisaMemory
[9];
179 EISA_IRQ_CONFIGURATION EisaIrq
[7];
180 EISA_DMA_CONFIGURATION EisaDma
[4];
181 EISA_PORT_CONFIGURATION EisaPort
[20];
182 UCHAR InitializationData
[60];
183 } CM_EISA_FUNCTION_INFORMATION
, *PCM_EISA_FUNCTION_INFORMATION
;
185 #endif /* _MSC_VER */
187 /* FIXME: Missed some definitions in there */
189 typedef CONST CHAR
*PCSTR
;
191 #endif /* NDIS_MINIPORT_DRIVER */
193 #include "netevent.h"
195 #include "ntddndis.h"
198 #if defined(NDIS_MINIPORT_DRIVER) || !defined(_MSC_VER)
200 #ifndef _GUID_DEFINED
201 #define _GUID_DEFINED
203 typedef struct _GUID
{
210 #endif /* _GUID_DEFINED */
212 #endif /* NDIS_MINIPORT_DRIVER || _MSC_VER */
215 /* NDIS base types */
217 typedef struct _NDIS_SPIN_LOCK
221 } NDIS_SPIN_LOCK
, * PNDIS_SPIN_LOCK
;
223 typedef struct _NDIS_EVENT
226 } NDIS_EVENT
, *PNDIS_EVENT
;
228 typedef PVOID NDIS_HANDLE
, *PNDIS_HANDLE
;
229 typedef int NDIS_STATUS
, *PNDIS_STATUS
;
231 typedef UNICODE_STRING NDIS_STRING
, *PNDIS_STRING
;
233 typedef PCSTR NDIS_ANSI_STRING
, *PNDIS_ANSI_STRING
;
235 typedef MDL NDIS_BUFFER
, *PNDIS_BUFFER
;
237 /* NDIS_STATUS constants */
238 #define NDIS_STATUS_SUCCESS ((NDIS_STATUS)STATUS_SUCCESS)
239 #define NDIS_STATUS_PENDING ((NDIS_STATUS)STATUS_PENDING)
240 #define NDIS_STATUS_NOT_RECOGNIZED ((NDIS_STATUS)0x00010001L)
241 #define NDIS_STATUS_NOT_COPIED ((NDIS_STATUS)0x00010002L)
242 #define NDIS_STATUS_NOT_ACCEPTED ((NDIS_STATUS)0x00010003L)
243 #define NDIS_STATUS_CALL_ACTIVE ((NDIS_STATUS)0x00010007L)
245 #define NDIS_STATUS_ONLINE ((NDIS_STATUS)0x40010003L)
246 #define NDIS_STATUS_RESET_START ((NDIS_STATUS)0x40010004L)
247 #define NDIS_STATUS_RESET_END ((NDIS_STATUS)0x40010005L)
248 #define NDIS_STATUS_RING_STATUS ((NDIS_STATUS)0x40010006L)
249 #define NDIS_STATUS_CLOSED ((NDIS_STATUS)0x40010007L)
250 #define NDIS_STATUS_WAN_LINE_UP ((NDIS_STATUS)0x40010008L)
251 #define NDIS_STATUS_WAN_LINE_DOWN ((NDIS_STATUS)0x40010009L)
252 #define NDIS_STATUS_WAN_FRAGMENT ((NDIS_STATUS)0x4001000AL)
253 #define NDIS_STATUS_MEDIA_CONNECT ((NDIS_STATUS)0x4001000BL)
254 #define NDIS_STATUS_MEDIA_DISCONNECT ((NDIS_STATUS)0x4001000CL)
255 #define NDIS_STATUS_HARDWARE_LINE_UP ((NDIS_STATUS)0x4001000DL)
256 #define NDIS_STATUS_HARDWARE_LINE_DOWN ((NDIS_STATUS)0x4001000EL)
257 #define NDIS_STATUS_INTERFACE_UP ((NDIS_STATUS)0x4001000FL)
258 #define NDIS_STATUS_INTERFACE_DOWN ((NDIS_STATUS)0x40010010L)
259 #define NDIS_STATUS_MEDIA_BUSY ((NDIS_STATUS)0x40010011L)
260 #define NDIS_STATUS_WW_INDICATION ((NDIS_STATUS)0x40010012L)
261 #define NDIS_STATUS_TAPI_INDICATION ((NDIS_STATUS)0x40010080L)
263 #define NDIS_STATUS_NOT_RESETTABLE ((NDIS_STATUS)0x80010001L)
264 #define NDIS_STATUS_SOFT_ERRORS ((NDIS_STATUS)0x80010003L)
265 #define NDIS_STATUS_HARD_ERRORS ((NDIS_STATUS)0x80010004L)
266 #define NDIS_STATUS_BUFFER_OVERFLOW ((NDIS_STATUS)STATUS_BUFFER_OVERFLOW)
268 #define NDIS_STATUS_FAILURE ((NDIS_STATUS)STATUS_UNSUCCESSFUL)
269 #define NDIS_STATUS_RESOURCES ((NDIS_STATUS)STATUS_INSUFFICIENT_RESOURCES)
270 #define NDIS_STATUS_CLOSING ((NDIS_STATUS)0xC0010002L)
271 #define NDIS_STATUS_BAD_VERSION ((NDIS_STATUS)0xC0010004L)
272 #define NDIS_STATUS_BAD_CHARACTERISTICS ((NDIS_STATUS)0xC0010005L)
273 #define NDIS_STATUS_ADAPTER_NOT_FOUND ((NDIS_STATUS)0xC0010006L)
274 #define NDIS_STATUS_OPEN_FAILED ((NDIS_STATUS)0xC0010007L)
275 #define NDIS_STATUS_DEVICE_FAILED ((NDIS_STATUS)0xC0010008L)
276 #define NDIS_STATUS_MULTICAST_FULL ((NDIS_STATUS)0xC0010009L)
277 #define NDIS_STATUS_MULTICAST_EXISTS ((NDIS_STATUS)0xC001000AL)
278 #define NDIS_STATUS_MULTICAST_NOT_FOUND ((NDIS_STATUS)0xC001000BL)
279 #define NDIS_STATUS_REQUEST_ABORTED ((NDIS_STATUS)0xC001000CL)
280 #define NDIS_STATUS_RESET_IN_PROGRESS ((NDIS_STATUS)0xC001000DL)
281 #define NDIS_STATUS_CLOSING_INDICATING ((NDIS_STATUS)0xC001000EL)
282 #define NDIS_STATUS_NOT_SUPPORTED ((NDIS_STATUS)STATUS_NOT_SUPPORTED)
283 #define NDIS_STATUS_INVALID_PACKET ((NDIS_STATUS)0xC001000FL)
284 #define NDIS_STATUS_OPEN_LIST_FULL ((NDIS_STATUS)0xC0010010L)
285 #define NDIS_STATUS_ADAPTER_NOT_READY ((NDIS_STATUS)0xC0010011L)
286 #define NDIS_STATUS_ADAPTER_NOT_OPEN ((NDIS_STATUS)0xC0010012L)
287 #define NDIS_STATUS_NOT_INDICATING ((NDIS_STATUS)0xC0010013L)
288 #define NDIS_STATUS_INVALID_LENGTH ((NDIS_STATUS)0xC0010014L)
289 #define NDIS_STATUS_INVALID_DATA ((NDIS_STATUS)0xC0010015L)
290 #define NDIS_STATUS_BUFFER_TOO_SHORT ((NDIS_STATUS)0xC0010016L)
291 #define NDIS_STATUS_INVALID_OID ((NDIS_STATUS)0xC0010017L)
292 #define NDIS_STATUS_ADAPTER_REMOVED ((NDIS_STATUS)0xC0010018L)
293 #define NDIS_STATUS_UNSUPPORTED_MEDIA ((NDIS_STATUS)0xC0010019L)
294 #define NDIS_STATUS_GROUP_ADDRESS_IN_USE ((NDIS_STATUS)0xC001001AL)
295 #define NDIS_STATUS_FILE_NOT_FOUND ((NDIS_STATUS)0xC001001BL)
296 #define NDIS_STATUS_ERROR_READING_FILE ((NDIS_STATUS)0xC001001CL)
297 #define NDIS_STATUS_ALREADY_MAPPED ((NDIS_STATUS)0xC001001DL)
298 #define NDIS_STATUS_RESOURCE_CONFLICT ((NDIS_STATUS)0xC001001EL)
299 #define NDIS_STATUS_NO_CABLE ((NDIS_STATUS)0xC001001FL)
301 #define NDIS_STATUS_INVALID_SAP ((NDIS_STATUS)0xC0010020L)
302 #define NDIS_STATUS_SAP_IN_USE ((NDIS_STATUS)0xC0010021L)
303 #define NDIS_STATUS_INVALID_ADDRESS ((NDIS_STATUS)0xC0010022L)
304 #define NDIS_STATUS_VC_NOT_ACTIVATED ((NDIS_STATUS)0xC0010023L)
305 #define NDIS_STATUS_DEST_OUT_OF_ORDER ((NDIS_STATUS)0xC0010024L)
306 #define NDIS_STATUS_VC_NOT_AVAILABLE ((NDIS_STATUS)0xC0010025L)
307 #define NDIS_STATUS_CELLRATE_NOT_AVAILABLE ((NDIS_STATUS)0xC0010026L)
308 #define NDIS_STATUS_INCOMPATABLE_QOS ((NDIS_STATUS)0xC0010027L)
309 #define NDIS_STATUS_AAL_PARAMS_UNSUPPORTED ((NDIS_STATUS)0xC0010028L)
310 #define NDIS_STATUS_NO_ROUTE_TO_DESTINATION ((NDIS_STATUS)0xC0010029L)
312 #define NDIS_STATUS_TOKEN_RING_OPEN_ERROR ((NDIS_STATUS)0xC0011000L)
315 /* NDIS error codes for error logging */
317 #define NDIS_ERROR_CODE ULONG
319 #define NDIS_ERROR_CODE_RESOURCE_CONFLICT EVENT_NDIS_RESOURCE_CONFLICT
320 #define NDIS_ERROR_CODE_OUT_OF_RESOURCES EVENT_NDIS_OUT_OF_RESOURCE
321 #define NDIS_ERROR_CODE_HARDWARE_FAILURE EVENT_NDIS_HARDWARE_FAILURE
322 #define NDIS_ERROR_CODE_ADAPTER_NOT_FOUND EVENT_NDIS_ADAPTER_NOT_FOUND
323 #define NDIS_ERROR_CODE_INTERRUPT_CONNECT EVENT_NDIS_INTERRUPT_CONNECT
324 #define NDIS_ERROR_CODE_DRIVER_FAILURE EVENT_NDIS_DRIVER_FAILURE
325 #define NDIS_ERROR_CODE_BAD_VERSION EVENT_NDIS_BAD_VERSION
326 #define NDIS_ERROR_CODE_TIMEOUT EVENT_NDIS_TIMEOUT
327 #define NDIS_ERROR_CODE_NETWORK_ADDRESS EVENT_NDIS_NETWORK_ADDRESS
328 #define NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION EVENT_NDIS_UNSUPPORTED_CONFIGURATION
329 #define NDIS_ERROR_CODE_INVALID_VALUE_FROM_ADAPTER EVENT_NDIS_INVALID_VALUE_FROM_ADAPTER
330 #define NDIS_ERROR_CODE_MISSING_CONFIGURATION_PARAMETER EVENT_NDIS_MISSING_CONFIGURATION_PARAMETER
331 #define NDIS_ERROR_CODE_BAD_IO_BASE_ADDRESS EVENT_NDIS_BAD_IO_BASE_ADDRESS
332 #define NDIS_ERROR_CODE_RECEIVE_SPACE_SMALL EVENT_NDIS_RECEIVE_SPACE_SMALL
333 #define NDIS_ERROR_CODE_ADAPTER_DISABLED EVENT_NDIS_ADAPTER_DISABLED
336 /* Memory allocation flags. Used by Ndis(Allocate|Free)Memory */
337 #define NDIS_MEMORY_CONTIGUOUS 0x00000001
338 #define NDIS_MEMORY_NONCACHED 0x00000002
340 /* NIC attribute flags. Used by NdisMSetAttributes(Ex) */
341 #define NDIS_ATTRIBUTE_IGNORE_PACKET_TIMEOUT 0x00000001
342 #define NDIS_ATTRIBUTE_IGNORE_REQUEST_TIMEOUT 0x00000002
343 #define NDIS_ATTRIBUTE_IGNORE_TOKEN_RING_ERRORS 0x00000004
344 #define NDIS_ATTRIBUTE_BUS_MASTER 0x00000008
345 #define NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER 0x00000010
349 #define MAXIMUM_PROCESSORS 32
355 typedef union _NDIS_RW_LOCK_REFCOUNT
359 } NDIS_RW_LOCK_REFCOUNT
;
361 typedef struct _NDIS_RW_LOCK
373 NDIS_RW_LOCK_REFCOUNT RefCount
[MAXIMUM_PROCESSORS
];
374 } NDIS_RW_LOCK
, *PNDIS_RW_LOCK
;
376 typedef struct _LOCK_STATE
380 } LOCK_STATE
, *PLOCK_STATE
;
386 typedef VOID (*PNDIS_TIMER_FUNCTION
)(
387 IN PVOID SystemSpecific1
,
388 IN PVOID FunctionContext
,
389 IN PVOID SystemSpecific2
,
390 IN PVOID SystemSpecific3
);
392 typedef struct _NDIS_TIMER
396 } NDIS_TIMER
, *PNDIS_TIMER
;
402 typedef CM_MCA_POS_DATA NDIS_MCA_POS_DATA
, *PNDIS_MCA_POS_DATA
;
403 typedef CM_EISA_SLOT_INFORMATION NDIS_EISA_SLOT_INFORMATION
, *PNDIS_EISA_SLOT_INFORMATION
;
404 typedef CM_EISA_FUNCTION_INFORMATION NDIS_EISA_FUNCTION_INFORMATION
, *PNDIS_EISA_FUNCTION_INFORMATION
;
405 typedef CM_PARTIAL_RESOURCE_LIST NDIS_RESOURCE_LIST
, *PNDIS_RESOURCE_LIST
;
407 /* Hardware status codes (OID_GEN_HARDWARE_STATUS) */
408 typedef enum _NDIS_HARDWARE_STATUS
410 NdisHardwareStatusReady
,
411 NdisHardwareStatusInitializing
,
412 NdisHardwareStatusReset
,
413 NdisHardwareStatusClosing
,
414 NdisHardwareStatusNotReady
415 } NDIS_HARDWARE_STATUS
, *PNDIS_HARDWARE_STATUS
;
417 /* OID_GEN_GET_TIME_CAPS */
418 typedef struct _GEN_GET_TIME_CAPS
421 ULONG ClockPrecision
;
422 } GEN_GET_TIME_CAPS
, *PGEN_GET_TIME_CAPS
;
425 #define READABLE_LOCAL_CLOCK 0x00000001
426 #define CLOCK_NETWORK_DERIVED 0x00000002
427 #define CLOCK_PRECISION 0x00000004
428 #define RECEIVE_TIME_INDICATION_CAPABLE 0x00000008
429 #define TIMED_SEND_CAPABLE 0x00000010
430 #define TIME_STAMP_CAPABLE 0x00000020
432 /* OID_GEN_GET_NETCARD_TIME */
433 typedef struct _GEN_GET_NETCARD_TIME
436 } GEN_GET_NETCARD_TIME
, *PGEN_GET_NETCARD_TIME
;
438 /* NDIS driver medium (OID_GEN_MEDIA_SUPPORTED / OID_GEN_MEDIA_IN_USE) */
439 typedef enum _NDIS_MEDIUM
446 NdisMediumDix
, /* Defined for convenience, not a real medium */
448 NdisMediumArcnet878_2
,
450 NdisMediumWirelessWan
,
456 } NDIS_MEDIUM
, *PNDIS_MEDIUM
;
458 /* NDIS packet filter bits (OID_GEN_CURRENT_PACKET_FILTER) */
459 #define NDIS_PACKET_TYPE_DIRECTED 0x00000001
460 #define NDIS_PACKET_TYPE_MULTICAST 0x00000002
461 #define NDIS_PACKET_TYPE_ALL_MULTICAST 0x00000004
462 #define NDIS_PACKET_TYPE_BROADCAST 0x00000008
463 #define NDIS_PACKET_TYPE_SOURCE_ROUTING 0x00000010
464 #define NDIS_PACKET_TYPE_PROMISCUOUS 0x00000020
465 #define NDIS_PACKET_TYPE_SMT 0x00000040
466 #define NDIS_PACKET_TYPE_ALL_LOCAL 0x00000080
467 #define NDIS_PACKET_TYPE_GROUP 0x00001000
468 #define NDIS_PACKET_TYPE_ALL_FUNCTIONAL 0x00002000
469 #define NDIS_PACKET_TYPE_FUNCTIONAL 0x00004000
470 #define NDIS_PACKET_TYPE_MAC_FRAME 0x00008000
472 /* NDIS protocol option bits (OID_GEN_PROTOCOL_OPTIONS) */
473 #define NDIS_PROT_OPTION_ESTIMATED_LENGTH 0x00000001
474 #define NDIS_PROT_OPTION_NO_LOOPBACK 0x00000002
475 #define NDIS_PROT_OPTION_NO_RSVD_ON_RCVPKT 0x00000004
477 /* NDIS MAC option bits (OID_GEN_MAC_OPTIONS) */
478 #define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA 0x00000001
479 #define NDIS_MAC_OPTION_RECEIVE_SERIALIZED 0x00000002
480 #define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND 0x00000004
481 #define NDIS_MAC_OPTION_NO_LOOPBACK 0x00000008
482 #define NDIS_MAC_OPTION_FULL_DUPLEX 0x00000010
483 #define NDIS_MAC_OPTION_EOTX_INDICATION 0x00000020
484 #define NDIS_MAC_OPTION_8021P_PRIORITY 0x00000040
485 #define NDIS_MAC_OPTION_RESERVED 0x80000000
487 /* State of the LAN media (OID_GEN_MEDIA_CONNECT_STATUS) */
488 typedef enum _NDIS_MEDIA_STATE
490 NdisMediaStateConnected
,
491 NdisMediaStateDisconnected
492 } NDIS_MEDIA_STATE
, *PNDIS_MEDIA_STATE
;
494 /* OID_GEN_SUPPORTED_GUIDS */
495 typedef struct _NDIS_GUID
505 } NDIS_GUID
, *PNDIS_GUID
;
507 #define NDIS_GUID_TO_OID 0x00000001
508 #define NDIS_GUID_TO_STATUS 0x00000002
509 #define NDIS_GUID_ANSI_STRING 0x00000004
510 #define NDIS_GUID_UNICODE_STRING 0x00000008
511 #define NDIS_GUID_ARRAY 0x00000010
515 typedef struct _NDIS_PACKET_POOL
517 NDIS_SPIN_LOCK SpinLock
;
518 struct _NDIS_PACKET
*FreeList
;
521 } NDIS_PACKET_POOL
, * PNDIS_PACKET_POOL
;
523 typedef struct _NDIS_PACKET_PRIVATE
529 PNDIS_PACKET_POOL Pool
;
531 ULONG Flags
; /* See fPACKET_xxx bits below */
533 UCHAR NdisPacketFlags
;
534 USHORT NdisPacketOobOffset
;
535 } NDIS_PACKET_PRIVATE
, * PNDIS_PACKET_PRIVATE
;
537 #define fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO 0x40
538 #define fPACKET_ALLOCATED_BY_NDIS 0x80
540 typedef struct _NDIS_PACKET
{
541 NDIS_PACKET_PRIVATE Private
;
544 UCHAR MiniportReserved
[2*sizeof(PVOID
)];
545 UCHAR WrapperReserved
[2*sizeof(PVOID
)];
548 UCHAR MiniportReservedEx
[3*sizeof(PVOID
)];
549 UCHAR WrapperReservedEx
[sizeof(PVOID
)];
552 UCHAR MacReserved
[4*sizeof(PVOID
)];
555 ULONG_PTR Reserved
[2];
556 UCHAR ProtocolReserved
[1];
557 } NDIS_PACKET
, *PNDIS_PACKET
, **PPNDIS_PACKET
;
559 typedef struct _NDIS_PACKET_OOB_DATA
{
561 ULONGLONG TimeToSend
;
564 ULONGLONG TimeReceived
;
566 UINT SizeMediaSpecificInfo
;
567 PVOID MediaSpecificInformation
;
569 } NDIS_PACKET_OOB_DATA
, *PNDIS_PACKET_OOB_DATA
;
571 typedef struct _NDIS_PM_PACKET_PATTERN
579 } NDIS_PM_PACKET_PATTERN
, *PNDIS_PM_PACKET_PATTERN
;
582 /* Request types used by NdisRequest */
583 typedef enum _NDIS_REQUEST_TYPE
585 NdisRequestQueryInformation
,
586 NdisRequestSetInformation
,
587 NdisRequestQueryStatistics
,
591 NdisRequestTransferData
,
597 } NDIS_REQUEST_TYPE
, *PNDIS_REQUEST_TYPE
;
599 typedef struct _NDIS_REQUEST
{
600 UCHAR MacReserved
[16];
601 NDIS_REQUEST_TYPE RequestType
;
603 struct QUERY_INFORMATION
{
605 PVOID InformationBuffer
;
606 UINT InformationBufferLength
;
610 struct SET_INFORMATION
{
612 PVOID InformationBuffer
;
613 UINT InformationBufferLength
;
618 } NDIS_REQUEST
, *PNDIS_REQUEST
;
622 /* Wide Area Networks definitions */
624 typedef struct _NDIS_WAN_PACKET
626 LIST_ENTRY WanPacketQueue
;
627 PUCHAR CurrentBuffer
;
631 PVOID ProtocolReserved1
;
632 PVOID ProtocolReserved2
;
633 PVOID ProtocolReserved3
;
634 PVOID ProtocolReserved4
;
639 } NDIS_WAN_PACKET
, *PNDIS_WAN_PACKET
;
643 /* DMA channel information */
645 typedef struct _NDIS_DMA_DESCRIPTION
648 BOOLEAN AutoInitialize
;
649 BOOLEAN DmaChannelSpecified
;
654 } NDIS_DMA_DESCRIPTION
, *PNDIS_DMA_DESCRIPTION
;
656 typedef struct _NDIS_DMA_BLOCK
658 PVOID MapRegisterBase
;
659 KEVENT AllocationEvent
;
660 PADAPTER_OBJECT SystemAdapterObject
;
662 } NDIS_DMA_BLOCK
, *PNDIS_DMA_BLOCK
;
665 /* Possible hardware architecture */
666 typedef enum _NDIS_INTERFACE_TYPE
668 NdisInterfaceInternal
= Internal
,
669 NdisInterfaceIsa
= Isa
,
670 NdisInterfaceEisa
= Eisa
,
671 NdisInterfaceMca
= MicroChannel
,
672 NdisInterfaceTurboChannel
= TurboChannel
,
673 NdisInterfacePci
= PCIBus
,
674 NdisInterfacePcMcia
= PCMCIABus
675 } NDIS_INTERFACE_TYPE
, *PNDIS_INTERFACE_TYPE
;
677 #define NdisInterruptLevelSensitive LevelSensitive
678 #define NdisInterruptLatched Latched
679 typedef KINTERRUPT_MODE NDIS_INTERRUPT_MODE
, *PNDIS_INTERRUPT_MODE
;
682 typedef enum _NDIS_PARAMETER_TYPE
684 NdisParameterInteger
,
685 NdisParameterHexInteger
,
687 NdisParameterMultiString
688 } NDIS_PARAMETER_TYPE
, *PNDIS_PARAMETER_TYPE
;
690 typedef struct _NDIS_CONFIGURATION_PARAMETER
692 NDIS_PARAMETER_TYPE ParameterType
;
696 NDIS_STRING StringData
;
698 } NDIS_CONFIGURATION_PARAMETER
, *PNDIS_CONFIGURATION_PARAMETER
;
701 typedef PHYSICAL_ADDRESS NDIS_PHYSICAL_ADDRESS
, *PNDIS_PHYSICAL_ADDRESS
;
703 typedef struct _NDIS_PHYSICAL_ADDRESS_UNIT
705 NDIS_PHYSICAL_ADDRESS PhysicalAddress
;
707 } NDIS_PHYSICAL_ADDRESS_UNIT
, *PNDIS_PHYSICAL_ADDRESS_UNIT
;
710 typedef VOID (*ADAPTER_SHUTDOWN_HANDLER
)(
711 IN PVOID ShutdownContext
);
717 typedef struct _OID_LIST OID_LIST
, *POID_LIST
;
721 typedef enum _NDIS_PNP_DEVICE_STATE
724 NdisPnPDeviceStarted
,
725 NdisPnPDeviceQueryStopped
,
726 NdisPnPDeviceStopped
,
727 NdisPnPDeviceQueryRemoved
,
728 NdisPnPDeviceRemoved
,
729 NdisPnPDeviceSurpriseRemoved
730 } NDIS_PNP_DEVICE_STATE
;
732 #define NDIS_DEVICE_NOT_STOPPABLE 0x00000001
733 #define NDIS_DEVICE_NOT_REMOVEABLE 0x00000002
734 #define NDIS_DEVICE_NOT_SUSPENDABLE 0x00000004
735 #define NDIS_DEVICE_DISABLE_PM 0x00000008
736 #define NDIS_DEVICE_DISABLE_WAKE_UP 0x00000010
737 #define NDIS_DEVICE_DISABLE_WAKE_ON_RECONNECT 0x00000020
739 #endif /* NDIS_WRAPPER */
744 typedef struct _ATM_ADDRESS ATM_ADDRESS
, *PATM_ADDRESS
;
747 /* OID_GEN_NETWORK_LAYER_ADDRESSES */
748 typedef struct _NETWORK_ADDRESS
750 USHORT AddressLength
;
753 } NETWORK_ADDRESS
, *PNETWORK_ADDRESS
;
755 typedef struct _NETWORK_ADDRESS_LIST
759 NETWORK_ADDRESS Address
[1];
760 } NETWORK_ADDRESS_LIST
, *PNETWORK_ADDRESS_LIST
;
762 /* Protocol types supported by NDIS */
763 #define NDIS_PROTOCOL_ID_DEFAULT 0x00
764 #define NDIS_PROTOCOL_ID_TCP_IP 0x02
765 #define NDIS_PROTOCOL_ID_IPX 0x06
766 #define NDIS_PROTOCOL_ID_NBF 0x07
767 #define NDIS_PROTOCOL_ID_MAX 0x0F
768 #define NDIS_PROTOCOL_ID_MASK 0x0F
770 /* OID_GEN_TRANSPORT_HEADER_OFFSET */
771 typedef struct _TRANSPORT_HEADER_OFFSET
775 } TRANSPORT_HEADER_OFFSET
, *PTRANSPORT_HEADER_OFFSET
;
778 /* OID_GEN_CO_LINK_SPEED / OID_GEN_CO_MINIMUM_LINK_SPEED */
779 typedef struct _NDIS_CO_LINK_SPEED
783 } NDIS_CO_LINK_SPEED
, *PNDIS_CO_LINK_SPEED
;
786 typedef enum _NDIS_AF
788 CO_ADDRESS_FAMILY_Q2931
= 1,
789 CO_ADDRESS_FAMILY_SPANS
,
790 } NDIS_AF
, *PNDIS_AF
;
794 NDIS_AF AddressFamily
;
797 } CO_ADDRESS_FAMILY
, *PCO_ADDRESS_FAMILY
;
806 typedef struct _CO_FLOW_PARAMETERS
808 ULONG TokenRate
; /* In Bytes/sec */
809 ULONG TokenBucketSize
; /* In Bytes */
810 ULONG PeakBandwidth
; /* In Bytes/sec */
811 ULONG Latency
; /* In microseconds */
812 ULONG DelayVariation
; /* In microseconds */
813 GUARANTEE LevelOfGuarantee
; /* Guaranteed, Predictive or Best Effort */
814 ULONG CostOfCall
; /* Reserved for future use, */
815 /* must be set to 0 now */
816 ULONG NetworkAvailability
; /* read-only: 1 if accessible, 0 if not */
817 ULONG MaxSduSize
; /* In Bytes */
818 } CO_FLOW_PARAMETERS
, *PCO_FLOW_PARAMETERS
;
820 typedef struct _CO_SPECIFIC_PARAMETERS
825 } CO_SPECIFIC_PARAMETERS
, *PCO_SPECIFIC_PARAMETERS
;
827 typedef struct _CO_CALL_MANAGER_PARAMETERS
{
828 CO_FLOW_PARAMETERS Transmit
;
829 CO_FLOW_PARAMETERS Receive
;
830 CO_SPECIFIC_PARAMETERS CallMgrSpecific
;
831 } CO_CALL_MANAGER_PARAMETERS
, *PCO_CALL_MANAGER_PARAMETERS
;
833 typedef struct _CO_MEDIA_PARAMETERS
836 ULONG ReceivePriority
;
837 ULONG ReceiveSizeHint
;
838 CO_SPECIFIC_PARAMETERS MediaSpecific
;
839 } CO_MEDIA_PARAMETERS
, *PCO_MEDIA_PARAMETERS
;
841 /* Definitions for the flags in CO_MEDIA_PARAMETERS */
842 #define RECEIVE_TIME_INDICATION 0x00000001
843 #define USE_TIME_STAMPS 0x00000002
844 #define TRANSMIT_VC 0x00000004
845 #define RECEIVE_VC 0x00000008
846 #define INDICATE_ERRED_PACKETS 0x00000010
847 #define INDICATE_END_OF_TX 0x00000020
848 #define RESERVE_RESOURCES_VC 0x00000040
849 #define ROUND_DOWN_FLOW 0x00000080
850 #define ROUND_UP_FLOW 0x00000100
852 typedef struct _CO_CALL_PARAMETERS
855 PCO_CALL_MANAGER_PARAMETERS CallMgrParameters
;
856 PCO_MEDIA_PARAMETERS MediaParameters
;
857 } CO_CALL_PARAMETERS
, *PCO_CALL_PARAMETERS
;
859 typedef struct _CO_SAP
{
865 typedef struct _NDIS_IPSEC_PACKET_INFO
871 NDIS_HANDLE OffloadHandle
;
872 NDIS_HANDLE NextOffloadHandle
;
877 ULONG SA_DELETE_REQ
:1;
879 ULONG NEXT_CRYPTO_DONE
:1;
883 } NDIS_IPSEC_PACKET_INFO
, *PNDIS_IPSEC_PACKET_INFO
;
886 /* Plug and play and power management */
888 /* PnP and PM event codes */
889 typedef enum _NET_PNP_EVENT_CODE
893 NetEventQueryRemoveDevice
,
894 NetEventCancelRemoveDevice
,
897 NetEventBindsComplete
,
898 NetEventPnPCapabilities
,
900 } NET_PNP_EVENT_CODE
, *PNET_PNP_EVENT_CODE
;
902 /* Networking PnP event indication structure */
903 typedef struct _NET_PNP_EVENT
906 NET_PNP_EVENT_CODE NetEvent
;
907 /* Event specific data */
909 /* Length of event specific data */
913 ULONG_PTR NdisReserved
[4];
914 ULONG_PTR TransportReserved
[4];
915 ULONG_PTR TdiReserved
[4];
916 ULONG_PTR TdiClientReserved
[4];
917 } NET_PNP_EVENT
, *PNET_PNP_EVENT
;
919 /* Device power state structure */
920 typedef enum _NET_DEVICE_POWER_STATE
922 NetDeviceStateUnspecified
= 0,
927 NetDeviceStateMaximum
928 } NET_DEVICE_POWER_STATE
, *PNET_DEVICE_POWER_STATE
;
934 typedef NDIS_STATUS (*CO_CREATE_VC_HANDLER
)(
935 IN NDIS_HANDLE ProtocolAfContext
,
936 IN NDIS_HANDLE NdisVcHandle
,
937 OUT PNDIS_HANDLE ProtocolVcContext
);
939 typedef NDIS_STATUS (*CO_DELETE_VC_HANDLER
)(
940 IN NDIS_HANDLE ProtocolVcContext
);
942 typedef NDIS_STATUS (*CO_REQUEST_HANDLER
)(
943 IN NDIS_HANDLE ProtocolAfContext
,
944 IN NDIS_HANDLE ProtocolVcContext OPTIONAL
,
945 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
,
946 IN OUT PNDIS_REQUEST NdisRequest
);
948 typedef VOID (*CO_REQUEST_COMPLETE_HANDLER
)(
949 IN NDIS_STATUS Status
,
950 IN NDIS_HANDLE ProtocolAfContext OPTIONAL
,
951 IN NDIS_HANDLE ProtocolVcContext OPTIONAL
,
952 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
,
953 IN PNDIS_REQUEST NdisRequest
);
956 typedef NDIS_STATUS (*CM_OPEN_AF_HANDLER
)(
957 IN NDIS_HANDLE CallMgrBindingContext
,
958 IN PCO_ADDRESS_FAMILY AddressFamily
,
959 IN NDIS_HANDLE NdisAfHandle
,
960 OUT PNDIS_HANDLE CallMgrAfContext
965 (*CM_CLOSE_AF_HANDLER
)(
966 IN NDIS_HANDLE CallMgrAfContext
971 (*CM_REG_SAP_HANDLER
)(
972 IN NDIS_HANDLE CallMgrAfContext
,
974 IN NDIS_HANDLE NdisSapHandle
,
975 OUT PNDIS_HANDLE CallMgrSapContext
980 (*CM_DEREG_SAP_HANDLER
)(
981 IN NDIS_HANDLE CallMgrSapContext
986 (*CM_MAKE_CALL_HANDLER
)(
987 IN NDIS_HANDLE CallMgrVcContext
,
988 IN OUT PCO_CALL_PARAMETERS CallParameters
,
989 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
990 OUT PNDIS_HANDLE CallMgrPartyContext OPTIONAL
995 (*CM_CLOSE_CALL_HANDLER
)(
996 IN NDIS_HANDLE CallMgrVcContext
,
997 IN NDIS_HANDLE CallMgrPartyContext OPTIONAL
,
998 IN PVOID CloseData OPTIONAL
,
999 IN UINT Size OPTIONAL
1004 (*CM_INCOMING_CALL_COMPLETE_HANDLER
)(
1005 IN NDIS_STATUS Status
,
1006 IN NDIS_HANDLE CallMgrVcContext
,
1007 IN PCO_CALL_PARAMETERS CallParameters
1012 (*CM_ADD_PARTY_HANDLER
)(
1013 IN NDIS_HANDLE CallMgrVcContext
,
1014 IN OUT PCO_CALL_PARAMETERS CallParameters
,
1015 IN NDIS_HANDLE NdisPartyHandle
,
1016 OUT PNDIS_HANDLE CallMgrPartyContext
1021 (*CM_DROP_PARTY_HANDLER
)(
1022 IN NDIS_HANDLE CallMgrPartyContext
,
1023 IN PVOID CloseData OPTIONAL
,
1024 IN UINT Size OPTIONAL
1029 (*CM_ACTIVATE_VC_COMPLETE_HANDLER
)(
1030 IN NDIS_STATUS Status
,
1031 IN NDIS_HANDLE CallMgrVcContext
,
1032 IN PCO_CALL_PARAMETERS CallParameters
1037 (*CM_DEACTIVATE_VC_COMPLETE_HANDLER
)(
1038 IN NDIS_STATUS Status
,
1039 IN NDIS_HANDLE CallMgrVcContext
1044 (*CM_MODIFY_CALL_QOS_HANDLER
)(
1045 IN NDIS_HANDLE CallMgrVcContext
,
1046 IN PCO_CALL_PARAMETERS CallParameters
1049 typedef struct _NDIS_CALL_MANAGER_CHARACTERISTICS
1057 CO_CREATE_VC_HANDLER CmCreateVcHandler
;
1058 CO_DELETE_VC_HANDLER CmDeleteVcHandler
;
1059 CM_OPEN_AF_HANDLER CmOpenAfHandler
;
1060 CM_CLOSE_AF_HANDLER CmCloseAfHandler
;
1061 CM_REG_SAP_HANDLER CmRegisterSapHandler
;
1062 CM_DEREG_SAP_HANDLER CmDeregisterSapHandler
;
1063 CM_MAKE_CALL_HANDLER CmMakeCallHandler
;
1064 CM_CLOSE_CALL_HANDLER CmCloseCallHandler
;
1065 CM_INCOMING_CALL_COMPLETE_HANDLER CmIncomingCallCompleteHandler
;
1066 CM_ADD_PARTY_HANDLER CmAddPartyHandler
;
1067 CM_DROP_PARTY_HANDLER CmDropPartyHandler
;
1068 CM_ACTIVATE_VC_COMPLETE_HANDLER CmActivateVcCompleteHandler
;
1069 CM_DEACTIVATE_VC_COMPLETE_HANDLER CmDeactivateVcCompleteHandler
;
1070 CM_MODIFY_CALL_QOS_HANDLER CmModifyCallQoSHandler
;
1071 CO_REQUEST_HANDLER CmRequestHandler
;
1072 CO_REQUEST_COMPLETE_HANDLER CmRequestCompleteHandler
;
1073 } NDIS_CALL_MANAGER_CHARACTERISTICS
, *PNDIS_CALL_MANAGER_CHARACTERISTICS
;
1077 /* Call Manager clients */
1079 typedef VOID (*CL_OPEN_AF_COMPLETE_HANDLER
)(
1080 IN NDIS_STATUS Status
,
1081 IN NDIS_HANDLE ProtocolAfContext
,
1082 IN NDIS_HANDLE NdisAfHandle
);
1084 typedef VOID (*CL_CLOSE_AF_COMPLETE_HANDLER
)(
1085 IN NDIS_STATUS Status
,
1086 IN NDIS_HANDLE ProtocolAfContext
);
1088 typedef VOID (*CL_REG_SAP_COMPLETE_HANDLER
)(
1089 IN NDIS_STATUS Status
,
1090 IN NDIS_HANDLE ProtocolSapContext
,
1092 IN NDIS_HANDLE NdisSapHandle
);
1094 typedef VOID (*CL_DEREG_SAP_COMPLETE_HANDLER
)(
1095 IN NDIS_STATUS Status
,
1096 IN NDIS_HANDLE ProtocolSapContext
);
1098 typedef VOID (*CL_MAKE_CALL_COMPLETE_HANDLER
)(
1099 IN NDIS_STATUS Status
,
1100 IN NDIS_HANDLE ProtocolVcContext
,
1101 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
1102 IN PCO_CALL_PARAMETERS CallParameters
);
1104 typedef VOID (*CL_MODIFY_CALL_QOS_COMPLETE_HANDLER
)(
1105 IN NDIS_STATUS Status
,
1106 IN NDIS_HANDLE ProtocolVcContext
,
1107 IN PCO_CALL_PARAMETERS CallParameters
);
1109 typedef VOID (*CL_CLOSE_CALL_COMPLETE_HANDLER
)(
1110 IN NDIS_STATUS Status
,
1111 IN NDIS_HANDLE ProtocolVcContext
,
1112 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
);
1114 typedef VOID (*CL_ADD_PARTY_COMPLETE_HANDLER
)(
1115 IN NDIS_STATUS Status
,
1116 IN NDIS_HANDLE ProtocolPartyContext
,
1117 IN NDIS_HANDLE NdisPartyHandle
,
1118 IN PCO_CALL_PARAMETERS CallParameters
);
1120 typedef VOID (*CL_DROP_PARTY_COMPLETE_HANDLER
)(
1121 IN NDIS_STATUS Status
,
1122 IN NDIS_HANDLE ProtocolPartyContext
);
1124 typedef NDIS_STATUS (*CL_INCOMING_CALL_HANDLER
)(
1125 IN NDIS_HANDLE ProtocolSapContext
,
1126 IN NDIS_HANDLE ProtocolVcContext
,
1127 IN OUT PCO_CALL_PARAMETERS CallParameters
);
1129 typedef VOID (*CL_INCOMING_CALL_QOS_CHANGE_HANDLER
)(
1130 IN NDIS_HANDLE ProtocolVcContext
,
1131 IN PCO_CALL_PARAMETERS CallParameters
);
1133 typedef VOID (*CL_INCOMING_CLOSE_CALL_HANDLER
)(
1134 IN NDIS_STATUS CloseStatus
,
1135 IN NDIS_HANDLE ProtocolVcContext
,
1136 IN PVOID CloseData OPTIONAL
,
1137 IN UINT Size OPTIONAL
);
1139 typedef VOID (*CL_INCOMING_DROP_PARTY_HANDLER
)(
1140 IN NDIS_STATUS DropStatus
,
1141 IN NDIS_HANDLE ProtocolPartyContext
,
1142 IN PVOID CloseData OPTIONAL
,
1143 IN UINT Size OPTIONAL
);
1145 typedef VOID (*CL_CALL_CONNECTED_HANDLER
)(
1146 IN NDIS_HANDLE ProtocolVcContext
);
1149 typedef struct _NDIS_CLIENT_CHARACTERISTICS
1157 CO_CREATE_VC_HANDLER ClCreateVcHandler
;
1158 CO_DELETE_VC_HANDLER ClDeleteVcHandler
;
1159 CO_REQUEST_HANDLER ClRequestHandler
;
1160 CO_REQUEST_COMPLETE_HANDLER ClRequestCompleteHandler
;
1161 CL_OPEN_AF_COMPLETE_HANDLER ClOpenAfCompleteHandler
;
1162 CL_CLOSE_AF_COMPLETE_HANDLER ClCloseAfCompleteHandler
;
1163 CL_REG_SAP_COMPLETE_HANDLER ClRegisterSapCompleteHandler
;
1164 CL_DEREG_SAP_COMPLETE_HANDLER ClDeregisterSapCompleteHandler
;
1165 CL_MAKE_CALL_COMPLETE_HANDLER ClMakeCallCompleteHandler
;
1166 CL_MODIFY_CALL_QOS_COMPLETE_HANDLER ClModifyCallQoSCompleteHandler
;
1167 CL_CLOSE_CALL_COMPLETE_HANDLER ClCloseCallCompleteHandler
;
1168 CL_ADD_PARTY_COMPLETE_HANDLER ClAddPartyCompleteHandler
;
1169 CL_DROP_PARTY_COMPLETE_HANDLER ClDropPartyCompleteHandler
;
1170 CL_INCOMING_CALL_HANDLER ClIncomingCallHandler
;
1171 CL_INCOMING_CALL_QOS_CHANGE_HANDLER ClIncomingCallQoSChangeHandler
;
1172 CL_INCOMING_CLOSE_CALL_HANDLER ClIncomingCloseCallHandler
;
1173 CL_INCOMING_DROP_PARTY_HANDLER ClIncomingDropPartyHandler
;
1174 CL_CALL_CONNECTED_HANDLER ClCallConnectedHandler
;
1175 } NDIS_CLIENT_CHARACTERISTICS
, *PNDIS_CLIENT_CHARACTERISTICS
;
1181 /* NDIS protocol structures */
1183 /* Prototypes for NDIS 3.0 protocol characteristics */
1185 typedef VOID (*OPEN_ADAPTER_COMPLETE_HANDLER
)(
1186 IN NDIS_HANDLE ProtocolBindingContext
,
1187 IN NDIS_STATUS Status
,
1188 IN NDIS_STATUS OpenErrorStatus
);
1190 typedef VOID (*CLOSE_ADAPTER_COMPLETE_HANDLER
)(
1191 IN NDIS_HANDLE ProtocolBindingContext
,
1192 IN NDIS_STATUS Status
);
1194 typedef VOID (*RESET_COMPLETE_HANDLER
)(
1195 IN NDIS_HANDLE ProtocolBindingContext
,
1196 IN NDIS_STATUS Status
);
1198 typedef VOID (*REQUEST_COMPLETE_HANDLER
)(
1199 IN NDIS_HANDLE ProtocolBindingContext
,
1200 IN PNDIS_REQUEST NdisRequest
,
1201 IN NDIS_STATUS Status
);
1203 typedef VOID (*STATUS_HANDLER
)(
1204 IN NDIS_HANDLE ProtocolBindingContext
,
1205 IN NDIS_STATUS GeneralStatus
,
1206 IN PVOID StatusBuffer
,
1207 IN UINT StatusBufferSize
);
1209 typedef VOID (*STATUS_COMPLETE_HANDLER
)(
1210 IN NDIS_HANDLE ProtocolBindingContext
);
1212 typedef VOID (*SEND_COMPLETE_HANDLER
)(
1213 IN NDIS_HANDLE ProtocolBindingContext
,
1214 IN PNDIS_PACKET Packet
,
1215 IN NDIS_STATUS Status
);
1217 typedef VOID (*WAN_SEND_COMPLETE_HANDLER
)(
1218 IN NDIS_HANDLE ProtocolBindingContext
,
1219 IN PNDIS_WAN_PACKET Packet
,
1220 IN NDIS_STATUS Status
);
1222 typedef VOID (*TRANSFER_DATA_COMPLETE_HANDLER
)(
1223 IN NDIS_HANDLE ProtocolBindingContext
,
1224 IN PNDIS_PACKET Packet
,
1225 IN NDIS_STATUS Status
,
1226 IN UINT BytesTransferred
);
1228 typedef VOID (*WAN_TRANSFER_DATA_COMPLETE_HANDLER
)(
1231 typedef NDIS_STATUS (*RECEIVE_HANDLER
)(
1232 IN NDIS_HANDLE ProtocolBindingContext
,
1233 IN NDIS_HANDLE MacReceiveContext
,
1234 IN PVOID HeaderBuffer
,
1235 IN UINT HeaderBufferSize
,
1236 IN PVOID LookAheadBuffer
,
1237 IN UINT LookaheadBufferSize
,
1238 IN UINT PacketSize
);
1240 typedef NDIS_STATUS (*WAN_RECEIVE_HANDLER
)(
1241 IN NDIS_HANDLE NdisLinkHandle
,
1243 IN ULONG PacketSize
);
1245 typedef VOID (*RECEIVE_COMPLETE_HANDLER
)(
1246 IN NDIS_HANDLE ProtocolBindingContext
);
1249 /* Protocol characteristics for NDIS 3.0 protocols */
1251 typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS
1253 UCHAR MajorNdisVersion
;
1254 UCHAR MinorNdisVersion
;
1260 OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler
;
1261 CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler
;
1264 SEND_COMPLETE_HANDLER SendCompleteHandler
;
1265 WAN_SEND_COMPLETE_HANDLER WanSendCompleteHandler
;
1269 TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler
;
1270 WAN_TRANSFER_DATA_COMPLETE_HANDLER WanTransferDataCompleteHandler
;
1273 RESET_COMPLETE_HANDLER ResetCompleteHandler
;
1274 REQUEST_COMPLETE_HANDLER RequestCompleteHandler
;
1277 RECEIVE_HANDLER ReceiveHandler
;
1278 WAN_RECEIVE_HANDLER WanReceiveHandler
;
1280 RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler
;
1281 STATUS_HANDLER StatusHandler
;
1282 STATUS_COMPLETE_HANDLER StatusCompleteHandler
;
1284 } NDIS30_PROTOCOL_CHARACTERISTICS
;
1285 typedef NDIS30_PROTOCOL_CHARACTERISTICS NDIS30_PROTOCOL_CHARACTERISTICS_S
;
1287 #define NDIS30_PROTOCOL_CHARACTERISTICS \
1288 UCHAR MajorNdisVersion; \
1289 UCHAR MinorNdisVersion; \
1295 OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler; \
1296 CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler; \
1299 SEND_COMPLETE_HANDLER SendCompleteHandler; \
1300 WAN_SEND_COMPLETE_HANDLER WanSendCompleteHandler; \
1304 TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; \
1305 WAN_TRANSFER_DATA_COMPLETE_HANDLER WanTransferDataCompleteHandler; \
1307 RESET_COMPLETE_HANDLER ResetCompleteHandler; \
1308 REQUEST_COMPLETE_HANDLER RequestCompleteHandler; \
1311 RECEIVE_HANDLER ReceiveHandler; \
1312 WAN_RECEIVE_HANDLER WanReceiveHandler; \
1314 RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; \
1315 STATUS_HANDLER StatusHandler; \
1316 STATUS_COMPLETE_HANDLER StatusCompleteHandler; \
1318 typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS_S
1320 NDIS30_PROTOCOL_CHARACTERISTICS
;
1321 } NDIS30_PROTOCOL_CHARACTERISTICS_S
, *PNDIS30_PROTOCOL_CHARACTERISTICS_S
;
1324 /* Prototypes for NDIS 4.0 protocol characteristics */
1326 typedef INT (*RECEIVE_PACKET_HANDLER
)(
1327 IN NDIS_HANDLE ProtocolBindingContext
,
1328 IN PNDIS_PACKET Packet
);
1330 typedef VOID (*BIND_HANDLER
)(
1331 OUT PNDIS_STATUS Status
,
1332 IN NDIS_HANDLE BindContext
,
1333 IN PNDIS_STRING DeviceName
,
1334 IN PVOID SystemSpecific1
,
1335 IN PVOID SystemSpecific2
);
1337 typedef VOID (*UNBIND_HANDLER
)(
1338 OUT PNDIS_STATUS Status
,
1339 IN NDIS_HANDLE ProtocolBindingContext
,
1340 IN NDIS_HANDLE UnbindContext
);
1342 typedef VOID (*TRANSLATE_HANDLER
)(
1343 OUT PNDIS_STATUS Status
,
1344 IN NDIS_HANDLE ProtocolBindingContext
,
1345 OUT PNET_PNP_ID IdList
,
1346 IN ULONG IdListLength
,
1347 OUT PULONG BytesReturned
);
1349 typedef VOID (*UNLOAD_PROTOCOL_HANDLER
)(
1353 /* Protocol characteristics for NDIS 4.0 protocols */
1355 typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS
1357 NDIS30_PROTOCOL_CHARACTERISTICS
;
1359 RECEIVE_PACKET_HANDLER ReceivePacketHandler
;
1360 BIND_HANDLER BindAdapterHandler
;
1361 UNBIND_HANDLER UnbindAdapterHandler
;
1362 TRANSLATE_HANDLER TranslateHandler
;
1363 UNLOAD_PROTOCOL_HANDLER UnloadHandler
;
1364 } NDIS40_PROTOCOL_CHARACTERISTICS
;
1365 typedef NDIS40_PROTOCOL_CHARACTERISTICS NDIS40_PROTOCOL_CHARACTERISTICS_S
;
1367 #define NDIS40_PROTOCOL_CHARACTERISTICS \
1368 NDIS30_PROTOCOL_CHARACTERISTICS; \
1369 RECEIVE_PACKET_HANDLER ReceivePacketHandler; \
1370 BIND_HANDLER BindAdapterHandler; \
1371 UNBIND_HANDLER UnbindAdapterHandler; \
1372 TRANSLATE_HANDLER TranslateHandler; \
1373 UNLOAD_PROTOCOL_HANDLER UnloadHandler;
1374 typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS_S
1376 NDIS40_PROTOCOL_CHARACTERISTICS
;
1377 } NDIS40_PROTOCOL_CHARACTERISTICS_S
, *PNDIS40_PROTOCOL_CHARACTERISTICS_S
;
1381 /* Prototypes for NDIS 5.0 protocol characteristics */
1385 typedef VOID (*CO_SEND_COMPLETE_HANDLER
)(
1386 IN NDIS_STATUS Status
,
1387 IN NDIS_HANDLE ProtocolVcContext
,
1388 IN PNDIS_PACKET Packet
);
1390 typedef VOID (*CO_STATUS_HANDLER
)(
1391 IN NDIS_HANDLE ProtocolBindingContext
,
1392 IN NDIS_HANDLE ProtocolVcContext OPTIONAL
,
1393 IN NDIS_STATUS GeneralStatus
,
1394 IN PVOID StatusBuffer
,
1395 IN UINT StatusBufferSize
);
1397 typedef UINT (*CO_RECEIVE_PACKET_HANDLER
)(
1398 IN NDIS_HANDLE ProtocolBindingContext
,
1399 IN NDIS_HANDLE ProtocolVcContext
,
1400 IN PNDIS_PACKET Packet
);
1402 typedef VOID (*CO_AF_REGISTER_NOTIFY_HANDLER
)(
1403 IN NDIS_HANDLE ProtocolBindingContext
,
1404 IN PCO_ADDRESS_FAMILY AddressFamily
);
1407 typedef struct _NDIS50_PROTOCOL_CHARACTERISTICS
1409 NDIS40_PROTOCOL_CHARACTERISTICS
;
1411 PVOID ReservedHandlers
[4];
1413 CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler
;
1414 CO_STATUS_HANDLER CoStatusHandler
;
1415 CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler
;
1416 CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler
;
1417 } NDIS50_PROTOCOL_CHARACTERISTICS
;
1418 typedef NDIS50_PROTOCOL_CHARACTERISTICS NDIS50_PROTOCOL_CHARACTERISTICS_S
;
1420 #define NDIS50_PROTOCOL_CHARACTERISTICS \
1421 NDIS40_PROTOCOL_CHARACTERISTICS; \
1422 PVOID ReservedHandlers[4]; \
1423 CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler; \
1424 CO_STATUS_HANDLER CoStatusHandler; \
1425 CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler; \
1426 CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler;
1427 typedef struct _NDIS50_PROTOCOL_CHARACTERISTICS_S
1429 NDIS50_PROTOCOL_CHARACTERISTICS
;
1430 } NDIS50_PROTOCOL_CHARACTERISTICS_S
, *PNDIS50_PROTOCOL_CHARACTERISTICS_S
;
1437 typedef struct _NDIS_PROTOCOL_CHARACTERISTICS
1439 NDIS30_PROTOCOL_CHARACTERISTICS
;
1440 } NDIS_PROTOCOL_CHARACTERISTICS
;
1442 typedef struct _NDIS_PROTOCOL_CHARACTERISTICS
1444 NDIS40_PROTOCOL_CHARACTERISTICS
;
1445 } NDIS_PROTOCOL_CHARACTERISTICS
;
1448 typedef struct _NDIS_PROTOCOL_CHARACTERISTICS
1450 NDIS50_PROTOCOL_CHARACTERISTICS
;
1451 } NDIS_PROTOCOL_CHARACTERISTICS
;
1454 typedef NDIS_PROTOCOL_CHARACTERISTICS
*PNDIS_PROTOCOL_CHARACTERISTICS
;
1458 /* Buffer management routines */
1463 OUT PNDIS_STATUS Status
,
1464 OUT PNDIS_BUFFER
*Buffer
,
1465 IN NDIS_HANDLE PoolHandle
,
1466 IN PVOID VirtualAddress
,
1471 NdisAllocateBufferPool(
1472 OUT PNDIS_STATUS Status
,
1473 OUT PNDIS_HANDLE PoolHandle
,
1474 IN UINT NumberOfDescriptors
);
1479 OUT PNDIS_STATUS Status
,
1480 OUT PNDIS_PACKET
*Packet
,
1481 IN NDIS_HANDLE PoolHandle
);
1485 NdisAllocatePacketPool(
1486 OUT PNDIS_STATUS Status
,
1487 OUT PNDIS_HANDLE PoolHandle
,
1488 IN UINT NumberOfDescriptors
,
1489 IN UINT ProtocolReservedLength
);
1494 OUT PNDIS_STATUS Status
,
1495 OUT PNDIS_BUFFER
*Buffer
,
1496 IN NDIS_HANDLE PoolHandle
,
1497 IN PVOID MemoryDescriptor
,
1503 NdisCopyFromPacketToPacket(
1504 IN PNDIS_PACKET Destination
,
1505 IN UINT DestinationOffset
,
1506 IN UINT BytesToCopy
,
1507 IN PNDIS_PACKET Source
,
1508 IN UINT SourceOffset
,
1509 OUT PUINT BytesCopied
);
1513 NdisDprAllocatePacket(
1514 OUT PNDIS_STATUS Status
,
1515 OUT PNDIS_PACKET
*Packet
,
1516 IN NDIS_HANDLE PoolHandle
);
1520 NdisDprAllocatePacketNonInterlocked(
1521 OUT PNDIS_STATUS Status
,
1522 OUT PNDIS_PACKET
*Packet
,
1523 IN NDIS_HANDLE PoolHandle
);
1528 IN PNDIS_PACKET Packet
);
1532 NdisDprFreePacketNonInterlocked(
1533 IN PNDIS_PACKET Packet
);
1538 IN NDIS_HANDLE PoolHandle
);
1543 IN PNDIS_PACKET Packet
);
1548 IN NDIS_HANDLE PoolHandle
);
1553 IN PNDIS_PACKET
*PacketsToReturn
,
1554 IN UINT NumberOfPackets
);
1558 NdisUnchainBufferAtBack(
1559 IN OUT PNDIS_PACKET Packet
,
1560 OUT PNDIS_BUFFER
*Buffer
);
1564 NdisUnchainBufferAtFront(
1565 IN OUT PNDIS_PACKET Packet
,
1566 OUT PNDIS_BUFFER
*Buffer
);
1568 #if BINARY_COMPATIBLE
1572 NdisAdjustBufferLength(
1573 IN PNDIS_BUFFER Buffer
,
1578 NDIS_BUFFER_TO_SPAN_PAGES(
1579 IN PNDIS_BUFFER Buffer
);
1584 IN PNDIS_BUFFER Buffer
);
1588 NdisGetBufferPhysicalArraySize(
1589 IN PNDIS_BUFFER Buffer
,
1590 OUT PUINT ArraySize
);
1594 NdisGetFirstBufferFromPacket(
1595 IN PNDIS_PACKET _Packet
,
1596 OUT PNDIS_BUFFER
*_FirstBuffer
,
1597 OUT PVOID
*_FirstBufferVA
,
1598 OUT PUINT _FirstBufferLength
,
1599 OUT PUINT _TotalBufferLength
);
1604 IN PNDIS_BUFFER Buffer
,
1605 OUT PVOID
*VirtualAddress OPTIONAL
,
1610 NdisQueryBufferOffset(
1611 IN PNDIS_BUFFER Buffer
,
1615 #else /* BINARY_COMPATIBLE */
1618 * PVOID NdisAdjustBufferLength(
1619 * IN PNDIS_BUFFER Buffer,
1622 #define NdisAdjustBufferLength(Buffer, \
1625 (Buffer)->ByteCount = (Length); \
1630 * ULONG NDIS_BUFFER_TO_SPAN_PAGES(
1631 * IN PNDIS_BUFFER Buffer);
1633 #define NDIS_BUFFER_TO_SPAN_PAGES(Buffer) \
1635 MmGetMdlByteCount(Buffer) == 0 ? \
1637 ADDRESS_AND_SIZE_TO_SPAN_PAGES( \
1638 MmGetMdlVirtualAddress(Buffer), \
1639 MmGetMdlByteCount(Buffer)) \
1646 * VOID NdisFreeBuffer(
1647 * IN PNDIS_BUFFER Buffer);
1649 #define NdisFreeBuffer(Buffer) \
1651 IoFreeMdl(Buffer) /* ??? */ \
1659 IN PNDIS_BUFFER Buffer
);
1665 * VOID NdisGetBufferPhysicalArraySize(
1666 * IN PNDIS_BUFFER Buffer,
1667 * OUT PUINT ArraySize);
1669 #define NdisGetBufferPhysicalArraySize(Buffer, \
1676 * VOID NdisGetFirstBufferFromPacket(
1677 * IN PNDIS_PACKET _Packet,
1678 * OUT PNDIS_BUFFER * _FirstBuffer,
1679 * OUT PVOID * _FirstBufferVA,
1680 * OUT PUINT _FirstBufferLength,
1681 * OUT PUINT _TotalBufferLength)
1683 #define NdisGetFirstBufferFromPacket(Packet, \
1686 FirstBufferLength, \
1687 TotalBufferLength) \
1689 PNDIS_BUFFER _Buffer; \
1691 _Buffer = (Packet)->Private.Head; \
1692 *(FirstBuffer) = _Buffer; \
1693 *(FirstBufferVA) = MmGetMdlVirtualAddress(_Buffer); \
1694 if (_Buffer != NULL) { \
1695 *(FirstBufferLength) = MmGetMdlByteCount(_Buffer); \
1696 _Buffer = _Buffer->Next; \
1698 *(FirstBufferLength) = 0; \
1699 *(TotalBufferLength) = *(FirstBufferLength); \
1700 while (_Buffer != NULL) { \
1701 *(TotalBufferLength) += MmGetMdlByteCount(_Buffer); \
1702 _Buffer = _Buffer->Next; \
1707 * VOID NdisQueryBuffer(
1708 * IN PNDIS_BUFFER Buffer,
1709 * OUT PVOID *VirtualAddress OPTIONAL,
1712 #define NdisQueryBuffer(Buffer, \
1716 if (VirtualAddress) \
1717 *((PVOID*)VirtualAddress) = MmGetSystemAddressForMdl(Buffer); \
1719 *((PUINT)Length) = MmGetMdlByteCount(Buffer); \
1724 * VOID NdisQueryBufferOffset(
1725 * IN PNDIS_BUFFER Buffer,
1727 * OUT PUINT Length);
1729 #define NdisQueryBufferOffset(Buffer, \
1733 *((PUINT)Offset) = MmGetMdlByteOffset(Buffer); \
1734 *((PUINT)Length) = MmGetMdlByteCount(Buffer); \
1737 #endif /* BINARY_COMPATIBLE */
1741 * PVOID NDIS_BUFFER_LINKAGE(
1742 * IN PNDIS_BUFFER Buffer);
1744 #define NDIS_BUFFER_LINKAGE(Buffer) \
1751 * VOID NdisChainBufferAtBack(
1752 * IN OUT PNDIS_PACKET Packet,
1753 * IN OUT PNDIS_BUFFER Buffer)
1755 #define NdisChainBufferAtBack(Packet, \
1758 PNDIS_BUFFER NdisBuffer = (Buffer); \
1760 while (NdisBuffer->Next != NULL) \
1761 NdisBuffer = NdisBuffer->Next; \
1763 NdisBuffer->Next = NULL; \
1765 if ((Packet)->Private.Head != NULL) \
1766 (Packet)->Private.Tail->Next = (Buffer); \
1768 (Packet)->Private.Head = (Buffer); \
1770 (Packet)->Private.Tail = NdisBuffer; \
1771 (Packet)->Private.ValidCounts = FALSE; \
1776 * VOID NdisChainBufferAtFront(
1777 * IN OUT PNDIS_PACKET Packet,
1778 * IN OUT PNDIS_BUFFER Buffer)
1780 #define NdisChainBufferAtFront(Packet, \
1783 PNDIS_BUFFER _NdisBuffer = (Buffer); \
1785 while (_NdisBuffer->Next != NULL) \
1786 _NdisBuffer = _NdisBuffer->Next; \
1788 if ((Packet)->Private.Head == NULL) \
1789 (Packet)->Private.Tail = _NdisBuffer; \
1791 _NdisBuffer->Next = (Packet)->Private.Head; \
1792 (Packet)->Private.Head = (Buffer); \
1793 (Packet)->Private.ValidCounts = FALSE; \
1798 * VOID NdisGetNextBuffer(
1799 * IN PNDIS_BUFFER CurrentBuffer,
1800 * OUT PNDIS_BUFFER * NextBuffer)
1802 #define NdisGetNextBuffer(CurrentBuffer, \
1805 *(NextBuffer) = (CurrentBuffer)->Next; \
1810 * UINT NdisGetPacketFlags(
1811 * IN PNDIS_PACKET Packet);
1813 #define NdisGetPacketFlags(Packet) \
1815 (Packet)->Private.Flags; \
1820 * UINT NDIS_GET_PACKET_HEADER_SIZE(
1821 * IN PNDIS_PACKET Packet);
1823 #define NDIS_GET_PACKET_HEADER_SIZE(Packet) \
1829 * VOID NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(
1830 * IN PNDIS_PACKET Packet,
1831 * IN PPVOID pMediaSpecificInfo,
1832 * IN PUINT pSizeMediaSpecificInfo);
1834 #define NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(Packet, \
1835 pMediaSpecificInfo, \
1836 pSizeMediaSpecificInfo) \
1842 * VOID NDIS_STATUS NDIS_GET_PACKET_STATUS(
1843 * IN PNDIS_PACKET Packet);
1845 #define NDIS_GET_PACKET_STATUS (Packet) \
1851 * ULONGLONG NDIS_GET_PACKET_TIME_RECEIVED(
1852 * IN PNDIS_PACKET Packet);
1854 #define NDIS_GET_PACKET_TIME_RECEIVED(Packet) \
1860 * ULONGLONG NDIS_GET_PACKET_TIME_SENT(
1861 * IN PNDIS_PACKET Packet);
1863 #define NDIS_GET_PACKET_TIME_SENT(Packet) \
1869 * ULONGLONG NDIS_GET_PACKET_TIME_TO_SEND(
1870 * IN PNDIS_PACKET Packet);
1872 #define NDIS_GET_PACKET_TIME_TO_SEND(Packet) \
1878 * PNDIS_PACKET_OOB_DATA NDIS_OOB_DATA_FROM_PACKET(
1879 * IN PNDIS_PACKET _Packet);
1881 #define NDIS_OOB_DATA_FROM_PACKET(_Packet) \
1887 * VOID NdisQueryPacket(
1888 * IN PNDIS_PACKET Packet,
1889 * OUT PUINT PhysicalBufferCount OPTIONAL,
1890 * OUT PUINT BufferCount OPTIONAL,
1891 * OUT PNDIS_BUFFER *FirstBuffer OPTIONAL,
1892 * OUT PUINT TotalPacketLength OPTIONAL);
1894 #define NdisQueryPacket(Packet, \
1895 PhysicalBufferCount, \
1898 TotalPacketLength) \
1901 *((PNDIS_BUFFER*)FirstBuffer) = (Packet)->Private.Head; \
1902 if ((TotalPacketLength) || (BufferCount) || (PhysicalBufferCount)) { \
1903 if (!(Packet)->Private.ValidCounts) { \
1905 UINT _PacketLength; \
1906 PNDIS_BUFFER _NdisBuffer; \
1907 UINT _PhysicalBufferCount = 0; \
1908 UINT _TotalPacketLength = 0; \
1911 for (_NdisBuffer = (Packet)->Private.Head; \
1912 _NdisBuffer != (PNDIS_BUFFER)NULL; \
1913 _NdisBuffer = _NdisBuffer->Next) { \
1914 _PhysicalBufferCount += NDIS_BUFFER_TO_SPAN_PAGES(_NdisBuffer); \
1915 NdisQueryBufferOffset(_NdisBuffer, &_Offset, &_PacketLength); \
1916 _TotalPacketLength += _PacketLength; \
1919 (Packet)->Private.PhysicalCount = _PhysicalBufferCount; \
1920 (Packet)->Private.TotalLength = _TotalPacketLength; \
1921 (Packet)->Private.Count = _Count; \
1922 (Packet)->Private.ValidCounts = TRUE; \
1925 if (PhysicalBufferCount) \
1926 *((PUINT)PhysicalBufferCount) = (Packet)->Private.PhysicalCount; \
1929 *((PUINT)BufferCount) = (Packet)->Private.Count; \
1931 if (TotalPacketLength) \
1932 *((PUINT)TotalPacketLength) = (Packet)->Private.TotalLength; \
1938 * VOID NdisRecalculatePacketCounts(
1939 * IN OUT PNDIS_PACKET Packet);
1941 #define NdisRecalculatePacketCounts(Packet) \
1947 NdisReinitializePacket(
1948 IN OUT PNDIS_PACKET Packet
);
1952 * VOID NdisSetPacketFlags(
1953 * IN PNDIS_PACKET Packet,
1956 #define NdisSetPacketFlags(Packet, Flags) \
1957 (Packet)->Private.Flags = (Flags);
1961 * NDIS_SET_PACKET_HEADER_SIZE(
1962 * IN PNDIS_PACKET Packet,
1965 #define NDIS_SET_PACKET_HEADER_SIZE(Packet, \
1972 * NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(
1973 * IN PNDIS_PACKET Packet,
1974 * IN PVOID MediaSpecificInfo,
1975 * IN UINT SizeMediaSpecificInfo);
1977 #define NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(Packet, \
1978 MediaSpecificInfo, \
1979 SizeMediaSpecificInfo) \
1985 * NDIS_SET_PACKET_STATUS(
1986 * IN PNDIS_PACKET Packet,
1987 * IN NDIS_STATUS Status);
1989 #define NDIS_SET_PACKET_STATUS(Packet, \
1996 * NDIS_SET_PACKET_TIME_RECEIVED(
1997 * IN PNDIS_PACKET Packet,
1998 * IN ULONGLONG TimeReceived);
2000 #define NDIS_SET_PACKET_TIME_RECEIVED(Packet) \
2007 * NDIS_SET_PACKET_TIME_SENT(
2008 * IN PNDIS_PACKET Packet,
2009 * IN ULONGLONG TimeSent);
2011 #define NDIS_SET_PACKET_TIME_SENT(Packet, \
2019 * NDIS_SET_PACKET_TIME_TO_SEND(
2020 * IN PNDIS_PACKET Packet,
2021 * IN ULONGLONG TimeToSend);
2023 #define NDIS_SET_PACKET_TIME_TO_SEND(Packet, \
2030 * VOID NdisSetSendFlags(
2031 * IN PNDIS_PACKET Packet,
2034 #define NdisSetSendFlags(Packet, Flags)( \
2035 NdisSetPacketFlags((Packet), (Flags)))
2039 /* Memory management routines */
2043 NdisCreateLookaheadBufferFromSharedMemory(
2044 IN PVOID pSharedMemory
,
2045 IN UINT LookaheadLength
,
2046 OUT PVOID
*pLookaheadBuffer
);
2050 NdisDestroyLookaheadBufferFromSharedMemory(
2051 IN PVOID pLookaheadBuffer
);
2055 NdisMoveFromMappedMemory(
2056 OUT PVOID Destination
,
2062 NdisMoveMappedMemory(
2063 OUT PVOID Destination
,
2069 NdisMoveToMappedMemory(
2070 OUT PVOID Destination
,
2076 NdisMUpdateSharedMemory(
2077 IN NDIS_HANDLE MiniportAdapterHandle
,
2079 IN PVOID VirtualAddress
,
2080 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
2085 OUT PVOID
*VirtualAddress
,
2087 IN UINT MemoryFlags
,
2088 IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress
);
2093 IN PVOID VirtualAddress
,
2095 IN UINT MemoryFlags
);
2099 NdisImmediateReadSharedMemory(
2100 IN NDIS_HANDLE WrapperConfigurationContext
,
2101 IN ULONG SharedMemoryAddress
,
2107 NdisImmediateWriteSharedMemory(
2108 IN NDIS_HANDLE WrapperConfigurationContext
,
2109 IN ULONG SharedMemoryAddress
,
2115 NdisMAllocateSharedMemory(
2116 IN NDIS_HANDLE MiniportAdapterHandle
,
2119 OUT PVOID
*VirtualAddress
,
2120 OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress
);
2124 NdisMAllocateSharedMemoryAsync(
2125 IN NDIS_HANDLE MiniportAdapterHandle
,
2132 NdisMFreeSharedMemory(
2133 IN NDIS_HANDLE MiniportAdapterHandle
,
2136 IN PVOID VirtualAddress
,
2137 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
2141 NdisUpdateSharedMemory(
2142 IN NDIS_HANDLE NdisAdapterHandle
,
2144 IN PVOID VirtualAddress
,
2145 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
2149 * ULONG NdisGetPhysicalAddressHigh(
2150 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
2152 #define NdisGetPhysicalAddressHigh(PhysicalAddress) \
2153 ((PhysicalAddress).HighPart)
2156 * VOID NdisSetPhysicalAddressHigh(
2157 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
2160 #define NdisSetPhysicalAddressHigh(PhysicalAddress, Value) \
2161 ((PhysicalAddress).HighPart) = (Value)
2164 * ULONG NdisGetPhysicalAddressLow(
2165 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
2167 #define NdisGetPhysicalAddressLow(PhysicalAddress) \
2168 ((PhysicalAddress).LowPart)
2172 * VOID NdisSetPhysicalAddressLow(
2173 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
2176 #define NdisSetPhysicalAddressLow(PhysicalAddress, Value) \
2177 ((PhysicalAddress).LowPart) = (Value)
2180 * VOID NDIS_PHYSICAL_ADDRESS_CONST(
2184 #define NDIS_PHYSICAL_ADDRESS_CONST(Low, High) \
2185 { {(ULONG)(Low), (LONG)(High)} }
2189 * VOID NdisMoveMemory(
2190 * OUT PVOID Destination,
2194 #define NdisMoveMemory(Destination, Source, Length) \
2195 RtlCopyMemory(Destination, Source, Length)
2199 * VOID NdisRetrieveUlong(
2200 * IN PULONG DestinationAddress,
2201 * IN PULONG SourceAddress);
2203 #define NdisRetrieveUlong(DestinationAddress, SourceAddress) \
2204 RtlRetrieveUlong(DestinationAddress, SourceAddress)
2208 * VOID NdisStoreUlong(
2209 * IN PULONG DestinationAddress,
2212 #define NdisStoreUlong(DestinationAddress, Value) \
2213 RtlStoreUlong(DestinationAddress, Value)
2217 * VOID NdisZeroMemory(
2218 * IN PVOID Destination,
2221 #define NdisZeroMemory(Destination, Length) \
2222 RtlZeroMemory(Destination, Length)
2227 // System processor count
2232 NdisSystemProcessorCount(
2238 NdisImmediateReadPortUchar(
2239 IN NDIS_HANDLE WrapperConfigurationContext
,
2246 NdisImmediateReadPortUshort(
2247 IN NDIS_HANDLE WrapperConfigurationContext
,
2254 NdisImmediateReadPortUlong(
2255 IN NDIS_HANDLE WrapperConfigurationContext
,
2262 NdisImmediateWritePortUchar(
2263 IN NDIS_HANDLE WrapperConfigurationContext
,
2270 NdisImmediateWritePortUshort(
2271 IN NDIS_HANDLE WrapperConfigurationContext
,
2278 NdisImmediateWritePortUlong(
2279 IN NDIS_HANDLE WrapperConfigurationContext
,
2286 NdisImmediateReadSharedMemory(
2287 IN NDIS_HANDLE WrapperConfigurationContext
,
2288 IN ULONG SharedMemoryAddress
,
2295 NdisImmediateWriteSharedMemory(
2296 IN NDIS_HANDLE WrapperConfigurationContext
,
2297 IN ULONG SharedMemoryAddress
,
2304 NdisImmediateReadPciSlotInformation(
2305 IN NDIS_HANDLE WrapperConfigurationContext
,
2306 IN ULONG SlotNumber
,
2314 NdisImmediateWritePciSlotInformation(
2315 IN NDIS_HANDLE WrapperConfigurationContext
,
2316 IN ULONG SlotNumber
,
2322 /* String management routines */
2324 #if BINARY_COMPATIBLE
2328 NdisAnsiStringToUnicodeString(
2329 IN OUT PNDIS_STRING DestinationString
,
2330 IN PNDIS_ANSI_STRING SourceString
);
2335 IN PNDIS_STRING String1
,
2336 IN PNDIS_STRING String2
,
2337 IN BOOLEAN CaseInsensitive
);
2342 IN OUT PNDIS_ANSI_STRING DestinationString
,
2343 IN PCSTR SourceString
);
2347 NdisInitUnicodeString(
2348 IN OUT PNDIS_STRING DestinationString
,
2349 IN PCWSTR SourceString
);
2353 NdisUnicodeStringToAnsiString(
2354 IN OUT PNDIS_ANSI_STRING DestinationString
,
2355 IN PNDIS_STRING SourceString
);
2357 #else /* BINARY_COMPATIBLE */
2360 * NDIS_STATUS NdisAnsiStringToUnicodeString(
2361 * IN OUT PNDIS_STRING DestinationString,
2362 * IN PNDIS_ANSI_STRING SourceString);
2364 #define NdisAnsiStringToUnicodeString(DestinationString, \
2366 RtlAnsiStringToUnicodeString((DestinationString), (SourceString), FALSE)
2369 * BOOLEAN NdisEqualString(
2370 * IN PNDIS_STRING String1,
2371 * IN PNDIS_STRING String2,
2372 * IN BOOLEAN CaseInsensitive)
2374 #define NdisEqualString(String1, \
2377 RtlEqualUnicodeString((String1), (String2), (CaseInsensitive))
2380 * VOID NdisInitAnsiString(
2381 * IN OUT PNDIS_ANSI_STRING DestinationString,
2382 * IN PCSTR SourceString)
2384 #define NdisInitAnsiString(DestinationString, \
2386 RtlInitString((DestinationString), (SourceString))
2389 * VOID NdisInitUnicodeString(
2390 * IN OUT PNDIS_STRING DestinationString,
2391 * IN PCWSTR SourceString)
2393 #define NdisInitUnicodeString(DestinationString, \
2395 RtlInitUnicodeString((DestinationString), (SourceString))
2398 * NDIS_STATUS NdisUnicodeStringToAnsiString(
2399 * IN OUT PNDIS_ANSI_STRING DestinationString,
2400 * IN PNDIS_STRING SourceString)
2402 #define NdisUnicodeStringToAnsiString(DestinationString, \
2404 RtlUnicodeStringToAnsiString((DestinationString), (SourceString), FALSE)
2406 #endif /* BINARY_COMPATIBLE */
2408 #define NdisFreeString(_s) NdisFreeMemory((s).Buffer, (s).MaximumLength, 0)
2409 #define NdisPrintString(_s) DbgPrint("%ls", (s).Buffer)
2416 * VOID NdisRawReadPortBufferUchar(
2418 * OUT PUCHAR Buffer,
2421 #define NdisRawReadPortBufferUchar(Port, Buffer, Length) \
2422 READ_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length))
2425 * VOID NdisRawReadPortBufferUlong(
2427 * OUT PULONG Buffer,
2430 #define NdisRawReadPortBufferUlong(Port, Buffer, Length) \
2431 READ_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length))
2434 * VOID NdisRawReadPortBufferUshort(
2436 * OUT PUSHORT Buffer,
2439 #define NdisRawReadPortBufferUshort(Port, Buffer, Length) \
2440 READ_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length))
2444 * VOID NdisRawReadPortUchar(
2448 #define NdisRawReadPortUchar(Port, Data) \
2449 *(Data) = READ_PORT_UCHAR((PUCHAR)(Port))
2452 * VOID NdisRawReadPortUlong(
2456 #define NdisRawReadPortUlong(Port, Data) \
2457 *(Data) = READ_PORT_ULONG((PULONG)(Port))
2460 * VOID NdisRawReadPortUshort(
2462 * OUT PUSHORT Data);
2464 #define NdisRawReadPortUshort(Port, Data) \
2465 *(Data) = READ_PORT_USHORT((PUSHORT)(Port))
2469 * VOID NdisRawWritePortBufferUchar(
2474 #define NdisRawWritePortBufferUchar(Port, Buffer, Length) \
2475 WRITE_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length))
2478 * VOID NdisRawWritePortBufferUlong(
2483 #define NdisRawWritePortBufferUlong(Port, Buffer, Length) \
2484 WRITE_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length))
2487 * VOID NdisRawWritePortBufferUshort(
2489 * IN PUSHORT Buffer,
2492 #define NdisRawWritePortBufferUshort(Port, Buffer, Length) \
2493 WRITE_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length))
2497 * VOID NdisRawWritePortUchar(
2501 #define NdisRawWritePortUchar(Port, Data) \
2502 WRITE_PORT_UCHAR((PUCHAR)(Port), (UCHAR)(Data))
2505 * VOID NdisRawWritePortUlong(
2509 #define NdisRawWritePortUlong(Port, Data) \
2510 WRITE_PORT_ULONG((PULONG)(Port), (ULONG)(Data))
2513 * VOID NdisRawWritePortUshort(
2517 #define NdisRawWritePortUshort(Port, Data) \
2518 WRITE_PORT_USHORT((PUSHORT)(Port), (USHORT)(Data))
2522 * VOID NdisReadRegisterUchar(
2523 * IN PUCHAR Register,
2526 #define NdisReadRegisterUchar(Register, Data) \
2527 *((PUCHAR)(Data)) = *(Register)
2530 * VOID NdisReadRegisterUlong(
2531 * IN PULONG Register,
2534 #define NdisReadRegisterUlong(Register, Data) \
2535 *((PULONG)(Data)) = *(Register)
2538 * VOID NdisReadRegisterUshort(
2539 * IN PUSHORT Register,
2540 * OUT PUSHORT Data);
2542 #define NdisReadRegisterUshort(Register, Data) \
2543 *((PUSHORT)(Data)) = *(Register)
2547 * VOID NdisReadRegisterUchar(
2548 * IN PUCHAR Register,
2551 #define NdisWriteRegisterUchar(Register, Data) \
2552 WRITE_REGISTER_UCHAR((Register), (Data))
2555 * VOID NdisReadRegisterUlong(
2556 * IN PULONG Register,
2559 #define NdisWriteRegisterUlong(Register, Data) \
2560 WRITE_REGISTER_ULONG((Register), (Data))
2563 * VOID NdisReadRegisterUshort(
2564 * IN PUSHORT Register,
2567 #define NdisWriteRegisterUshort(Register, Data) \
2568 WRITE_REGISTER_USHORT((Register), (Data))
2575 NdisInitializeListHead(
2576 IN PLIST_ENTRY ListHead
);
2580 NdisInterlockedAddUlong(
2583 IN PNDIS_SPIN_LOCK SpinLock
);
2587 NdisInterlockedInsertHeadList(
2588 IN PLIST_ENTRY ListHead
,
2589 IN PLIST_ENTRY ListEntry
,
2590 IN PNDIS_SPIN_LOCK SpinLock
);
2594 NdisInterlockedInsertTailList(
2595 IN PLIST_ENTRY ListHead
,
2596 IN PLIST_ENTRY ListEntry
,
2597 IN PNDIS_SPIN_LOCK SpinLock
);
2601 NdisInterlockedRemoveHeadList(
2602 IN PLIST_ENTRY ListHead
,
2603 IN PNDIS_SPIN_LOCK SpinLock
);
2608 NdisCloseConfiguration(
2609 IN NDIS_HANDLE ConfigurationHandle
);
2613 NdisReadConfiguration(
2614 OUT PNDIS_STATUS Status
,
2615 OUT PNDIS_CONFIGURATION_PARAMETER
*ParameterValue
,
2616 IN NDIS_HANDLE ConfigurationHandle
,
2617 IN PNDIS_STRING Keyword
,
2618 IN NDIS_PARAMETER_TYPE ParameterType
);
2622 NdisWriteConfiguration(
2623 OUT PNDIS_STATUS Status
,
2624 IN NDIS_HANDLE WrapperConfigurationContext
,
2625 IN PNDIS_STRING Keyword
,
2626 IN PNDIS_CONFIGURATION_PARAMETER
*ParameterValue
);
2631 NdisWriteErrorLogEntry(
2632 IN NDIS_HANDLE NdisAdapterHandle,
2633 IN NDIS_ERROR_CODE ErrorCode,
2634 IN ULONG NumberOfErrorValues,
2641 * VOID NdisStallExecution(
2642 * IN UINT MicrosecondsToStall)
2644 #define NdisStallExecution(MicroSecondsToStall) \
2645 KeStallExecutionProcessor(MicroSecondsToStall)
2648 #define NdisZeroMappedMemory(Destination,Length) RtlZeroMemory(Destination,Length)
2649 /* moved to ndis/memory.c by robd
2650 #define NdisMoveMappedMemory(Destination,Source,Length) RtlCopyMemory(Destination,Source,Length)
2652 /* moved to ndis/control.c by robd
2653 #define NdisReinitializePacket(Packet) \
2655 (Packet)->Private.Head = (PNDIS_BUFFER)NULL; \
2656 (Packet)->Private.ValidCounts = FALSE; \
2661 NdisInitializeEvent(
2662 IN PNDIS_EVENT Event
2668 IN PNDIS_EVENT Event
2674 IN PNDIS_EVENT Event
2680 IN PNDIS_EVENT Event
,
2685 /* NDIS helper macros */
2688 * NDIS_INIT_FUNCTION(FunctionName)
2690 #define NDIS_INIT_FUNCTION(FunctionName) \
2691 alloc_text(init, FunctionName)
2694 * NDIS_PAGABLE_FUNCTION(FunctionName)
2696 #define NDIS_PAGABLE_FUNCTION(FunctionName) \
2697 alloc_text(page, FunctionName)
2701 /* NDIS 4.0 extensions */
2707 NdisMFreeSharedMemory(
2708 IN NDIS_HANDLE MiniportAdapterHandle
,
2711 IN PVOID VirtualAddress
,
2712 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
2716 NdisMWanIndicateReceive(
2717 OUT PNDIS_STATUS Status
,
2718 IN NDIS_HANDLE MiniportAdapterHandle
,
2719 IN NDIS_HANDLE NdisLinkContext
,
2720 IN PUCHAR PacketBuffer
,
2721 IN UINT PacketSize
);
2725 NdisMWanIndicateReceiveComplete(
2726 IN NDIS_HANDLE MiniportAdapterHandle
);
2730 NdisMWanSendComplete(
2731 IN NDIS_HANDLE MiniportAdapterHandle
,
2732 IN PNDIS_WAN_PACKET Packet
,
2733 IN NDIS_STATUS Status
);
2737 NdisPciAssignResources(
2738 IN NDIS_HANDLE NdisMacHandle
,
2739 IN NDIS_HANDLE NdisWrapperHandle
,
2740 IN NDIS_HANDLE WrapperConfigurationContext
,
2741 IN ULONG SlotNumber
,
2742 OUT PNDIS_RESOURCE_LIST
*AssignedResources
);
2746 NdisReadEisaSlotInformationEx(
2747 OUT PNDIS_STATUS Status
,
2748 IN NDIS_HANDLE WrapperConfigurationContext
,
2749 OUT PUINT SlotNumber
,
2750 OUT PNDIS_EISA_FUNCTION_INFORMATION
*EisaData
,
2751 OUT PUINT NumberOfFunctions
);
2755 NdisReadMcaPosInformation(
2756 OUT PNDIS_STATUS Status
,
2757 IN NDIS_HANDLE WrapperConfigurationContext
,
2758 IN PUINT ChannelNumber
,
2759 OUT PNDIS_MCA_POS_DATA McaData
);
2766 #define DISPATCH_LEVEL 2
2768 #define NdisAllocateSpinLock(_SpinLock) KeInitializeSpinLock(&(_SpinLock)->SpinLock)
2770 #define NdisFreeSpinLock(_SpinLock)
2772 #define NdisAcquireSpinLock(_SpinLock) KeAcquireSpinLock(&(_SpinLock)->SpinLock, &(_SpinLock)->OldIrql)
2774 #define NdisReleaseSpinLock(_SpinLock) KeReleaseSpinLock(&(_SpinLock)->SpinLock,(_SpinLock)->OldIrql)
2776 #define NdisDprAcquireSpinLock(_SpinLock) \
2778 KeAcquireSpinLockAtDpcLevel(&(_SpinLock)->SpinLock); \
2779 (_SpinLock)->OldIrql = DISPATCH_LEVEL; \
2782 #define NdisDprReleaseSpinLock(_SpinLock) KeReleaseSpinLockFromDpcLevel(&(_SpinLock)->SpinLock)
2792 NdisAllocateSpinLock(
2793 IN PNDIS_SPIN_LOCK SpinLock
2800 IN PNDIS_SPIN_LOCK SpinLock
2806 NdisAcquireSpinLock(
2807 IN PNDIS_SPIN_LOCK SpinLock
2813 NdisReleaseSpinLock(
2814 IN PNDIS_SPIN_LOCK SpinLock
2820 NdisDprAcquireSpinLock(
2821 IN PNDIS_SPIN_LOCK SpinLock
2827 NdisDprReleaseSpinLock(
2828 IN PNDIS_SPIN_LOCK SpinLock
2835 NdisGetCurrentSystemTime(
2836 PLONGLONG pSystemTime
2840 /* NDIS 5.0 extensions */
2846 NdisAcquireReadWriteLock(
2847 IN PNDIS_RW_LOCK Lock
,
2849 IN PLOCK_STATE LockState
);
2853 NdisAllocateMemoryWithTag(
2854 OUT PVOID
*VirtualAddress
,
2860 NdisAllocatePacketPoolEx(
2861 OUT PNDIS_STATUS Status
,
2862 OUT PNDIS_HANDLE PoolHandle
,
2863 IN UINT NumberOfDescriptors
,
2864 IN UINT NumberOfOverflowDescriptors
,
2865 IN UINT ProtocolReservedLength
);
2870 IN PNDIS_BUFFER Buffer
);
2874 NdisBufferVirtualAddress(
2875 IN PNDIS_BUFFER Buffer
);
2879 NdisCompletePnPEvent(
2880 IN NDIS_STATUS Status
,
2881 IN NDIS_HANDLE NdisBindingHandle
,
2882 IN PNET_PNP_EVENT NetPnPEvent
);
2886 NdisConvertStringToAtmAddress(
2887 OUT PNDIS_STATUS Status
,
2888 IN PNDIS_STRING String
,
2889 OUT PATM_ADDRESS AtmAddress
);
2893 NdisGetCurrentProcessorCounts(
2894 OUT PULONG pIdleCount
,
2895 OUT PULONG pKernelAndUser
,
2900 NdisGetDriverHandle(
2901 IN PNDIS_HANDLE NdisBindingHandle
,
2902 OUT PNDIS_HANDLE NdisDriverHandle
);
2906 NdisGetReceivedPacket(
2907 IN PNDIS_HANDLE NdisBindingHandle
,
2908 IN PNDIS_HANDLE MacContext
);
2912 NdisGetSystemUptime(
2913 OUT PULONG pSystemUpTime
);
2917 NdisInitializeReadWriteLock(
2918 IN PNDIS_RW_LOCK Lock
);
2922 NdisInterlockedDecrement(
2927 NdisInterlockedIncrement(
2932 NdisInterlockedPopEntrySList(
2933 IN PSLIST_HEADER ListHead
,
2934 IN PKSPIN_LOCK Lock
);
2938 NdisInterlockedPushEntrySList(
2939 IN PSLIST_HEADER ListHead
,
2940 IN PSINGLE_LIST_ENTRY ListEntry
,
2941 IN PKSPIN_LOCK Lock
);
2946 NdisMDeregisterDevice(
2947 IN NDIS_HANDLE NdisDeviceHandle
);
2951 NdisMGetDeviceProperty(
2952 IN NDIS_HANDLE MiniportAdapterHandle
,
2953 IN OUT PDEVICE_OBJECT
*PhysicalDeviceObject OPTIONAL
,
2954 IN OUT PDEVICE_OBJECT
*FunctionalDeviceObject OPTIONAL
,
2955 IN OUT PDEVICE_OBJECT
*NextDeviceObject OPTIONAL
,
2956 IN OUT PCM_RESOURCE_LIST
*AllocatedResources OPTIONAL
,
2957 IN OUT PCM_RESOURCE_LIST
*AllocatedResourcesTranslated OPTIONAL
);
2961 NdisMInitializeScatterGatherDma(
2962 IN NDIS_HANDLE MiniportAdapterHandle
,
2963 IN BOOLEAN Dma64BitAddresses
,
2964 IN ULONG MaximumPhysicalMapping
);
2968 NdisMPromoteMiniport(
2969 IN NDIS_HANDLE MiniportAdapterHandle
);
2973 NdisMQueryAdapterInstanceName(
2974 OUT PNDIS_STRING AdapterInstanceName
,
2975 IN NDIS_HANDLE MiniportAdapterHandle
);
2979 NdisMRegisterDevice(
2980 IN NDIS_HANDLE NdisWrapperHandle
,
2981 IN PNDIS_STRING DeviceName
,
2982 IN PNDIS_STRING SymbolicName
,
2983 IN PDRIVER_DISPATCH MajorFunctions
[],
2984 OUT PDEVICE_OBJECT
*pDeviceObject
,
2985 OUT NDIS_HANDLE
*NdisDeviceHandle
);
2989 NdisMRegisterUnloadHandler(
2990 IN NDIS_HANDLE NdisWrapperHandle
,
2991 IN PDRIVER_UNLOAD UnloadHandler
);
2995 NdisMRemoveMiniport(
2996 IN NDIS_HANDLE MiniportAdapterHandle
);
3000 NdisMSetMiniportSecondary(
3001 IN NDIS_HANDLE MiniportAdapterHandle
,
3002 IN NDIS_HANDLE PrimaryMiniportAdapterHandle
);
3006 NdisOpenConfigurationKeyByIndex(
3007 OUT PNDIS_STATUS Status
,
3008 IN NDIS_HANDLE ConfigurationHandle
,
3010 OUT PNDIS_STRING KeyName
,
3011 OUT PNDIS_HANDLE KeyHandle
);
3015 NdisOpenConfigurationKeyByName(
3016 OUT PNDIS_STATUS Status
,
3017 IN NDIS_HANDLE ConfigurationHandle
,
3018 IN PNDIS_STRING SubKeyName
,
3019 OUT PNDIS_HANDLE SubKeyHandle
);
3023 NdisPacketPoolUsage(
3024 IN NDIS_HANDLE PoolHandle
);
3028 NdisQueryAdapterInstanceName(
3029 OUT PNDIS_STRING AdapterInstanceName
,
3030 IN NDIS_HANDLE NdisBindingHandle
);
3034 NdisQueryBufferSafe(
3035 IN PNDIS_BUFFER Buffer
,
3036 OUT PVOID
*VirtualAddress OPTIONAL
,
3042 NdisReadPcmciaAttributeMemory(
3043 IN NDIS_HANDLE NdisAdapterHandle
,
3050 NdisReleaseReadWriteLock(
3051 IN PNDIS_RW_LOCK Lock
,
3052 IN PLOCK_STATE LockState
);
3057 NdisWriteEventLogEntry(
3059 IN NDIS_STATUS EventCode
,
3060 IN ULONG UniqueEventValue
,
3061 IN USHORT NumStrings
,
3062 IN PVOID StringsList OPTIONAL
,
3064 IN PVOID Data OPTIONAL
);
3068 NdisWritePcmciaAttributeMemory(
3069 IN NDIS_HANDLE NdisAdapterHandle
,
3075 /* Connectionless services */
3080 IN NDIS_HANDLE NdisVcHandle
,
3081 IN NDIS_HANDLE ProtocolPartyContext
,
3082 IN OUT PCO_CALL_PARAMETERS CallParameters
,
3083 OUT PNDIS_HANDLE NdisPartyHandle
);
3087 NdisClCloseAddressFamily(
3088 IN NDIS_HANDLE NdisAfHandle
);
3093 IN NDIS_HANDLE NdisVcHandle
,
3094 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
3095 IN PVOID Buffer OPTIONAL
,
3100 NdisClDeregisterSap(
3101 IN NDIS_HANDLE NdisSapHandle
);
3106 IN NDIS_HANDLE NdisPartyHandle
,
3107 IN PVOID Buffer OPTIONAL
,
3112 NdisClIncomingCallComplete(
3113 IN NDIS_STATUS Status
,
3114 IN NDIS_HANDLE NdisVcHandle
,
3115 IN PCO_CALL_PARAMETERS CallParameters
);
3120 IN NDIS_HANDLE NdisVcHandle
,
3121 IN OUT PCO_CALL_PARAMETERS CallParameters
,
3122 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
,
3123 OUT PNDIS_HANDLE NdisPartyHandle OPTIONAL
);
3127 NdisClModifyCallQoS(
3128 IN NDIS_HANDLE NdisVcHandle
,
3129 IN PCO_CALL_PARAMETERS CallParameters
);
3134 NdisClOpenAddressFamily(
3135 IN NDIS_HANDLE NdisBindingHandle
,
3136 IN PCO_ADDRESS_FAMILY AddressFamily
,
3137 IN NDIS_HANDLE ProtocolAfContext
,
3138 IN PNDIS_CLIENT_CHARACTERISTICS ClCharacteristics
,
3139 IN UINT SizeOfClCharacteristics
,
3140 OUT PNDIS_HANDLE NdisAfHandle
);
3145 IN NDIS_HANDLE NdisAfHandle
,
3146 IN NDIS_HANDLE ProtocolSapContext
,
3148 OUT PNDIS_HANDLE NdisSapHandle
);
3151 /* Call Manager services */
3156 IN NDIS_HANDLE NdisVcHandle
,
3157 IN OUT PCO_CALL_PARAMETERS CallParameters
);
3161 NdisCmAddPartyComplete(
3162 IN NDIS_STATUS Status
,
3163 IN NDIS_HANDLE NdisPartyHandle
,
3164 IN NDIS_HANDLE CallMgrPartyContext OPTIONAL
,
3165 IN PCO_CALL_PARAMETERS CallParameters
);
3169 NdisCmCloseAddressFamilyComplete(
3170 IN NDIS_STATUS Status
,
3171 IN NDIS_HANDLE NdisAfHandle
);
3175 NdisCmCloseCallComplete(
3176 IN NDIS_STATUS Status
,
3177 IN NDIS_HANDLE NdisVcHandle
,
3178 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
);
3183 IN NDIS_HANDLE NdisVcHandle
);
3187 NdisCmDeregisterSapComplete(
3188 IN NDIS_STATUS Status
,
3189 IN NDIS_HANDLE NdisSapHandle
);
3193 NdisCmDispatchCallConnected(
3194 IN NDIS_HANDLE NdisVcHandle
);
3198 NdisCmDispatchIncomingCall(
3199 IN NDIS_HANDLE NdisSapHandle
,
3200 IN NDIS_HANDLE NdisVcHandle
,
3201 IN PCO_CALL_PARAMETERS CallParameters
);
3205 NdisCmDispatchIncomingCallQoSChange(
3206 IN NDIS_HANDLE NdisVcHandle
,
3207 IN PCO_CALL_PARAMETERS CallParameters
);
3211 NdisCmDispatchIncomingCloseCall(
3212 IN NDIS_STATUS CloseStatus
,
3213 IN NDIS_HANDLE NdisVcHandle
,
3214 IN PVOID Buffer OPTIONAL
,
3219 NdisCmDispatchIncomingDropParty(
3220 IN NDIS_STATUS DropStatus
,
3221 IN NDIS_HANDLE NdisPartyHandle
,
3222 IN PVOID Buffer OPTIONAL
,
3227 NdisCmDropPartyComplete(
3228 IN NDIS_STATUS Status
,
3229 IN NDIS_HANDLE NdisPartyHandle
);
3233 NdisCmMakeCallComplete(
3234 IN NDIS_STATUS Status
,
3235 IN NDIS_HANDLE NdisVcHandle
,
3236 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
3237 IN NDIS_HANDLE CallMgrPartyContext OPTIONAL
,
3238 IN PCO_CALL_PARAMETERS CallParameters
);
3242 NdisCmModifyCallQoSComplete(
3243 IN NDIS_STATUS Status
,
3244 IN NDIS_HANDLE NdisVcHandle
,
3245 IN PCO_CALL_PARAMETERS CallParameters
);
3249 NdisCmOpenAddressFamilyComplete(
3250 IN NDIS_STATUS Status
,
3251 IN NDIS_HANDLE NdisAfHandle
,
3252 IN NDIS_HANDLE CallMgrAfContext
);
3256 NdisCmRegisterAddressFamily(
3257 IN NDIS_HANDLE NdisBindingHandle
,
3258 IN PCO_ADDRESS_FAMILY AddressFamily
,
3259 IN PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics
,
3260 IN UINT SizeOfCmCharacteristics
);
3264 NdisCmRegisterSapComplete(
3265 IN NDIS_STATUS Status
,
3266 IN NDIS_HANDLE NdisSapHandle
,
3267 IN NDIS_HANDLE CallMgrSapContext
);
3273 IN NDIS_HANDLE NdisVcHandle
,
3274 IN PCO_CALL_PARAMETERS CallParameters
);
3279 IN NDIS_HANDLE MiniportAdapterHandle
,
3280 IN NDIS_HANDLE NdisAfHandle
,
3281 IN NDIS_HANDLE MiniportVcContext
,
3282 OUT PNDIS_HANDLE NdisVcHandle
);
3286 NdisMCmDeactivateVc(
3287 IN NDIS_HANDLE NdisVcHandle
);
3292 IN NDIS_HANDLE NdisVcHandle
);
3296 NdisMCmRegisterAddressFamily(
3297 IN NDIS_HANDLE MiniportAdapterHandle
,
3298 IN PCO_ADDRESS_FAMILY AddressFamily
,
3299 IN PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics
,
3300 IN UINT SizeOfCmCharacteristics
);
3305 IN NDIS_HANDLE NdisAfHandle
,
3306 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
3307 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
3308 IN OUT PNDIS_REQUEST NdisRequest
);
3311 /* Connection-oriented services */
3316 IN NDIS_HANDLE NdisBindingHandle
,
3317 IN NDIS_HANDLE NdisAfHandle OPTIONAL
,
3318 IN NDIS_HANDLE ProtocolVcContext
,
3319 IN OUT PNDIS_HANDLE NdisVcHandle
);
3324 IN NDIS_HANDLE NdisVcHandle
);
3329 IN NDIS_HANDLE NdisBindingHandle
,
3330 IN NDIS_HANDLE NdisAfHandle OPTIONAL
,
3331 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
3332 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
3333 IN OUT PNDIS_REQUEST NdisRequest
);
3337 NdisCoRequestComplete(
3338 IN NDIS_STATUS Status
,
3339 IN NDIS_HANDLE NdisAfHandle
,
3340 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
3341 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
3342 IN PNDIS_REQUEST NdisRequest
);
3347 IN NDIS_HANDLE NdisVcHandle
,
3348 IN PPNDIS_PACKET PacketArray
,
3349 IN UINT NumberOfPackets
);
3354 NdisMCoActivateVcComplete(
3355 IN NDIS_STATUS Status
,
3356 IN NDIS_HANDLE NdisVcHandle
,
3357 IN PCO_CALL_PARAMETERS CallParameters
);
3361 NdisMCoDeactivateVcComplete(
3362 IN NDIS_STATUS Status
,
3363 IN NDIS_HANDLE NdisVcHandle
);
3367 NdisMCoIndicateReceivePacket(
3368 IN NDIS_HANDLE NdisVcHandle
,
3369 IN PPNDIS_PACKET PacketArray
,
3370 IN UINT NumberOfPackets
);
3374 NdisMCoIndicateStatus(
3375 IN NDIS_HANDLE MiniportAdapterHandle
,
3376 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
3377 IN NDIS_STATUS GeneralStatus
,
3378 IN PVOID StatusBuffer OPTIONAL
,
3379 IN ULONG StatusBufferSize
);
3383 NdisMCoReceiveComplete(
3384 IN NDIS_HANDLE MiniportAdapterHandle
);
3388 NdisMCoRequestComplete(
3389 IN NDIS_STATUS Status
,
3390 IN NDIS_HANDLE MiniportAdapterHandle
,
3391 IN PNDIS_REQUEST Request
);
3395 NdisMCoSendComplete(
3396 IN NDIS_STATUS Status
,
3397 IN NDIS_HANDLE NdisVcHandle
,
3398 IN PNDIS_PACKET Packet
);
3401 /* NDIS 5.0 extensions for intermediate drivers */
3405 NdisIMAssociateMiniport(
3406 IN NDIS_HANDLE DriverHandle
,
3407 IN NDIS_HANDLE ProtocolHandle
);
3411 NdisIMCancelInitializeDeviceInstance(
3412 IN NDIS_HANDLE DriverHandle
,
3413 IN PNDIS_STRING DeviceInstance
);
3417 NdisIMCopySendCompletePerPacketInfo(
3418 IN PNDIS_PACKET DstPacket
,
3419 IN PNDIS_PACKET SrcPacket
);
3423 NdisIMCopySendPerPacketInfo(
3424 IN PNDIS_PACKET DstPacket
,
3425 IN PNDIS_PACKET SrcPacket
);
3429 NdisIMDeregisterLayeredMiniport(
3430 IN NDIS_HANDLE DriverHandle
);
3434 NdisIMGetBindingContext(
3435 IN NDIS_HANDLE NdisBindingHandle
);
3439 NdisIMGetDeviceContext(
3440 IN NDIS_HANDLE MiniportAdapterHandle
);
3444 NdisIMInitializeDeviceInstanceEx(
3445 IN NDIS_HANDLE DriverHandle
,
3446 IN PNDIS_STRING DriverInstance
,
3447 IN NDIS_HANDLE DeviceContext OPTIONAL
);
3453 /* Prototypes for NDIS_MINIPORT_CHARACTERISTICS */
3455 typedef BOOLEAN (*W_CHECK_FOR_HANG_HANDLER
)(
3456 IN NDIS_HANDLE MiniportAdapterContext
);
3458 typedef VOID (*W_DISABLE_INTERRUPT_HANDLER
)(
3459 IN NDIS_HANDLE MiniportAdapterContext
);
3461 typedef VOID (*W_ENABLE_INTERRUPT_HANDLER
)(
3462 IN NDIS_HANDLE MiniportAdapterContext
);
3464 typedef VOID (*W_HALT_HANDLER
)(
3465 IN NDIS_HANDLE MiniportAdapterContext
);
3467 typedef VOID (*W_HANDLE_INTERRUPT_HANDLER
)(
3468 IN NDIS_HANDLE MiniportAdapterContext
);
3470 typedef NDIS_STATUS (*W_INITIALIZE_HANDLER
)(
3471 OUT PNDIS_STATUS OpenErrorStatus
,
3472 OUT PUINT SelectedMediumIndex
,
3473 IN PNDIS_MEDIUM MediumArray
,
3474 IN UINT MediumArraySize
,
3475 IN NDIS_HANDLE MiniportAdapterContext
,
3476 IN NDIS_HANDLE WrapperConfigurationContext
);
3478 typedef VOID (*W_ISR_HANDLER
)(
3479 OUT PBOOLEAN InterruptRecognized
,
3480 OUT PBOOLEAN QueueMiniportHandleInterrupt
,
3481 IN NDIS_HANDLE MiniportAdapterContext
);
3483 typedef NDIS_STATUS (*W_QUERY_INFORMATION_HANDLER
)(
3484 IN NDIS_HANDLE MiniportAdapterContext
,
3486 IN PVOID InformationBuffer
,
3487 IN ULONG InformationBufferLength
,
3488 OUT PULONG BytesWritten
,
3489 OUT PULONG BytesNeeded
);
3491 typedef NDIS_STATUS (*W_RECONFIGURE_HANDLER
)(
3492 OUT PNDIS_STATUS OpenErrorStatus
,
3493 IN NDIS_HANDLE MiniportAdapterContext
,
3494 IN NDIS_HANDLE WrapperConfigurationContext
);
3496 typedef NDIS_STATUS (*W_RESET_HANDLER
)(
3497 OUT PBOOLEAN AddressingReset
,
3498 IN NDIS_HANDLE MiniportAdapterContext
);
3500 typedef NDIS_STATUS (*W_SEND_HANDLER
)(
3501 IN NDIS_HANDLE MiniportAdapterContext
,
3502 IN PNDIS_PACKET Packet
,
3505 typedef NDIS_STATUS (*WM_SEND_HANDLER
)(
3506 IN NDIS_HANDLE MiniportAdapterContext
,
3507 IN NDIS_HANDLE NdisLinkHandle
,
3508 IN PNDIS_WAN_PACKET Packet
);
3510 typedef NDIS_STATUS (*W_SET_INFORMATION_HANDLER
)(
3511 IN NDIS_HANDLE MiniportAdapterContext
,
3513 IN PVOID InformationBuffer
,
3514 IN ULONG InformationBufferLength
,
3515 OUT PULONG BytesRead
,
3516 OUT PULONG BytesNeeded
);
3518 typedef NDIS_STATUS (*W_TRANSFER_DATA_HANDLER
)(
3519 OUT PNDIS_PACKET Packet
,
3520 OUT PUINT BytesTransferred
,
3521 IN NDIS_HANDLE MiniportAdapterContext
,
3522 IN NDIS_HANDLE MiniportReceiveContext
,
3524 IN UINT BytesToTransfer
);
3526 typedef NDIS_STATUS (*WM_TRANSFER_DATA_HANDLER
)(
3531 /* NDIS structures available only to miniport drivers */
3533 /* Technology specific defines */
3535 #define DECLARE_UNKNOWN_STRUCT(BaseName) \
3536 typedef struct _##BaseName BaseName, *P##BaseName;
3538 #define DECLARE_UNKNOWN_PROTOTYPE(Name) \
3539 typedef VOID (*##Name)(VOID);
3544 typedef struct _ARC_BUFFER_LIST
3549 struct _ARC_BUFFER_LIST
*Next
;
3550 } ARC_BUFFER_LIST
, *PARC_BUFFER_LIST
;
3552 DECLARE_UNKNOWN_STRUCT(ARC_FILTER
)
3557 ArcFilterDprIndicateReceive(
3558 IN PARC_FILTER Filter
,
3559 IN PUCHAR pRawHeader
,
3565 ArcFilterDprIndicateReceiveComplete(
3566 IN PARC_FILTER Filter
);
3571 #define ETH_LENGTH_OF_ADDRESS 6
3573 DECLARE_UNKNOWN_STRUCT(ETH_BINDING_INFO
);
3575 DECLARE_UNKNOWN_PROTOTYPE(ETH_ADDRESS_CHANGE
)
3576 DECLARE_UNKNOWN_PROTOTYPE(ETH_FILTER_CHANGE
)
3577 DECLARE_UNKNOWN_PROTOTYPE(ETH_DEFERRED_CLOSE
)
3579 typedef struct _ETH_FILTER
3581 PNDIS_SPIN_LOCK Lock
;
3582 CHAR (*MCastAddressBuf
)[ETH_LENGTH_OF_ADDRESS
];
3583 struct _NDIS_MINIPORT_BLOCK
*Miniport
;
3584 UINT CombinedPacketFilter
;
3585 PETH_BINDING_INFO OpenList
;
3586 ETH_ADDRESS_CHANGE AddressChangeAction
;
3587 ETH_FILTER_CHANGE FilterChangeAction
;
3588 ETH_DEFERRED_CLOSE CloseAction
;
3589 UINT MaxMulticastAddresses
;
3591 UCHAR AdapterAddress
[ETH_LENGTH_OF_ADDRESS
];
3592 UINT OldCombinedPacketFilter
;
3593 CHAR (*OldMCastAddressBuf
)[ETH_LENGTH_OF_ADDRESS
];
3594 UINT OldNumAddresses
;
3595 PETH_BINDING_INFO DirectedList
;
3596 PETH_BINDING_INFO BMList
;
3597 PETH_BINDING_INFO MCastSet
;
3601 NDIS_RW_LOCK BindListLock
;
3604 } ETH_FILTER
, *PETH_FILTER
;
3609 EthChangeFilterAddresses(
3610 IN PETH_FILTER Filter
,
3611 IN NDIS_HANDLE NdisFilterHandle
,
3612 IN PNDIS_REQUEST NdisRequest
,
3613 IN UINT AddressCount
,
3614 IN CHAR Addresses
[] [ETH_LENGTH_OF_ADDRESS
],
3620 IN UINT MaximumMulticastAddresses
,
3621 IN ETH_ADDRESS_CHANGE AddressChangeAction
,
3622 IN ETH_FILTER_CHANGE FilterChangeAction
,
3623 IN ETH_DEFERRED_CLOSE CloseAction
,
3624 IN PUCHAR AdapterAddress
,
3625 IN PNDIS_SPIN_LOCK Lock
,
3626 OUT PETH_FILTER
*Filter
);
3631 IN PETH_FILTER Filter
);
3635 EthDeleteFilterOpenAdapter(
3636 IN PETH_FILTER Filter
,
3637 IN NDIS_HANDLE NdisFilterHandle
,
3638 IN PNDIS_REQUEST NdisRequest
);
3643 IN PETH_FILTER Filter
,
3644 IN NDIS_HANDLE NdisFilterHandle
,
3645 IN PNDIS_REQUEST NdisRequest
,
3646 IN UINT FilterClasses
,
3651 EthFilterIndicateReceive(
3652 IN PETH_FILTER Filter
,
3653 IN NDIS_HANDLE MacReceiveContext
,
3655 IN PVOID HeaderBuffer
,
3656 IN UINT HeaderBufferSize
,
3657 IN PVOID LookaheadBuffer
,
3658 IN UINT LookaheadBufferSize
,
3659 IN UINT PacketSize
);
3663 EthFilterIndicateReceiveComplete(
3664 IN PETH_FILTER Filter
);
3668 EthNoteFilterOpenAdapter(
3669 IN PETH_FILTER Filter
,
3670 IN NDIS_HANDLE MacBindingHandle
,
3671 IN NDIS_HANDLE NdisBindingContext
,
3672 OUT PNDIS_HANDLE NdisFilterHandle
);
3676 EthNumberOfOpenFilterAddresses(
3677 IN PETH_FILTER Filter
,
3678 IN NDIS_HANDLE NdisFilterHandle
);
3682 EthQueryGlobalFilterAddresses (
3683 OUT PNDIS_STATUS Status
,
3684 IN PETH_FILTER Filter
,
3685 IN UINT SizeOfArray
,
3686 OUT PUINT NumberOfAddresses
,
3687 IN OUT CHAR AddressArray
[] [ETH_LENGTH_OF_ADDRESS
]);
3691 EthQueryOpenFilterAddresses(
3692 OUT PNDIS_STATUS Status
,
3693 IN PETH_FILTER Filter
,
3694 IN NDIS_HANDLE NdisFilterHandle
,
3695 IN UINT SizeOfArray
,
3696 OUT PUINT NumberOfAddresses
,
3697 IN OUT CHAR AddressArray
[] [ETH_LENGTH_OF_ADDRESS
]);
3701 EthShouldAddressLoopBack(
3702 IN PETH_FILTER Filter
,
3703 IN CHAR Address
[ETH_LENGTH_OF_ADDRESS
]);
3708 #define FDDI_LENGTH_OF_LONG_ADDRESS 6
3709 #define FDDI_LENGTH_OF_SHORT_ADDRESS 2
3711 DECLARE_UNKNOWN_STRUCT(FDDI_FILTER
)
3713 DECLARE_UNKNOWN_PROTOTYPE(FDDI_ADDRESS_CHANGE
)
3714 DECLARE_UNKNOWN_PROTOTYPE(FDDI_FILTER_CHANGE
)
3715 DECLARE_UNKNOWN_PROTOTYPE(FDDI_DEFERRED_CLOSE
)
3720 FddiChangeFilterLongAddresses(
3721 IN PFDDI_FILTER Filter
,
3722 IN NDIS_HANDLE NdisFilterHandle
,
3723 IN PNDIS_REQUEST NdisRequest
,
3724 IN UINT AddressCount
,
3725 IN CHAR Addresses
[] [FDDI_LENGTH_OF_LONG_ADDRESS
],
3730 FddiChangeFilterShortAddresses(
3731 IN PFDDI_FILTER Filter
,
3732 IN NDIS_HANDLE NdisFilterHandle
,
3733 IN PNDIS_REQUEST NdisRequest
,
3734 IN UINT AddressCount
,
3735 IN CHAR Addresses
[] [FDDI_LENGTH_OF_SHORT_ADDRESS
],
3741 IN UINT MaximumMulticastLongAddresses
,
3742 IN UINT MaximumMulticastShortAddresses
,
3743 IN FDDI_ADDRESS_CHANGE AddressChangeAction
,
3744 IN FDDI_FILTER_CHANGE FilterChangeAction
,
3745 IN FDDI_DEFERRED_CLOSE CloseAction
,
3746 IN PUCHAR AdapterLongAddress
,
3747 IN PUCHAR AdapterShortAddress
,
3748 IN PNDIS_SPIN_LOCK Lock
,
3749 OUT PFDDI_FILTER
*Filter
);
3754 IN PFDDI_FILTER Filter
);
3758 FddiDeleteFilterOpenAdapter(
3759 IN PFDDI_FILTER Filter
,
3760 IN NDIS_HANDLE NdisFilterHandle
,
3761 IN PNDIS_REQUEST NdisRequest
);
3766 IN PFDDI_FILTER Filter
,
3767 IN NDIS_HANDLE NdisFilterHandle
,
3768 IN PNDIS_REQUEST NdisRequest
,
3769 IN UINT FilterClasses
,
3774 FddiFilterIndicateReceive(
3775 IN PFDDI_FILTER Filter
,
3776 IN NDIS_HANDLE MacReceiveContext
,
3778 IN UINT AddressLength
,
3779 IN PVOID HeaderBuffer
,
3780 IN UINT HeaderBufferSize
,
3781 IN PVOID LookaheadBuffer
,
3782 IN UINT LookaheadBufferSize
,
3783 IN UINT PacketSize
);
3787 FddiFilterIndicateReceiveComplete(
3788 IN PFDDI_FILTER Filter
);
3792 FddiNoteFilterOpenAdapter(
3793 IN PFDDI_FILTER Filter
,
3794 IN NDIS_HANDLE MacBindingHandle
,
3795 IN NDIS_HANDLE NdisBindingContext
,
3796 OUT PNDIS_HANDLE NdisFilterHandle
);
3800 FddiNumberOfOpenFilterLongAddresses(
3801 IN PFDDI_FILTER Filter
,
3802 IN NDIS_HANDLE NdisFilterHandle
);
3806 FddiNumberOfOpenFilterShortAddresses(
3807 IN PFDDI_FILTER Filter
,
3808 IN NDIS_HANDLE NdisFilterHandle
);
3812 FddiQueryGlobalFilterLongAddresses(
3813 OUT PNDIS_STATUS Status
,
3814 IN PFDDI_FILTER Filter
,
3815 IN UINT SizeOfArray
,
3816 OUT PUINT NumberOfAddresses
,
3817 IN OUT CHAR AddressArray
[] [FDDI_LENGTH_OF_LONG_ADDRESS
]);
3821 FddiQueryGlobalFilterShortAddresses(
3822 OUT PNDIS_STATUS Status
,
3823 IN PFDDI_FILTER Filter
,
3824 IN UINT SizeOfArray
,
3825 OUT PUINT NumberOfAddresses
,
3826 IN OUT CHAR AddressArray
[] [FDDI_LENGTH_OF_SHORT_ADDRESS
]);
3830 FddiQueryOpenFilterLongAddresses(
3831 OUT PNDIS_STATUS Status
,
3832 IN PFDDI_FILTER Filter
,
3833 IN NDIS_HANDLE NdisFilterHandle
,
3834 IN UINT SizeOfArray
,
3835 OUT PUINT NumberOfAddresses
,
3836 IN OUT CHAR AddressArray
[] [FDDI_LENGTH_OF_LONG_ADDRESS
]);
3840 FddiQueryOpenFilterShortAddresses(
3841 OUT PNDIS_STATUS Status
,
3842 IN PFDDI_FILTER Filter
,
3843 IN NDIS_HANDLE NdisFilterHandle
,
3844 IN UINT SizeOfArray
,
3845 OUT PUINT NumberOfAddresses
,
3846 IN OUT CHAR AddressArray
[] [FDDI_LENGTH_OF_SHORT_ADDRESS
]);
3850 FddiShouldAddressLoopBack(
3851 IN PFDDI_FILTER Filter
,
3853 IN UINT LengthOfAddress
);
3858 #define TR_LENGTH_OF_FUNCTIONAL 4
3859 #define TR_LENGTH_OF_ADDRESS 6
3861 DECLARE_UNKNOWN_STRUCT(TR_FILTER
)
3863 DECLARE_UNKNOWN_PROTOTYPE(TR_ADDRESS_CHANGE
)
3864 DECLARE_UNKNOWN_PROTOTYPE(TR_GROUP_CHANGE
)
3865 DECLARE_UNKNOWN_PROTOTYPE(TR_FILTER_CHANGE
)
3866 DECLARE_UNKNOWN_PROTOTYPE(TR_DEFERRED_CLOSE
)
3871 TrChangeFunctionalAddress(
3872 IN PTR_FILTER Filter
,
3873 IN NDIS_HANDLE NdisFilterHandle
,
3874 IN PNDIS_REQUEST NdisRequest
,
3875 IN CHAR FunctionalAddressArray
[TR_LENGTH_OF_FUNCTIONAL
],
3880 TrChangeGroupAddress(
3881 IN PTR_FILTER Filter
,
3882 IN NDIS_HANDLE NdisFilterHandle
,
3883 IN PNDIS_REQUEST NdisRequest
,
3884 IN CHAR GroupAddressArray
[TR_LENGTH_OF_FUNCTIONAL
],
3890 IN TR_ADDRESS_CHANGE AddressChangeAction
,
3891 IN TR_GROUP_CHANGE GroupChangeAction
,
3892 IN TR_FILTER_CHANGE FilterChangeAction
,
3893 IN TR_DEFERRED_CLOSE CloseAction
,
3894 IN PUCHAR AdapterAddress
,
3895 IN PNDIS_SPIN_LOCK Lock
,
3896 OUT PTR_FILTER
*Filter
);