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 * NDIS40 - Use NDIS 4.0 structures by default
10 * NDIS50 - Use NDIS 5.0 structures by default
11 * NDIS_WDM - Include wdm.h (currently just pulls in ntddk.h)
13 * NOTES: If NDIS_WDM is not defined, ntddk.h is included instead
15 * I have removed the following standard flag, used for building binary-compatible
16 * drivers for windows 98 and windows me:
18 * BINARY_COMPATIBLE - 0 = Use macros for some features
19 * - 1 = Use imports for features not available
21 * rationale: you're never going to use *this* ndis.h to build a driver for win9x. You'll
22 * use the MS ddk. This assumption drammatically simplifies ndis.h.
24 * There have been lots of instances of stdcall/cdecl mismatches, particularly in the
25 * callback routines. I have now nailed them all to STDCALL, which is what they ought to
26 * be. If you cross-check with the ndis.h from the MS DDK, you'll note that the compiler
27 * is set to a default calling conveition of stdcall with the /Gz command-line switch.
28 * There are only a few functions that should actually be cdecl:
30 * - DbgPrintReturnControlC()
31 * - NdisWriteErrorLogEntry()
33 * All other functions declared in ndis.h should be stdcall.
36 * - finish sanitizing NDIS40 and NDIS50; think about NDIS51
37 * - make sure everything is stdcall
44 #pragma GCC system_header
55 #include <ddk/netpnp.h>
67 #define FASTCALL __attribute__((fastcall))
70 /* The NDIS library exports functions. NDIS miniport drivers import functions */
74 #define DDKAPI __declspec(dllexport)
76 #define DDKAPI STDCALL /* MS ndis.h is 100% stdcall due to compiler flag /Gz */
79 #else /* NDIS_WRAPPER */
82 #define DDKAPI __declspec(dllimport)
84 #define DDKAPI STDCALL
87 #endif /* NDIS_WRAPPER */
89 /* support NDIS_WDM and MAC drivers */
90 #if defined (NDIS_WDM)
101 PVOID FailedAssertion
,
107 #define ASSERT( exp ) if (!(exp)) RtlAssert( #exp, __FILE__, __LINE__, NULL )
108 #define ASSERTMSG( msg, exp ) if (!(exp)) RtlAssert( #exp, __FILE__, __LINE__, msg )
109 #define PAGED_CODE() if (KeGetCurrentIrql() > APC_LEVEL) ASSERT(0);
112 #define ASSERT( exp )
113 #define ASSERTMSG( msg, exp )
123 typedef CONST CHAR
*PCSTR
;
125 typedef struct _DMA_CONFIGURATION_BYTE0
131 } DMA_CONFIGURATION_BYTE0
;
133 typedef struct _DMA_CONFIGURATION_BYTE1
136 UCHAR TransferSize
:2;
139 } DMA_CONFIGURATION_BYTE1
;
142 typedef struct _EISA_MEMORY_TYPE
151 } EISA_MEMORY_TYPE
, *PEISA_MEMORY_TYPE
;
153 typedef struct _EISA_MEMORY_CONFIGURATION
155 EISA_MEMORY_TYPE ConfigurationByte
;
157 USHORT AddressLowWord
;
158 UCHAR AddressHighByte
;
160 } EISA_MEMORY_CONFIGURATION
, *PEISA_MEMORY_CONFIGURATION
;
163 typedef struct _EISA_IRQ_DESCRIPTOR
167 UCHAR LevelTriggered
:1;
170 } EISA_IRQ_DESCRIPTOR
, *PEISA_IRQ_DESCRIPTOR
;
172 typedef struct _EISA_IRQ_CONFIGURATION
174 EISA_IRQ_DESCRIPTOR ConfigurationByte
;
176 } EISA_IRQ_CONFIGURATION
, *PEISA_IRQ_CONFIGURATION
;
178 typedef struct _EISA_DMA_CONFIGURATION
180 DMA_CONFIGURATION_BYTE0 ConfigurationByte0
;
181 DMA_CONFIGURATION_BYTE1 ConfigurationByte1
;
182 } EISA_DMA_CONFIGURATION
, *PEISA_DMA_CONFIGURATION
;
185 typedef struct _EISA_PORT_DESCRIPTOR
191 } EISA_PORT_DESCRIPTOR
, *PEISA_PORT_DESCRIPTOR
;
193 typedef struct _EISA_PORT_CONFIGURATION
195 EISA_PORT_DESCRIPTOR Configuration
;
197 } EISA_PORT_CONFIGURATION
, *PEISA_PORT_CONFIGURATION
;
199 typedef struct _CM_EISA_SLOT_INFORMATION
206 UCHAR NumberFunctions
;
207 UCHAR FunctionInformation
;
209 } CM_EISA_SLOT_INFORMATION
, *PCM_EISA_SLOT_INFORMATION
;
211 typedef struct _CM_EISA_FUNCTION_INFORMATION
218 UCHAR Selections
[26];
220 UCHAR TypeString
[80];
221 EISA_MEMORY_CONFIGURATION EisaMemory
[9];
222 EISA_IRQ_CONFIGURATION EisaIrq
[7];
223 EISA_DMA_CONFIGURATION EisaDma
[4];
224 EISA_PORT_CONFIGURATION EisaPort
[20];
225 UCHAR InitializationData
[60];
226 } CM_EISA_FUNCTION_INFORMATION
, *PCM_EISA_FUNCTION_INFORMATION
;
228 ULONG CDECL
DbgPrint(
233 /* Core kernel functions */
237 KeStallExecutionProcessor(
241 #include <ddk/netevent.h>
243 #include "ntddndis.h"
246 #if !defined(_MSC_VER)
249 typedef struct _GUID
{
255 #endif /* _GUID_DEFINED */
256 #endif /* _MSC_VER */
259 /* NDIS base types */
261 typedef struct _NDIS_SPIN_LOCK
{
264 } NDIS_SPIN_LOCK
, * PNDIS_SPIN_LOCK
;
266 typedef struct _NDIS_EVENT
{
268 } NDIS_EVENT
, *PNDIS_EVENT
;
270 typedef PVOID NDIS_HANDLE
, *PNDIS_HANDLE
;
271 typedef int NDIS_STATUS
, *PNDIS_STATUS
;
273 typedef UNICODE_STRING NDIS_STRING
, *PNDIS_STRING
;
275 typedef MDL NDIS_BUFFER
, *PNDIS_BUFFER
;
277 /* NDIS_STATUS constants */
278 #define NDIS_STATUS_SUCCESS ((NDIS_STATUS)STATUS_SUCCESS)
279 #define NDIS_STATUS_PENDING ((NDIS_STATUS)STATUS_PENDING)
280 #define NDIS_STATUS_NOT_RECOGNIZED ((NDIS_STATUS)0x00010001L)
281 #define NDIS_STATUS_NOT_COPIED ((NDIS_STATUS)0x00010002L)
282 #define NDIS_STATUS_NOT_ACCEPTED ((NDIS_STATUS)0x00010003L)
283 #define NDIS_STATUS_CALL_ACTIVE ((NDIS_STATUS)0x00010007L)
284 #define NDIS_STATUS_ONLINE ((NDIS_STATUS)0x40010003L)
285 #define NDIS_STATUS_RESET_START ((NDIS_STATUS)0x40010004L)
286 #define NDIS_STATUS_RESET_END ((NDIS_STATUS)0x40010005L)
287 #define NDIS_STATUS_RING_STATUS ((NDIS_STATUS)0x40010006L)
288 #define NDIS_STATUS_CLOSED ((NDIS_STATUS)0x40010007L)
289 #define NDIS_STATUS_WAN_LINE_UP ((NDIS_STATUS)0x40010008L)
290 #define NDIS_STATUS_WAN_LINE_DOWN ((NDIS_STATUS)0x40010009L)
291 #define NDIS_STATUS_WAN_FRAGMENT ((NDIS_STATUS)0x4001000AL)
292 #define NDIS_STATUS_MEDIA_CONNECT ((NDIS_STATUS)0x4001000BL)
293 #define NDIS_STATUS_MEDIA_DISCONNECT ((NDIS_STATUS)0x4001000CL)
294 #define NDIS_STATUS_HARDWARE_LINE_UP ((NDIS_STATUS)0x4001000DL)
295 #define NDIS_STATUS_HARDWARE_LINE_DOWN ((NDIS_STATUS)0x4001000EL)
296 #define NDIS_STATUS_INTERFACE_UP ((NDIS_STATUS)0x4001000FL)
297 #define NDIS_STATUS_INTERFACE_DOWN ((NDIS_STATUS)0x40010010L)
298 #define NDIS_STATUS_MEDIA_BUSY ((NDIS_STATUS)0x40010011L)
299 #define NDIS_STATUS_WW_INDICATION ((NDIS_STATUS)0x40010012L)
300 #define NDIS_STATUS_TAPI_INDICATION ((NDIS_STATUS)0x40010080L)
302 #define NDIS_STATUS_NOT_RESETTABLE ((NDIS_STATUS)0x80010001L)
303 #define NDIS_STATUS_SOFT_ERRORS ((NDIS_STATUS)0x80010003L)
304 #define NDIS_STATUS_HARD_ERRORS ((NDIS_STATUS)0x80010004L)
305 #define NDIS_STATUS_BUFFER_OVERFLOW ((NDIS_STATUS)STATUS_BUFFER_OVERFLOW)
307 #define NDIS_STATUS_FAILURE ((NDIS_STATUS)STATUS_UNSUCCESSFUL)
308 #define NDIS_STATUS_RESOURCES ((NDIS_STATUS)STATUS_INSUFFICIENT_RESOURCES)
309 #define NDIS_STATUS_CLOSING ((NDIS_STATUS)0xC0010002L)
310 #define NDIS_STATUS_BAD_VERSION ((NDIS_STATUS)0xC0010004L)
311 #define NDIS_STATUS_BAD_CHARACTERISTICS ((NDIS_STATUS)0xC0010005L)
312 #define NDIS_STATUS_ADAPTER_NOT_FOUND ((NDIS_STATUS)0xC0010006L)
313 #define NDIS_STATUS_OPEN_FAILED ((NDIS_STATUS)0xC0010007L)
314 #define NDIS_STATUS_DEVICE_FAILED ((NDIS_STATUS)0xC0010008L)
315 #define NDIS_STATUS_MULTICAST_FULL ((NDIS_STATUS)0xC0010009L)
316 #define NDIS_STATUS_MULTICAST_EXISTS ((NDIS_STATUS)0xC001000AL)
317 #define NDIS_STATUS_MULTICAST_NOT_FOUND ((NDIS_STATUS)0xC001000BL)
318 #define NDIS_STATUS_REQUEST_ABORTED ((NDIS_STATUS)0xC001000CL)
319 #define NDIS_STATUS_RESET_IN_PROGRESS ((NDIS_STATUS)0xC001000DL)
320 #define NDIS_STATUS_CLOSING_INDICATING ((NDIS_STATUS)0xC001000EL)
321 #define NDIS_STATUS_NOT_SUPPORTED ((NDIS_STATUS)STATUS_NOT_SUPPORTED)
322 #define NDIS_STATUS_INVALID_PACKET ((NDIS_STATUS)0xC001000FL)
323 #define NDIS_STATUS_OPEN_LIST_FULL ((NDIS_STATUS)0xC0010010L)
324 #define NDIS_STATUS_ADAPTER_NOT_READY ((NDIS_STATUS)0xC0010011L)
325 #define NDIS_STATUS_ADAPTER_NOT_OPEN ((NDIS_STATUS)0xC0010012L)
326 #define NDIS_STATUS_NOT_INDICATING ((NDIS_STATUS)0xC0010013L)
327 #define NDIS_STATUS_INVALID_LENGTH ((NDIS_STATUS)0xC0010014L)
328 #define NDIS_STATUS_INVALID_DATA ((NDIS_STATUS)0xC0010015L)
329 #define NDIS_STATUS_BUFFER_TOO_SHORT ((NDIS_STATUS)0xC0010016L)
330 #define NDIS_STATUS_INVALID_OID ((NDIS_STATUS)0xC0010017L)
331 #define NDIS_STATUS_ADAPTER_REMOVED ((NDIS_STATUS)0xC0010018L)
332 #define NDIS_STATUS_UNSUPPORTED_MEDIA ((NDIS_STATUS)0xC0010019L)
333 #define NDIS_STATUS_GROUP_ADDRESS_IN_USE ((NDIS_STATUS)0xC001001AL)
334 #define NDIS_STATUS_FILE_NOT_FOUND ((NDIS_STATUS)0xC001001BL)
335 #define NDIS_STATUS_ERROR_READING_FILE ((NDIS_STATUS)0xC001001CL)
336 #define NDIS_STATUS_ALREADY_MAPPED ((NDIS_STATUS)0xC001001DL)
337 #define NDIS_STATUS_RESOURCE_CONFLICT ((NDIS_STATUS)0xC001001EL)
338 #define NDIS_STATUS_NO_CABLE ((NDIS_STATUS)0xC001001FL)
340 #define NDIS_STATUS_INVALID_SAP ((NDIS_STATUS)0xC0010020L)
341 #define NDIS_STATUS_SAP_IN_USE ((NDIS_STATUS)0xC0010021L)
342 #define NDIS_STATUS_INVALID_ADDRESS ((NDIS_STATUS)0xC0010022L)
343 #define NDIS_STATUS_VC_NOT_ACTIVATED ((NDIS_STATUS)0xC0010023L)
344 #define NDIS_STATUS_DEST_OUT_OF_ORDER ((NDIS_STATUS)0xC0010024L)
345 #define NDIS_STATUS_VC_NOT_AVAILABLE ((NDIS_STATUS)0xC0010025L)
346 #define NDIS_STATUS_CELLRATE_NOT_AVAILABLE ((NDIS_STATUS)0xC0010026L)
347 #define NDIS_STATUS_INCOMPATABLE_QOS ((NDIS_STATUS)0xC0010027L)
348 #define NDIS_STATUS_AAL_PARAMS_UNSUPPORTED ((NDIS_STATUS)0xC0010028L)
349 #define NDIS_STATUS_NO_ROUTE_TO_DESTINATION ((NDIS_STATUS)0xC0010029L)
351 #define NDIS_STATUS_TOKEN_RING_OPEN_ERROR ((NDIS_STATUS)0xC0011000L)
354 /* NDIS error codes for error logging */
356 #define NDIS_ERROR_CODE ULONG
358 #define NDIS_ERROR_CODE_RESOURCE_CONFLICT EVENT_NDIS_RESOURCE_CONFLICT
359 #define NDIS_ERROR_CODE_OUT_OF_RESOURCES EVENT_NDIS_OUT_OF_RESOURCE
360 #define NDIS_ERROR_CODE_HARDWARE_FAILURE EVENT_NDIS_HARDWARE_FAILURE
361 #define NDIS_ERROR_CODE_ADAPTER_NOT_FOUND EVENT_NDIS_ADAPTER_NOT_FOUND
362 #define NDIS_ERROR_CODE_INTERRUPT_CONNECT EVENT_NDIS_INTERRUPT_CONNECT
363 #define NDIS_ERROR_CODE_DRIVER_FAILURE EVENT_NDIS_DRIVER_FAILURE
364 #define NDIS_ERROR_CODE_BAD_VERSION EVENT_NDIS_BAD_VERSION
365 #define NDIS_ERROR_CODE_TIMEOUT EVENT_NDIS_TIMEOUT
366 #define NDIS_ERROR_CODE_NETWORK_ADDRESS EVENT_NDIS_NETWORK_ADDRESS
367 #define NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION EVENT_NDIS_UNSUPPORTED_CONFIGURATION
368 #define NDIS_ERROR_CODE_INVALID_VALUE_FROM_ADAPTER EVENT_NDIS_INVALID_VALUE_FROM_ADAPTER
369 #define NDIS_ERROR_CODE_MISSING_CONFIGURATION_PARAMETER EVENT_NDIS_MISSING_CONFIGURATION_PARAMETER
370 #define NDIS_ERROR_CODE_BAD_IO_BASE_ADDRESS EVENT_NDIS_BAD_IO_BASE_ADDRESS
371 #define NDIS_ERROR_CODE_RECEIVE_SPACE_SMALL EVENT_NDIS_RECEIVE_SPACE_SMALL
372 #define NDIS_ERROR_CODE_ADAPTER_DISABLED EVENT_NDIS_ADAPTER_DISABLED
375 /* Memory allocation flags. Used by Ndis[Allocate|Free]Memory */
376 #define NDIS_MEMORY_CONTIGUOUS 0x00000001
377 #define NDIS_MEMORY_NONCACHED 0x00000002
379 /* NIC attribute flags. Used by NdisMSetAttributes(Ex) */
380 #define NDIS_ATTRIBUTE_IGNORE_PACKET_TIMEOUT 0x00000001
381 #define NDIS_ATTRIBUTE_IGNORE_REQUEST_TIMEOUT 0x00000002
382 #define NDIS_ATTRIBUTE_IGNORE_TOKEN_RING_ERRORS 0x00000004
383 #define NDIS_ATTRIBUTE_BUS_MASTER 0x00000008
384 #define NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER 0x00000010
385 #define NDIS_ATTRIBUTE_DESERIALIZE 0x00000020
388 #define MAXIMUM_PROCESSORS 32
392 typedef union _NDIS_RW_LOCK_REFCOUNT
{
395 } NDIS_RW_LOCK_REFCOUNT
;
397 typedef struct _NDIS_RW_LOCK
{
406 NDIS_RW_LOCK_REFCOUNT RefCount
[MAXIMUM_PROCESSORS
];
407 } NDIS_RW_LOCK
, *PNDIS_RW_LOCK
;
409 typedef struct _LOCK_STATE
{
412 } LOCK_STATE
, *PLOCK_STATE
;
419 (*PNDIS_TIMER_FUNCTION
)(
420 IN PVOID SystemSpecific1
,
421 IN PVOID FunctionContext
,
422 IN PVOID SystemSpecific2
,
423 IN PVOID SystemSpecific3
);
425 typedef struct _NDIS_TIMER
{
428 } NDIS_TIMER
, *PNDIS_TIMER
;
433 IN OUT PNDIS_TIMER Timer
,
434 IN PNDIS_TIMER_FUNCTION TimerFunction
,
435 IN PVOID FunctionContext
);
440 IN PNDIS_TIMER Timer
,
441 IN UINT MillisecondsToDelay
);
445 typedef CM_MCA_POS_DATA NDIS_MCA_POS_DATA
, *PNDIS_MCA_POS_DATA
;
446 typedef CM_EISA_SLOT_INFORMATION NDIS_EISA_SLOT_INFORMATION
, *PNDIS_EISA_SLOT_INFORMATION
;
447 typedef CM_EISA_FUNCTION_INFORMATION NDIS_EISA_FUNCTION_INFORMATION
, *PNDIS_EISA_FUNCTION_INFORMATION
;
448 typedef CM_PARTIAL_RESOURCE_LIST NDIS_RESOURCE_LIST
, *PNDIS_RESOURCE_LIST
;
450 /* Hardware status codes (OID_GEN_HARDWARE_STATUS) */
451 typedef enum _NDIS_HARDWARE_STATUS
{
452 NdisHardwareStatusReady
,
453 NdisHardwareStatusInitializing
,
454 NdisHardwareStatusReset
,
455 NdisHardwareStatusClosing
,
456 NdisHardwareStatusNotReady
457 } NDIS_HARDWARE_STATUS
, *PNDIS_HARDWARE_STATUS
;
459 /* OID_GEN_GET_TIME_CAPS */
460 typedef struct _GEN_GET_TIME_CAPS
{
462 ULONG ClockPrecision
;
463 } GEN_GET_TIME_CAPS
, *PGEN_GET_TIME_CAPS
;
466 #define READABLE_LOCAL_CLOCK 0x00000001
467 #define CLOCK_NETWORK_DERIVED 0x00000002
468 #define CLOCK_PRECISION 0x00000004
469 #define RECEIVE_TIME_INDICATION_CAPABLE 0x00000008
470 #define TIMED_SEND_CAPABLE 0x00000010
471 #define TIME_STAMP_CAPABLE 0x00000020
473 /* OID_GEN_GET_NETCARD_TIME */
474 typedef struct _GEN_GET_NETCARD_TIME
{
476 } GEN_GET_NETCARD_TIME
, *PGEN_GET_NETCARD_TIME
;
478 /* NDIS driver medium (OID_GEN_MEDIA_SUPPORTED / OID_GEN_MEDIA_IN_USE) */
479 typedef enum _NDIS_MEDIUM
{
485 NdisMediumDix
, /* Defined for convenience, not a real medium */
487 NdisMediumArcnet878_2
,
489 NdisMediumWirelessWan
,
495 } NDIS_MEDIUM
, *PNDIS_MEDIUM
;
497 /* NDIS packet filter bits (OID_GEN_CURRENT_PACKET_FILTER) */
498 #define NDIS_PACKET_TYPE_DIRECTED 0x00000001
499 #define NDIS_PACKET_TYPE_MULTICAST 0x00000002
500 #define NDIS_PACKET_TYPE_ALL_MULTICAST 0x00000004
501 #define NDIS_PACKET_TYPE_BROADCAST 0x00000008
502 #define NDIS_PACKET_TYPE_SOURCE_ROUTING 0x00000010
503 #define NDIS_PACKET_TYPE_PROMISCUOUS 0x00000020
504 #define NDIS_PACKET_TYPE_SMT 0x00000040
505 #define NDIS_PACKET_TYPE_ALL_LOCAL 0x00000080
506 #define NDIS_PACKET_TYPE_GROUP 0x00001000
507 #define NDIS_PACKET_TYPE_ALL_FUNCTIONAL 0x00002000
508 #define NDIS_PACKET_TYPE_FUNCTIONAL 0x00004000
509 #define NDIS_PACKET_TYPE_MAC_FRAME 0x00008000
511 /* NDIS protocol option bits (OID_GEN_PROTOCOL_OPTIONS) */
512 #define NDIS_PROT_OPTION_ESTIMATED_LENGTH 0x00000001
513 #define NDIS_PROT_OPTION_NO_LOOPBACK 0x00000002
514 #define NDIS_PROT_OPTION_NO_RSVD_ON_RCVPKT 0x00000004
516 /* NDIS MAC option bits (OID_GEN_MAC_OPTIONS) */
517 #define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA 0x00000001
518 #define NDIS_MAC_OPTION_RECEIVE_SERIALIZED 0x00000002
519 #define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND 0x00000004
520 #define NDIS_MAC_OPTION_NO_LOOPBACK 0x00000008
521 #define NDIS_MAC_OPTION_FULL_DUPLEX 0x00000010
522 #define NDIS_MAC_OPTION_EOTX_INDICATION 0x00000020
523 #define NDIS_MAC_OPTION_8021P_PRIORITY 0x00000040
524 #define NDIS_MAC_OPTION_RESERVED 0x80000000
526 /* State of the LAN media (OID_GEN_MEDIA_CONNECT_STATUS) */
527 typedef enum _NDIS_MEDIA_STATE
{
528 NdisMediaStateConnected
,
529 NdisMediaStateDisconnected
530 } NDIS_MEDIA_STATE
, *PNDIS_MEDIA_STATE
;
532 /* OID_GEN_SUPPORTED_GUIDS */
533 typedef struct _NDIS_GUID
{
541 } NDIS_GUID
, *PNDIS_GUID
;
543 #define NDIS_GUID_TO_OID 0x00000001
544 #define NDIS_GUID_TO_STATUS 0x00000002
545 #define NDIS_GUID_ANSI_STRING 0x00000004
546 #define NDIS_GUID_UNICODE_STRING 0x00000008
547 #define NDIS_GUID_ARRAY 0x00000010
550 typedef struct _NDIS_PACKET_POOL
{
551 NDIS_SPIN_LOCK SpinLock
;
552 struct _NDIS_PACKET
*FreeList
;
555 } NDIS_PACKET_POOL
, * PNDIS_PACKET_POOL
;
557 typedef struct _NDIS_PACKET_PRIVATE
{
562 PNDIS_PACKET_POOL Pool
;
564 ULONG Flags
; /* See fPACKET_xxx bits below */
566 UCHAR NdisPacketFlags
;
567 USHORT NdisPacketOobOffset
;
568 } NDIS_PACKET_PRIVATE
, * PNDIS_PACKET_PRIVATE
;
570 #define fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO 0x40
571 #define fPACKET_ALLOCATED_BY_NDIS 0x80
573 typedef struct _NDIS_PACKET
{
574 NDIS_PACKET_PRIVATE Private
;
577 UCHAR MiniportReserved
[2*sizeof(PVOID
)];
578 UCHAR WrapperReserved
[2*sizeof(PVOID
)];
581 UCHAR MiniportReservedEx
[3*sizeof(PVOID
)];
582 UCHAR WrapperReservedEx
[sizeof(PVOID
)];
585 UCHAR MacReserved
[4*sizeof(PVOID
)];
588 ULONG_PTR Reserved
[2];
589 UCHAR ProtocolReserved
[1];
590 } NDIS_PACKET
, *PNDIS_PACKET
, **PPNDIS_PACKET
;
592 typedef struct _NDIS_PACKET_OOB_DATA
{
594 ULONGLONG TimeToSend
;
597 ULONGLONG TimeReceived
;
599 UINT SizeMediaSpecificInfo
;
600 PVOID MediaSpecificInformation
;
602 } NDIS_PACKET_OOB_DATA
, *PNDIS_PACKET_OOB_DATA
;
604 typedef struct _NDIS_PM_PACKET_PATTERN
{
611 } NDIS_PM_PACKET_PATTERN
, *PNDIS_PM_PACKET_PATTERN
;
614 /* Request types used by NdisRequest */
615 typedef enum _NDIS_REQUEST_TYPE
{
616 NdisRequestQueryInformation
,
617 NdisRequestSetInformation
,
618 NdisRequestQueryStatistics
,
622 NdisRequestTransferData
,
628 } NDIS_REQUEST_TYPE
, *PNDIS_REQUEST_TYPE
;
630 typedef struct _NDIS_REQUEST
{
631 UCHAR MacReserved
[16];
632 NDIS_REQUEST_TYPE RequestType
;
634 struct QUERY_INFORMATION
{
636 PVOID InformationBuffer
;
637 UINT InformationBufferLength
;
641 struct SET_INFORMATION
{
643 PVOID InformationBuffer
;
644 UINT InformationBufferLength
;
650 UCHAR NdisReserved
[36];
652 UCHAR CallMgrReserved
[8];
653 UCHAR ProtocolReserved
[8];
655 UCHAR MiniportReserved
[8];
657 } NDIS_REQUEST
, *PNDIS_REQUEST
;
661 /* Wide Area Networks definitions */
663 typedef struct _NDIS_WAN_PACKET
{
664 LIST_ENTRY WanPacketQueue
;
665 PUCHAR CurrentBuffer
;
669 PVOID ProtocolReserved1
;
670 PVOID ProtocolReserved2
;
671 PVOID ProtocolReserved3
;
672 PVOID ProtocolReserved4
;
677 } NDIS_WAN_PACKET
, *PNDIS_WAN_PACKET
;
681 /* DMA channel information */
683 typedef struct _NDIS_DMA_DESCRIPTION
{
685 BOOLEAN AutoInitialize
;
686 BOOLEAN DmaChannelSpecified
;
691 } NDIS_DMA_DESCRIPTION
, *PNDIS_DMA_DESCRIPTION
;
693 typedef struct _NDIS_DMA_BLOCK
{
694 PVOID MapRegisterBase
;
695 KEVENT AllocationEvent
;
696 PADAPTER_OBJECT SystemAdapterObject
;
698 } NDIS_DMA_BLOCK
, *PNDIS_DMA_BLOCK
;
700 #define NDIS_DMA_24BITS 0
701 #define NDIS_DMA_32BITS 1
702 #define NDIS_DMA_64BITS 2
704 /* Possible hardware architecture */
705 typedef enum _NDIS_INTERFACE_TYPE
{
706 NdisInterfaceInternal
= Internal
,
707 NdisInterfaceIsa
= Isa
,
708 NdisInterfaceEisa
= Eisa
,
709 NdisInterfaceMca
= MicroChannel
,
710 NdisInterfaceTurboChannel
= TurboChannel
,
711 NdisInterfacePci
= PCIBus
,
712 NdisInterfacePcMcia
= PCMCIABus
713 } NDIS_INTERFACE_TYPE
, *PNDIS_INTERFACE_TYPE
;
715 #define NdisInterruptLevelSensitive LevelSensitive
716 #define NdisInterruptLatched Latched
717 typedef KINTERRUPT_MODE NDIS_INTERRUPT_MODE
, *PNDIS_INTERRUPT_MODE
;
719 typedef enum _NDIS_PROCESSOR_TYPE
{
724 } NDIS_PROCESSOR_TYPE
, *PNDIS_PROCESSOR_TYPE
;
726 typedef enum _NDIS_ENVIRONMENT_TYPE
{
727 NdisEnvironmentWindows
,
728 NdisEnvironmentWindowsNt
729 } NDIS_ENVIRONMENT_TYPE
, *PNDIS_ENVIRONMENT_TYPE
;
731 typedef enum _NDIS_PARAMETER_TYPE
{
732 NdisParameterInteger
,
733 NdisParameterHexInteger
,
735 NdisParameterMultiString
,
737 } NDIS_PARAMETER_TYPE
, *PNDIS_PARAMETER_TYPE
;
744 typedef struct _NDIS_CONFIGURATION_PARAMETER
{
745 NDIS_PARAMETER_TYPE ParameterType
;
748 NDIS_STRING StringData
;
749 BINARY_DATA BinaryData
;
751 } NDIS_CONFIGURATION_PARAMETER
, *PNDIS_CONFIGURATION_PARAMETER
;
754 typedef PHYSICAL_ADDRESS NDIS_PHYSICAL_ADDRESS
, *PNDIS_PHYSICAL_ADDRESS
;
756 typedef struct _NDIS_PHYSICAL_ADDRESS_UNIT
{
757 NDIS_PHYSICAL_ADDRESS PhysicalAddress
;
759 } NDIS_PHYSICAL_ADDRESS_UNIT
, *PNDIS_PHYSICAL_ADDRESS_UNIT
;
763 (STDCALL
*ADAPTER_SHUTDOWN_HANDLER
)(
764 IN PVOID ShutdownContext
);
768 //#ifdef NDIS_WRAPPER
770 typedef struct _OID_LIST OID_LIST
, *POID_LIST
;
774 typedef enum _NDIS_PNP_DEVICE_STATE
{
776 NdisPnPDeviceStarted
,
777 NdisPnPDeviceQueryStopped
,
778 NdisPnPDeviceStopped
,
779 NdisPnPDeviceQueryRemoved
,
780 NdisPnPDeviceRemoved
,
781 NdisPnPDeviceSurpriseRemoved
782 } NDIS_PNP_DEVICE_STATE
;
784 #define NDIS_DEVICE_NOT_STOPPABLE 0x00000001
785 #define NDIS_DEVICE_NOT_REMOVEABLE 0x00000002
786 #define NDIS_DEVICE_NOT_SUSPENDABLE 0x00000004
787 #define NDIS_DEVICE_DISABLE_PM 0x00000008
788 #define NDIS_DEVICE_DISABLE_WAKE_UP 0x00000010
789 #define NDIS_DEVICE_DISABLE_WAKE_ON_RECONNECT 0x00000020
791 //#endif /* NDIS_WRAPPER */
794 typedef struct _ATM_ADDRESS ATM_ADDRESS
, *PATM_ADDRESS
;
797 /* OID_GEN_NETWORK_LAYER_ADDRESSES */
798 typedef struct _NETWORK_ADDRESS
{
799 USHORT AddressLength
;
802 } NETWORK_ADDRESS
, *PNETWORK_ADDRESS
;
804 typedef struct _NETWORK_ADDRESS_LIST
{
807 NETWORK_ADDRESS Address
[1];
808 } NETWORK_ADDRESS_LIST
, *PNETWORK_ADDRESS_LIST
;
810 /* Protocol types supported by NDIS */
811 #define NDIS_PROTOCOL_ID_DEFAULT 0x00
812 #define NDIS_PROTOCOL_ID_TCP_IP 0x02
813 #define NDIS_PROTOCOL_ID_IPX 0x06
814 #define NDIS_PROTOCOL_ID_NBF 0x07
815 #define NDIS_PROTOCOL_ID_MAX 0x0F
816 #define NDIS_PROTOCOL_ID_MASK 0x0F
819 /* OID_GEN_TRANSPORT_HEADER_OFFSET */
820 typedef struct _TRANSPORT_HEADER_OFFSET
{
823 } TRANSPORT_HEADER_OFFSET
, *PTRANSPORT_HEADER_OFFSET
;
826 /* OID_GEN_CO_LINK_SPEED / OID_GEN_CO_MINIMUM_LINK_SPEED */
827 typedef struct _NDIS_CO_LINK_SPEED
{
830 } NDIS_CO_LINK_SPEED
, *PNDIS_CO_LINK_SPEED
;
833 typedef enum _NDIS_AF
{
834 CO_ADDRESS_FAMILY_Q2931
= 1,
835 CO_ADDRESS_FAMILY_SPANS
,
836 } NDIS_AF
, *PNDIS_AF
;
839 NDIS_AF AddressFamily
;
842 } CO_ADDRESS_FAMILY
, *PCO_ADDRESS_FAMILY
;
850 typedef struct _CO_FLOW_PARAMETERS
{
851 ULONG TokenRate
; /* In Bytes/sec */
852 ULONG TokenBucketSize
; /* In Bytes */
853 ULONG PeakBandwidth
; /* In Bytes/sec */
854 ULONG Latency
; /* In microseconds */
855 ULONG DelayVariation
; /* In microseconds */
856 GUARANTEE LevelOfGuarantee
; /* Guaranteed, Predictive or Best Effort */
857 ULONG CostOfCall
; /* Reserved for future use, */
858 /* must be set to 0 now */
859 ULONG NetworkAvailability
; /* read-only: 1 if accessible, 0 if not */
860 ULONG MaxSduSize
; /* In Bytes */
861 } CO_FLOW_PARAMETERS
, *PCO_FLOW_PARAMETERS
;
863 typedef struct _CO_SPECIFIC_PARAMETERS
{
867 } CO_SPECIFIC_PARAMETERS
, *PCO_SPECIFIC_PARAMETERS
;
869 typedef struct _CO_CALL_MANAGER_PARAMETERS
{
870 CO_FLOW_PARAMETERS Transmit
;
871 CO_FLOW_PARAMETERS Receive
;
872 CO_SPECIFIC_PARAMETERS CallMgrSpecific
;
873 } CO_CALL_MANAGER_PARAMETERS
, *PCO_CALL_MANAGER_PARAMETERS
;
875 /* CO_MEDIA_PARAMETERS.Flags constants */
876 #define RECEIVE_TIME_INDICATION 0x00000001
877 #define USE_TIME_STAMPS 0x00000002
878 #define TRANSMIT_VC 0x00000004
879 #define RECEIVE_VC 0x00000008
880 #define INDICATE_ERRED_PACKETS 0x00000010
881 #define INDICATE_END_OF_TX 0x00000020
882 #define RESERVE_RESOURCES_VC 0x00000040
883 #define ROUND_DOWN_FLOW 0x00000080
884 #define ROUND_UP_FLOW 0x00000100
886 typedef struct _CO_MEDIA_PARAMETERS
{
888 ULONG ReceivePriority
;
889 ULONG ReceiveSizeHint
;
890 CO_SPECIFIC_PARAMETERS MediaSpecific
;
891 } CO_MEDIA_PARAMETERS
, *PCO_MEDIA_PARAMETERS
;
893 typedef struct _CO_CALL_PARAMETERS
{
895 PCO_CALL_MANAGER_PARAMETERS CallMgrParameters
;
896 PCO_MEDIA_PARAMETERS MediaParameters
;
897 } CO_CALL_PARAMETERS
, *PCO_CALL_PARAMETERS
;
899 typedef struct _CO_SAP
{
905 typedef struct _NDIS_IPSEC_PACKET_INFO
{
908 NDIS_HANDLE OffloadHandle
;
909 NDIS_HANDLE NextOffloadHandle
;
912 ULONG SA_DELETE_REQ
:1;
914 ULONG NEXT_CRYPTO_DONE
:1;
918 } NDIS_IPSEC_PACKET_INFO
, *PNDIS_IPSEC_PACKET_INFO
;
923 /* Plug and play and power management */
925 /* PnP and PM event codes */
926 typedef enum _NET_PNP_EVENT_CODE
{
929 NetEventQueryRemoveDevice
,
930 NetEventCancelRemoveDevice
,
933 NetEventBindsComplete
,
934 NetEventPnPCapabilities
,
936 } NET_PNP_EVENT_CODE
, *PNET_PNP_EVENT_CODE
;
938 /* Networking PnP event indication structure */
939 typedef struct _NET_PNP_EVENT
{
941 NET_PNP_EVENT_CODE NetEvent
;
942 /* Event specific data */
944 /* Length of event specific data */
948 ULONG_PTR NdisReserved
[4];
949 ULONG_PTR TransportReserved
[4];
950 ULONG_PTR TdiReserved
[4];
951 ULONG_PTR TdiClientReserved
[4];
952 } NET_PNP_EVENT
, *PNET_PNP_EVENT
;
954 /* Device power state structure */
955 typedef enum _NET_DEVICE_POWER_STATE
{
956 NetDeviceStateUnspecified
= 0,
961 NetDeviceStateMaximum
962 } NET_DEVICE_POWER_STATE
, *PNET_DEVICE_POWER_STATE
;
968 typedef NDIS_STATUS
STDCALL_FUNC (*CO_CREATE_VC_HANDLER
)(
969 IN NDIS_HANDLE ProtocolAfContext
,
970 IN NDIS_HANDLE NdisVcHandle
,
971 OUT PNDIS_HANDLE ProtocolVcContext
);
973 typedef NDIS_STATUS
STDCALL_FUNC (*CO_DELETE_VC_HANDLER
)(
974 IN NDIS_HANDLE ProtocolVcContext
);
976 typedef NDIS_STATUS
STDCALL_FUNC (*CO_REQUEST_HANDLER
)(
977 IN NDIS_HANDLE ProtocolAfContext
,
978 IN NDIS_HANDLE ProtocolVcContext OPTIONAL
,
979 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
,
980 IN OUT PNDIS_REQUEST NdisRequest
);
982 typedef VOID
STDCALL_FUNC (*CO_REQUEST_COMPLETE_HANDLER
)(
983 IN NDIS_STATUS Status
,
984 IN NDIS_HANDLE ProtocolAfContext OPTIONAL
,
985 IN NDIS_HANDLE ProtocolVcContext OPTIONAL
,
986 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
,
987 IN PNDIS_REQUEST NdisRequest
);
990 typedef NDIS_STATUS
STDCALL_FUNC (*CM_OPEN_AF_HANDLER
)(
991 IN NDIS_HANDLE CallMgrBindingContext
,
992 IN PCO_ADDRESS_FAMILY AddressFamily
,
993 IN NDIS_HANDLE NdisAfHandle
,
994 OUT PNDIS_HANDLE CallMgrAfContext
999 (STDCALL
*CM_CLOSE_AF_HANDLER
)(
1000 IN NDIS_HANDLE CallMgrAfContext
);
1004 (STDCALL
*CM_REG_SAP_HANDLER
)(
1005 IN NDIS_HANDLE CallMgrAfContext
,
1007 IN NDIS_HANDLE NdisSapHandle
,
1008 OUT PNDIS_HANDLE CallMgrSapContext
);
1012 (STDCALL
*CM_DEREG_SAP_HANDLER
)(
1013 IN NDIS_HANDLE CallMgrSapContext
);
1017 (STDCALL
*CM_MAKE_CALL_HANDLER
)(
1018 IN NDIS_HANDLE CallMgrVcContext
,
1019 IN OUT PCO_CALL_PARAMETERS CallParameters
,
1020 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
1021 OUT PNDIS_HANDLE CallMgrPartyContext OPTIONAL
);
1025 (STDCALL
*CM_CLOSE_CALL_HANDLER
)(
1026 IN NDIS_HANDLE CallMgrVcContext
,
1027 IN NDIS_HANDLE CallMgrPartyContext OPTIONAL
,
1028 IN PVOID CloseData OPTIONAL
,
1029 IN UINT Size OPTIONAL
);
1033 (STDCALL
*CM_INCOMING_CALL_COMPLETE_HANDLER
)(
1034 IN NDIS_STATUS Status
,
1035 IN NDIS_HANDLE CallMgrVcContext
,
1036 IN PCO_CALL_PARAMETERS CallParameters
);
1040 STDCALL_FUNC (*CM_ADD_PARTY_HANDLER
)(
1041 IN NDIS_HANDLE CallMgrVcContext
,
1042 IN OUT PCO_CALL_PARAMETERS CallParameters
,
1043 IN NDIS_HANDLE NdisPartyHandle
,
1044 OUT PNDIS_HANDLE CallMgrPartyContext
1049 STDCALL_FUNC (*CM_DROP_PARTY_HANDLER
)(
1050 IN NDIS_HANDLE CallMgrPartyContext
,
1051 IN PVOID CloseData OPTIONAL
,
1052 IN UINT Size OPTIONAL
1057 STDCALL_FUNC (*CM_ACTIVATE_VC_COMPLETE_HANDLER
)(
1058 IN NDIS_STATUS Status
,
1059 IN NDIS_HANDLE CallMgrVcContext
,
1060 IN PCO_CALL_PARAMETERS CallParameters
1065 STDCALL_FUNC (*CM_DEACTIVATE_VC_COMPLETE_HANDLER
)(
1066 IN NDIS_STATUS Status
,
1067 IN NDIS_HANDLE CallMgrVcContext
1072 (STDCALL
*CM_MODIFY_CALL_QOS_HANDLER
)(
1073 IN NDIS_HANDLE CallMgrVcContext
,
1074 IN PCO_CALL_PARAMETERS CallParameters
);
1076 typedef struct _NDIS_CALL_MANAGER_CHARACTERISTICS
{
1081 CO_CREATE_VC_HANDLER CmCreateVcHandler
;
1082 CO_DELETE_VC_HANDLER CmDeleteVcHandler
;
1083 CM_OPEN_AF_HANDLER CmOpenAfHandler
;
1084 CM_CLOSE_AF_HANDLER CmCloseAfHandler
;
1085 CM_REG_SAP_HANDLER CmRegisterSapHandler
;
1086 CM_DEREG_SAP_HANDLER CmDeregisterSapHandler
;
1087 CM_MAKE_CALL_HANDLER CmMakeCallHandler
;
1088 CM_CLOSE_CALL_HANDLER CmCloseCallHandler
;
1089 CM_INCOMING_CALL_COMPLETE_HANDLER CmIncomingCallCompleteHandler
;
1090 CM_ADD_PARTY_HANDLER CmAddPartyHandler
;
1091 CM_DROP_PARTY_HANDLER CmDropPartyHandler
;
1092 CM_ACTIVATE_VC_COMPLETE_HANDLER CmActivateVcCompleteHandler
;
1093 CM_DEACTIVATE_VC_COMPLETE_HANDLER CmDeactivateVcCompleteHandler
;
1094 CM_MODIFY_CALL_QOS_HANDLER CmModifyCallQoSHandler
;
1095 CO_REQUEST_HANDLER CmRequestHandler
;
1096 CO_REQUEST_COMPLETE_HANDLER CmRequestCompleteHandler
;
1097 } NDIS_CALL_MANAGER_CHARACTERISTICS
, *PNDIS_CALL_MANAGER_CHARACTERISTICS
;
1101 /* Call Manager clients */
1103 typedef VOID
STDCALL_FUNC (*CL_OPEN_AF_COMPLETE_HANDLER
)(
1104 IN NDIS_STATUS Status
,
1105 IN NDIS_HANDLE ProtocolAfContext
,
1106 IN NDIS_HANDLE NdisAfHandle
);
1109 (STDCALL
*CL_CLOSE_AF_COMPLETE_HANDLER
)(
1110 IN NDIS_STATUS Status
,
1111 IN NDIS_HANDLE ProtocolAfContext
);
1114 (STDCALL
*CL_REG_SAP_COMPLETE_HANDLER
)(
1115 IN NDIS_STATUS Status
,
1116 IN NDIS_HANDLE ProtocolSapContext
,
1118 IN NDIS_HANDLE NdisSapHandle
);
1121 (STDCALL
*CL_DEREG_SAP_COMPLETE_HANDLER
)(
1122 IN NDIS_STATUS Status
,
1123 IN NDIS_HANDLE ProtocolSapContext
);
1126 (STDCALL
*CL_MAKE_CALL_COMPLETE_HANDLER
)(
1127 IN NDIS_STATUS Status
,
1128 IN NDIS_HANDLE ProtocolVcContext
,
1129 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
1130 IN PCO_CALL_PARAMETERS CallParameters
);
1133 (STDCALL
*CL_MODIFY_CALL_QOS_COMPLETE_HANDLER
)(
1134 IN NDIS_STATUS Status
,
1135 IN NDIS_HANDLE ProtocolVcContext
,
1136 IN PCO_CALL_PARAMETERS CallParameters
);
1139 (STDCALL
*CL_CLOSE_CALL_COMPLETE_HANDLER
)(
1140 IN NDIS_STATUS Status
,
1141 IN NDIS_HANDLE ProtocolVcContext
,
1142 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
);
1145 (STDCALL
*CL_ADD_PARTY_COMPLETE_HANDLER
)(
1146 IN NDIS_STATUS Status
,
1147 IN NDIS_HANDLE ProtocolPartyContext
,
1148 IN NDIS_HANDLE NdisPartyHandle
,
1149 IN PCO_CALL_PARAMETERS CallParameters
);
1152 (STDCALL
*CL_DROP_PARTY_COMPLETE_HANDLER
)(
1153 IN NDIS_STATUS Status
,
1154 IN NDIS_HANDLE ProtocolPartyContext
);
1157 (STDCALL
*CL_INCOMING_CALL_HANDLER
)(
1158 IN NDIS_HANDLE ProtocolSapContext
,
1159 IN NDIS_HANDLE ProtocolVcContext
,
1160 IN OUT PCO_CALL_PARAMETERS CallParameters
);
1163 (STDCALL
*CL_INCOMING_CALL_QOS_CHANGE_HANDLER
)(
1164 IN NDIS_HANDLE ProtocolVcContext
,
1165 IN PCO_CALL_PARAMETERS CallParameters
);
1168 (STDCALL
*CL_INCOMING_CLOSE_CALL_HANDLER
)(
1169 IN NDIS_STATUS CloseStatus
,
1170 IN NDIS_HANDLE ProtocolVcContext
,
1171 IN PVOID CloseData OPTIONAL
,
1172 IN UINT Size OPTIONAL
);
1175 (STDCALL
*CL_INCOMING_DROP_PARTY_HANDLER
)(
1176 IN NDIS_STATUS DropStatus
,
1177 IN NDIS_HANDLE ProtocolPartyContext
,
1178 IN PVOID CloseData OPTIONAL
,
1179 IN UINT Size OPTIONAL
);
1182 (STDCALL
*CL_CALL_CONNECTED_HANDLER
)(
1183 IN NDIS_HANDLE ProtocolVcContext
);
1186 typedef struct _NDIS_CLIENT_CHARACTERISTICS
{
1191 CO_CREATE_VC_HANDLER ClCreateVcHandler
;
1192 CO_DELETE_VC_HANDLER ClDeleteVcHandler
;
1193 CO_REQUEST_HANDLER ClRequestHandler
;
1194 CO_REQUEST_COMPLETE_HANDLER ClRequestCompleteHandler
;
1195 CL_OPEN_AF_COMPLETE_HANDLER ClOpenAfCompleteHandler
;
1196 CL_CLOSE_AF_COMPLETE_HANDLER ClCloseAfCompleteHandler
;
1197 CL_REG_SAP_COMPLETE_HANDLER ClRegisterSapCompleteHandler
;
1198 CL_DEREG_SAP_COMPLETE_HANDLER ClDeregisterSapCompleteHandler
;
1199 CL_MAKE_CALL_COMPLETE_HANDLER ClMakeCallCompleteHandler
;
1200 CL_MODIFY_CALL_QOS_COMPLETE_HANDLER ClModifyCallQoSCompleteHandler
;
1201 CL_CLOSE_CALL_COMPLETE_HANDLER ClCloseCallCompleteHandler
;
1202 CL_ADD_PARTY_COMPLETE_HANDLER ClAddPartyCompleteHandler
;
1203 CL_DROP_PARTY_COMPLETE_HANDLER ClDropPartyCompleteHandler
;
1204 CL_INCOMING_CALL_HANDLER ClIncomingCallHandler
;
1205 CL_INCOMING_CALL_QOS_CHANGE_HANDLER ClIncomingCallQoSChangeHandler
;
1206 CL_INCOMING_CLOSE_CALL_HANDLER ClIncomingCloseCallHandler
;
1207 CL_INCOMING_DROP_PARTY_HANDLER ClIncomingDropPartyHandler
;
1208 CL_CALL_CONNECTED_HANDLER ClCallConnectedHandler
;
1209 } NDIS_CLIENT_CHARACTERISTICS
, *PNDIS_CLIENT_CHARACTERISTICS
;
1212 /* NDIS protocol structures */
1214 /* Prototypes for NDIS 3.0 protocol characteristics */
1217 (STDCALL
*OPEN_ADAPTER_COMPLETE_HANDLER
)(
1218 IN NDIS_HANDLE ProtocolBindingContext
,
1219 IN NDIS_STATUS Status
,
1220 IN NDIS_STATUS OpenErrorStatus
);
1223 (STDCALL
*CLOSE_ADAPTER_COMPLETE_HANDLER
)(
1224 IN NDIS_HANDLE ProtocolBindingContext
,
1225 IN NDIS_STATUS Status
);
1228 (STDCALL
*RESET_COMPLETE_HANDLER
)(
1229 IN NDIS_HANDLE ProtocolBindingContext
,
1230 IN NDIS_STATUS Status
);
1233 (STDCALL
*REQUEST_COMPLETE_HANDLER
)(
1234 IN NDIS_HANDLE ProtocolBindingContext
,
1235 IN PNDIS_REQUEST NdisRequest
,
1236 IN NDIS_STATUS Status
);
1239 (STDCALL
*STATUS_HANDLER
)(
1240 IN NDIS_HANDLE ProtocolBindingContext
,
1241 IN NDIS_STATUS GeneralStatus
,
1242 IN PVOID StatusBuffer
,
1243 IN UINT StatusBufferSize
);
1246 (STDCALL
*STATUS_COMPLETE_HANDLER
)(
1247 IN NDIS_HANDLE ProtocolBindingContext
);
1250 (STDCALL
*SEND_COMPLETE_HANDLER
)(
1251 IN NDIS_HANDLE ProtocolBindingContext
,
1252 IN PNDIS_PACKET Packet
,
1253 IN NDIS_STATUS Status
);
1256 (STDCALL
*WAN_SEND_COMPLETE_HANDLER
)(
1257 IN NDIS_HANDLE ProtocolBindingContext
,
1258 IN PNDIS_WAN_PACKET Packet
,
1259 IN NDIS_STATUS Status
);
1262 (STDCALL
*TRANSFER_DATA_COMPLETE_HANDLER
)(
1263 IN NDIS_HANDLE ProtocolBindingContext
,
1264 IN PNDIS_PACKET Packet
,
1265 IN NDIS_STATUS Status
,
1266 IN UINT BytesTransferred
);
1269 (STDCALL
*WAN_TRANSFER_DATA_COMPLETE_HANDLER
)(
1273 (STDCALL
*RECEIVE_HANDLER
)(
1274 IN NDIS_HANDLE ProtocolBindingContext
,
1275 IN NDIS_HANDLE MacReceiveContext
,
1276 IN PVOID HeaderBuffer
,
1277 IN UINT HeaderBufferSize
,
1278 IN PVOID LookAheadBuffer
,
1279 IN UINT LookaheadBufferSize
,
1280 IN UINT PacketSize
);
1283 (STDCALL
*WAN_RECEIVE_HANDLER
)(
1284 IN NDIS_HANDLE NdisLinkHandle
,
1286 IN ULONG PacketSize
);
1289 (STDCALL
*RECEIVE_COMPLETE_HANDLER
)(
1290 IN NDIS_HANDLE ProtocolBindingContext
);
1293 /* Protocol characteristics for NDIS 3.0 protocols */
1295 typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS
{
1296 UCHAR MajorNdisVersion
;
1297 UCHAR MinorNdisVersion
;
1303 OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler
;
1304 CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler
;
1307 SEND_COMPLETE_HANDLER SendCompleteHandler
;
1308 WAN_SEND_COMPLETE_HANDLER WanSendCompleteHandler
;
1312 TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler
;
1313 WAN_TRANSFER_DATA_COMPLETE_HANDLER WanTransferDataCompleteHandler
;
1316 RESET_COMPLETE_HANDLER ResetCompleteHandler
;
1317 REQUEST_COMPLETE_HANDLER RequestCompleteHandler
;
1320 RECEIVE_HANDLER ReceiveHandler
;
1321 WAN_RECEIVE_HANDLER WanReceiveHandler
;
1323 RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler
;
1324 STATUS_HANDLER StatusHandler
;
1325 STATUS_COMPLETE_HANDLER StatusCompleteHandler
;
1327 } NDIS30_PROTOCOL_CHARACTERISTICS
;
1328 typedef NDIS30_PROTOCOL_CHARACTERISTICS NDIS30_PROTOCOL_CHARACTERISTICS_S
;
1330 #define NDIS30_PROTOCOL_CHARACTERISTICS \
1331 UCHAR MajorNdisVersion; \
1332 UCHAR MinorNdisVersion; \
1337 OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler; \
1338 CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler; \
1340 SEND_COMPLETE_HANDLER SendCompleteHandler; \
1341 WAN_SEND_COMPLETE_HANDLER WanSendCompleteHandler; \
1344 TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; \
1345 WAN_TRANSFER_DATA_COMPLETE_HANDLER WanTransferDataCompleteHandler; \
1347 RESET_COMPLETE_HANDLER ResetCompleteHandler; \
1348 REQUEST_COMPLETE_HANDLER RequestCompleteHandler; \
1350 RECEIVE_HANDLER ReceiveHandler; \
1351 WAN_RECEIVE_HANDLER WanReceiveHandler; \
1353 RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; \
1354 STATUS_HANDLER StatusHandler; \
1355 STATUS_COMPLETE_HANDLER StatusCompleteHandler; \
1357 typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS_S
{
1358 NDIS30_PROTOCOL_CHARACTERISTICS
;
1359 } NDIS30_PROTOCOL_CHARACTERISTICS_S
, *PNDIS30_PROTOCOL_CHARACTERISTICS_S
;
1362 /* Prototypes for NDIS 4.0 protocol characteristics */
1365 (STDCALL
*RECEIVE_PACKET_HANDLER
)(
1366 IN NDIS_HANDLE ProtocolBindingContext
,
1367 IN PNDIS_PACKET Packet
);
1370 (STDCALL
*BIND_HANDLER
)(
1371 OUT PNDIS_STATUS Status
,
1372 IN NDIS_HANDLE BindContext
,
1373 IN PNDIS_STRING DeviceName
,
1374 IN PVOID SystemSpecific1
,
1375 IN PVOID SystemSpecific2
);
1378 (STDCALL
*UNBIND_HANDLER
)(
1379 OUT PNDIS_STATUS Status
,
1380 IN NDIS_HANDLE ProtocolBindingContext
,
1381 IN NDIS_HANDLE UnbindContext
);
1384 (STDCALL
*TRANSLATE_HANDLER
)(
1385 OUT PNDIS_STATUS Status
,
1386 IN NDIS_HANDLE ProtocolBindingContext
,
1387 OUT PNET_PNP_ID IdList
,
1388 IN ULONG IdListLength
,
1389 OUT PULONG BytesReturned
);
1392 (STDCALL
*UNLOAD_PROTOCOL_HANDLER
)(
1396 /* Protocol characteristics for NDIS 4.0 protocols */
1398 typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS
{
1399 NDIS30_PROTOCOL_CHARACTERISTICS
;
1401 RECEIVE_PACKET_HANDLER ReceivePacketHandler
;
1402 BIND_HANDLER BindAdapterHandler
;
1403 UNBIND_HANDLER UnbindAdapterHandler
;
1404 TRANSLATE_HANDLER TranslateHandler
;
1405 UNLOAD_PROTOCOL_HANDLER UnloadHandler
;
1406 } NDIS40_PROTOCOL_CHARACTERISTICS
;
1407 typedef NDIS40_PROTOCOL_CHARACTERISTICS NDIS40_PROTOCOL_CHARACTERISTICS_S
;
1409 #define NDIS40_PROTOCOL_CHARACTERISTICS \
1410 NDIS30_PROTOCOL_CHARACTERISTICS; \
1411 RECEIVE_PACKET_HANDLER ReceivePacketHandler; \
1412 BIND_HANDLER BindAdapterHandler; \
1413 UNBIND_HANDLER UnbindAdapterHandler; \
1414 TRANSLATE_HANDLER TranslateHandler; \
1415 UNLOAD_PROTOCOL_HANDLER UnloadHandler;
1416 typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS_S
{
1417 NDIS40_PROTOCOL_CHARACTERISTICS
;
1418 } NDIS40_PROTOCOL_CHARACTERISTICS_S
, *PNDIS40_PROTOCOL_CHARACTERISTICS_S
;
1422 /* Prototypes for NDIS 5.0 protocol characteristics */
1427 (STDCALL
*CO_SEND_COMPLETE_HANDLER
)(
1428 IN NDIS_STATUS Status
,
1429 IN NDIS_HANDLE ProtocolVcContext
,
1430 IN PNDIS_PACKET Packet
);
1433 (STDCALL
*CO_STATUS_HANDLER
)(
1434 IN NDIS_HANDLE ProtocolBindingContext
,
1435 IN NDIS_HANDLE ProtocolVcContext OPTIONAL
,
1436 IN NDIS_STATUS GeneralStatus
,
1437 IN PVOID StatusBuffer
,
1438 IN UINT StatusBufferSize
);
1441 (STDCALL
*CO_RECEIVE_PACKET_HANDLER
)(
1442 IN NDIS_HANDLE ProtocolBindingContext
,
1443 IN NDIS_HANDLE ProtocolVcContext
,
1444 IN PNDIS_PACKET Packet
);
1447 (STDCALL
*CO_AF_REGISTER_NOTIFY_HANDLER
)(
1448 IN NDIS_HANDLE ProtocolBindingContext
,
1449 IN PCO_ADDRESS_FAMILY AddressFamily
);
1452 typedef struct _NDIS50_PROTOCOL_CHARACTERISTICS
{
1453 NDIS40_PROTOCOL_CHARACTERISTICS
;
1455 PVOID ReservedHandlers
[4];
1457 CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler
;
1458 CO_STATUS_HANDLER CoStatusHandler
;
1459 CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler
;
1460 CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler
;
1461 } NDIS50_PROTOCOL_CHARACTERISTICS
;
1462 typedef NDIS50_PROTOCOL_CHARACTERISTICS NDIS50_PROTOCOL_CHARACTERISTICS_S
;
1464 #define NDIS50_PROTOCOL_CHARACTERISTICS \
1465 NDIS40_PROTOCOL_CHARACTERISTICS; \
1466 PVOID ReservedHandlers[4]; \
1467 CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler; \
1468 CO_STATUS_HANDLER CoStatusHandler; \
1469 CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler; \
1470 CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler;
1471 typedef struct _NDIS50_PROTOCOL_CHARACTERISTICS_S
{
1472 NDIS50_PROTOCOL_CHARACTERISTICS
;
1473 } NDIS50_PROTOCOL_CHARACTERISTICS_S
, *PNDIS50_PROTOCOL_CHARACTERISTICS_S
;
1480 typedef struct _NDIS_PROTOCOL_CHARACTERISTICS
{
1481 NDIS30_PROTOCOL_CHARACTERISTICS
;
1482 } NDIS_PROTOCOL_CHARACTERISTICS
;
1484 typedef struct _NDIS_PROTOCOL_CHARACTERISTICS
{
1485 NDIS40_PROTOCOL_CHARACTERISTICS
;
1486 } NDIS_PROTOCOL_CHARACTERISTICS
;
1489 typedef struct _NDIS_PROTOCOL_CHARACTERISTICS
{
1490 NDIS50_PROTOCOL_CHARACTERISTICS
;
1491 } NDIS_PROTOCOL_CHARACTERISTICS
;
1494 typedef NDIS_PROTOCOL_CHARACTERISTICS
*PNDIS_PROTOCOL_CHARACTERISTICS
;
1498 /* Buffer management routines */
1503 OUT PNDIS_STATUS Status
,
1504 OUT PNDIS_BUFFER
*Buffer
,
1505 IN NDIS_HANDLE PoolHandle
,
1506 IN PVOID VirtualAddress
,
1511 NdisAllocateBufferPool(
1512 OUT PNDIS_STATUS Status
,
1513 OUT PNDIS_HANDLE PoolHandle
,
1514 IN UINT NumberOfDescriptors
);
1519 OUT PNDIS_STATUS Status
,
1520 OUT PNDIS_PACKET
*Packet
,
1521 IN NDIS_HANDLE PoolHandle
);
1525 NdisAllocatePacketPool(
1526 OUT PNDIS_STATUS Status
,
1527 OUT PNDIS_HANDLE PoolHandle
,
1528 IN UINT NumberOfDescriptors
,
1529 IN UINT ProtocolReservedLength
);
1534 OUT PNDIS_STATUS Status
,
1535 OUT PNDIS_BUFFER
*Buffer
,
1536 IN NDIS_HANDLE PoolHandle
,
1537 IN PVOID MemoryDescriptor
,
1543 NdisCopyFromPacketToPacket(
1544 IN PNDIS_PACKET Destination
,
1545 IN UINT DestinationOffset
,
1546 IN UINT BytesToCopy
,
1547 IN PNDIS_PACKET Source
,
1548 IN UINT SourceOffset
,
1549 OUT PUINT BytesCopied
);
1553 NdisDprAllocatePacket(
1554 OUT PNDIS_STATUS Status
,
1555 OUT PNDIS_PACKET
*Packet
,
1556 IN NDIS_HANDLE PoolHandle
);
1560 NdisDprAllocatePacketNonInterlocked(
1561 OUT PNDIS_STATUS Status
,
1562 OUT PNDIS_PACKET
*Packet
,
1563 IN NDIS_HANDLE PoolHandle
);
1568 IN PNDIS_PACKET Packet
);
1572 NdisDprFreePacketNonInterlocked(
1573 IN PNDIS_PACKET Packet
);
1578 IN NDIS_HANDLE PoolHandle
);
1583 IN PNDIS_PACKET Packet
);
1588 IN NDIS_HANDLE PoolHandle
);
1593 IN PNDIS_PACKET
*PacketsToReturn
,
1594 IN UINT NumberOfPackets
);
1598 NdisUnchainBufferAtBack(
1599 IN OUT PNDIS_PACKET Packet
,
1600 OUT PNDIS_BUFFER
*Buffer
);
1604 NdisUnchainBufferAtFront(
1605 IN OUT PNDIS_PACKET Packet
,
1606 OUT PNDIS_BUFFER
*Buffer
);
1610 NdisAdjustBufferLength(
1611 IN PNDIS_BUFFER Buffer
,
1616 NDIS_BUFFER_TO_SPAN_PAGES(
1617 IN PNDIS_BUFFER Buffer
);
1622 IN PNDIS_BUFFER Buffer
);
1627 * VOID NdisGetBufferPhysicalArraySize(
1628 * IN PNDIS_BUFFER Buffer,
1629 * OUT PUINT ArraySize);
1633 NdisGetBufferPhysicalArraySize(
1634 IN PNDIS_BUFFER Buffer
,
1635 OUT PUINT ArraySize
);
1638 * VOID NdisGetFirstBufferFromPacket(
1639 * IN PNDIS_PACKET _Packet,
1640 * OUT PNDIS_BUFFER * _FirstBuffer,
1641 * OUT PVOID * _FirstBufferVA,
1642 * OUT PUINT _FirstBufferLength,
1643 * OUT PUINT _TotalBufferLength)
1647 NdisGetFirstBufferFromPacket(
1648 IN PNDIS_PACKET _Packet
,
1649 OUT PNDIS_BUFFER
* _FirstBuffer
,
1650 OUT PVOID
* _FirstBufferVA
,
1651 OUT PUINT _FirstBufferLength
,
1652 OUT PUINT _TotalBufferLength
);
1657 IN PNDIS_BUFFER Buffer
,
1658 OUT PVOID
*VirtualAddress OPTIONAL
,
1663 NdisQueryBufferOffset(
1664 IN PNDIS_BUFFER Buffer
,
1669 * PVOID NDIS_BUFFER_LINKAGE(
1670 * IN PNDIS_BUFFER Buffer);
1672 #define NDIS_BUFFER_LINKAGE(Buffer) \
1679 * VOID NdisChainBufferAtBack(
1680 * IN OUT PNDIS_PACKET Packet,
1681 * IN OUT PNDIS_BUFFER Buffer)
1683 #define NdisChainBufferAtBack(Packet, \
1686 PNDIS_BUFFER NdisBuffer = (Buffer); \
1688 while (NdisBuffer->Next != NULL) \
1689 NdisBuffer = NdisBuffer->Next; \
1691 NdisBuffer->Next = NULL; \
1693 if ((Packet)->Private.Head != NULL) \
1694 (Packet)->Private.Tail->Next = (Buffer); \
1696 (Packet)->Private.Head = (Buffer); \
1698 (Packet)->Private.Tail = NdisBuffer; \
1699 (Packet)->Private.ValidCounts = FALSE; \
1705 * NdisChainBufferAtFront(
1706 * IN OUT PNDIS_PACKET Packet,
1707 * IN OUT PNDIS_BUFFER Buffer)
1709 #define NdisChainBufferAtFront(Packet, \
1712 PNDIS_BUFFER _NdisBuffer = (Buffer); \
1714 while (_NdisBuffer->Next != NULL) \
1715 _NdisBuffer = _NdisBuffer->Next; \
1717 if ((Packet)->Private.Head == NULL) \
1718 (Packet)->Private.Tail = _NdisBuffer; \
1720 _NdisBuffer->Next = (Packet)->Private.Head; \
1721 (Packet)->Private.Head = (Buffer); \
1722 (Packet)->Private.ValidCounts = FALSE; \
1728 * NdisGetNextBuffer(
1729 * IN PNDIS_BUFFER CurrentBuffer,
1730 * OUT PNDIS_BUFFER * NextBuffer)
1732 #define NdisGetNextBuffer(CurrentBuffer, \
1735 *(NextBuffer) = (CurrentBuffer)->Next; \
1741 * NdisGetPacketFlags(
1742 * IN PNDIS_PACKET Packet);
1744 #define NdisGetPacketFlags(Packet) \
1746 (Packet)->Private.Flags; \
1751 * UINT NDIS_GET_PACKET_HEADER_SIZE(
1752 * IN PNDIS_PACKET Packet);
1754 #define NDIS_GET_PACKET_HEADER_SIZE(Packet) \
1761 * NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(
1762 * IN PNDIS_PACKET Packet,
1763 * IN PPVOID pMediaSpecificInfo,
1764 * IN PUINT pSizeMediaSpecificInfo);
1766 #define NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(Packet, \
1767 pMediaSpecificInfo, \
1768 pSizeMediaSpecificInfo) \
1775 * NDIS_STATUS NDIS_GET_PACKET_STATUS(
1776 * IN PNDIS_PACKET Packet);
1778 #define NDIS_GET_PACKET_STATUS (Packet) \
1784 * ULONGLONG NDIS_GET_PACKET_TIME_RECEIVED(
1785 * IN PNDIS_PACKET Packet);
1787 #define NDIS_GET_PACKET_TIME_RECEIVED(Packet) \
1794 * NDIS_GET_PACKET_TIME_SENT(
1795 * IN PNDIS_PACKET Packet);
1797 #define NDIS_GET_PACKET_TIME_SENT(Packet) \
1804 * NDIS_GET_PACKET_TIME_TO_SEND(
1805 * IN PNDIS_PACKET Packet);
1807 #define NDIS_GET_PACKET_TIME_TO_SEND(Packet) \
1813 * PNDIS_PACKET_OOB_DATA
1814 * NDIS_OOB_DATA_FROM_PACKET(
1815 * IN PNDIS_PACKET _Packet);
1817 #define NDIS_OOB_DATA_FROM_PACKET(_Packet) \
1825 * IN PNDIS_PACKET Packet,
1826 * OUT PUINT PhysicalBufferCount OPTIONAL,
1827 * OUT PUINT BufferCount OPTIONAL,
1828 * OUT PNDIS_BUFFER *FirstBuffer OPTIONAL,
1829 * OUT PUINT TotalPacketLength OPTIONAL);
1831 #define NdisQueryPacket(Packet, \
1832 PhysicalBufferCount, \
1835 TotalPacketLength) \
1838 *((PNDIS_BUFFER*)FirstBuffer) = (Packet)->Private.Head; \
1839 if ((TotalPacketLength) || (BufferCount) || (PhysicalBufferCount)) \
1841 if (!(Packet)->Private.ValidCounts) { \
1843 UINT _PacketLength; \
1844 PNDIS_BUFFER _NdisBuffer; \
1845 UINT _PhysicalBufferCount = 0; \
1846 UINT _TotalPacketLength = 0; \
1849 for (_NdisBuffer = (Packet)->Private.Head; \
1850 _NdisBuffer != (PNDIS_BUFFER)NULL; \
1851 _NdisBuffer = _NdisBuffer->Next) \
1853 _PhysicalBufferCount += NDIS_BUFFER_TO_SPAN_PAGES(_NdisBuffer); \
1854 NdisQueryBufferOffset(_NdisBuffer, &_Offset, &_PacketLength); \
1855 _TotalPacketLength += _PacketLength; \
1858 (Packet)->Private.PhysicalCount = _PhysicalBufferCount; \
1859 (Packet)->Private.TotalLength = _TotalPacketLength; \
1860 (Packet)->Private.Count = _Count; \
1861 (Packet)->Private.ValidCounts = TRUE; \
1864 if (PhysicalBufferCount) \
1865 *((PUINT)PhysicalBufferCount) = (Packet)->Private.PhysicalCount; \
1868 *((PUINT)BufferCount) = (Packet)->Private.Count; \
1870 if (TotalPacketLength) \
1871 *((PUINT)TotalPacketLength) = (Packet)->Private.TotalLength; \
1878 * NdisRecalculatePacketCounts(
1879 * IN OUT PNDIS_PACKET Packet);
1881 #define NdisRecalculatePacketCounts(Packet) \
1887 NdisReinitializePacket(
1888 IN OUT PNDIS_PACKET Packet
);
1893 * NdisSetPacketFlags(
1894 * IN PNDIS_PACKET Packet,
1897 #define NdisSetPacketFlags(Packet, Flags) \
1898 (Packet)->Private.Flags = (Flags);
1903 * NDIS_SET_PACKET_HEADER_SIZE(
1904 * IN PNDIS_PACKET Packet,
1907 #define NDIS_SET_PACKET_HEADER_SIZE(Packet, HdrSize) \
1914 * NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(
1915 * IN PNDIS_PACKET Packet,
1916 * IN PVOID MediaSpecificInfo,
1917 * IN UINT SizeMediaSpecificInfo);
1919 #define NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(Packet, \
1920 MediaSpecificInfo, \
1921 SizeMediaSpecificInfo) \
1928 * NDIS_SET_PACKET_STATUS(
1929 * IN PNDIS_PACKET Packet,
1930 * IN NDIS_STATUS Status);
1932 #define NDIS_SET_PACKET_STATUS(Packet, \
1940 * NDIS_SET_PACKET_TIME_RECEIVED(
1941 * IN PNDIS_PACKET Packet,
1942 * IN ULONGLONG TimeReceived);
1944 #define NDIS_SET_PACKET_TIME_RECEIVED(Packet) \
1952 * NDIS_SET_PACKET_TIME_SENT(
1953 * IN PNDIS_PACKET Packet,
1954 * IN ULONGLONG TimeSent);
1956 #define NDIS_SET_PACKET_TIME_SENT(Packet, \
1964 * NDIS_SET_PACKET_TIME_TO_SEND(
1965 * IN PNDIS_PACKET Packet,
1966 * IN ULONGLONG TimeToSend);
1968 #define NDIS_SET_PACKET_TIME_TO_SEND(Packet, \
1977 * IN PNDIS_PACKET Packet,
1980 #define NdisSetSendFlags(Packet, Flags)( \
1981 NdisSetPacketFlags((Packet), (Flags)))
1985 /* Memory management routines */
1989 NdisCreateLookaheadBufferFromSharedMemory(
1990 IN PVOID pSharedMemory
,
1991 IN UINT LookaheadLength
,
1992 OUT PVOID
*pLookaheadBuffer
);
1996 NdisDestroyLookaheadBufferFromSharedMemory(
1997 IN PVOID pLookaheadBuffer
);
2001 NdisMoveFromMappedMemory(
2002 OUT PVOID Destination
,
2008 NdisMoveMappedMemory(
2009 OUT PVOID Destination
,
2015 NdisMoveToMappedMemory(
2016 OUT PVOID Destination
,
2022 NdisMUpdateSharedMemory(
2023 IN NDIS_HANDLE MiniportAdapterHandle
,
2025 IN PVOID VirtualAddress
,
2026 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
2031 OUT PVOID
*VirtualAddress
,
2033 IN UINT MemoryFlags
,
2034 IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress
);
2039 IN PVOID VirtualAddress
,
2041 IN UINT MemoryFlags
);
2045 NdisImmediateReadSharedMemory(
2046 IN NDIS_HANDLE WrapperConfigurationContext
,
2047 IN ULONG SharedMemoryAddress
,
2053 NdisImmediateWriteSharedMemory(
2054 IN NDIS_HANDLE WrapperConfigurationContext
,
2055 IN ULONG SharedMemoryAddress
,
2061 NdisMAllocateSharedMemory(
2062 IN NDIS_HANDLE MiniportAdapterHandle
,
2065 OUT PVOID
*VirtualAddress
,
2066 OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress
);
2070 NdisMAllocateSharedMemoryAsync(
2071 IN NDIS_HANDLE MiniportAdapterHandle
,
2078 NdisMFreeSharedMemory(
2079 IN NDIS_HANDLE MiniportAdapterHandle
,
2082 IN PVOID VirtualAddress
,
2083 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
2087 NdisUpdateSharedMemory(
2088 IN NDIS_HANDLE NdisAdapterHandle
,
2090 IN PVOID VirtualAddress
,
2091 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
2096 * NdisGetPhysicalAddressHigh(
2097 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
2099 #define NdisGetPhysicalAddressHigh(PhysicalAddress) \
2100 ((PhysicalAddress).HighPart)
2104 * NdisSetPhysicalAddressHigh(
2105 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
2108 #define NdisSetPhysicalAddressHigh(PhysicalAddress, Value) \
2109 ((PhysicalAddress).HighPart) = (Value)
2113 * NdisGetPhysicalAddressLow(
2114 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
2116 #define NdisGetPhysicalAddressLow(PhysicalAddress) \
2117 ((PhysicalAddress).LowPart)
2122 * NdisSetPhysicalAddressLow(
2123 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
2126 #define NdisSetPhysicalAddressLow(PhysicalAddress, Value) \
2127 ((PhysicalAddress).LowPart) = (Value)
2131 * NDIS_PHYSICAL_ADDRESS_CONST(
2135 #define NDIS_PHYSICAL_ADDRESS_CONST(Low, High) \
2136 { {(ULONG)(Low), (LONG)(High)} }
2142 * OUT PVOID Destination,
2146 #define NdisMoveMemory(Destination, Source, Length) \
2147 RtlCopyMemory(Destination, Source, Length)
2152 * NdisRetrieveUlong(
2153 * IN PULONG DestinationAddress,
2154 * IN PULONG SourceAddress);
2156 #define NdisRetrieveUlong(DestinationAddress, SourceAddress) \
2157 RtlRetrieveUlong(DestinationAddress, SourceAddress)
2163 * IN PULONG DestinationAddress,
2166 #define NdisStoreUlong(DestinationAddress, Value) \
2167 RtlStoreUlong(DestinationAddress, Value)
2173 * IN PVOID Destination,
2176 #define NdisZeroMemory(Destination, Length) \
2177 RtlZeroMemory(Destination, Length)
2182 // System processor count
2187 NdisSystemProcessorCount(
2192 NdisImmediateReadPortUchar(
2193 IN NDIS_HANDLE WrapperConfigurationContext
,
2199 NdisImmediateReadPortUshort(
2200 IN NDIS_HANDLE WrapperConfigurationContext
,
2206 NdisImmediateReadPortUlong(
2207 IN NDIS_HANDLE WrapperConfigurationContext
,
2213 NdisImmediateWritePortUchar(
2214 IN NDIS_HANDLE WrapperConfigurationContext
,
2220 NdisImmediateWritePortUshort(
2221 IN NDIS_HANDLE WrapperConfigurationContext
,
2227 NdisImmediateWritePortUlong(
2228 IN NDIS_HANDLE WrapperConfigurationContext
,
2234 NdisImmediateReadSharedMemory(
2235 IN NDIS_HANDLE WrapperConfigurationContext
,
2236 IN ULONG SharedMemoryAddress
,
2242 NdisImmediateWriteSharedMemory(
2243 IN NDIS_HANDLE WrapperConfigurationContext
,
2244 IN ULONG SharedMemoryAddress
,
2250 NdisImmediateReadPciSlotInformation(
2251 IN NDIS_HANDLE WrapperConfigurationContext
,
2252 IN ULONG SlotNumber
,
2259 NdisImmediateWritePciSlotInformation(
2260 IN NDIS_HANDLE WrapperConfigurationContext
,
2261 IN ULONG SlotNumber
,
2268 NdisReadPciSlotInformation(
2269 IN NDIS_HANDLE NdisAdapterHandle
,
2270 IN ULONG SlotNumber
,
2277 NdisWritePciSlotInformation(
2278 IN NDIS_HANDLE NdisAdapterHandle
,
2279 IN ULONG SlotNumber
,
2286 /* String management routines */
2289 * NDIS_STATUS NdisAnsiStringToUnicodeString(
2290 * IN OUT PNDIS_STRING DestinationString,
2291 * IN PNDIS_ANSI_STRING SourceString);
2295 NdisAnsiStringToUnicodeString(
2296 IN OUT PNDIS_STRING DestinationString
,
2297 IN PANSI_STRING SourceString
);
2302 * IN PNDIS_STRING String1,
2303 * IN PNDIS_STRING String2,
2304 * IN BOOLEAN CaseInsensitive)
2309 IN PNDIS_STRING String1
,
2310 IN PNDIS_STRING String2
,
2311 IN BOOLEAN CaseInsensitive
);
2314 * VOID NdisInitAnsiString(
2315 * IN OUT PNDIS_ANSI_STRING DestinationString,
2316 * IN PCSTR SourceString)
2321 IN OUT PANSI_STRING DestinationString
,
2322 IN PCSTR SourceString
);
2325 * VOID NdisInitUnicodeString(
2326 * IN OUT PNDIS_STRING DestinationString,
2327 * IN PCWSTR SourceString)
2331 NdisInitUnicodeString(
2332 IN OUT PNDIS_STRING DestinationString
,
2333 IN PCWSTR SourceString
);
2336 * NDIS_STATUS NdisUnicodeStringToAnsiString(
2337 * IN OUT PNDIS_ANSI_STRING DestinationString,
2338 * IN PNDIS_STRING SourceString)
2342 NdisUnicodeStringToAnsiString(
2343 IN OUT PANSI_STRING DestinationString
,
2344 IN PNDIS_STRING SourceString
);
2346 #define NdisFreeString(_s) NdisFreeMemory((s).Buffer, (s).MaximumLength, 0)
2347 #define NdisPrintString(_s) DbgPrint("%ls", (s).Buffer)
2355 * NdisRawReadPortBufferUchar(
2357 * OUT PUCHAR Buffer,
2360 #define NdisRawReadPortBufferUchar(Port, Buffer, Length) \
2361 READ_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length))
2365 * NdisRawReadPortBufferUlong(
2367 * OUT PULONG Buffer,
2370 #define NdisRawReadPortBufferUlong(Port, Buffer, Length) \
2371 READ_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length))
2375 * NdisRawReadPortBufferUshort(
2377 * OUT PUSHORT Buffer,
2380 #define NdisRawReadPortBufferUshort(Port, Buffer, Length) \
2381 READ_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length))
2386 * NdisRawReadPortUchar(
2390 #define NdisRawReadPortUchar(Port, Data) \
2391 *(Data) = READ_PORT_UCHAR((PUCHAR)(Port))
2395 * NdisRawReadPortUlong(
2399 #define NdisRawReadPortUlong(Port, Data) \
2400 *(Data) = READ_PORT_ULONG((PULONG)(Port))
2404 * NdisRawReadPortUshort(
2406 * OUT PUSHORT Data);
2408 #define NdisRawReadPortUshort(Port, Data) \
2409 *(Data) = READ_PORT_USHORT((PUSHORT)(Port))
2414 * NdisRawWritePortBufferUchar(
2419 #define NdisRawWritePortBufferUchar(Port, Buffer, Length) \
2420 WRITE_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length))
2424 * NdisRawWritePortBufferUlong(
2429 #define NdisRawWritePortBufferUlong(Port, Buffer, Length) \
2430 WRITE_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length))
2434 * NdisRawWritePortBufferUshort(
2436 * IN PUSHORT Buffer,
2439 #define NdisRawWritePortBufferUshort(Port, Buffer, Length) \
2440 WRITE_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length))
2445 * NdisRawWritePortUchar(
2449 #define NdisRawWritePortUchar(Port, Data) \
2450 WRITE_PORT_UCHAR((PUCHAR)(Port), (UCHAR)(Data))
2454 * NdisRawWritePortUlong(
2458 #define NdisRawWritePortUlong(Port, Data) \
2459 WRITE_PORT_ULONG((PULONG)(Port), (ULONG)(Data))
2463 * NdisRawWritePortUshort(
2467 #define NdisRawWritePortUshort(Port, Data) \
2468 WRITE_PORT_USHORT((PUSHORT)(Port), (USHORT)(Data))
2473 * NdisReadRegisterUchar(
2474 * IN PUCHAR Register,
2477 #define NdisReadRegisterUchar(Register, Data) \
2478 *((PUCHAR)(Data)) = *(Register)
2482 * NdisReadRegisterUlong(
2483 * IN PULONG Register,
2486 #define NdisReadRegisterUlong(Register, Data) \
2487 *((PULONG)(Data)) = *(Register)
2491 * NdisReadRegisterUshort(
2492 * IN PUSHORT Register,
2493 * OUT PUSHORT Data);
2495 #define NdisReadRegisterUshort(Register, Data) \
2496 *((PUSHORT)(Data)) = *(Register)
2500 * NdisReadRegisterUchar(
2501 * IN PUCHAR Register,
2504 #define NdisWriteRegisterUchar(Register, Data) \
2505 WRITE_REGISTER_UCHAR((Register), (Data))
2509 * NdisReadRegisterUlong(
2510 * IN PULONG Register,
2513 #define NdisWriteRegisterUlong(Register, Data) \
2514 WRITE_REGISTER_ULONG((Register), (Data))
2518 * NdisReadRegisterUshort(
2519 * IN PUSHORT Register,
2522 #define NdisWriteRegisterUshort(Register, Data) \
2523 WRITE_REGISTER_USHORT((Register), (Data))
2530 NdisInitializeListHead(
2531 IN PLIST_ENTRY ListHead
);
2535 NdisInterlockedAddUlong(
2538 IN PNDIS_SPIN_LOCK SpinLock
);
2542 NdisInterlockedInsertHeadList(
2543 IN PLIST_ENTRY ListHead
,
2544 IN PLIST_ENTRY ListEntry
,
2545 IN PNDIS_SPIN_LOCK SpinLock
);
2549 NdisInterlockedInsertTailList(
2550 IN PLIST_ENTRY ListHead
,
2551 IN PLIST_ENTRY ListEntry
,
2552 IN PNDIS_SPIN_LOCK SpinLock
);
2556 NdisInterlockedRemoveHeadList(
2557 IN PLIST_ENTRY ListHead
,
2558 IN PNDIS_SPIN_LOCK SpinLock
);
2563 NdisCloseConfiguration(
2564 IN NDIS_HANDLE ConfigurationHandle
);
2568 NdisReadConfiguration(
2569 OUT PNDIS_STATUS Status
,
2570 OUT PNDIS_CONFIGURATION_PARAMETER
*ParameterValue
,
2571 IN NDIS_HANDLE ConfigurationHandle
,
2572 IN PNDIS_STRING Keyword
,
2573 IN NDIS_PARAMETER_TYPE ParameterType
);
2577 NdisReadNetworkAddress(
2578 OUT PNDIS_STATUS Status
,
2579 OUT PVOID
*NetworkAddress
,
2580 OUT PUINT NetworkAddressLength
,
2581 IN NDIS_HANDLE ConfigurationHandle
);
2585 NdisWriteConfiguration(
2586 OUT PNDIS_STATUS Status
,
2587 IN NDIS_HANDLE ConfigurationHandle
,
2588 IN PNDIS_STRING Keyword
,
2589 IN PNDIS_CONFIGURATION_PARAMETER ParameterValue
);
2593 NdisOpenConfiguration(
2594 OUT PNDIS_STATUS Status
,
2595 OUT PNDIS_HANDLE ConfigurationHandle
,
2596 IN NDIS_HANDLE WrapperConfigurationContext
);
2600 NdisOpenConfigurationKeyByIndex(
2601 OUT PNDIS_STATUS Status
,
2602 IN NDIS_HANDLE ConfigurationHandle
,
2604 OUT PNDIS_STRING KeyName
,
2605 OUT PNDIS_HANDLE KeyHandle
);
2609 NdisOpenConfigurationKeyByName(
2610 OUT PNDIS_STATUS Status
,
2611 IN NDIS_HANDLE ConfigurationHandle
,
2612 IN PNDIS_STRING SubKeyName
,
2613 OUT PNDIS_HANDLE SubKeyHandle
);
2618 NdisWriteErrorLogEntry(
2619 IN NDIS_HANDLE NdisAdapterHandle
,
2620 IN NDIS_ERROR_CODE ErrorCode
,
2621 IN ULONG NumberOfErrorValues
,
2626 * NdisStallExecution(
2627 * IN UINT MicrosecondsToStall)
2629 #define NdisStallExecution(MicroSecondsToStall) \
2630 KeStallExecutionProcessor(MicroSecondsToStall)
2633 #define NdisZeroMappedMemory(Destination,Length) RtlZeroMemory(Destination,Length)
2634 /* moved to ndis/memory.c by robd
2635 #define NdisMoveMappedMemory(Destination,Source,Length) RtlCopyMemory(Destination,Source,Length)
2637 /* moved to ndis/control.c by robd
2638 #define NdisReinitializePacket(Packet) \
2640 (Packet)->Private.Head = (PNDIS_BUFFER)NULL; \
2641 (Packet)->Private.ValidCounts = FALSE; \
2646 NdisInitializeEvent(
2647 IN PNDIS_EVENT Event
2653 IN PNDIS_EVENT Event
2659 IN PNDIS_EVENT Event
2665 IN PNDIS_EVENT Event
,
2670 /* NDIS helper macros */
2673 * NDIS_INIT_FUNCTION(FunctionName)
2675 #define NDIS_INIT_FUNCTION(FunctionName) \
2676 alloc_text(init, FunctionName)
2679 * NDIS_PAGABLE_FUNCTION(FunctionName)
2681 #define NDIS_PAGABLE_FUNCTION(FunctionName) \
2682 alloc_text(page, FunctionName)
2686 /* NDIS 4.0 extensions */
2692 NdisMFreeSharedMemory(
2693 IN NDIS_HANDLE MiniportAdapterHandle
,
2696 IN PVOID VirtualAddress
,
2697 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
2701 NdisMWanIndicateReceive(
2702 OUT PNDIS_STATUS Status
,
2703 IN NDIS_HANDLE MiniportAdapterHandle
,
2704 IN NDIS_HANDLE NdisLinkContext
,
2705 IN PUCHAR PacketBuffer
,
2706 IN UINT PacketSize
);
2710 NdisMWanIndicateReceiveComplete(
2711 IN NDIS_HANDLE MiniportAdapterHandle
);
2715 NdisMWanSendComplete(
2716 IN NDIS_HANDLE MiniportAdapterHandle
,
2717 IN PNDIS_WAN_PACKET Packet
,
2718 IN NDIS_STATUS Status
);
2722 NdisPciAssignResources(
2723 IN NDIS_HANDLE NdisMacHandle
,
2724 IN NDIS_HANDLE NdisWrapperHandle
,
2725 IN NDIS_HANDLE WrapperConfigurationContext
,
2726 IN ULONG SlotNumber
,
2727 OUT PNDIS_RESOURCE_LIST
*AssignedResources
);
2731 NdisReadEisaSlotInformationEx(
2732 OUT PNDIS_STATUS Status
,
2733 IN NDIS_HANDLE WrapperConfigurationContext
,
2734 OUT PUINT SlotNumber
,
2735 OUT PNDIS_EISA_FUNCTION_INFORMATION
*EisaData
,
2736 OUT PUINT NumberOfFunctions
);
2740 NdisReadMcaPosInformation(
2741 OUT PNDIS_STATUS Status
,
2742 IN NDIS_HANDLE WrapperConfigurationContext
,
2743 IN PUINT ChannelNumber
,
2744 OUT PNDIS_MCA_POS_DATA McaData
);
2751 #define DISPATCH_LEVEL 2
2753 #define NdisAllocateSpinLock(_SpinLock) KeInitializeSpinLock(&(_SpinLock)->SpinLock)
2755 #define NdisFreeSpinLock(_SpinLock)
2757 #define NdisAcquireSpinLock(_SpinLock) KeAcquireSpinLock(&(_SpinLock)->SpinLock, &(_SpinLock)->OldIrql)
2759 #define NdisReleaseSpinLock(_SpinLock) KeReleaseSpinLock(&(_SpinLock)->SpinLock,(_SpinLock)->OldIrql)
2761 #define NdisDprAcquireSpinLock(_SpinLock) \
2763 KeAcquireSpinLockAtDpcLevel(&(_SpinLock)->SpinLock); \
2764 (_SpinLock)->OldIrql = DISPATCH_LEVEL; \
2767 #define NdisDprReleaseSpinLock(_SpinLock) KeReleaseSpinLockFromDpcLevel(&(_SpinLock)->SpinLock)
2777 NdisAllocateSpinLock(
2778 IN PNDIS_SPIN_LOCK SpinLock
2785 IN PNDIS_SPIN_LOCK SpinLock
2791 NdisAcquireSpinLock(
2792 IN PNDIS_SPIN_LOCK SpinLock
2798 NdisReleaseSpinLock(
2799 IN PNDIS_SPIN_LOCK SpinLock
2805 NdisDprAcquireSpinLock(
2806 IN PNDIS_SPIN_LOCK SpinLock
2812 NdisDprReleaseSpinLock(
2813 IN PNDIS_SPIN_LOCK SpinLock
2820 NdisGetCurrentSystemTime(
2821 PLARGE_INTEGER pSystemTime
2827 NdisAcquireReadWriteLock(
2828 IN PNDIS_RW_LOCK Lock
,
2830 IN PLOCK_STATE LockState
);
2834 NdisAllocateMemoryWithTag(
2835 OUT PVOID
*VirtualAddress
,
2841 NdisAllocatePacketPoolEx(
2842 OUT PNDIS_STATUS Status
,
2843 OUT PNDIS_HANDLE PoolHandle
,
2844 IN UINT NumberOfDescriptors
,
2845 IN UINT NumberOfOverflowDescriptors
,
2846 IN UINT ProtocolReservedLength
);
2851 IN PNDIS_BUFFER Buffer
);
2855 NdisBufferVirtualAddress(
2856 IN PNDIS_BUFFER Buffer
);
2860 NdisCompletePnPEvent(
2861 IN NDIS_STATUS Status
,
2862 IN NDIS_HANDLE NdisBindingHandle
,
2863 IN PNET_PNP_EVENT NetPnPEvent
);
2867 NdisConvertStringToAtmAddress(
2868 OUT PNDIS_STATUS Status
,
2869 IN PNDIS_STRING String
,
2870 OUT PATM_ADDRESS AtmAddress
);
2874 NdisGetCurrentProcessorCounts(
2875 OUT PULONG pIdleCount
,
2876 OUT PULONG pKernelAndUser
,
2881 NdisGetDriverHandle(
2882 IN PNDIS_HANDLE NdisBindingHandle
,
2883 OUT PNDIS_HANDLE NdisDriverHandle
);
2887 NdisGetReceivedPacket(
2888 IN PNDIS_HANDLE NdisBindingHandle
,
2889 IN PNDIS_HANDLE MacContext
);
2893 NdisGetSystemUptime(
2894 OUT PULONG pSystemUpTime
);
2898 NdisInitializeReadWriteLock(
2899 IN PNDIS_RW_LOCK Lock
);
2903 NdisInterlockedDecrement(
2908 NdisInterlockedIncrement(
2913 NdisInterlockedPopEntrySList(
2914 IN PSLIST_HEADER ListHead
,
2915 IN PKSPIN_LOCK Lock
);
2919 NdisInterlockedPushEntrySList(
2920 IN PSLIST_HEADER ListHead
,
2921 IN PSINGLE_LIST_ENTRY ListEntry
,
2922 IN PKSPIN_LOCK Lock
);
2927 NdisMDeregisterDevice(
2928 IN NDIS_HANDLE NdisDeviceHandle
);
2932 NdisMGetDeviceProperty(
2933 IN NDIS_HANDLE MiniportAdapterHandle
,
2934 IN OUT PDEVICE_OBJECT
*PhysicalDeviceObject OPTIONAL
,
2935 IN OUT PDEVICE_OBJECT
*FunctionalDeviceObject OPTIONAL
,
2936 IN OUT PDEVICE_OBJECT
*NextDeviceObject OPTIONAL
,
2937 IN OUT PCM_RESOURCE_LIST
*AllocatedResources OPTIONAL
,
2938 IN OUT PCM_RESOURCE_LIST
*AllocatedResourcesTranslated OPTIONAL
);
2942 NdisMInitializeScatterGatherDma(
2943 IN NDIS_HANDLE MiniportAdapterHandle
,
2944 IN BOOLEAN Dma64BitAddresses
,
2945 IN ULONG MaximumPhysicalMapping
);
2949 NdisMPromoteMiniport(
2950 IN NDIS_HANDLE MiniportAdapterHandle
);
2954 NdisMQueryAdapterInstanceName(
2955 OUT PNDIS_STRING AdapterInstanceName
,
2956 IN NDIS_HANDLE MiniportAdapterHandle
);
2960 NdisMRegisterDevice(
2961 IN NDIS_HANDLE NdisWrapperHandle
,
2962 IN PNDIS_STRING DeviceName
,
2963 IN PNDIS_STRING SymbolicName
,
2964 IN PDRIVER_DISPATCH MajorFunctions
[],
2965 OUT PDEVICE_OBJECT
*pDeviceObject
,
2966 OUT NDIS_HANDLE
*NdisDeviceHandle
);
2970 NdisMRegisterUnloadHandler(
2971 IN NDIS_HANDLE NdisWrapperHandle
,
2972 IN PDRIVER_UNLOAD UnloadHandler
);
2976 NdisMRemoveMiniport(
2977 IN NDIS_HANDLE MiniportAdapterHandle
);
2981 NdisMSetMiniportSecondary(
2982 IN NDIS_HANDLE MiniportAdapterHandle
,
2983 IN NDIS_HANDLE PrimaryMiniportAdapterHandle
);
2987 NdisPacketPoolUsage(
2988 IN NDIS_HANDLE PoolHandle
);
2992 NdisQueryAdapterInstanceName(
2993 OUT PNDIS_STRING AdapterInstanceName
,
2994 IN NDIS_HANDLE NdisBindingHandle
);
2998 NdisQueryBufferSafe(
2999 IN PNDIS_BUFFER Buffer
,
3000 OUT PVOID
*VirtualAddress OPTIONAL
,
3006 NdisReadPcmciaAttributeMemory(
3007 IN NDIS_HANDLE NdisAdapterHandle
,
3014 NdisReleaseReadWriteLock(
3015 IN PNDIS_RW_LOCK Lock
,
3016 IN PLOCK_STATE LockState
);
3021 NdisWriteEventLogEntry(
3023 IN NDIS_STATUS EventCode
,
3024 IN ULONG UniqueEventValue
,
3025 IN USHORT NumStrings
,
3026 IN PVOID StringsList OPTIONAL
,
3028 IN PVOID Data OPTIONAL
);
3032 NdisWritePcmciaAttributeMemory(
3033 IN NDIS_HANDLE NdisAdapterHandle
,
3039 /* Connectionless services */
3044 IN NDIS_HANDLE NdisVcHandle
,
3045 IN NDIS_HANDLE ProtocolPartyContext
,
3046 IN OUT PCO_CALL_PARAMETERS CallParameters
,
3047 OUT PNDIS_HANDLE NdisPartyHandle
);
3051 NdisClCloseAddressFamily(
3052 IN NDIS_HANDLE NdisAfHandle
);
3057 IN NDIS_HANDLE NdisVcHandle
,
3058 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
3059 IN PVOID Buffer OPTIONAL
,
3064 NdisClDeregisterSap(
3065 IN NDIS_HANDLE NdisSapHandle
);
3070 IN NDIS_HANDLE NdisPartyHandle
,
3071 IN PVOID Buffer OPTIONAL
,
3076 NdisClIncomingCallComplete(
3077 IN NDIS_STATUS Status
,
3078 IN NDIS_HANDLE NdisVcHandle
,
3079 IN PCO_CALL_PARAMETERS CallParameters
);
3084 IN NDIS_HANDLE NdisVcHandle
,
3085 IN OUT PCO_CALL_PARAMETERS CallParameters
,
3086 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
,
3087 OUT PNDIS_HANDLE NdisPartyHandle OPTIONAL
);
3091 NdisClModifyCallQoS(
3092 IN NDIS_HANDLE NdisVcHandle
,
3093 IN PCO_CALL_PARAMETERS CallParameters
);
3098 NdisClOpenAddressFamily(
3099 IN NDIS_HANDLE NdisBindingHandle
,
3100 IN PCO_ADDRESS_FAMILY AddressFamily
,
3101 IN NDIS_HANDLE ProtocolAfContext
,
3102 IN PNDIS_CLIENT_CHARACTERISTICS ClCharacteristics
,
3103 IN UINT SizeOfClCharacteristics
,
3104 OUT PNDIS_HANDLE NdisAfHandle
);
3109 IN NDIS_HANDLE NdisAfHandle
,
3110 IN NDIS_HANDLE ProtocolSapContext
,
3112 OUT PNDIS_HANDLE NdisSapHandle
);
3115 /* Call Manager services */
3120 IN NDIS_HANDLE NdisVcHandle
,
3121 IN OUT PCO_CALL_PARAMETERS CallParameters
);
3125 NdisCmAddPartyComplete(
3126 IN NDIS_STATUS Status
,
3127 IN NDIS_HANDLE NdisPartyHandle
,
3128 IN NDIS_HANDLE CallMgrPartyContext OPTIONAL
,
3129 IN PCO_CALL_PARAMETERS CallParameters
);
3133 NdisCmCloseAddressFamilyComplete(
3134 IN NDIS_STATUS Status
,
3135 IN NDIS_HANDLE NdisAfHandle
);
3139 NdisCmCloseCallComplete(
3140 IN NDIS_STATUS Status
,
3141 IN NDIS_HANDLE NdisVcHandle
,
3142 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
);
3147 IN NDIS_HANDLE NdisVcHandle
);
3151 NdisCmDeregisterSapComplete(
3152 IN NDIS_STATUS Status
,
3153 IN NDIS_HANDLE NdisSapHandle
);
3157 NdisCmDispatchCallConnected(
3158 IN NDIS_HANDLE NdisVcHandle
);
3162 NdisCmDispatchIncomingCall(
3163 IN NDIS_HANDLE NdisSapHandle
,
3164 IN NDIS_HANDLE NdisVcHandle
,
3165 IN PCO_CALL_PARAMETERS CallParameters
);
3169 NdisCmDispatchIncomingCallQoSChange(
3170 IN NDIS_HANDLE NdisVcHandle
,
3171 IN PCO_CALL_PARAMETERS CallParameters
);
3175 NdisCmDispatchIncomingCloseCall(
3176 IN NDIS_STATUS CloseStatus
,
3177 IN NDIS_HANDLE NdisVcHandle
,
3178 IN PVOID Buffer OPTIONAL
,
3183 NdisCmDispatchIncomingDropParty(
3184 IN NDIS_STATUS DropStatus
,
3185 IN NDIS_HANDLE NdisPartyHandle
,
3186 IN PVOID Buffer OPTIONAL
,
3191 NdisCmDropPartyComplete(
3192 IN NDIS_STATUS Status
,
3193 IN NDIS_HANDLE NdisPartyHandle
);
3197 NdisCmMakeCallComplete(
3198 IN NDIS_STATUS Status
,
3199 IN NDIS_HANDLE NdisVcHandle
,
3200 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
3201 IN NDIS_HANDLE CallMgrPartyContext OPTIONAL
,
3202 IN PCO_CALL_PARAMETERS CallParameters
);
3206 NdisCmModifyCallQoSComplete(
3207 IN NDIS_STATUS Status
,
3208 IN NDIS_HANDLE NdisVcHandle
,
3209 IN PCO_CALL_PARAMETERS CallParameters
);
3213 NdisCmOpenAddressFamilyComplete(
3214 IN NDIS_STATUS Status
,
3215 IN NDIS_HANDLE NdisAfHandle
,
3216 IN NDIS_HANDLE CallMgrAfContext
);
3220 NdisCmRegisterAddressFamily(
3221 IN NDIS_HANDLE NdisBindingHandle
,
3222 IN PCO_ADDRESS_FAMILY AddressFamily
,
3223 IN PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics
,
3224 IN UINT SizeOfCmCharacteristics
);
3228 NdisCmRegisterSapComplete(
3229 IN NDIS_STATUS Status
,
3230 IN NDIS_HANDLE NdisSapHandle
,
3231 IN NDIS_HANDLE CallMgrSapContext
);
3237 IN NDIS_HANDLE NdisVcHandle
,
3238 IN PCO_CALL_PARAMETERS CallParameters
);
3243 IN NDIS_HANDLE MiniportAdapterHandle
,
3244 IN NDIS_HANDLE NdisAfHandle
,
3245 IN NDIS_HANDLE MiniportVcContext
,
3246 OUT PNDIS_HANDLE NdisVcHandle
);
3250 NdisMCmDeactivateVc(
3251 IN NDIS_HANDLE NdisVcHandle
);
3256 IN NDIS_HANDLE NdisVcHandle
);
3260 NdisMCmRegisterAddressFamily(
3261 IN NDIS_HANDLE MiniportAdapterHandle
,
3262 IN PCO_ADDRESS_FAMILY AddressFamily
,
3263 IN PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics
,
3264 IN UINT SizeOfCmCharacteristics
);
3269 IN NDIS_HANDLE NdisAfHandle
,
3270 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
3271 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
3272 IN OUT PNDIS_REQUEST NdisRequest
);
3275 /* Connection-oriented services */
3280 IN NDIS_HANDLE NdisBindingHandle
,
3281 IN NDIS_HANDLE NdisAfHandle OPTIONAL
,
3282 IN NDIS_HANDLE ProtocolVcContext
,
3283 IN OUT PNDIS_HANDLE NdisVcHandle
);
3288 IN NDIS_HANDLE NdisVcHandle
);
3293 IN NDIS_HANDLE NdisBindingHandle
,
3294 IN NDIS_HANDLE NdisAfHandle OPTIONAL
,
3295 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
3296 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
3297 IN OUT PNDIS_REQUEST NdisRequest
);
3301 NdisCoRequestComplete(
3302 IN NDIS_STATUS Status
,
3303 IN NDIS_HANDLE NdisAfHandle
,
3304 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
3305 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
3306 IN PNDIS_REQUEST NdisRequest
);
3311 IN NDIS_HANDLE NdisVcHandle
,
3312 IN PPNDIS_PACKET PacketArray
,
3313 IN UINT NumberOfPackets
);
3318 NdisMCoActivateVcComplete(
3319 IN NDIS_STATUS Status
,
3320 IN NDIS_HANDLE NdisVcHandle
,
3321 IN PCO_CALL_PARAMETERS CallParameters
);
3325 NdisMCoDeactivateVcComplete(
3326 IN NDIS_STATUS Status
,
3327 IN NDIS_HANDLE NdisVcHandle
);
3331 NdisMCoIndicateReceivePacket(
3332 IN NDIS_HANDLE NdisVcHandle
,
3333 IN PPNDIS_PACKET PacketArray
,
3334 IN UINT NumberOfPackets
);
3338 NdisMCoIndicateStatus(
3339 IN NDIS_HANDLE MiniportAdapterHandle
,
3340 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
3341 IN NDIS_STATUS GeneralStatus
,
3342 IN PVOID StatusBuffer OPTIONAL
,
3343 IN ULONG StatusBufferSize
);
3347 NdisMCoReceiveComplete(
3348 IN NDIS_HANDLE MiniportAdapterHandle
);
3352 NdisMCoRequestComplete(
3353 IN NDIS_STATUS Status
,
3354 IN NDIS_HANDLE MiniportAdapterHandle
,
3355 IN PNDIS_REQUEST Request
);
3359 NdisMCoSendComplete(
3360 IN NDIS_STATUS Status
,
3361 IN NDIS_HANDLE NdisVcHandle
,
3362 IN PNDIS_PACKET Packet
);
3365 /* NDIS 5.0 extensions for intermediate drivers */
3369 NdisIMAssociateMiniport(
3370 IN NDIS_HANDLE DriverHandle
,
3371 IN NDIS_HANDLE ProtocolHandle
);
3375 NdisIMCancelInitializeDeviceInstance(
3376 IN NDIS_HANDLE DriverHandle
,
3377 IN PNDIS_STRING DeviceInstance
);
3381 NdisIMCopySendCompletePerPacketInfo(
3382 IN PNDIS_PACKET DstPacket
,
3383 IN PNDIS_PACKET SrcPacket
);
3387 NdisIMCopySendPerPacketInfo(
3388 IN PNDIS_PACKET DstPacket
,
3389 IN PNDIS_PACKET SrcPacket
);
3393 NdisIMDeregisterLayeredMiniport(
3394 IN NDIS_HANDLE DriverHandle
);
3398 NdisIMGetBindingContext(
3399 IN NDIS_HANDLE NdisBindingHandle
);
3403 NdisIMGetDeviceContext(
3404 IN NDIS_HANDLE MiniportAdapterHandle
);
3408 NdisIMInitializeDeviceInstanceEx(
3409 IN NDIS_HANDLE DriverHandle
,
3410 IN PNDIS_STRING DriverInstance
,
3411 IN NDIS_HANDLE DeviceContext OPTIONAL
);
3413 //#endif /* NDIS50 */
3417 /* Prototypes for NDIS_MINIPORT_CHARACTERISTICS */
3420 (STDCALL
*W_CHECK_FOR_HANG_HANDLER
)(
3421 IN NDIS_HANDLE MiniportAdapterContext
);
3424 (STDCALL
*W_DISABLE_INTERRUPT_HANDLER
)(
3425 IN NDIS_HANDLE MiniportAdapterContext
);
3428 (STDCALL
*W_ENABLE_INTERRUPT_HANDLER
)(
3429 IN NDIS_HANDLE MiniportAdapterContext
);
3432 (STDCALL
*W_HALT_HANDLER
)(
3433 IN NDIS_HANDLE MiniportAdapterContext
);
3436 (STDCALL
*W_HANDLE_INTERRUPT_HANDLER
)(
3437 IN NDIS_HANDLE MiniportAdapterContext
);
3440 (STDCALL
*W_INITIALIZE_HANDLER
)(
3441 OUT PNDIS_STATUS OpenErrorStatus
,
3442 OUT PUINT SelectedMediumIndex
,
3443 IN PNDIS_MEDIUM MediumArray
,
3444 IN UINT MediumArraySize
,
3445 IN NDIS_HANDLE MiniportAdapterContext
,
3446 IN NDIS_HANDLE WrapperConfigurationContext
);
3449 (STDCALL
*W_ISR_HANDLER
)(
3450 OUT PBOOLEAN InterruptRecognized
,
3451 OUT PBOOLEAN QueueMiniportHandleInterrupt
,
3452 IN NDIS_HANDLE MiniportAdapterContext
);
3455 (STDCALL
*W_QUERY_INFORMATION_HANDLER
)(
3456 IN NDIS_HANDLE MiniportAdapterContext
,
3458 IN PVOID InformationBuffer
,
3459 IN ULONG InformationBufferLength
,
3460 OUT PULONG BytesWritten
,
3461 OUT PULONG BytesNeeded
);
3464 (STDCALL
*W_RECONFIGURE_HANDLER
)(
3465 OUT PNDIS_STATUS OpenErrorStatus
,
3466 IN NDIS_HANDLE MiniportAdapterContext
,
3467 IN NDIS_HANDLE WrapperConfigurationContext
);
3470 (STDCALL
*W_RESET_HANDLER
)(
3471 OUT PBOOLEAN AddressingReset
,
3472 IN NDIS_HANDLE MiniportAdapterContext
);
3475 (STDCALL
*W_SEND_HANDLER
)(
3476 IN NDIS_HANDLE MiniportAdapterContext
,
3477 IN PNDIS_PACKET Packet
,
3481 (STDCALL
*WM_SEND_HANDLER
)(
3482 IN NDIS_HANDLE MiniportAdapterContext
,
3483 IN NDIS_HANDLE NdisLinkHandle
,
3484 IN PNDIS_WAN_PACKET Packet
);
3487 (STDCALL
*W_SET_INFORMATION_HANDLER
)(
3488 IN NDIS_HANDLE MiniportAdapterContext
,
3490 IN PVOID InformationBuffer
,
3491 IN ULONG InformationBufferLength
,
3492 OUT PULONG BytesRead
,
3493 OUT PULONG BytesNeeded
);
3496 (STDCALL
*W_TRANSFER_DATA_HANDLER
)(
3497 OUT PNDIS_PACKET Packet
,
3498 OUT PUINT BytesTransferred
,
3499 IN NDIS_HANDLE MiniportAdapterContext
,
3500 IN NDIS_HANDLE MiniportReceiveContext
,
3502 IN UINT BytesToTransfer
);
3505 (STDCALL
*WM_TRANSFER_DATA_HANDLER
)(
3509 /* NDIS structures available only to miniport drivers */
3511 /* Technology specific defines */
3513 #define DECLARE_UNKNOWN_STRUCT(BaseName) \
3514 typedef struct _##BaseName BaseName, *P##BaseName;
3519 typedef struct _ARC_BUFFER_LIST
3524 struct _ARC_BUFFER_LIST
*Next
;
3525 } ARC_BUFFER_LIST
, *PARC_BUFFER_LIST
;
3527 DECLARE_UNKNOWN_STRUCT(ARC_FILTER
)
3532 ArcFilterDprIndicateReceive(
3533 IN PARC_FILTER Filter
,
3534 IN PUCHAR pRawHeader
,
3540 ArcFilterDprIndicateReceiveComplete(
3541 IN PARC_FILTER Filter
);
3546 #define ETH_LENGTH_OF_ADDRESS 6
3548 DECLARE_UNKNOWN_STRUCT(ETH_BINDING_INFO
);
3550 typedef VOID (*ETH_ADDRESS_CHANGE
)(VOID
);
3551 typedef VOID (*ETH_FILTER_CHANGE
)(VOID
);
3552 typedef VOID (*ETH_DEFERRED_CLOSE
)(VOID
);
3554 typedef struct _ETH_FILTER
3556 PNDIS_SPIN_LOCK Lock
;
3557 CHAR (*MCastAddressBuf
)[ETH_LENGTH_OF_ADDRESS
];
3558 struct _NDIS_MINIPORT_BLOCK
*Miniport
;
3559 UINT CombinedPacketFilter
;
3560 PETH_BINDING_INFO OpenList
;
3561 ETH_ADDRESS_CHANGE AddressChangeAction
;
3562 ETH_FILTER_CHANGE FilterChangeAction
;
3563 ETH_DEFERRED_CLOSE CloseAction
;
3564 UINT MaxMulticastAddresses
;
3566 UCHAR AdapterAddress
[ETH_LENGTH_OF_ADDRESS
];
3567 UINT OldCombinedPacketFilter
;
3568 CHAR (*OldMCastAddressBuf
)[ETH_LENGTH_OF_ADDRESS
];
3569 UINT OldNumAddresses
;
3570 PETH_BINDING_INFO DirectedList
;
3571 PETH_BINDING_INFO BMList
;
3572 PETH_BINDING_INFO MCastSet
;
3576 NDIS_RW_LOCK BindListLock
;
3579 } ETH_FILTER
, *PETH_FILTER
;
3584 EthChangeFilterAddresses(
3585 IN PETH_FILTER Filter
,
3586 IN NDIS_HANDLE NdisFilterHandle
,
3587 IN PNDIS_REQUEST NdisRequest
,
3588 IN UINT AddressCount
,
3589 IN CHAR Addresses
[] [ETH_LENGTH_OF_ADDRESS
],
3595 IN UINT MaximumMulticastAddresses
,
3596 IN ETH_ADDRESS_CHANGE AddressChangeAction
,
3597 IN ETH_FILTER_CHANGE FilterChangeAction
,
3598 IN ETH_DEFERRED_CLOSE CloseAction
,
3599 IN PUCHAR AdapterAddress
,
3600 IN PNDIS_SPIN_LOCK Lock
,
3601 OUT PETH_FILTER
*Filter
);
3606 IN PETH_FILTER Filter
);
3610 EthDeleteFilterOpenAdapter(
3611 IN PETH_FILTER Filter
,
3612 IN NDIS_HANDLE NdisFilterHandle
,
3613 IN PNDIS_REQUEST NdisRequest
);
3618 IN PETH_FILTER Filter
,
3619 IN NDIS_HANDLE NdisFilterHandle
,
3620 IN PNDIS_REQUEST NdisRequest
,
3621 IN UINT FilterClasses
,
3626 EthFilterIndicateReceive(
3627 IN PETH_FILTER Filter
,
3628 IN NDIS_HANDLE MacReceiveContext
,
3630 IN PVOID HeaderBuffer
,
3631 IN UINT HeaderBufferSize
,
3632 IN PVOID LookaheadBuffer
,
3633 IN UINT LookaheadBufferSize
,
3634 IN UINT PacketSize
);
3638 EthFilterIndicateReceiveComplete(
3639 IN PETH_FILTER Filter
);
3643 EthNoteFilterOpenAdapter(
3644 IN PETH_FILTER Filter
,
3645 IN NDIS_HANDLE MacBindingHandle
,
3646 IN NDIS_HANDLE NdisBindingContext
,
3647 OUT PNDIS_HANDLE NdisFilterHandle
);
3651 EthNumberOfOpenFilterAddresses(
3652 IN PETH_FILTER Filter
,
3653 IN NDIS_HANDLE NdisFilterHandle
);
3657 EthQueryGlobalFilterAddresses (
3658 OUT PNDIS_STATUS Status
,
3659 IN PETH_FILTER Filter
,
3660 IN UINT SizeOfArray
,
3661 OUT PUINT NumberOfAddresses
,
3662 IN OUT CHAR AddressArray
[] [ETH_LENGTH_OF_ADDRESS
]);
3666 EthQueryOpenFilterAddresses(
3667 OUT PNDIS_STATUS Status
,
3668 IN PETH_FILTER Filter
,
3669 IN NDIS_HANDLE NdisFilterHandle
,
3670 IN UINT SizeOfArray
,
3671 OUT PUINT NumberOfAddresses
,
3672 IN OUT CHAR AddressArray
[] [ETH_LENGTH_OF_ADDRESS
]);
3676 EthShouldAddressLoopBack(
3677 IN PETH_FILTER Filter
,
3678 IN CHAR Address
[ETH_LENGTH_OF_ADDRESS
]);
3683 #define FDDI_LENGTH_OF_LONG_ADDRESS 6
3684 #define FDDI_LENGTH_OF_SHORT_ADDRESS 2
3686 DECLARE_UNKNOWN_STRUCT(FDDI_FILTER
)
3688 typedef VOID (*FDDI_ADDRESS_CHANGE
)(VOID
);
3689 typedef VOID (*FDDI_FILTER_CHANGE
)(VOID
);
3690 typedef VOID (*FDDI_DEFERRED_CLOSE
)(VOID
);
3695 FddiChangeFilterLongAddresses(
3696 IN PFDDI_FILTER Filter
,
3697 IN NDIS_HANDLE NdisFilterHandle
,
3698 IN PNDIS_REQUEST NdisRequest
,
3699 IN UINT AddressCount
,
3700 IN CHAR Addresses
[] [FDDI_LENGTH_OF_LONG_ADDRESS
],
3705 FddiChangeFilterShortAddresses(
3706 IN PFDDI_FILTER Filter
,
3707 IN NDIS_HANDLE NdisFilterHandle
,
3708 IN PNDIS_REQUEST NdisRequest
,
3709 IN UINT AddressCount
,
3710 IN CHAR Addresses
[] [FDDI_LENGTH_OF_SHORT_ADDRESS
],
3716 IN UINT MaximumMulticastLongAddresses
,
3717 IN UINT MaximumMulticastShortAddresses
,
3718 IN FDDI_ADDRESS_CHANGE AddressChangeAction
,
3719 IN FDDI_FILTER_CHANGE FilterChangeAction
,
3720 IN FDDI_DEFERRED_CLOSE CloseAction
,
3721 IN PUCHAR AdapterLongAddress
,
3722 IN PUCHAR AdapterShortAddress
,
3723 IN PNDIS_SPIN_LOCK Lock
,
3724 OUT PFDDI_FILTER
*Filter
);
3729 IN PFDDI_FILTER Filter
);
3733 FddiDeleteFilterOpenAdapter(
3734 IN PFDDI_FILTER Filter
,
3735 IN NDIS_HANDLE NdisFilterHandle
,
3736 IN PNDIS_REQUEST NdisRequest
);
3741 IN PFDDI_FILTER Filter
,
3742 IN NDIS_HANDLE NdisFilterHandle
,
3743 IN PNDIS_REQUEST NdisRequest
,
3744 IN UINT FilterClasses
,
3749 FddiFilterIndicateReceive(
3750 IN PFDDI_FILTER Filter
,
3751 IN NDIS_HANDLE MacReceiveContext
,
3753 IN UINT AddressLength
,
3754 IN PVOID HeaderBuffer
,
3755 IN UINT HeaderBufferSize
,
3756 IN PVOID LookaheadBuffer
,
3757 IN UINT LookaheadBufferSize
,
3758 IN UINT PacketSize
);
3762 FddiFilterIndicateReceiveComplete(
3763 IN PFDDI_FILTER Filter
);
3767 FddiNoteFilterOpenAdapter(
3768 IN PFDDI_FILTER Filter
,
3769 IN NDIS_HANDLE MacBindingHandle
,
3770 IN NDIS_HANDLE NdisBindingContext
,
3771 OUT PNDIS_HANDLE NdisFilterHandle
);
3775 FddiNumberOfOpenFilterLongAddresses(
3776 IN PFDDI_FILTER Filter
,
3777 IN NDIS_HANDLE NdisFilterHandle
);
3781 FddiNumberOfOpenFilterShortAddresses(
3782 IN PFDDI_FILTER Filter
,
3783 IN NDIS_HANDLE NdisFilterHandle
);
3787 FddiQueryGlobalFilterLongAddresses(
3788 OUT PNDIS_STATUS Status
,
3789 IN PFDDI_FILTER Filter
,
3790 IN UINT SizeOfArray
,
3791 OUT PUINT NumberOfAddresses
,
3792 IN OUT CHAR AddressArray
[] [FDDI_LENGTH_OF_LONG_ADDRESS
]);
3796 FddiQueryGlobalFilterShortAddresses(
3797 OUT PNDIS_STATUS Status
,
3798 IN PFDDI_FILTER Filter
,
3799 IN UINT SizeOfArray
,
3800 OUT PUINT NumberOfAddresses
,
3801 IN OUT CHAR AddressArray
[] [FDDI_LENGTH_OF_SHORT_ADDRESS
]);
3805 FddiQueryOpenFilterLongAddresses(
3806 OUT PNDIS_STATUS Status
,
3807 IN PFDDI_FILTER Filter
,
3808 IN NDIS_HANDLE NdisFilterHandle
,
3809 IN UINT SizeOfArray
,
3810 OUT PUINT NumberOfAddresses
,
3811 IN OUT CHAR AddressArray
[] [FDDI_LENGTH_OF_LONG_ADDRESS
]);
3815 FddiQueryOpenFilterShortAddresses(
3816 OUT PNDIS_STATUS Status
,
3817 IN PFDDI_FILTER Filter
,
3818 IN NDIS_HANDLE NdisFilterHandle
,
3819 IN UINT SizeOfArray
,
3820 OUT PUINT NumberOfAddresses
,
3821 IN OUT CHAR AddressArray
[] [FDDI_LENGTH_OF_SHORT_ADDRESS
]);
3825 FddiShouldAddressLoopBack(
3826 IN PFDDI_FILTER Filter
,
3828 IN UINT LengthOfAddress
);
3833 #define TR_LENGTH_OF_FUNCTIONAL 4
3834 #define TR_LENGTH_OF_ADDRESS 6
3836 DECLARE_UNKNOWN_STRUCT(TR_FILTER
)
3838 typedef VOID (*TR_ADDRESS_CHANGE
)(VOID
);
3839 typedef VOID (*TR_GROUP_CHANGE
)(VOID
);
3840 typedef VOID (*TR_FILTER_CHANGE
)(VOID
);
3841 typedef VOID (*TR_DEFERRED_CLOSE
)(VOID
);
3846 TrChangeFunctionalAddress(
3847 IN PTR_FILTER Filter
,
3848 IN NDIS_HANDLE NdisFilterHandle
,
3849 IN PNDIS_REQUEST NdisRequest
,
3850 IN CHAR FunctionalAddressArray
[TR_LENGTH_OF_FUNCTIONAL
],
3855 TrChangeGroupAddress(
3856 IN PTR_FILTER Filter
,
3857 IN NDIS_HANDLE NdisFilterHandle
,
3858 IN PNDIS_REQUEST NdisRequest
,
3859 IN CHAR GroupAddressArray
[TR_LENGTH_OF_FUNCTIONAL
],
3865 IN TR_ADDRESS_CHANGE AddressChangeAction
,
3866 IN TR_GROUP_CHANGE GroupChangeAction
,
3867 IN TR_FILTER_CHANGE FilterChangeAction
,
3868 IN TR_DEFERRED_CLOSE CloseAction
,
3869 IN PUCHAR AdapterAddress
,
3870 IN PNDIS_SPIN_LOCK Lock
,
3871 OUT PTR_FILTER
*Filter
);
3876 IN PTR_FILTER Filter
);
3880 TrDeleteFilterOpenAdapter (
3881 IN PTR_FILTER Filter
,
3882 IN NDIS_HANDLE NdisFilterHandle
,
3883 IN PNDIS_REQUEST NdisRequest
);
3888 IN PTR_FILTER Filter
,
3889 IN NDIS_HANDLE NdisFilterHandle
,
3890 IN PNDIS_REQUEST NdisRequest
,
3891 IN UINT FilterClasses
,
3896 TrFilterIndicateReceive(
3897 IN PTR_FILTER Filter
,
3898 IN NDIS_HANDLE MacReceiveContext
,
3899 IN PVOID HeaderBuffer
,
3900 IN UINT HeaderBufferSize
,
3901 IN PVOID LookaheadBuffer
,
3902 IN UINT LookaheadBufferSize
,
3903 IN UINT PacketSize
);
3907 TrFilterIndicateReceiveComplete(
3908 IN PTR_FILTER Filter
);
3912 TrNoteFilterOpenAdapter(
3913 IN PTR_FILTER Filter
,
3914 IN NDIS_HANDLE MacBindingHandle
,
3915 IN NDIS_HANDLE NdisBindingContext
,
3916 OUT PNDIS_HANDLE NdisFilterHandle
);
3920 TrShouldAddressLoopBack(
3921 IN PTR_FILTER Filter
,
3922 IN CHAR DestinationAddress
[TR_LENGTH_OF_ADDRESS
],
3923 IN CHAR SourceAddress
[TR_LENGTH_OF_ADDRESS
]);
3928 typedef struct _NDIS30_MINIPORT_CHARACTERISTICS
3930 UCHAR MajorNdisVersion
;
3931 UCHAR MinorNdisVersion
;
3933 W_CHECK_FOR_HANG_HANDLER CheckForHangHandler
;
3934 W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler
;
3935 W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler
;
3936 W_HALT_HANDLER HaltHandler
;
3937 W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler
;
3938 W_INITIALIZE_HANDLER InitializeHandler
;
3939 W_ISR_HANDLER ISRHandler
;
3940 W_QUERY_INFORMATION_HANDLER QueryInformationHandler
;
3941 W_RECONFIGURE_HANDLER ReconfigureHandler
;
3942 W_RESET_HANDLER ResetHandler
;
3945 W_SEND_HANDLER SendHandler
;
3946 WM_SEND_HANDLER WanSendHandler
;
3948 W_SET_INFORMATION_HANDLER SetInformationHandler
;
3951 W_TRANSFER_DATA_HANDLER TransferDataHandler
;
3952 WM_TRANSFER_DATA_HANDLER WanTransferDataHandler
;
3954 } NDIS30_MINIPORT_CHARACTERISTICS
;
3955 typedef NDIS30_MINIPORT_CHARACTERISTICS NDIS30_MINIPORT_CHARACTERISTICS_S
;
3957 #define NDIS30_MINIPORT_CHARACTERISTICS \
3958 UCHAR MajorNdisVersion; \
3959 UCHAR MinorNdisVersion; \
3961 W_CHECK_FOR_HANG_HANDLER CheckForHangHandler; \
3962 W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler; \
3963 W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler; \
3964 W_HALT_HANDLER HaltHandler; \
3965 W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler; \
3966 W_INITIALIZE_HANDLER InitializeHandler; \
3967 W_ISR_HANDLER ISRHandler; \
3968 W_QUERY_INFORMATION_HANDLER QueryInformationHandler; \
3969 W_RECONFIGURE_HANDLER ReconfigureHandler; \
3970 W_RESET_HANDLER ResetHandler; \
3972 W_SEND_HANDLER SendHandler; \
3973 WM_SEND_HANDLER WanSendHandler; \
3975 W_SET_INFORMATION_HANDLER SetInformationHandler; \
3977 W_TRANSFER_DATA_HANDLER TransferDataHandler; \
3978 WM_TRANSFER_DATA_HANDLER WanTransferDataHandler; \
3981 typedef struct _NDIS30_MINIPORT_CHARACTERISTICS_S
{
3982 NDIS30_MINIPORT_CHARACTERISTICS
;
3983 } NDIS30_MINIPORT_CHARACTERISTICS_S
, *PSNDIS30_MINIPORT_CHARACTERISTICS_S
;
3986 /* Extensions for NDIS 4.0 miniports */
3989 (STDCALL
*W_SEND_PACKETS_HANDLER
)(
3990 IN NDIS_HANDLE MiniportAdapterContext
,
3991 IN PPNDIS_PACKET PacketArray
,
3992 IN UINT NumberOfPackets
);
3997 (STDCALL
*W_RETURN_PACKET_HANDLER
)(
3998 IN NDIS_HANDLE MiniportAdapterContext
,
3999 IN PNDIS_PACKET Packet
);
4002 (STDCALL
*W_ALLOCATE_COMPLETE_HANDLER
)(
4003 IN NDIS_HANDLE MiniportAdapterContext
,
4004 IN PVOID VirtualAddress
,
4005 IN PNDIS_PHYSICAL_ADDRESS PhysicalAddress
,
4010 typedef struct _NDIS40_MINIPORT_CHARACTERISTICS
4012 NDIS30_MINIPORT_CHARACTERISTICS
;
4014 W_RETURN_PACKET_HANDLER ReturnPacketHandler
;
4015 W_SEND_PACKETS_HANDLER SendPacketsHandler
;
4016 W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler
;
4017 } NDIS40_MINIPORT_CHARACTERISTICS
;
4018 typedef NDIS40_MINIPORT_CHARACTERISTICS NDIS40_MINIPORT_CHARACTERISTICS_S
;
4020 #define NDIS40_MINIPORT_CHARACTERISTICS \
4021 NDIS30_MINIPORT_CHARACTERISTICS; \
4022 W_RETURN_PACKET_HANDLER ReturnPacketHandler; \
4023 W_SEND_PACKETS_HANDLER SendPacketsHandler; \
4024 W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler;
4025 typedef struct _NDIS40_MINIPORT_CHARACTERISTICS_S
4027 NDIS40_MINIPORT_CHARACTERISTICS
;
4028 } NDIS40_MINIPORT_CHARACTERISTICS_S
, *PSNDIS40_MINIPORT_CHARACTERISTICS_S
;
4033 /* Extensions for NDIS 5.0 miniports */
4038 (STDCALL
*W_CO_CREATE_VC_HANDLER
)(
4039 IN NDIS_HANDLE MiniportAdapterContext
,
4040 IN NDIS_HANDLE NdisVcHandle
,
4041 OUT PNDIS_HANDLE MiniportVcContext
);
4044 (STDCALL
*W_CO_DELETE_VC_HANDLER
)(
4045 IN NDIS_HANDLE MiniportVcContext
);
4048 (STDCALL
*W_CO_ACTIVATE_VC_HANDLER
)(
4049 IN NDIS_HANDLE MiniportVcContext
,
4050 IN OUT PCO_CALL_PARAMETERS CallParameters
);
4053 (STDCALL
*W_CO_DEACTIVATE_VC_HANDLER
)(
4054 IN NDIS_HANDLE MiniportVcContext
);
4057 (STDCALL
*W_CO_SEND_PACKETS_HANDLER
)(
4058 IN NDIS_HANDLE MiniportVcContext
,
4059 IN PPNDIS_PACKET PacketArray
,
4060 IN UINT NumberOfPackets
);
4063 (STDCALL
*W_CO_REQUEST_HANDLER
)(
4064 IN NDIS_HANDLE MiniportAdapterContext
,
4065 IN NDIS_HANDLE MiniportVcContext OPTIONAL
,
4066 IN OUT PNDIS_REQUEST NdisRequest
);
4069 typedef struct _NDIS50_MINIPORT_CHARACTERISTICS
{
4070 NDIS40_MINIPORT_CHARACTERISTICS
;
4072 W_CO_CREATE_VC_HANDLER CoCreateVcHandler
;
4073 W_CO_DELETE_VC_HANDLER CoDeleteVcHandler
;
4074 W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler
;
4075 W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler
;
4076 W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler
;
4077 W_CO_REQUEST_HANDLER CoRequestHandler
;
4078 } NDIS50_MINIPORT_CHARACTERISTICS
;
4079 typedef NDIS50_MINIPORT_CHARACTERISTICS NDIS50_MINIPORT_CHARACTERISTICS_S
;
4081 #define NDIS50_MINIPORT_CHARACTERISTICS \
4082 NDIS40_MINIPORT_CHARACTERISTICS; \
4083 W_CO_CREATE_VC_HANDLER CoCreateVcHandler; \
4084 W_CO_DELETE_VC_HANDLER CoDeleteVcHandler; \
4085 W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler; \
4086 W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler; \
4087 W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler; \
4088 W_CO_REQUEST_HANDLER CoRequestHandler;
4089 typedef struct _NDIS50_MINIPORT_CHARACTERISTICS_S
{
4090 NDIS50_MINIPORT_CHARACTERISTICS
;
4091 } NDIS50_MINIPORT_CHARACTERISTICS_S
, *PSNDIS50_MINIPORT_CHARACTERISTICS_S
;
4099 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
4101 NDIS30_MINIPORT_CHARACTERISTICS
;
4102 } NDIS_MINIPORT_CHARACTERISTICS
;
4104 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
4106 NDIS40_MINIPORT_CHARACTERISTICS
;
4107 } NDIS_MINIPORT_CHARACTERISTICS
;
4110 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
4112 NDIS50_MINIPORT_CHARACTERISTICS
;
4113 } NDIS_MINIPORT_CHARACTERISTICS
;
4116 typedef NDIS_MINIPORT_CHARACTERISTICS
*PNDIS_MINIPORT_CHARACTERISTICS
;
4121 (STDCALL
*SEND_HANDLER
)(
4122 IN NDIS_HANDLE MacBindingHandle
,
4123 IN PNDIS_PACKET Packet
);
4126 (STDCALL
*TRANSFER_DATA_HANDLER
)(
4127 IN NDIS_HANDLE MacBindingHandle
,
4128 IN NDIS_HANDLE MacReceiveContext
,
4130 IN UINT BytesToTransfer
,
4131 OUT PNDIS_PACKET Packet
,
4132 OUT PUINT BytesTransferred
);
4135 (STDCALL
*RESET_HANDLER
)(
4136 IN NDIS_HANDLE MacBindingHandle
);
4139 (STDCALL
*REQUEST_HANDLER
)(
4140 IN NDIS_HANDLE MacBindingHandle
,
4141 IN PNDIS_REQUEST NdisRequest
);
4145 /* Structures available only to full MAC drivers */
4148 (*PNDIS_INTERRUPT_SERVICE
)(
4149 IN PVOID InterruptContext
);
4152 (*PNDIS_DEFERRED_PROCESSING
)(
4153 IN PVOID SystemSpecific1
,
4154 IN PVOID InterruptContext
,
4155 IN PVOID SystemSpecific2
,
4156 IN PVOID SystemSpecific3
);
4159 typedef struct _NDIS_INTERRUPT
4161 PKINTERRUPT InterruptObject
;
4162 KSPIN_LOCK DpcCountLock
;
4163 PNDIS_INTERRUPT_SERVICE MacIsr
;
4164 PNDIS_DEFERRED_PROCESSING MacDpc
;
4166 PVOID InterruptContext
;
4169 /* Used to tell when all DPCs for the adapter are completed */
4170 KEVENT DpcsCompletedEvent
;
4171 } NDIS_INTERRUPT
, *PNDIS_INTERRUPT
;
4174 /* NDIS adapter information */
4176 typedef NDIS_STATUS (*PNDIS_ACTIVATE_CALLBACK
)(
4177 IN NDIS_HANDLE NdisAdatperHandle
,
4178 IN NDIS_HANDLE MacAdapterContext
,
4179 IN ULONG DmaChannel
);
4181 typedef struct _NDIS_PORT_DESCRIPTOR
4184 ULONG NumberOfPorts
;
4186 } NDIS_PORT_DESCRIPTOR
, *PNDIS_PORT_DESCRIPTOR
;
4188 typedef struct _NDIS_ADAPTER_INFORMATION
4192 BOOLEAN Dma32BitAddresses
;
4193 PNDIS_ACTIVATE_CALLBACK ActivateCallback
;
4194 NDIS_INTERFACE_TYPE AdapterType
;
4195 ULONG PhysicalMapRegistersNeeded
;
4196 ULONG MaximumPhysicalMapping
;
4197 ULONG NumberOfPortDescriptors
;
4198 NDIS_PORT_DESCRIPTOR PortDescriptors
[1];
4199 } NDIS_ADAPTER_INFORMATION
, *PNDIS_ADAPTER_INFORMATION
;
4202 /* Prototypes for NDIS_MAC_CHARACTERISTICS */
4204 typedef NDIS_STATUS
STDCALL_FUNC (*OPEN_ADAPTER_HANDLER
)(
4205 OUT PNDIS_STATUS OpenErrorStatus
,
4206 OUT NDIS_HANDLE
* MacBindingHandle
,
4207 OUT PUINT SelectedMediumIndex
,
4208 IN PNDIS_MEDIUM MediumArray
,
4209 IN UINT MediumArraySize
,
4210 IN NDIS_HANDLE NdisBindingContext
,
4211 IN NDIS_HANDLE MacAdapterContext
,
4212 IN UINT OpenOptions
,
4213 IN PSTRING AddressingInformation OPTIONAL
);
4215 typedef NDIS_STATUS
STDCALL_FUNC (*CLOSE_ADAPTER_HANDLER
)(
4216 IN NDIS_HANDLE MacBindingHandle
);
4218 typedef NDIS_STATUS
STDCALL_FUNC (*WAN_TRANSFER_DATA_HANDLER
)(
4221 typedef NDIS_STATUS
STDCALL_FUNC (*QUERY_GLOBAL_STATISTICS_HANDLER
)(
4222 IN NDIS_HANDLE MacAdapterContext
,
4223 IN PNDIS_REQUEST NdisRequest
);
4225 typedef VOID
STDCALL_FUNC (*UNLOAD_MAC_HANDLER
)(
4226 IN NDIS_HANDLE MacMacContext
);
4228 typedef NDIS_STATUS
STDCALL_FUNC (*ADD_ADAPTER_HANDLER
)(
4229 IN NDIS_HANDLE MacMacContext
,
4230 IN NDIS_HANDLE WrapperConfigurationContext
,
4231 IN PNDIS_STRING AdapterName
);
4233 typedef VOID
STDCALL_FUNC (*REMOVE_ADAPTER_HANDLER
)(
4234 IN NDIS_HANDLE MacAdapterContext
);
4236 typedef struct _NDIS_MAC_CHARACTERISTICS
4238 UCHAR MajorNdisVersion
;
4239 UCHAR MinorNdisVersion
;
4241 OPEN_ADAPTER_HANDLER OpenAdapterHandler
;
4242 CLOSE_ADAPTER_HANDLER CloseAdapterHandler
;
4243 SEND_HANDLER SendHandler
;
4244 TRANSFER_DATA_HANDLER TransferDataHandler
;
4245 RESET_HANDLER ResetHandler
;
4246 REQUEST_HANDLER RequestHandler
;
4247 QUERY_GLOBAL_STATISTICS_HANDLER QueryGlobalStatisticsHandler
;
4248 UNLOAD_MAC_HANDLER UnloadMacHandler
;
4249 ADD_ADAPTER_HANDLER AddAdapterHandler
;
4250 REMOVE_ADAPTER_HANDLER RemoveAdapterHandler
;
4252 } NDIS_MAC_CHARACTERISTICS
, *PNDIS_MAC_CHARACTERISTICS
;
4254 typedef NDIS_MAC_CHARACTERISTICS NDIS_WAN_MAC_CHARACTERISTICS
;
4255 typedef NDIS_WAN_MAC_CHARACTERISTICS
*PNDIS_WAN_MAC_CHARACTERISTICS
;
4261 NdisAllocateSharedMemory(
4262 IN NDIS_HANDLE NdisAdapterHandle
,
4265 OUT PVOID
*VirtualAddress
,
4266 OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress
);
4270 NdisCompleteCloseAdapter(
4271 IN NDIS_HANDLE NdisBindingContext
,
4272 IN NDIS_STATUS Status
);
4276 NdisCompleteOpenAdapter(
4277 IN NDIS_HANDLE NdisBindingContext
,
4278 IN NDIS_STATUS Status
,
4279 IN NDIS_STATUS OpenErrorStatus
);
4283 NdisDeregisterAdapter(
4284 IN NDIS_HANDLE NdisAdapterHandle
);
4288 NdisDeregisterAdapterShutdownHandler(
4289 IN NDIS_HANDLE NdisAdapterHandle
);
4293 NdisFreeSharedMemory(
4294 IN NDIS_HANDLE NdisAdapterHandle
,
4297 IN PVOID VirtualAddress
,
4298 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
4302 NdisInitializeInterrupt(
4303 OUT PNDIS_STATUS Status
,
4304 IN OUT PNDIS_INTERRUPT Interrupt
,
4305 IN NDIS_HANDLE NdisAdapterHandle
,
4306 IN PNDIS_INTERRUPT_SERVICE InterruptServiceRoutine
,
4307 IN PVOID InterruptContext
,
4308 IN PNDIS_DEFERRED_PROCESSING DeferredProcessingRoutine
,
4309 IN UINT InterruptVector
,
4310 IN UINT InterruptLevel
,
4311 IN BOOLEAN SharedInterrupt
,
4312 IN NDIS_INTERRUPT_MODE InterruptMode
);
4317 OUT PNDIS_STATUS Status
,
4318 OUT PVOID
*VirtualAddress
,
4319 IN NDIS_HANDLE NdisAdapterHandle
,
4320 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
,
4325 NdisRegisterAdapter(
4326 OUT PNDIS_HANDLE NdisAdapterHandle
,
4327 IN NDIS_HANDLE NdisMacHandle
,
4328 IN NDIS_HANDLE MacAdapterContext
,
4329 IN NDIS_HANDLE WrapperConfigurationContext
,
4330 IN PNDIS_STRING AdapterName
,
4331 IN PVOID AdapterInformation
);
4335 NdisRegisterAdapterShutdownHandler(
4336 IN NDIS_HANDLE NdisAdapterHandle
,
4337 IN PVOID ShutdownContext
,
4338 IN ADAPTER_SHUTDOWN_HANDLER ShutdownHandler
);
4343 OUT PNDIS_STATUS Status
,
4344 OUT PNDIS_HANDLE NdisMacHandle
,
4345 IN NDIS_HANDLE NdisWrapperHandle
,
4346 IN NDIS_HANDLE MacMacContext
,
4347 IN PNDIS_MAC_CHARACTERISTICS MacCharacteristics
,
4348 IN UINT CharacteristicsLength
);
4352 NdisReleaseAdapterResources(
4353 IN NDIS_HANDLE NdisAdapterHandle
);
4357 NdisRemoveInterrupt(
4358 IN PNDIS_INTERRUPT Interrupt
);
4362 typedef struct _NDIS_MAC_BLOCK NDIS_MAC_BLOCK
, *PNDIS_MAC_BLOCK
;
4363 typedef struct _NDIS_ADAPTER_BLOCK NDIS_ADAPTER_BLOCK
, *PNDIS_ADAPTER_BLOCK
;
4364 typedef struct _NDIS_MINIPORT_BLOCK NDIS_MINIPORT_BLOCK
, *PNDIS_MINIPORT_BLOCK
;
4365 typedef struct _NDIS_PROTOCOL_BLOCK NDIS_PROTOCOL_BLOCK
, *PNDIS_PROTOCOL_BLOCK
;
4366 typedef struct _NDIS_OPEN_BLOCK NDIS_OPEN_BLOCK
, *PNDIS_OPEN_BLOCK
;
4367 typedef struct _NDIS_M_DRIVER_BLOCK NDIS_M_DRIVER_BLOCK
, *PNDIS_M_DRIVER_BLOCK
;
4368 typedef struct _NDIS_AF_LIST NDIS_AF_LIST
, *PNDIS_AF_LIST
;
4369 typedef struct _NULL_FILTER NULL_FILTER
, *PNULL_FILTER
;
4372 typedef struct _REFERENCE
{
4373 KSPIN_LOCK SpinLock
;
4374 USHORT ReferenceCount
;
4376 } REFERENCE
, *PREFERENCE
;
4378 typedef struct _NDIS_MINIPORT_INTERRUPT
{
4379 PKINTERRUPT InterruptObject
;
4380 KSPIN_LOCK DpcCountLock
;
4381 PVOID MiniportIdField
;
4382 W_ISR_HANDLER MiniportIsr
;
4383 W_HANDLE_INTERRUPT_HANDLER MiniportDpc
;
4385 PNDIS_MINIPORT_BLOCK Miniport
;
4388 KEVENT DpcsCompletedEvent
;
4389 BOOLEAN SharedInterrupt
;
4390 BOOLEAN IsrRequested
;
4391 } NDIS_MINIPORT_INTERRUPT
, *PNDIS_MINIPORT_INTERRUPT
;
4393 typedef struct _NDIS_MINIPORT_TIMER
{
4396 PNDIS_TIMER_FUNCTION MiniportTimerFunction
;
4397 PVOID MiniportTimerContext
;
4398 PNDIS_MINIPORT_BLOCK Miniport
;
4399 struct _NDIS_MINIPORT_TIMER
*NextDeferredTimer
;
4400 } NDIS_MINIPORT_TIMER
, *PNDIS_MINIPORT_TIMER
;
4403 typedef struct _MAP_REGISTER_ENTRY
{
4405 BOOLEAN WriteToDevice
;
4406 } MAP_REGISTER_ENTRY
, *PMAP_REGISTER_ENTRY
;
4409 typedef enum _NDIS_WORK_ITEM_TYPE
{
4410 NdisWorkItemRequest
,
4412 NdisWorkItemReturnPackets
,
4413 NdisWorkItemResetRequested
,
4414 NdisWorkItemResetInProgress
,
4416 NdisWorkItemSendLoopback
,
4417 NdisWorkItemMiniportCallback
,
4419 } NDIS_WORK_ITEM_TYPE
, *PNDIS_WORK_ITEM_TYPE
;
4421 #define NUMBER_OF_WORK_ITEM_TYPES NdisMaxWorkItems
4422 #define NUMBER_OF_SINGLE_WORK_ITEMS 6
4424 typedef struct _NDIS_MINIPORT_WORK_ITEM
{
4425 SINGLE_LIST_ENTRY Link
;
4426 NDIS_WORK_ITEM_TYPE WorkItemType
;
4427 PVOID WorkItemContext
;
4429 NDIS_HANDLE Initiator
;
4430 } NDIS_MINIPORT_WORK_ITEM
, *PNDIS_MINIPORT_WORK_ITEM
;
4433 typedef struct _NDIS_BIND_PATHS
{
4435 NDIS_STRING Paths
[1];
4436 } NDIS_BIND_PATHS
, *PNDIS_BIND_PATHS
;
4438 typedef struct _FILTERDBS
{
4441 PNULL_FILTER NullDB
;
4444 PFDDI_FILTER FddiDB
;
4446 } FILTERDBS
, *PFILTERDBS
;
4450 (STDCALL
*ETH_RCV_COMPLETE_HANDLER
)(
4451 IN PETH_FILTER Filter
);
4454 (STDCALL
*ETH_RCV_INDICATE_HANDLER
)(
4455 IN NDIS_HANDLE MiniportAdapter
,
4456 IN NDIS_HANDLE MacReceiveContext
,
4458 IN PVOID HeaderBuffer
,
4459 IN UINT HeaderBufferSize
,
4460 IN PVOID LookaheadBuffer
,
4461 IN UINT LookaheadBufferSize
,
4462 IN UINT PacketSize
);
4465 (STDCALL
*FDDI_RCV_COMPLETE_HANDLER
)(
4466 IN PFDDI_FILTER Filter
);
4469 (STDCALL
*FDDI_RCV_INDICATE_HANDLER
)(
4470 IN PFDDI_FILTER Filter
,
4471 IN NDIS_HANDLE MacReceiveContext
,
4473 IN UINT AddressLength
,
4474 IN PVOID HeaderBuffer
,
4475 IN UINT HeaderBufferSize
,
4476 IN PVOID LookaheadBuffer
,
4477 IN UINT LookaheadBufferSize
,
4478 IN UINT PacketSize
);
4481 (STDCALL
*FILTER_PACKET_INDICATION_HANDLER
)(
4482 IN NDIS_HANDLE Miniport
,
4483 IN PPNDIS_PACKET PacketArray
,
4484 IN UINT NumberOfPackets
);
4487 (STDCALL
*TR_RCV_COMPLETE_HANDLER
)(
4488 IN PTR_FILTER Filter
);
4491 (STDCALL
*TR_RCV_INDICATE_HANDLER
)(
4492 IN PTR_FILTER Filter
,
4493 IN NDIS_HANDLE MacReceiveContext
,
4494 IN PVOID HeaderBuffer
,
4495 IN UINT HeaderBufferSize
,
4496 IN PVOID LookaheadBuffer
,
4497 IN UINT LookaheadBufferSize
,
4498 IN UINT PacketSize
);
4501 (STDCALL
*WAN_RCV_COMPLETE_HANDLER
)(
4502 IN NDIS_HANDLE MiniportAdapterHandle
,
4503 IN NDIS_HANDLE NdisLinkContext
);
4506 (STDCALL
*WAN_RCV_HANDLER
)(
4507 OUT PNDIS_STATUS Status
,
4508 IN NDIS_HANDLE MiniportAdapterHandle
,
4509 IN NDIS_HANDLE NdisLinkContext
,
4511 IN ULONG PacketSize
);
4513 typedef VOID (FASTCALL
*NDIS_M_DEQUEUE_WORK_ITEM
)(
4514 IN PNDIS_MINIPORT_BLOCK Miniport
,
4515 IN NDIS_WORK_ITEM_TYPE WorkItemType
,
4516 OUT PVOID
*WorkItemContext
);
4518 typedef VOID (FASTCALL
*NDIS_M_PROCESS_DEFERRED
)(
4519 IN PNDIS_MINIPORT_BLOCK Miniport
);
4521 typedef NDIS_STATUS (FASTCALL
*NDIS_M_QUEUE_NEW_WORK_ITEM
)(
4522 IN PNDIS_MINIPORT_BLOCK Miniport
,
4523 IN NDIS_WORK_ITEM_TYPE WorkItemType
,
4524 IN PVOID WorkItemContext
);
4526 typedef NDIS_STATUS (FASTCALL
*NDIS_M_QUEUE_WORK_ITEM
)(
4527 IN PNDIS_MINIPORT_BLOCK Miniport
,
4528 IN NDIS_WORK_ITEM_TYPE WorkItemType
,
4529 IN PVOID WorkItemContext
);
4531 typedef VOID
STDCALL_FUNC (*NDIS_M_REQ_COMPLETE_HANDLER
)(
4532 IN NDIS_HANDLE MiniportAdapterHandle
,
4533 IN NDIS_STATUS Status
);
4535 typedef VOID
STDCALL_FUNC (*NDIS_M_RESET_COMPLETE_HANDLER
)(
4536 IN NDIS_HANDLE MiniportAdapterHandle
,
4537 IN NDIS_STATUS Status
,
4538 IN BOOLEAN AddressingReset
);
4540 typedef VOID
STDCALL_FUNC (*NDIS_M_SEND_COMPLETE_HANDLER
)(
4541 IN NDIS_HANDLE MiniportAdapterHandle
,
4542 IN PNDIS_PACKET Packet
,
4543 IN NDIS_STATUS Status
);
4545 typedef VOID
STDCALL_FUNC (*NDIS_M_SEND_RESOURCES_HANDLER
)(
4546 IN NDIS_HANDLE MiniportAdapterHandle
);
4548 typedef BOOLEAN (FASTCALL
*NDIS_M_START_SENDS
)(
4549 IN PNDIS_MINIPORT_BLOCK Miniport
);
4552 (STDCALL
*NDIS_M_STATUS_HANDLER
)(
4553 IN NDIS_HANDLE MiniportHandle
,
4554 IN NDIS_STATUS GeneralStatus
,
4555 IN PVOID StatusBuffer
,
4556 IN UINT StatusBufferSize
);
4559 (STDCALL
*NDIS_M_STS_COMPLETE_HANDLER
)(
4560 IN NDIS_HANDLE MiniportAdapterHandle
);
4563 (STDCALL
*NDIS_M_TD_COMPLETE_HANDLER
)(
4564 IN NDIS_HANDLE MiniportAdapterHandle
,
4565 IN PNDIS_PACKET Packet
,
4566 IN NDIS_STATUS Status
,
4567 IN UINT BytesTransferred
);
4570 (STDCALL
*NDIS_WM_SEND_COMPLETE_HANDLER
)(
4571 IN NDIS_HANDLE MiniportAdapterHandle
,
4573 IN NDIS_STATUS Status
);
4576 //#ifdef NDIS_WRAPPER
4578 #define ARC_SEND_BUFFERS 8
4579 #define ARC_HEADER_SIZE 4
4581 typedef struct _NDIS_ARC_BUF
{
4582 NDIS_HANDLE ArcnetBufferPool
;
4583 PUCHAR ArcnetLookaheadBuffer
;
4585 ARC_BUFFER_LIST ArcnetBuffers
[ARC_SEND_BUFFERS
];
4586 } NDIS_ARC_BUF
, *PNDIS_ARC_BUF
;
4588 #define NDIS_MINIPORT_WORK_QUEUE_SIZE 10
4590 typedef struct _NDIS_LOG
{
4591 PNDIS_MINIPORT_BLOCK Miniport
;
4599 } NDIS_LOG
, *PNDIS_LOG
;
4601 //#endif /* NDIS_WRAPPER */
4604 struct _NDIS_ADAPTER_BLOCK
4606 PDEVICE_OBJECT DeviceObject
;
4607 PNDIS_MAC_BLOCK MacHandle
;
4608 NDIS_HANDLE MacAdapterContext
;
4609 NDIS_STRING AdapterName
;
4610 PNDIS_OPEN_BLOCK OpenQueue
;
4611 PNDIS_ADAPTER_BLOCK NextAdapter
;
4613 PVOID BusDataContext
;
4614 BOOLEAN BeingRemoved
;
4616 PCM_RESOURCE_LIST Resources
;
4617 PNDIS_STRING pAdapterInstanceName
;
4618 PVOID WrapperContext
;
4621 NDIS_INTERFACE_TYPE BusType
;
4622 ULONG ChannelNumber
;
4623 NDIS_INTERFACE_TYPE AdapterType
;
4625 UCHAR AssignedProcessor
;
4626 ULONG PhysicalMapRegistersNeeded
;
4627 ULONG MaximumPhysicalMapping
;
4629 ULONG NumberOfPorts
;
4630 PUCHAR InitialPortMapping
;
4631 BOOLEAN InitialPortMapped
;
4633 PMAP_REGISTER_ENTRY MapRegisters
;
4635 KEVENT AllocationEvent
;
4636 UINT CurrentMapRegister
;
4637 PADAPTER_OBJECT SystemAdapterObject
;
4642 NDIS_STRING BaseName
;
4643 PDEVICE_OBJECT PhysicalDeviceObject
;
4644 PDEVICE_OBJECT NextDeviceObject
;
4645 PCM_RESOURCE_LIST AllocatedResources
;
4646 PCM_RESOURCE_LIST AllocatedResourcesTranslated
;
4647 NDIS_EVENT OpenReadyEvent
;
4648 NDIS_PNP_DEVICE_STATE PnPDeviceState
;
4649 PGET_SET_DEVICE_DATA SetBusData
;
4650 PGET_SET_DEVICE_DATA GetBusData
;
4652 ULONG PnPCapabilities
;
4653 #endif /* NDIS_WRAPPER */
4657 /* XXX anyone with info on what this really is - please fix or mail me */
4658 #define NDIS_STATS PVOID
4660 struct _NDIS_MINIPORT_BLOCK
{
4662 PNDIS_MINIPORT_BLOCK NextMiniport
;
4663 PNDIS_M_DRIVER_BLOCK DriverHandle
;
4664 NDIS_HANDLE MiniportAdapterContext
;
4665 UNICODE_STRING MiniportName
;
4666 PNDIS_BIND_PATHS BindPaths
;
4667 NDIS_HANDLE OpenQueue
;
4669 NDIS_HANDLE DeviceContext
;
4674 UCHAR AssignedProcessor
;
4676 PNDIS_REQUEST MediaRequest
;
4677 PNDIS_MINIPORT_INTERRUPT Interrupt
;
4680 LIST_ENTRY PacketList
;
4681 PNDIS_PACKET FirstPendingPacket
;
4682 PNDIS_PACKET ReturnPacketsQueue
;
4683 ULONG RequestBuffer
;
4684 PVOID SetMCastBuffer
;
4685 PNDIS_MINIPORT_BLOCK PrimaryMiniport
;
4686 PVOID WrapperContext
;
4687 PVOID BusDataContext
;
4688 ULONG PnPCapabilities
;
4689 PCM_RESOURCE_LIST Resources
;
4690 NDIS_TIMER WakeUpDpcTimer
;
4691 UNICODE_STRING BaseName
;
4692 UNICODE_STRING SymbolicLinkName
;
4693 ULONG CheckForHangSeconds
;
4695 USHORT CFHangCurrentTick
;
4696 NDIS_STATUS ResetStatus
;
4697 NDIS_HANDLE ResetOpen
;
4698 FILTERDBS FilterDbs
;
4699 FILTER_PACKET_INDICATION_HANDLER PacketIndicateHandler
;
4700 NDIS_M_SEND_COMPLETE_HANDLER SendCompleteHandler
;
4701 NDIS_M_SEND_RESOURCES_HANDLER SendResourcesHandler
;
4702 NDIS_M_RESET_COMPLETE_HANDLER ResetCompleteHandler
;
4703 NDIS_MEDIUM MediaType
;
4705 NDIS_INTERFACE_TYPE BusType
;
4706 NDIS_INTERFACE_TYPE AdapterType
;
4707 PDEVICE_OBJECT DeviceObject
;
4708 PDEVICE_OBJECT PhysicalDeviceObject
;
4709 PDEVICE_OBJECT NextDeviceObject
;
4710 PMAP_REGISTER_ENTRY MapRegisters
;
4711 PNDIS_AF_LIST CallMgrAfList
;
4712 PVOID MiniportThread
;
4714 USHORT SetInfoBufLen
;
4715 USHORT MaxSendPackets
;
4716 NDIS_STATUS FakeStatus
;
4718 PUNICODE_STRING pAdapterInstanceName
;
4719 PADAPTER_OBJECT SystemAdapterObject
;
4721 PNDIS_REQUEST PendingRequest
;
4722 UINT MaximumLongAddresses
;
4723 UINT MaximumShortAddresses
;
4724 UINT CurrentLookahead
;
4725 UINT MaximumLookahead
;
4726 W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler
;
4727 W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler
;
4728 W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler
;
4729 W_SEND_PACKETS_HANDLER SendPacketsHandler
;
4730 NDIS_M_START_SENDS DeferredSendHandler
;
4731 ETH_RCV_INDICATE_HANDLER EthRxIndicateHandler
;
4732 TR_RCV_INDICATE_HANDLER TrRxIndicateHandler
;
4733 FDDI_RCV_INDICATE_HANDLER FddiRxIndicateHandler
;
4734 ETH_RCV_COMPLETE_HANDLER EthRxCompleteHandler
;
4735 TR_RCV_COMPLETE_HANDLER TrRxCompleteHandler
;
4736 FDDI_RCV_COMPLETE_HANDLER FddiRxCompleteHandler
;
4737 NDIS_M_STATUS_HANDLER StatusHandler
;
4738 NDIS_M_STS_COMPLETE_HANDLER StatusCompleteHandler
;
4739 NDIS_M_TD_COMPLETE_HANDLER TDCompleteHandler
;
4740 NDIS_M_REQ_COMPLETE_HANDLER QueryCompleteHandler
;
4741 NDIS_M_REQ_COMPLETE_HANDLER SetCompleteHandler
;
4742 NDIS_WM_SEND_COMPLETE_HANDLER WanSendCompleteHandler
;
4743 WAN_RCV_HANDLER WanRcvHandler
;
4744 WAN_RCV_COMPLETE_HANDLER WanRcvCompleteHandler
;
4745 SINGLE_LIST_ENTRY WorkQueue
[NUMBER_OF_WORK_ITEM_TYPES
];
4746 SINGLE_LIST_ENTRY SingleWorkItems
[NUMBER_OF_SINGLE_WORK_ITEMS
];
4747 PNDIS_MAC_BLOCK FakeMac
;
4750 UCHAR ArcnetAddress
;
4753 PNDIS_ARC_BUF ArcBuf
;
4756 ULONG ChannelNumber
;
4760 PCM_RESOURCE_LIST AllocatedResources
;
4761 PCM_RESOURCE_LIST AllocatedResourcesTranslated
;
4762 SINGLE_LIST_ENTRY PatternList
;
4763 NDIS_PNP_CAPABILITIES PMCapabilities
;
4764 DEVICE_CAPABILITIES DeviceCaps
;
4766 DEVICE_POWER_STATE CurrentDeviceState
;
4768 SYSTEM_POWER_STATE WaitWakeSystemState
;
4769 LARGE_INTEGER VcIndex
;
4770 KSPIN_LOCK VcCountLock
;
4771 LIST_ENTRY WmiEnabledVcs
;
4772 PNDIS_GUID pNdisGuidMap
;
4773 PNDIS_GUID pCustomGuidMap
;
4775 USHORT cNdisGuidMap
;
4776 USHORT cCustomGuidMap
;
4777 USHORT CurrentMapRegister
;
4778 PKEVENT AllocationEvent
;
4779 USHORT PhysicalMapRegistersNeeded
;
4780 USHORT SGMapRegistersNeeded
;
4781 ULONG MaximumPhysicalMapping
;
4782 NDIS_TIMER MediaDisconnectTimer
;
4783 USHORT MediaDisconnectTimeOut
;
4784 USHORT InstanceNumber
;
4785 NDIS_EVENT OpenReadyEvent
;
4786 NDIS_PNP_DEVICE_STATE PnPDeviceState
;
4787 NDIS_PNP_DEVICE_STATE OldPnPDeviceState
;
4788 PGET_SET_DEVICE_DATA SetBusData
;
4789 PGET_SET_DEVICE_DATA GetBusData
;
4792 NDIS_STATS NdisStats
;
4793 PNDIS_PACKET IndicatedPacket
[MAXIMUM_PROCESSORS
];
4794 PKEVENT RemoveReadyEvent
;
4795 PKEVENT AllOpensClosedEvent
;
4796 PKEVENT AllRequestsCompletedEvent
;
4798 NDIS_MINIPORT_WORK_ITEM WorkItemBuffer
[NUMBER_OF_SINGLE_WORK_ITEMS
];
4799 PNDIS_MINIPORT_TIMER TimerQueue
;
4800 ULONG DriverVerifyFlags
;
4801 PNDIS_MINIPORT_BLOCK NextGlobalMiniport
;
4802 USHORT InternalResetCount
;
4803 USHORT MiniportResetCount
;
4804 USHORT MediaSenseConnectCount
;
4805 USHORT MediaSenseDisconnectCount
;
4806 PNDIS_PACKET
*xPackets
;
4807 ULONG UserModeOpenReferences
;
4811 /* Handler prototypes for NDIS_OPEN_BLOCK */
4813 typedef NDIS_STATUS
STDCALL_FUNC (*WAN_SEND_HANDLER
)(
4814 IN NDIS_HANDLE MacBindingHandle
,
4815 IN NDIS_HANDLE LinkHandle
,
4818 /* NDIS 4.0 extension */
4820 typedef VOID
STDCALL_FUNC (*SEND_PACKETS_HANDLER
)(
4821 IN NDIS_HANDLE MiniportAdapterContext
,
4822 IN PPNDIS_PACKET PacketArray
,
4823 IN UINT NumberOfPackets
);
4826 struct _NDIS_OPEN_BLOCK
4828 PNDIS_MAC_BLOCK MacHandle
;
4829 NDIS_HANDLE MacBindingHandle
;
4830 PNDIS_ADAPTER_BLOCK AdapterHandle
;
4831 PNDIS_PROTOCOL_BLOCK ProtocolHandle
;
4832 NDIS_HANDLE ProtocolBindingContext
;
4833 PNDIS_OPEN_BLOCK AdapterNextOpen
;
4834 PNDIS_OPEN_BLOCK ProtocolNextOpen
;
4835 PNDIS_OPEN_BLOCK NextGlobalOpen
;
4838 BOOLEAN NoProtRsvdOnRcvPkt
;
4839 BOOLEAN ProcessingOpens
;
4840 PNDIS_STRING BindDeviceName
;
4841 KSPIN_LOCK SpinLock
;
4842 PNDIS_STRING RootDeviceName
;
4846 SEND_HANDLER SendHandler
;
4847 WAN_SEND_HANDLER WanSendHandler
;
4849 TRANSFER_DATA_HANDLER TransferDataHandler
;
4851 SEND_COMPLETE_HANDLER SendCompleteHandler
;
4852 TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler
;
4853 RECEIVE_HANDLER ReceiveHandler
;
4854 RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler
;
4858 RECEIVE_HANDLER PostNt31ReceiveHandler
;
4859 WAN_RECEIVE_HANDLER WanReceiveHandler
;
4861 RECEIVE_COMPLETE_HANDLER PostNt31ReceiveCompleteHandler
;
4863 RECEIVE_PACKET_HANDLER ReceivePacketHandler
;
4864 SEND_PACKETS_HANDLER SendPacketsHandler
;
4866 RESET_HANDLER ResetHandler
;
4867 REQUEST_HANDLER RequestHandler
;
4868 RESET_COMPLETE_HANDLER ResetCompleteHandler
;
4869 STATUS_HANDLER StatusHandler
;
4870 STATUS_COMPLETE_HANDLER StatusCompleteHandler
;
4871 REQUEST_COMPLETE_HANDLER RequestCompleteHandler
;
4876 /* Routines for NDIS miniport drivers */
4879 * VOID NdisMInitializeWrapper(
4880 * OUT PNDIS_HANDLE NdisWrapperHandle,
4881 * IN PVOID SystemSpecific1,
4882 * IN PVOID SystemSpecific2,
4883 * IN PVOID SystemSpecific3);
4885 #define NdisMInitializeWrapper(NdisWrapperHandle, \
4889 NdisInitializeWrapper((NdisWrapperHandle), \
4890 (SystemSpecific1), \
4891 (SystemSpecific2), \
4896 NdisInitializeWrapper(
4897 OUT PNDIS_HANDLE NdisWrapperHandle
,
4898 IN PVOID SystemSpecific1
,
4899 IN PVOID SystemSpecific2
,
4900 IN PVOID SystemSpecific3
);
4904 NdisMAllocateMapRegisters(
4905 IN NDIS_HANDLE MiniportAdapterHandle
,
4907 IN BOOLEAN Dma32BitAddresses
,
4908 IN ULONG PhysicalMapRegistersNeeded
,
4909 IN ULONG MaximumPhysicalMapping
);
4912 * VOID NdisMArcIndicateReceive(
4913 * IN NDIS_HANDLE MiniportAdapterHandle,
4914 * IN PUCHAR HeaderBuffer,
4915 * IN PUCHAR DataBuffer,
4918 #define NdisMArcIndicateReceive(MiniportAdapterHandle, \
4923 ArcFilterDprIndicateReceive( \
4924 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.ArcDB), \
4931 * VOID NdisMArcIndicateReceiveComplete(
4932 * IN NDIS_HANDLE MiniportAdapterHandle);
4934 #define NdisMArcIndicateReceiveComplete(MiniportAdapterHandle) \
4936 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->ArcRxCompleteHandler)( \
4937 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FilterDbs.ArcDB); \
4943 IN NDIS_HANDLE LogHandle
);
4948 IN NDIS_HANDLE MiniportAdapterHandle
,
4950 OUT PNDIS_HANDLE LogHandle
);
4954 NdisMDeregisterAdapterShutdownHandler(
4955 IN NDIS_HANDLE MiniportHandle
);
4959 NdisMDeregisterInterrupt(
4960 IN PNDIS_MINIPORT_INTERRUPT Interrupt
);
4964 NdisMDeregisterIoPortRange(
4965 IN NDIS_HANDLE MiniportAdapterHandle
,
4966 IN UINT InitialPort
,
4967 IN UINT NumberOfPorts
,
4968 IN PVOID PortOffset
);
4971 * VOID NdisMEthIndicateReceive(
4972 * IN NDIS_HANDLE MiniportAdapterHandle,
4973 * IN NDIS_HANDLE MiniportReceiveContext,
4974 * IN PVOID HeaderBuffer,
4975 * IN UINT HeaderBufferSize,
4976 * IN PVOID LookaheadBuffer,
4977 * IN UINT LookaheadBufferSize,
4978 * IN UINT PacketSize);
4980 #define NdisMEthIndicateReceive(MiniportAdapterHandle, \
4981 MiniportReceiveContext, \
4985 LookaheadBufferSize, \
4988 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxIndicateHandler)( \
4989 (MiniportAdapterHandle), \
4990 (MiniportReceiveContext), \
4993 (HeaderBufferSize), \
4994 (LookaheadBuffer), \
4995 (LookaheadBufferSize), \
5001 * NdisMEthIndicateReceiveComplete(
5002 * IN NDIS_HANDLE MiniportAdapterHandle);
5004 #define NdisMEthIndicateReceiveComplete(MiniportAdapterHandle) \
5006 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxCompleteHandler)( \
5007 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FilterDbs.u.EthDB); \
5012 * NdisMFddiIndicateReceive(
5013 * IN NDIS_HANDLE MiniportAdapterHandle,
5014 * IN NDIS_HANDLE MiniportReceiveContext,
5015 * IN PVOID HeaderBuffer,
5016 * IN UINT HeaderBufferSize,
5017 * IN PVOID LookaheadBuffer,
5018 * IN UINT LookaheadBufferSize,
5019 * IN UINT PacketSize);
5021 #define NdisMFddiIndicateReceive(MiniportAdapterHandle, \
5022 MiniportReceiveContext, \
5026 LookaheadBufferSize, \
5029 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxIndicateHandler)( \
5030 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.FddiDB), \
5031 (MiniportReceiveContext), \
5032 (PUCHAR)(HeaderBuffer) + 1, \
5033 (((*(PUCHAR*)(HeaderBuffer)) & 0x40) ? \
5034 FDDI_LENGTH_OF_LONG_ADDRESS : \
5035 FDDI_LENGTH_OF_SHORT_ADDRESS), \
5037 (HeaderBufferSize), \
5038 (LookaheadBuffer), \
5039 (LookaheadBufferSize), \
5045 * NdisMFddiIndicateReceiveComplete(
5046 * IN NDIS_HANDLE MiniportAdapterHandle);
5048 #define NdisMFddiIndicateReceiveComplete(MiniportAdapterHandle) \
5050 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxCompleteHandler)( \
5051 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FilterDbs.FddiDB); \
5057 IN NDIS_HANDLE LogHandle
);
5061 NdisMFreeMapRegisters(
5062 IN NDIS_HANDLE MiniportAdapterHandle
);
5066 NdisMIndicateStatus(
5067 IN NDIS_HANDLE MiniportAdapterHandle
,
5068 IN NDIS_STATUS GeneralStatus
,
5069 IN PVOID StatusBuffer
,
5070 IN UINT StatusBufferSize
);
5074 NdisMIndicateStatusComplete(
5075 IN NDIS_HANDLE MiniportAdapterHandle
);
5080 OUT PVOID
* VirtualAddress
,
5081 IN NDIS_HANDLE MiniportAdapterHandle
,
5082 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
,
5087 NdisMQueryInformationComplete(
5088 IN NDIS_HANDLE MiniportAdapterHandle
,
5089 IN NDIS_STATUS Status
);
5093 NdisMRegisterAdapterShutdownHandler(
5094 IN NDIS_HANDLE MiniportHandle
,
5095 IN PVOID ShutdownContext
,
5096 IN ADAPTER_SHUTDOWN_HANDLER ShutdownHandler
);
5100 NdisMRegisterInterrupt(
5101 OUT PNDIS_MINIPORT_INTERRUPT Interrupt
,
5102 IN NDIS_HANDLE MiniportAdapterHandle
,
5103 IN UINT InterruptVector
,
5104 IN UINT InterruptLevel
,
5105 IN BOOLEAN RequestIsr
,
5106 IN BOOLEAN SharedInterrupt
,
5107 IN NDIS_INTERRUPT_MODE InterruptMode
);
5111 NdisMRegisterIoPortRange(
5112 OUT PVOID
* PortOffset
,
5113 IN NDIS_HANDLE MiniportAdapterHandle
,
5114 IN UINT InitialPort
,
5115 IN UINT NumberOfPorts
);
5119 NdisMRegisterMiniport(
5120 IN NDIS_HANDLE NdisWrapperHandle
,
5121 IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics
,
5122 IN UINT CharacteristicsLength
);
5127 IN PNDIS_MINIPORT_TIMER Timer
,
5128 IN UINT MillisecondsToDelay
);
5132 NdisMInitializeTimer(
5133 IN OUT PNDIS_MINIPORT_TIMER Timer
,
5134 IN NDIS_HANDLE MiniportAdapterHandle
,
5135 IN PNDIS_TIMER_FUNCTION TimerFunction
,
5136 IN PVOID FunctionContext
);
5140 NdisMSetPeriodicTimer(
5141 IN PNDIS_MINIPORT_TIMER Timer
,
5142 IN UINT MillisecondPeriod
);
5147 IN PNDIS_MINIPORT_TIMER Timer
,
5148 OUT PBOOLEAN TimerCancelled
);
5151 #ifndef NDIS_WRAPPER
5155 * NdisMResetComplete(
5156 * IN NDIS_HANDLE MiniportAdapterHandle,
5157 * IN NDIS_STATUS Status,
5158 * IN BOOLEAN AddressingReset);
5160 #define NdisMResetComplete(MiniportAdapterHandle, \
5164 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->ResetCompleteHandler)( \
5165 MiniportAdapterHandle, Status, AddressingReset); \
5170 * NdisMSendComplete(
5171 * IN NDIS_HANDLE MiniportAdapterHandle,
5172 * IN PNDIS_PACKET Packet,
5173 * IN NDIS_STATUS Status);
5175 #define NdisMSendComplete(MiniportAdapterHandle, \
5179 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SendCompleteHandler)( \
5180 MiniportAdapterHandle, Packet, Status); \
5185 * NdisMSendResourcesAvailable(
5186 * IN NDIS_HANDLE MiniportAdapterHandle);
5188 #define NdisMSendResourcesAvailable(MiniportAdapterHandle) \
5190 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SendResourcesHandler)( \
5191 MiniportAdapterHandle); \
5196 * NdisMTransferDataComplete(
5197 * IN NDIS_HANDLE MiniportAdapterHandle,
5198 * IN PNDIS_PACKET Packet,
5199 * IN NDIS_STATUS Status,
5200 * IN UINT BytesTransferred);
5202 #define NdisMTransferDataComplete(MiniportAdapterHandle, \
5207 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TDCompleteHandler)( \
5208 MiniportAdapterHandle, Packet, Status, BytesTransferred) \
5211 #endif /* NDIS_WRAPPER */
5217 IN NDIS_HANDLE MiniportAdapterHandle
,
5218 IN NDIS_HANDLE MiniportAdapterContext
,
5219 IN BOOLEAN BusMaster
,
5220 IN NDIS_INTERFACE_TYPE AdapterType
);
5224 NdisMSetAttributesEx(
5225 IN NDIS_HANDLE MiniportAdapterHandle
,
5226 IN NDIS_HANDLE MiniportAdapterContext
,
5227 IN UINT CheckForHangTimeInSeconds OPTIONAL
,
5228 IN ULONG AttributeFlags
,
5229 IN NDIS_INTERFACE_TYPE AdapterType
);
5233 NdisMSetInformationComplete(
5234 IN NDIS_HANDLE MiniportAdapterHandle
,
5235 IN NDIS_STATUS Status
);
5240 IN ULONG MicrosecondsToSleep
);
5244 NdisMSynchronizeWithInterrupt(
5245 IN PNDIS_MINIPORT_INTERRUPT Interrupt
,
5246 IN PVOID SynchronizeFunction
,
5247 IN PVOID SynchronizeContext
);
5251 * NdisMTrIndicateReceive(
5252 * IN NDIS_HANDLE MiniportAdapterHandle,
5253 * IN NDIS_HANDLE MiniportReceiveContext,
5254 * IN PVOID HeaderBuffer,
5255 * IN UINT HeaderBufferSize,
5256 * IN PVOID LookaheadBuffer,
5257 * IN UINT LookaheadBufferSize,
5258 * IN UINT PacketSize);
5260 #define NdisMTrIndicateReceive(MiniportAdapterHandle, \
5261 MiniportReceiveContext, \
5265 LookaheadBufferSize, \
5268 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxIndicateHandler)( \
5269 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.TrDB), \
5270 (MiniportReceiveContext), \
5273 (HeaderBufferSize), \
5274 (LookaheadBuffer), \
5275 (LookaheadBufferSize), \
5281 * NdisMTrIndicateReceiveComplete(
5282 * IN NDIS_HANDLE MiniportAdapterHandle);
5284 #define NdisMTrIndicateReceiveComplete(MiniportAdapterHandle) \
5286 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxCompleteHandler)( \
5287 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FilterDbs.TrDB); \
5293 IN NDIS_HANDLE LogHandle
,
5295 IN UINT LogBufferSize
);
5299 NdisMQueryAdapterResources(
5300 OUT PNDIS_STATUS Status
,
5301 IN NDIS_HANDLE WrapperConfigurationContext
,
5302 OUT PNDIS_RESOURCE_LIST ResourceList
,
5303 IN OUT PUINT BufferSize
);
5307 NdisTerminateWrapper(
5308 IN NDIS_HANDLE NdisWrapperHandle
,
5309 IN PVOID SystemSpecific
);
5314 IN NDIS_HANDLE MiniportAdapterHandle
,
5315 IN PVOID VirtualAddress
,
5320 /* NDIS intermediate miniport structures */
5322 typedef VOID (*W_MINIPORT_CALLBACK
)(
5323 IN NDIS_HANDLE MiniportAdapterContext
,
5324 IN PVOID CallbackContext
);
5328 /* Routines for intermediate miniport drivers */
5332 NdisIMDeInitializeDeviceInstance(
5333 IN NDIS_HANDLE NdisMiniportHandle
);
5337 NdisIMInitializeDeviceInstance(
5338 IN NDIS_HANDLE DriverHandle
,
5339 IN PNDIS_STRING DeviceInstance
);
5343 NdisIMQueueMiniportCallback(
5344 IN NDIS_HANDLE MiniportAdapterHandle
,
5345 IN W_MINIPORT_CALLBACK CallbackRoutine
,
5346 IN PVOID CallbackContext
);
5350 NdisIMRegisterLayeredMiniport(
5351 IN NDIS_HANDLE NdisWrapperHandle
,
5352 IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics
,
5353 IN UINT CharacteristicsLength
,
5354 OUT PNDIS_HANDLE DriverHandle
);
5359 IN NDIS_HANDLE MiniportAdapterHandle
,
5360 IN NDIS_HANDLE SwitchHandle
);
5364 NdisIMSwitchToMiniport(
5365 IN NDIS_HANDLE MiniportAdapterHandle
,
5366 OUT PNDIS_HANDLE SwitchHandle
);
5369 /* Functions obsoleted by NDIS 5.0 */
5374 IN PNDIS_HANDLE NdisDmaHandle
);
5378 NdisFreeSharedMemory(
5379 IN NDIS_HANDLE NdisAdapterHandle
,
5382 IN PVOID VirtualAddress
,
5383 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
5387 NdisIMQueueMiniportCallback(
5388 IN NDIS_HANDLE MiniportAdapterHandle
,
5389 IN W_MINIPORT_CALLBACK CallbackRoutine
,
5390 IN PVOID CallbackContext
);
5395 IN NDIS_HANDLE MiniportAdapterHandle
,
5396 IN NDIS_HANDLE SwitchHandle
);
5400 NdisIMSwitchToMiniport(
5401 IN NDIS_HANDLE MiniportAdapterHandle
,
5402 OUT PNDIS_HANDLE SwitchHandle
);
5406 NdisSetupDmaTransfer(
5407 OUT PNDIS_STATUS Status
,
5408 IN PNDIS_HANDLE NdisDmaHandle
,
5409 IN PNDIS_BUFFER Buffer
,
5412 IN BOOLEAN WriteToDevice
);
5416 NdisUpcaseUnicodeString(
5417 OUT PUNICODE_STRING DestinationString
,
5418 IN PUNICODE_STRING SourceString
);
5422 NdisUpdateSharedMemory(
5423 IN NDIS_HANDLE NdisAdapterHandle
,
5425 IN PVOID VirtualAddress
,
5426 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
5429 /* Routines for NDIS protocol drivers */
5434 OUT PNDIS_STATUS Status
,
5435 IN NDIS_HANDLE NdisBindingHandle
,
5436 IN PNDIS_REQUEST NdisRequest
);
5441 OUT PNDIS_STATUS Status
,
5442 IN NDIS_HANDLE NdisBindingHandle
);
5447 OUT PNDIS_STATUS Status
,
5448 IN NDIS_HANDLE NdisBindingHandle
,
5449 IN PNDIS_PACKET Packet
);
5454 IN NDIS_HANDLE NdisBindingHandle
,
5455 IN PPNDIS_PACKET PacketArray
,
5456 IN UINT NumberOfPackets
);
5461 OUT PNDIS_STATUS Status
,
5462 IN NDIS_HANDLE NdisBindingHandle
,
5463 IN NDIS_HANDLE MacReceiveContext
,
5465 IN UINT BytesToTransfer
,
5466 IN OUT PNDIS_PACKET Packet
,
5467 OUT PUINT BytesTransferred
);
5469 #define NdisTransferData(Status, \
5470 NdisBindingHandle, \
5471 MacReceiveContext, \
5477 *(Status) = (((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->TransferDataHandler)( \
5478 ((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->MacBindingHandle, \
5479 (MacReceiveContext), \
5481 (BytesToTransfer), \
5483 (BytesTransferred)); \
5491 OUT PNDIS_STATUS Status
,
5492 IN NDIS_HANDLE NdisBindingHandle
);
5496 NdisCompleteBindAdapter(
5497 IN NDIS_HANDLE BindAdapterContext
,
5498 IN NDIS_STATUS Status
,
5499 IN NDIS_STATUS OpenStatus
);
5503 NdisCompleteUnbindAdapter(
5504 IN NDIS_HANDLE UnbindAdapterContext
,
5505 IN NDIS_STATUS Status
);
5509 NdisDeregisterProtocol(
5510 OUT PNDIS_STATUS Status
,
5511 IN NDIS_HANDLE NdisProtocolHandle
);
5516 OUT PNDIS_STATUS Status
,
5517 OUT PNDIS_STATUS OpenErrorStatus
,
5518 OUT PNDIS_HANDLE NdisBindingHandle
,
5519 OUT PUINT SelectedMediumIndex
,
5520 IN PNDIS_MEDIUM MediumArray
,
5521 IN UINT MediumArraySize
,
5522 IN NDIS_HANDLE NdisProtocolHandle
,
5523 IN NDIS_HANDLE ProtocolBindingContext
,
5524 IN PNDIS_STRING AdapterName
,
5525 IN UINT OpenOptions
,
5526 IN PSTRING AddressingInformation
);
5530 NdisOpenProtocolConfiguration(
5531 OUT PNDIS_STATUS Status
,
5532 OUT PNDIS_HANDLE ConfigurationHandle
,
5533 IN PNDIS_STRING ProtocolSection
);
5537 NdisQueryReceiveInformation(
5538 IN NDIS_HANDLE NdisBindingHandle
,
5539 IN NDIS_HANDLE MacContext
,
5540 OUT PLONGLONG TimeSent OPTIONAL
,
5541 OUT PLONGLONG TimeReceived OPTIONAL
,
5544 OUT PUINT SizeNeeded
);
5548 NdisRegisterProtocol(
5549 OUT PNDIS_STATUS Status
,
5550 OUT PNDIS_HANDLE NdisProtocolHandle
,
5551 IN PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics
,
5552 IN UINT CharacteristicsLength
);
5557 IN PNDIS_PACKET
*PacketsToReturn
,
5558 IN UINT NumberOfPackets
);
5562 #endif /* __cplusplus */
5564 #endif /* __NDIS_H */
5569 * XXX - these macros are disabled for the moment due to the fact that there are definitions for them elsewhere.
5570 * We will have to decide which to keep; we don't need both (no BINARY_COMPATIBLE)
5573 #define NdisAdjustBufferLength(Buffer, \
5576 (Buffer)->ByteCount = (Length); \
5579 #define NDIS_BUFFER_TO_SPAN_PAGES(Buffer) \
5581 MmGetMdlByteCount(Buffer) == 0 ? \
5583 ADDRESS_AND_SIZE_TO_SPAN_PAGES( \
5584 MmGetMdlVirtualAddress(Buffer), \
5585 MmGetMdlByteCount(Buffer)) \
5588 #define NdisFreeBuffer(Buffer) \
5590 IoFreeMdl(Buffer) /* ??? */ \
5593 #define NdisGetBufferPhysicalArraySize(Buffer, \
5598 #define NdisGetFirstBufferFromPacket(Packet, \
5601 FirstBufferLength, \
5602 TotalBufferLength) \
5604 PNDIS_BUFFER _Buffer; \
5606 _Buffer = (Packet)->Private.Head; \
5607 *(FirstBuffer) = _Buffer; \
5608 *(FirstBufferVA) = MmGetMdlVirtualAddress(_Buffer); \
5609 if (_Buffer != NULL) { \
5610 *(FirstBufferLength) = MmGetMdlByteCount(_Buffer); \
5611 _Buffer = _Buffer->Next; \
5613 *(FirstBufferLength) = 0; \
5614 *(TotalBufferLength) = *(FirstBufferLength); \
5615 while (_Buffer != NULL) { \
5616 *(TotalBufferLength) += MmGetMdlByteCount(_Buffer); \
5617 _Buffer = _Buffer->Next; \
5621 #define NdisQueryBuffer(Buffer, \
5625 if (VirtualAddress) \
5626 *((PVOID*)VirtualAddress) = MmGetSystemAddressForMdl(Buffer); \
5628 *((PUINT)Length) = MmGetMdlByteCount(Buffer); \
5631 #define NdisQueryBufferOffset(Buffer, \
5635 *((PUINT)Offset) = MmGetMdlByteOffset(Buffer); \
5636 *((PUINT)Length) = MmGetMdlByteCount(Buffer); \
5639 #define NdisAnsiStringToUnicodeString(DestinationString, \
5641 RtlAnsiStringToUnicodeString((DestinationString), (SourceString), FALSE)
5643 #define NdisEqualString(String1, \
5646 RtlEqualUnicodeString((String1), (String2), (CaseInsensitive))
5648 #define NdisInitAnsiString(DestinationString, \
5650 RtlInitString((DestinationString), (SourceString))
5652 #define NdisInitUnicodeString(DestinationString, \
5654 RtlInitUnicodeString((DestinationString), (SourceString))
5656 #define NdisUnicodeStringToAnsiString(DestinationString, \
5658 RtlUnicodeStringToAnsiString((DestinationString), (SourceString), FALSE)
5660 #define NdisRequest(Status, \
5661 NdisBindingHandle, \
5664 *(Status) = (((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->RequestHandler)( \
5665 ((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->MacBindingHandle, (NdisRequest)); \
5668 #define NdisReset(Status, \
5669 NdisBindingHandle) \
5671 *(Status) = (((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->ResetHandler)( \
5672 ((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->MacBindingHandle); \
5675 #define NdisSend(Status, \
5676 NdisBindingHandle, \
5679 *(Status) = (((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->u1.SendHandler)( \
5680 ((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->MacBindingHandle, (Packet)); \
5683 #define NdisSendPackets(NdisBindingHandle, \
5687 (((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->SendPacketsHandler)( \
5688 (PNDIS_OPEN_BLOCK)(NdisBindingHandle), (PacketArray), (NumberOfPackets)); \
5695 #endif /* __NDIS_H */