/* * ndis.h Network Driver Interface Specification (NDIS) functions * * ========================================================================= * * Open Watcom Project * * Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved. * * This file is automatically generated. Do not edit directly. * * ========================================================================= */ #ifndef _NDIS_ #define _NDIS_ #ifndef _ENABLE_AUTODEPEND #pragma read_only_file; #endif #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif #ifndef NDIS_WRAPPER #ifdef NDIS_MINIPORT_DRIVER #if defined( NDIS620_MINIPORT ) #define NDIS_MINIPORT_MAJOR_VERSION 6 #define NDIS_MINIPORT_MINOR_VERSION 20 #elif defined( NDIS61_MINIPORT ) #define NDIS_MINIPORT_MAJOR_VERSION 6 #define NDIS_MINIPORT_MINOR_VERSION 1 #elif defined( NDIS60_MINIPORT ) #define NDIS_MINIPORT_MAJOR_VERSION 6 #define NDIS_MINIPORT_MINOR_VERSION 0 #elif defined( NDIS51_MINIPORT ) #define NDIS_MINIPORT_MAJOR_VERSION 5 #define NDIS_MINIPORT_MINOR_VERSION 1 #elif defined( NDIS50_MINIPORT ) #define NDIS_MINIPORT_MAJOR_VERSION 5 #define NDIS_MINIPORT_MINOR_VERSION 0 #endif #endif #if defined( NDIS620 ) #define NDIS_PROTOCOL_MAJOR_VERSION 6 #define NDIS_PROTOCOL_MINOR_VERSION 20 #define NDIS_FILTER_MAJOR_VERSION 6 #define NDIS_FILTER_MINOR_VERSION 20 #elif defined( NDIS61 ) #define NDIS_PROTOCOL_MAJOR_VERSION 6 #define NDIS_PROTOCOL_MINOR_VERSION 1 #define NDIS_FILTER_MAJOR_VERSION 6 #define NDIS_FILTER_MINOR_VERSION 1 #elif defined( NDIS60 ) #define NDIS_PROTOCOL_MAJOR_VERSION 6 #define NDIS_PROTOCOL_MINOR_VERSION 0 #define NDIS_FILTER_MAJOR_VERSION 6 #define NDIS_FILTER_MINOR_VERSION 0 #elif defined( NDIS51 ) #define NDIS_PROTOCOL_MAJOR_VERSION 5 #define NDIS_PROTOCOL_MINOR_VERSION 1 #elif defined( NDIS50 ) #define NDIS_PROTOCOL_MAJOR_VERSION 5 #define NDIS_PROTOCOL_MINOR_VERSION 0 #elif defined( NDIS40 ) #define NDIS_PROTOCOL_MAJOR_VERSION 4 #define NDIS_PROTOCOL_MINOR_VERSION 0 #else #define NDIS40 #define NDIS_PROTOCOL_MAJOR_VERSION 4 #define NDIS_PROTOCOL_MINOR_VERSION 0 #endif #endif #ifndef NDIS_LEGACY_MINIPORT #if defined( NDIS_MINIPORT_DRIVER ) && ((NDIS_MINIPORT_MAJOR_VERSION < 6) || \ NDIS_WRAPPER) #define NDIS_LEGACY_MINIPORT 1 #else #define NDIS_LEGACY_MINIPORT 0 #endif #endif #ifndef NDIS_LEGACY_PROTOCOL #if defined( NDIS_PROTOCOL_MAJOR_VERSION ) && ((NDIS_PROTOCOL_MAJOR_VERSION < 6) || \ NDIS_WRAPPER) #define NDIS_LEGACY_PROTOCOL 1 #else #define NDIS_LEGACY_PROTOCOL 0 #endif #endif #ifndef NDIS_LEGACY_DRIVER #if NDIS_LEGACY_MINIPORT || NDIS_LEGACY_PROTOCOL || NDIS_WRAPPER #define NDIS_LEGACY_DRIVER 1 #else #define NDIS_LEGACY_DRIVER 0 #endif #endif #ifndef NDIS_SUPPORT_NDIS6 #if (defined( NDIS_MINIPORT_MAJOR_VERSION ) && \ (NDIS_MINIPORT_MAJOR_VERSION >= 6)) || defined( NDIS60 ) || NDIS_WRAPPER #define NDIS_SUPPORT_NDIS6 1 #else #define NDIS_SUPPORT_NDIS6 0 #endif #endif #ifndef NDIS_SUPPORT_NDIS61 #if (defined( NDIS_MINIPORT_MAJOR_VERSION ) && \ (NDIS_MINIPORT_MAJOR_VERSION >= 6) && defined( NDIS_MINIPORT_MINOR_VERSION ) && \ (NDIS_MINIPORT_MINOR_VERSION >= 1)) || defined( NDIS61 ) || NDIS_WRAPPER #define NDIS_SUPPORT_NDIS61 1 #else #define NDIS_SUPPORT_NDIS61 0 #endif #endif #ifndef NDIS_SUPPORT_NDIS620 #if (defined( NDIS_MINIPORT_MAJOR_VERSION ) && \ (NDIS_MINIPORT_MAJOR_VERSION >= 6) && defined( NDIS_MINIPORT_MINOR_VERSION ) && \ (NDIS_MINIPORT_MINOR_VERSION >= 20)) || defined( NDIS620 ) || NDIS_WRAPPER #define NDIS_SUPPORT_NDIS620 1 #else #define NDIS_SUPPORT_NDIS620 0 #endif #endif #if NDIS_SUPPORT_NDIS620 #undef NDIS_SUPPORT_NDIS61 #define NDIS_SUPPORT_NDIS61 1 #endif #if NDIS_SUPPORT_NDIS61 #undef NDIS_SUPPORT_NDIS6 #define NDIS_SUPPORT_NDIS6 1 #endif #if defined( NDIS61_MINIPORT ) || defined( NDIS60_MINIPORT ) || defined( NDIS61 ) || \ defined( NDIS60 ) || defined( NDIS_WRAPPER ) || defined( NDIS_LEGACY_DRIVER ) #define NDIS_SUPPORT_60_COMPATIBLE_API 1 #else #define NDIS_SUPPORT_60_COMPATIBLE_API 0 #endif /* Macro to specify NDIS functions */ #ifdef NDIS_WRAPPER #define EXPORT #else #define EXPORT DECLSPEC_IMPORT #endif /* Primitive data types */ typedef signed int INT; typedef signed int *PINT; typedef unsigned int UINT; typedef unsigned int *PUINT; typedef UNICODE_STRING NDIS_STRING; typedef UNICODE_STRING *PNDIS_STRING; typedef PVOID NDIS_HANDLE; typedef PVOID *PNDIS_HANDLE; typedef int NDIS_STATUS; typedef int *PNDIS_STATUS; typedef CM_MCA_POS_DATA NDIS_MCA_POS_DATA; typedef CM_MCA_POS_DATA *PNDIS_MCA_POS_DATA; typedef CM_EISA_SLOT_INFORMATION NDIS_EISA_SLOT_INFORMATION; typedef CM_EISA_SLOT_INFORMATION *PNDIS_EISA_SLOT_INFORMATION; typedef CM_EISA_FUNCTION_INFORMATION NDIS_EISA_FUNCTION_INFORMATION; typedef CM_EISA_FUNCTION_INFORMATION *PNDIS_EISA_FUNCTION_INFORMATION; typedef KINTERRUPT_MODE NDIS_INTERRUPT_MODE; typedef KINTERRUPT_MODE *PNDIS_INTERRUPT_MODE; typedef CM_PARTIAL_RESOURCE_LIST NDIS_RESOURCE_LIST; typedef CM_PARTIAL_RESOURCE_LIST *PNDIS_RESOURCE_LIST; typedef MDL NDIS_BUFFER; typedef MDL *PNDIS_BUFFER; typedef ULONG NDIS_AF; typedef ULONG *PNDIS_AF; typedef PHYSICAL_ADDRESS NDIS_PHYSICAL_ADDRESS; typedef PHYSICAL_ADDRESS *PNDIS_PHYSICAL_ADDRESS; typedef UCHAR NDIS_DMA_SIZE; #if NDIS_LEGACY_DRIVER typedef NDIS_HANDLE PNDIS_PACKET_POOL; typedef UINT IEEE8021PPRIORITY; #endif #if !NDIS_LEGACY_DRIVER typedef struct _NDIS_CALL_MANAGER_CHARACTERISTICS *PNDIS_CALL_MANAGER_CHARACTERISTICS; #endif #if NDIS_SUPPORT_NDIS6 typedef USHORT NET_FRAME_TYPE; typedef USHORT *PNET_FRAME_TYPE; typedef KMUTEX NDIS_MUTEX; typedef KMUTEX *PNDIS_MUTEX; #endif #if NDIS_SUPPORT_NDIS61 typedef ULONG IPSEC_OFFLOAD_V2_SPI_TYPE; #endif /* NDIS error code data type */ #define NDIS_ERROR_CODE ULONG #include #if NDIS_SUPPORT_NDIS6 #include #endif /* Macro to make NDIS string constants */ #define NDIS_STRING_CONST( x ) { sizeof( L##x ) - 2, sizeof( L##x ), L##x } /* Macro to make NDIS physical addresses */ #define NDIS_PHYSICAL_ADDRESS_CONST( p1, p2 ) { (ULONG)(p1), (LONG)(p2) } /* NDIS interrupt modes */ #define NdisInterruptLatched Latched #define NdisInterruptLevelSensitive LevelSensitive /* NDIS packet flags */ #if NDIS_LEGACY_DRIVER #define NDIS_FLAGS_PROTOCOL_ID_MASK 0x0000000FL #define NDIS_FLAGS_MULTICAST_PACKET 0x00000010L #define NDIS_FLAGS_DONT_LOOPBACK 0x00000080L #define NDIS_FLAGS_IS_LOOPBACK_PACKET 0x00000100L #define NDIS_FLAGS_LOOPBACK_ONLY 0x00000200L #define NDIS_FLAGS_DOUBLE_BUFFERED 0x00000800L #define NDIS_FLAGS_SENT_AT_DPC 0x00001000L #define NDIS_FLAGS_USES_SG_BUFFER_LIST 0x00002000L #define NDIS_FLAGS_USES_ORIGINAL_PACKET 0x00004000L #define NDIS_FLAGS_PADDED 0x00010000L #define NDIS_FLAGS_XLATE_AT_TOP 0x00020000L #endif /* NDIS reserved packet flags */ #if NDIS_LEGACY_DRIVER #define fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO 0x40 #define fPACKET_ALLOCATED_BY_NDIS 0x80 #endif /* NDIS address families */ #define CO_ADDRESS_FAMILY_Q2931 0x00000001L #define CO_ADDRESS_FAMILY_PSCHED 0x00000002L #define CO_ADDRESS_FAMILY_L2TP 0x00000003L #define CO_ADDRESS_FAMILY_IRDA 0x00000004L #define CO_ADDRESS_FAMILY_1394 0x00000005L #define CO_ADDRESS_FAMILY_PPP 0x00000006L #define CO_ADDRESS_FAMILY_INFINIBAND 0x00000007L #define CO_ADDRESS_FAMILY_TAPI 0x00000800L #define CO_ADDRESS_FAMILY_TAPI_PROXY 0x00000801L #define CO_ADDRESS_FAMILY_PROXY 0x80000000L /* NDIS memory types */ #define NDIS_MEMORY_CONTIGUOUS 0x00000001L #define NDIS_MEMORY_NONCACHED 0x00000002L /* NDIS open flags */ #define NDIS_OPEN_RECEIVE_NOT_REENTRANT 0x00000001L /* NDIS status codes */ #define NDIS_STATUS_ONLINE 0x40010003L #define NDIS_STATUS_RESET_START 0x40010004L #define NDIS_STATUS_RESET_END 0x40010005L #define NDIS_STATUS_RING_STATUS 0x40010006L #define NDIS_STATUS_CLOSED 0x40010007L #define NDIS_STATUS_WAN_LINE_UP 0x40010008L #define NDIS_STATUS_WAN_LINE_DOWN 0x40010009L #define NDIS_STATUS_WAN_FRAGMENT 0x4001000AL #define NDIS_STATUS_MEDIA_CONNECT 0x4001000BL #define NDIS_STATUS_MEDIA_DISCONNECT 0x4001000CL #define NDIS_STATUS_HARDWARE_LINE_UP 0x4001000DL #define NDIS_STATUS_HARDWARE_LINE_DOWN 0x4001000EL #define NDIS_STATUS_INTERFACE_UP 0x4001000FL #define NDIS_STATUS_INTERFACE_DOWN 0x40010010L #define NDIS_STATUS_MEDIA_BUSY 0x40010011L #define NDIS_STATUS_MEDIA_SPECIFIC_INDICATION 0x40010012L #define NDIS_STATUS_WW_INDICATION \ NDIS_STATUS_MEDIA_SPECIFIC_INDICATION #define NDIS_STATUS_LINK_SPEED_CHANGE 0x40010013L #define NDIS_STATUS_WAN_GET_STATS 0x40010014L #define NDIS_STATUS_WAN_CO_FRAGMENT 0x40010015L #define NDIS_STATUS_WAN_CO_LINKPARAMS 0x40010016L #define NDIS_STATUS_WAN_CO_MTULINKPARAMS 0x40010025L #if NDIS_SUPPORT_NDIS6 #define NDIS_STATUS_LINK_STATE 0x40010017L #define NDIS_STATUS_NETWORK_CHANGE 0x40010018L #define NDIS_STATUS_MEDIA_SPECIFIC_INDICATION_EX 0x40010019L #define NDIS_STATUS_PORT_STATE 0x40010022L #define NDIS_STATUS_OPER_STATUS 0x40010023L #define NDIS_STATUS_PACKET_FILTER 0x40010024L #define NDIS_STATUS_IP_OPER_STATUS 0x40010026L #define NDIS_STATUS_OFFLOAD_PAUSE 0x40020001L #define NDIS_STATUS_UPLOAD_ALL 0x40020002L #define NDIS_STATUS_OFFLOAD_RESUME 0x40020003L #define NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS 0x40020004L #define NDIS_STATUS_OFFLOAD_STATE_INVALID 0x40020005L #define NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG 0x40020006L #define NDIS_STATUS_TASK_OFFLOAD_HARDWARE_CAPABILITIES 0x40020007L #define NDIS_STATUS_OFFLOAD_ENCAPSULATION_CHANGE 0x40020008L #define NDIS_STATUS_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES 0x4002000BL #define NDIS_STATUS_DOT11_SCAN_CONFIRM 0x40030000L #define NDIS_STATUS_DOT11_MPDU_MAX_LENGTH_CHANGED 0x40030001L #define NDIS_STATUS_DOT11_ASSOCIATION_START 0x40030002L #define NDIS_STATUS_DOT11_ASSOCIATION_COMPLETION 0x40030003L #define NDIS_STATUS_DOT11_CONNECTION_START 0x40030004L #define NDIS_STATUS_DOT11_CONNECTION_COMPLETION 0x40030005L #define NDIS_STATUS_DOT11_ROAMING_START 0x40030006L #define NDIS_STATUS_DOT11_ROAMING_COMPLETION 0x40030007L #define NDIS_STATUS_DOT11_DISASSOCIATION 0x40030008L #define NDIS_STATUS_DOT11_TKIPMIC_FAILURE 0x40030009L #define NDIS_STATUS_DOT11_PMKID_CANDIDATE_LIST 0x4003000AL #define NDIS_STATUS_DOT11_PHY_STATE_CHANGED 0x4003000BL #define NDIS_STATUS_DOT11_LINK_QUALITY 0x4003000CL #define NDIS_STATUS_DOT11_INCOMING_ASSOC_STARTED 0x4003000DL #define NDIS_STATUS_DOT11_INCOMING_ASSOC_REQUEST_RECEIVED 0x4003000EL #define NDIS_STATUS_DOT11_INCOMING_ASSOC_COMPLETION 0x4003000FL #define NDIS_STATUS_DOT11_STOP_AP 0x40030010L #define NDIS_STATUS_DOT11_PHY_FREQUENCY_ADOPTED 0x40030011L #define NDIS_STATUS_DOT11_CAN_SUSTAIN_AP 0x40030012L #define NDIS_STATUS_WWAN_DEVICE_CAPS 0x40041000L #define NDIS_STATUS_WWAN_READY_INFO 0x40041001L #define NDIS_STATUS_WWAN_RADIO_STATE 0x40041002L #define NDIS_STATUS_WWAN_PIN_INFO 0x40041003L #define NDIS_STATUS_WWAN_PIN_LIST 0x40041004L #define NDIS_STATUS_WWAN_HOME_PROVIDER 0x40041005L #define NDIS_STATUS_WWAN_PREFERRED_PROVIDERS 0x40041006L #define NDIS_STATUS_WWAN_VISIBLE_PROVIDERS 0x40041007L #define NDIS_STATUS_WWAN_REGISTER_STATE 0x40041008L #define NDIS_STATUS_WWAN_PACKET_SERVICE 0x40041009L #define NDIS_STATUS_WWAN_SIGNAL_STATE 0x4004100AL #define NDIS_STATUS_WWAN_CONTEXT_STATE 0x4004100BL #define NDIS_STATUS_WWAN_PROVISIONED_CONTEXTS 0x4004100CL #define NDIS_STATUS_WWAN_SERVICE_ACTIVATION 0x4004100DL #define NDIS_STATUS_WWAN_SMS_CONFIGURATION 0x4004100EL #define NDIS_STATUS_WWAN_SMS_RECEIVE 0x4004100FL #define NDIS_STATUS_WWAN_SMS_SEND 0x40041010L #define NDIS_STATUS_WWAN_SMS_DELETE 0x40041011L #define NDIS_STATUS_WWAN_SMS_STATUS 0x40041012L #define NDIS_STATUS_WWAN_DNS_ADDRESS 0x40041013L #define NDIS_STATUS_WWAN_VENDOR_SPECIFIC 0x40043000L #endif #if NDIS_SUPPORT_NDIS61 #define NDIS_STATUS_HD_SPLIT_CURRENT_CONFIG 0x4002000CL #endif #if NDIS_SUPPORT_NDIS620 #define NDIS_STATUS_RECEIVE_QUEUE_STATE 0x4002000DL #define NDIS_STATUS_PM_WOL_PATTERN_REJECTED 0x40030051L #define NDIS_STATUS_PM_OFFLOAD_REJECTED 0x40030052L #define NDIS_STATUS_PM_CAPABILITIES_CHANGE 0x40030053L #endif #define NDIS_STATUS_SUCCESS STATUS_SUCCESS #define NDIS_STATUS_PENDING STATUS_PENDING #define NDIS_STATUS_NOT_RECOGNIZED 0x00010001L #define NDIS_STATUS_NOT_COPIED 0x00010002L #define NDIS_STATUS_NOT_ACCEPTED 0x00010003L #define NDIS_STATUS_CALL_ACTIVE 0x00010007L #define NDIS_STATUS_INDICATION_REQUIRED STATUS_NDIS_INDICATION_REQUIRED #define NDIS_STATUS_NOT_RESETTABLE 0x80010001L #define NDIS_STATUS_SOFT_ERRORS 0x80010003L #define NDIS_STATUS_HARD_ERRORS 0x80010004L #define NDIS_STATUS_BUFFER_OVERFLOW STATUS_BUFFER_OVERFLOW #define NDIS_STATUS_FAILURE STATUS_UNSUCCESSFUL #define NDIS_STATUS_RESOURCES STATUS_INSUFFICIENT_RESOURCES #define NDIS_STATUS_CLOSING 0xC0010002L #define NDIS_STATUS_BAD_VERSION 0xC0010004L #define NDIS_STATUS_BAD_CHARACTERISTICS 0xC0010005L #define NDIS_STATUS_ADAPTER_NOT_FOUND 0xC0010006L #define NDIS_STATUS_OPEN_FAILED 0xC0010007L #define NDIS_STATUS_DEVICE_FAILED 0xC0010008L #define NDIS_STATUS_MULTICAST_FULL 0xC0010009L #define NDIS_STATUS_MULTICAST_EXISTS 0xC001000AL #define NDIS_STATUS_MULTICAST_NOT_FOUND 0xC001000BL #define NDIS_STATUS_REQUEST_ABORTED 0xC001000CL #define NDIS_STATUS_RESET_IN_PROGRESS 0xC001000DL #define NDIS_STATUS_CLOSING_INDICATING 0xC001000EL #define NDIS_STATUS_NOT_SUPPORTED STATUS_NOT_SUPPORTED #define NDIS_STATUS_INVALID_PACKET 0xC001000FL #define NDIS_STATUS_OPEN_LIST_FULL 0xC0010010L #define NDIS_STATUS_ADAPTER_NOT_READY 0xC0010011L #define NDIS_STATUS_ADAPTER_NOT_OPEN 0xC0010012L #define NDIS_STATUS_NOT_INDICATING 0xC0010013L #define NDIS_STATUS_INVALID_LENGTH 0xC0010014L #define NDIS_STATUS_INVALID_DATA 0xC0010015L #define NDIS_STATUS_BUFFER_TOO_SHORT 0xC0010016L #define NDIS_STATUS_INVALID_OID 0xC0010017L #define NDIS_STATUS_ADAPTER_REMOVED 0xC0010018L #define NDIS_STATUS_UNSUPPORTED_MEDIA 0xC0010019L #define NDIS_STATUS_GROUP_ADDRESS_IN_USE 0xC001001AL #define NDIS_STATUS_FILE_NOT_FOUND 0xC001001BL #define NDIS_STATUS_ERROR_READING_FILE 0xC001001CL #define NDIS_STATUS_ALREADY_MAPPED 0xC001001DL #define NDIS_STATUS_RESOURCE_CONFLICT 0xC001001EL #define NDIS_STATUS_NO_CABLE 0xC001001FL #define NDIS_STATUS_INVALID_DEVICE_REQUEST STATUS_INVALID_DEVICE_REQUEST #define NDIS_STATUS_NETWORK_UNREACHABLE STATUS_NETWORK_UNREACHABLE #define NDIS_STATUS_INVALID_SAP 0xC0010020L #define NDIS_STATUS_SAP_IN_USE 0xC0010021L #define NDIS_STATUS_INVALID_ADDRESS 0xC0010022L #define NDIS_STATUS_VC_NOT_ACTIVATED 0xC0010023L #define NDIS_STATUS_DEST_OUT_OF_ORDER 0xC0010024L #define NDIS_STATUS_VC_NOT_AVAILABLE 0xC0010025L #define NDIS_STATUS_CELLRATE_NOT_AVAILABLE 0xC0010026L #define NDIS_STATUS_INCOMPATABLE_QOS 0xC0010027L #define NDIS_STATUS_AAL_PARAMS_UNSUPPORTED 0xC0010028L #define NDIS_STATUS_NO_ROUTE_TO_DESTINATION 0xC0010029L #define NDIS_STATUS_TOKEN_RING_OPEN_ERROR 0xC0011000L #if NDIS_SUPPORT_NDIS6 #define NDIS_STATUS_SEND_ABORTED STATUS_NDIS_REQUEST_ABORTED #define NDIS_STATUS_PAUSED STATUS_NDIS_PAUSED #define NDIS_STATUS_INTERFACE_NOT_FOUND STATUS_NDIS_INTERFACE_NOT_FOUND #define NDIS_STATUS_INVALID_PARAMETER STATUS_INVALID_PARAMETER #define NDIS_STATUS_UNSUPPORTED_REVISION STATUS_NDIS_UNSUPPORTED_REVISION #define NDIS_STATUS_INVALID_PORT STATUS_NDIS_INVALID_PORT #define NDIS_STATUS_INVALID_PORT_STATE STATUS_NDIS_INVALID_PORT_STATE #define NDIS_STATUS_INVALID_STATE STATUS_INVALID_DEVICE_STATE #define NDIS_STATUS_MEDIA_DISCONNECTED STATUS_NDIS_MEDIA_DISCONNECTED #define NDIS_STATUS_LOW_POWER_STATE STATUS_NDIS_LOW_POWER_STATE #define NDIS_STATUS_DOT11_AUTO_CONFIG_ENABLED \ STATUS_NDIS_DOT11_AUTO_CONFIG_ENABLED #define NDIS_STATUS_DOT11_MEDIA_IN_USE STATUS_NDIS_DOT11_MEDIA_IN_USE #define NDIS_STATUS_DOT11_POWER_STATE_INVALID \ STATUS_NDIS_DOT11_POWER_STATE_INVALID #define NDIS_STATUS_UPLOAD_IN_PROGRESS 0xC0231001L #define NDIS_STATUS_REQUEST_UPLOAD 0xC0231002L #define NDIS_STATUS_UPLOAD_REQUESTED 0xC0231003L #define NDIS_STATUS_OFFLOAD_TCP_ENTRIES 0xC0231004L #define NDIS_STATUS_OFFLOAD_PATH_ENTRIES 0xC0231005L #define NDIS_STATUS_OFFLOAD_NEIGHBOR_ENTRIES 0xC0231006L #define NDIS_STATUS_OFFLOAD_IP_ADDRESS_ENTRIES 0xC0231007L #define NDIS_STATUS_OFFLOAD_HW_ADDRESS_ENTRIES 0xC0231008L #define NDIS_STATUS_OFFLOAD_VLAN_ENTRIES 0xC0231009L #define NDIS_STATUS_OFFLOAD_TCP_XMIT_BUFFER 0xC023100AL #define NDIS_STATUS_OFFLOAD_TCP_RCV_BUFFER 0xC023100BL #define NDIS_STATUS_OFFLOAD_TCP_RCV_WINDOW 0xC023100CL #define NDIS_STATUS_OFFLOAD_VLAN_MISMATCH 0xC023100DL #define NDIS_STATUS_OFFLOAD_DATA_NOT_ACCEPTED 0xC023100EL #define NDIS_STATUS_OFFLOAD_POLICY 0xC023100FL #define NDIS_STATUS_OFFLOAD_DATA_PARTIALLY_ACCEPTED 0xC0231010L #define NDIS_STATUS_OFFLOAD_REQUEST_RESET 0xC0231011L #endif #if NDIS_SUPPORT_NDIS620 #define NDIS_STATUS_PM_WOL_PATTERN_LIST_FULL \ STATUS_NDIS_PM_WOL_PATTERN_LIST_FULL #define NDIS_STATUS_PM_PROTOCOL_OFFLOAD_LIST_FULL \ STATUS_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL #define NDIS_STATUS_OFFLOAD_CONNECTION_REJECTED \ STATUS_NDIS_OFFLOAD_CONNECTION_REJECTED #endif /* NDIS error codes */ #define NDIS_ERROR_CODE_RESOURCE_CONFLICT EVENT_NDIS_RESOURCE_CONFLICT #define NDIS_ERROR_CODE_OUT_OF_RESOURCES EVENT_NDIS_OUT_OF_RESOURCE #define NDIS_ERROR_CODE_HARDWARE_FAILURE EVENT_NDIS_HARDWARE_FAILURE #define NDIS_ERROR_CODE_ADAPTER_NOT_FOUND EVENT_NDIS_ADAPTER_NOT_FOUND #define NDIS_ERROR_CODE_INTERRUPT_CONNECT EVENT_NDIS_INTERRUPT_CONNECT #define NDIS_ERROR_CODE_DRIVER_FAILURE EVENT_NDIS_DRIVER_FAILURE #define NDIS_ERROR_CODE_BAD_VERSION EVENT_NDIS_BAD_VERSION #define NDIS_ERROR_CODE_TIMEOUT EVENT_NDIS_TIMEOUT #define NDIS_ERROR_CODE_NETWORK_ADDRESS EVENT_NDIS_NETWORK_ADDRESS #define NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION EVENT_NDIS_UNSUPPORTED_CONFIGURATION #define NDIS_ERROR_CODE_INVALID_VALUE_FROM_ADAPTER EVENT_NDIS_INVALID_VALUE_FROM_ADAPTER #define NDIS_ERROR_CODE_MISSING_CONFIGURATION_PARAMETER \ EVENT_NDIS_MISSING_CONFIGURATION_PARAMETER #define NDIS_ERROR_CODE_BAD_IO_BASE_ADDRESS EVENT_NDIS_BAD_IO_BASE_ADDRESS #define NDIS_ERROR_CODE_RECEIVE_SPACE_SMALL EVENT_NDIS_RECEIVE_SPACE_SMALL #define NDIS_ERROR_CODE_ADAPTER_DISABLED EVENT_NDIS_ADAPTER_DISABLED /* NDIS read/write lock flags */ #if NDIS_SUPPORT_NDIS620 #define NDIS_RWL_AT_DISPATCH_LEVEL 1 #endif /* NDIS buffer macros */ #define NDIS_BUFFER_TO_SPAN_PAGES( x ) \ (MmGetMdlByteCount( x ) == 0 ? 1 : (ADDRESS_AND_SIZE_TO_SPAN_PAGES( \ MmGetMdlVirtualAddress( x ), MmGetMdlByteCount( x ) ))) #define NDIS_BUFFER_LINKAGE( x ) ((x)->Next) /* NDIS maximum processor count */ #if NDIS_SUPPORT_60_COMPATIBLE_API && !defined( NDIS_WRAPPER ) #define NDIS_MAX_PROCESSOR_COUNT 32 #endif /* Macros that alias kernel functions */ #if NDIS_SUPPORT_NDIS6 #if NDIS_SUPPORT_60_COMPATIBLE_API #define NDIS_CURRENT_PROCESSOR_NUMBER KeGetCurrentProcessorNumber() #endif #define NDIS_CURRENT_IRQL() KeGetCurrentIrql() #define NDIS_RAISE_IRQL_TO_DISPATCH( x ) KeRaiseIrql( DISPATCH_LEVEL, x ) #define NDIS_LOWER_IRQL( p1, p2 ) \ { \ if( (p1) != (p2) ) { \ KeLowerIrql( p1 ); \ } \ } #define NDIS_INIT_MUTEX( x ) KeInitializeMutex( x, 0xFFFF ) #define NDIS_RELEASE_MUTEX( x ) KeReleaseMutex( x, FALSE ) #define NDIS_WAIT_FOR_MUTEX( x ) \ KeWaitForSingleObject( x, Executive, KernelMode, FALSE, NULL ); #endif /* NDIS configuration object revision number */ #if NDIS_SUPPORT_NDIS6 #define NDIS_CONFIGURATION_OBJECT_REVISION_1 1 #endif /* NDIS configuration flags */ #if NDIS_SUPPORT_NDIS6 #define NDIS_CONFIG_FLAG_FILTER_INSTANCE_CONFIGURATION 0x00000001L #endif /* Network Plug and Play event flags */ #if NDIS_SUPPORT_NDIS6 #define NET_EVENT_HALT_MINIPORT_ON_LOW_POWER 0x00000001L #endif /* Network Plug and Play event notification revision number */ #if NDIS_SUPPORT_NDIS6 #define NET_PNP_EVENT_NOTIFICATION_REVISION_1 1 #endif /* NDIS object identifier request constants */ #if NDIS_SUPPORT_NDIS6 #define NDIS_OID_REQUEST_REVISION_1 1 #define NDIS_OID_REQUEST_TIMEOUT_INFINITE 0 #define NDIS_OID_REQUEST_NDIS_RESERVED_SIZE 16 #endif /* NDIS status indication flags */ #if NDIS_SUPPORT_NDIS6 #define NDIS_STATUS_INDICATION_FLAGS_MEDIA_CONNECT_TO_CONNECT 0x1000 #endif /* NDIS status indication revision number */ #if NDIS_SUPPORT_NDIS6 #define NDIS_STATUS_INDICATION_REVISION_1 1 #endif /* NDIS timer characteristics revision number */ #if NDIS_SUPPORT_NDIS6 #define NDIS_TIMER_CHARACTERISTICS_REVISION_1 1 #endif /* NDIS lookahead size special value */ #if NDIS_SUPPORT_NDIS620 #define NDIS_MAX_LOOKAHEAD_SIZE_ACCESSED_UNDEFINED (-1) #endif /* NDIS restart general attributes flags */ #if NDIS_SUPPORT_NDIS620 #define NDIS_RESTART_GENERAL_ATTRIBUTES_MAX_LOOKAHEAD_ACCESSED_DEFINED 0x00000001L #endif /* NDIS restart general attributes revision number */ #if NDIS_SUPPORT_NDIS6 #define NDIS_RESTART_GENERAL_ATTRIBUTES_REVISION_1 1 #endif #if NDIS_SUPPORT_NDIS620 #define NDIS_RESTART_GENERAL_ATTRIBUTES_REVISION_2 2 #endif /* NDIS system processor information revision number */ #if NDIS_SUPPORT_NDIS6 && NDIS_SUPPORT_60_COMPATIBLE_API #define NDIS_SYSTEM_PROCESSOR_INFO_REVISION_1 1 #endif /* NDIS pause parameters */ #if NDIS_SUPPORT_NDIS6 #define NDIS_PAUSE_NDIS_INTERNAL 0x00000001L #define NDIS_PAUSE_LOW_POWER 0x00000002L #define NDIS_PAUSE_BIND_PROTOCOL 0x00000004L #define NDIS_PAUSE_UNBIND_PROTOCOL 0x00000008L #define NDIS_PAUSE_ATTACH_FILTER 0x00000010L #define NDIS_PAUSE_DETACH_FILTER 0x00000020L #define NDIS_PAUSE_FILTER_RESTART_STACK 0x00000040L #define NDIS_PAUSE_MINIPORT_DEVICE_REMOVE 0x00000080L #endif /* NDIS filter interface flags */ #if (NTDDI_VERSION == 0x06000000) && (NDIS_LEGACY_DRIVER || NDIS_SUPPORT_NDIS6) #define NDIS_FILTER_INTERFACE_IM_FILTER 0x00000001L #define NDIS_FILTER_INTERFACE_LW_FILTER 0x00000002L #endif /* NDIS filter interface revision number */ #if (NTDDI_VERSION == 0x06000000) && (NDIS_LEGACY_DRIVER || NDIS_SUPPORT_NDIS6) #define NDIS_FILTER_INTERFACE_REVISION_1 1 #endif /* NDIS enumerate filters revision number */ #if (NTDDI_VERSION == 0x06000000) && (NDIS_LEGACY_DRIVER || NDIS_SUPPORT_NDIS6) #define NDIS_ENUM_FILTERS_REVISION_1 1 #endif /* NDIS device object attributes revision number */ #if (NTDDI_VERSION == 0x06000000) && (NDIS_LEGACY_DRIVER || NDIS_SUPPORT_NDIS6) #define NDIS_DEVICE_OBJECT_ATTRIBUTES_REVISION_1 1 #endif /* NDIS object type device wrapper revision number */ #if (NTDDI_VERSION == 0x06000000) && (NDIS_LEGACY_DRIVER || NDIS_SUPPORT_NDIS6) #define NDIS_OBJECT_TYPE_DRIVER_WRAPPER_REVISION_1 1 #endif /* NDIS shared memory parameters flags */ #if NDIS_SUPPORT_NDIS620 #define NDIS_SHARED_MEM_PARAMETERS_CONTIGUOUS 0x00000001L #endif /* NDIS shared memory handle special value */ #if NDIS_SUPPORT_NDIS620 #define NDIS_SHARED_MEM_HANDLE_HAL_ALLOCATED NULL #endif /* NDIS shared memory parameters revision number */ #if NDIS_SUPPORT_NDIS620 #define NDIS_SHARED_MEMORY_PARAMETERS_REVISION_1 1 #endif /* NDIS shared memory provider characteristics revision number */ #if NDIS_SUPPORT_NDIS620 #define NDIS_SHARED_MEMORY_PROVIDER_CHARACTERISTICS_REVISION_1 1 #endif /* NDIS receive queue state revision number */ #if NDIS_SUPPORT_NDIS620 #define NDIS_RECEIVE_QUEUE_STATE_REVISION_1 1 #endif /* NDIS scatter/gather list parameters revision number */ #if NDIS_SUPPORT_NDIS620 #define NDIS_SCATTER_GATHER_LIST_PARAMETERS_REVISION_1 1 #endif /* NDIS NBL media-specific information revision number */ #if NDIS_SUPPORT_NDIS620 #define NDIS_NBL_MEDIA_SPECIFIC_INFO_REVISION_1 1 #endif /* NDIS media-specific information tags */ #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NDIS_MEDIA_SPECIFIC_INFO_TUNDL 0x00010001L #define NDIS_MEDIA_SPECIFIC_INFO_FCOE 0x80010000L #define NDIS_MEDIA_SPECIFIC_INFO_EAPOL 0x80010001L #define NDIS_MEDIA_SPECIFIC_INFO_LLDP 0x80010002L #define NDIS_MEDIA_SPECIFIC_INFO_TIMESYNC 0x80010003L #endif /* Network buffer list flags */ #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NBL_FLAGS_PROTOCOL_RESERVED 0xFFF00000L #define NBL_FLAGS_MINIPORT_RESERVED 0x0000F000L #define NBL_FLAGS_SCRATCH 0x000F0000L #define NBL_FLAGS_NDIS_RESERVED 0x00000FFFL #define NDIS_PROT_RSVD_FLAGS NBL_FLAGS_PROTOCOL_RESERVED #define NDIS_NBL_FLAGS_SEND_READ_ONLY 0x00000001L #define NDIS_NBL_FLAGS_RECV_READ_ONLY 0x00000002L #define NDIS_NBL_FLAGS_IS_LOOPBACK_PACKET 0x00008000L #endif #if NDIS_SUPPORT_NDIS61 #define NDIS_NBL_FLAGS_HD_SPLIT 0x00000100L #define NDIS_NBL_FLAGS_IS_IPV4 0x00000200L #define NDIS_NBL_FLAGS_IS_IPV6 0x00000400L #define NDIS_NBL_FLAGS_IS_TCP 0x00000800L #define NDIS_NBL_FLAGS_IS_UDP 0x00001000L #define NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_HEADER 0x00002000L #define NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_PAYLOAD 0x00004000L #endif /* Macros to manipulate network buffer list flags */ #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NBL_TEST_FLAG( x, p ) (((x)->Flags & (p)) != 0) #define NBL_SET_FLAG( x, p ) ((x)->Flags |= (p)) #define NBL_CLEAR_FLAG( x, p ) ((x)->Flags &= ~(p)) #define NBL_SET_PROTOCOL_RSVD_FLAG( x, p ) \ ((x)->Flags |= ((p) & NBL_FLAGS_PROTOCOL_RESERVED)) #define NBL_CLEAR_PROTOCOL_RSVD_FLAG( x, p ) \ ((x)->Flags &= ~((p) & NBL_FLAGS_PROTOCOL_RESERVED)) #define NBL_TEST_PROTOCOL_RSVD_FLAG( x , p ) \ (((x)->Flags & ((p) & NBL_FLAGS_PROTOCOL_RESERVED)) != 0) #define NBL_SET_PROT_RSVD_FLAG( x, p ) NBL_SET_PROTOCOL_RSVD_FLAG( x, p ) #define NBL_CLEAR_PROT_RSVD_FLAG( x, p ) NBL_CLEAR_PROTOCOL_RSVD_FLAG( x, p ) #define NBL_TEST_PROT_RSVD_FLAG( x, p ) NBL_TEST_PROTOCOL_RSVD_FLAG( x, p ) #endif /* Network buffer list pool parameters revision number */ #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NET_BUFFER_LIST_POOL_PARAMETERS_REVISION_1 1 #endif /* Network buffer pool parameters revision number */ #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NET_BUFFER_POOL_PARAMETERS_REVISION_1 1 #endif /* NDIS send flags */ #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NDIS_SEND_FLAGS_DISPATCH_LEVEL 0x00000001L #define NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK 0x00000002L #endif #if NDIS_SUPPORT_NDIS620 #define NDIS_SEND_FLAGS_SINGLE_QUEUE 0x00000004L #endif /* Macros to manipulate send flags */ #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NDIS_TEST_SEND_FLAG( x, p ) (((x) & (p)) == (p)) #define NDIS_SET_SEND_FLAG( x, p ) ((x) |= (p)) #define NDIS_TEST_SEND_AT_DISPATCH_LEVEL( x ) \ NDIS_TEST_SEND_FLAG( x, NDIS_SEND_FLAGS_DISPATCH_LEVEL ) #endif /* NDIS send complete flags */ #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL 0x00000001L #endif #if NDIS_SUPPORT_NDIS620 #define NDIS_SEND_COMPLETE_FLAGS_SINGLE_QUEUE 0x00000002L #endif /* Macros to manipulate send complete flags */ #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NDIS_TEST_SEND_COMPLETE_FLAG( x, p ) (((x) & (p)) == (p)) #define NDIS_SET_SEND_COMPLETE_FLAG( x, p ) ((x) |= (p)) #define NDIS_TEST_SEND_COMPLETE_AT_DISPATCH_LEVEL( x ) \ NDIS_TEST_SEND_COMPLETE_FLAG( x, NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL ) #endif /* NDIS receive flags */ #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL 0x00000001L #define NDIS_RECEIVE_FLAGS_RESOURCES 0x00000002L #define NDIS_RECEIVE_FLAGS_SINGLE_ETHER_TYPE 0x00000100L #define NDIS_RECEIVE_FLAGS_SINGLE_VLAN 0x00000200L #define NDIS_RECEIVE_FLAGS_PERFECT_FILTERED 0x00000400L #endif #if NDIS_SUPPORT_NDIS620 #define NDIS_RECEIVE_FLAGS_SINGLE_QUEUE 0x00000800L #define NDIS_RECEIVE_FLAGS_SHARED_MEMORY_INFO_VALID 0x00001000L #define NDIS_RECEIVE_FLAGS_MORE_NBLS 0x00002000L #endif /* Macros to manipulate receive flags */ #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NDIS_TEST_RECEIVE_FLAG( x, p ) (((x) & (p)) == (p)) #define NDIS_SET_RECEIVE_FLAG( x, p ) ((x) |= (p)) #define NDIS_TEST_RECEIVE_AT_DISPATCH_LEVEL( x ) \ NDIS_TEST_RECEIVE_FLAG( x, NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL ) #define NDIS_TEST_RECEIVE_CANNOT_PEND( x ) \ NDIS_TEST_RECEIVE_FLAG( x, NDIS_RECEIVE_FLAGS_RESOURCES ) #define NDIS_TEST_RECEIVE_CAN_PEND( x ) (((x) & NDIS_RECEIVE_FLAGS_RESOURCES) == 0) #endif /* NDIS return flags */ #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NDIS_RETURN_FLAGS_DISPATCH_LEVEL 0x00000001L #endif #if NDIS_SUPPORT_NDIS620 #define NDIS_RETURN_FLAGS_SINGLE_QUEUE 0x00000002L #endif /* Macros to manipulate return flags */ #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NDIS_TEST_RETURN_FLAG( x, p ) (((x) & (p)) == (p)) #define NDIS_SET_RETURN_FLAG( x, p ) ((x) |= (p)) #define NDIS_TEST_RETURN_AT_DISPATCH_LEVEL( x ) \ NDIS_TEST_RETURN_FLAG( x, NDIS_RETURN_FLAGS_DISPATCH_LEVEL ) #endif /* NDIS clone flags */ #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLS 0x00000002L #endif /* Macro to manipulate clone flags */ #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NDIS_TEST_CLONE_FLAG( x, p ) (((x) & (p)) == (p)) #define NDIS_SET_CLONE_FLAG( x, p ) ((x) |= (p)) #define NDIS_CLEAR_CLONE_FLAG( x, p ) ((x) &= ~(p)) #endif /* NDIS task offload version number */ #define NDIS_TASK_OFFLOAD_VERSION 1 /* Hash constants */ #define MAX_HASHES 4 #define TRUNCATED_HASH_LEN 12 /* Cryptographic status codes */ #define CRYPTO_SUCCESS 0 #define CRYPTO_GENERIC_ERROR 1 #define CRYPTO_TRANSPORT_AH_AUTH_FAILED 2 #define CRYPTO_TRANSPORT_ESP_AUTH_FAILED 3 #define CRYPTO_TUNNEL_AH_AUTH_FAILED 4 #define CRYPTO_TUNNEL_ESP_AUTH_FAILED 5 #define CRYPTO_INVALID_PACKET_SYNTAX 6 #define CRYPTO_INVALID_PROTOCOL 7 /* NDIS task TCP large send version number */ #if NDIS_LEGACY_DRIVER #define NDIS_TASK_TCP_LARGE_SEND_V0 0 #endif /* IPsec flags */ #define IPSEC_TPT_UDPESP_ENCAPTYPE_IKE 0x00000001L #define IPSEC_TUN_UDPESP_ENCAPTYPE_IKE 0x00000002L #define IPSEC_TPTOVERTUN_UDPESP_ENCAPTYPE_IKE 0x00000004L #define IPSEC_TPT_UDPESP_OVER_PURE_TUN_ENCAPTYPE_IKE 0x00000008L #define IPSEC_TPT_UDPESP_ENCAPTYPE_OTHER 0x00000010L #define IPSEC_TUN_UDPESP_ENCAPTYPE_OTHER 0x00000020L #define IPSEC_TPTOVERTUN_UDPESP_ENCAPTYPE_OTHER 0x00000040L #define IPSEC_TPT_UDPESP_OVER_PURE_TUN_ENCAPTYPE_OTHER 0x00000080L /* NDIS large send offload constants */ #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NDIS_TCP_LARGE_SEND_OFFLOAD_V1_TYPE 0 #define NDIS_TCP_LARGE_SEND_OFFLOAD_V2_TYPE 1 #define NDIS_TCP_LARGE_SEND_OFFLOAD_IPv4 0 #define NDIS_TCP_LARGE_SEND_OFFLOAD_IPv6 1 #define NDIS_LARGE_SEND_OFFLOAD_MAX_HEADER_LENGTH 128 #endif /* NDIS offload encapsulation revision number */ #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NDIS_OFFLOAD_ENCAPSULATION_REVISION_1 1 #endif /* Maximum number of extension headers */ #if NDIS_SUPPORT_NDIS61 #define IPSEC_OFFLOAD_V2_MAX_EXTENSION_HEADERS 2 #endif /* IPsec offload (version 2) flags */ #if NDIS_SUPPORT_NDIS61 #define IPSEC_OFFLOAD_V2_UDP_ESP_ENCAPSULATION_NONE 0x00000000L #define IPSEC_OFFLOAD_V2_UDP_ESP_ENCAPSULATION_TRANSPORT 0x00000001L #define IPSEC_OFFLOAD_V2_UDP_ESP_ENCAPSULATION_TUNNEL 0x00000002L #define IPSEC_OFFLOAD_V2_TRANSPORT_OVER_UDP_ESP_ENCAPSULATION_TUNNEL 0x00000004L #define IPSEC_OFFLOAD_V2_UDP_ESP_ENCAPSULATION_TRANSPORT_OVER_TUNNEL 0x00000008L #endif /* IPsec offload (version 2) security association flags */ #if NDIS_SUPPORT_NDIS61 #define IPSEC_OFFLOAD_V2_ESN_SA 0x00000001L #endif /* IPsec offload (version 2) add security association flags */ #if NDIS_SUPPORT_NDIS61 #define IPSEC_OFFLOAD_V2_INBOUND 0x00000001L #define IPSEC_OFFLOAD_V2_IPv6 0x00000010L #endif /* IPsec offload (version 2) add security association revision number */ #if NDIS_SUPPORT_NDIS61 #define NDIS_IPSEC_OFFLOAD_V2_ADD_SA_REVISION_1 1 #endif /* IPsec offload (version 2) delete security association revision number */ #if NDIS_SUPPORT_NDIS61 #define NDIS_IPSEC_OFFLOAD_V2_DELETE_SA_REVISION_1 1 #endif /* IPsec offload (version 2) update security association revision number */ #if NDIS_SUPPORT_NDIS61 #define NDIS_IPSEC_OFFLOAD_V2_UPDATE_SA_REVISION_1 1 #endif /* Protocol reserved size in packet */ #if NDIS_LEGACY_DRIVER #define PROTOCOL_RESERVED_SIZE_IN_PACKET (4 * sizeof( PVOID )) #endif /* NDIS bind parameters revision numbers */ #if NDIS_SUPORT_NDIS6 || NDIS60 #define NDIS_BIND_PARAMETERS_REVISION_1 1 #endif #if NDIS_SUPPORT_NDIS61 #define NDIS_BIND_PARAMETERS_REVISION_2 2 #endif #if NDIS_SUPPORT_NDIS620 #define NDIS_BIND_PARAMETERS_REVISION_3 3 #endif /* NDIS protocol CO characteristics revision number */ #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NDIS_PROTOCOL_CO_CHARACTERISTICS_REVISION_1 1 #endif /* NDIS protocol driver characteristics revision number */ #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NDIS_PROTOCOL_DRIVER_CHARACTERISTICS_REVISION_1 1 #endif #if NDIS_SUPPORT_NDIS61 #define NDIS_PROTOCOL_DRIVER_CHARACTERISTICS_REVISION_2 2 #endif /* NDIS open parameters revision number */ #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NDIS_OPEN_PARAMETERS_REVISION_1 1 #endif /* NDIS protocol pause parameters revision number */ #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NDIS_PROTOCOL_PAUSE_PARAMETERS_REVISION_1 1 #endif /* NDIS protocol restart parameters revision number */ #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NDIS_PROTOCOL_RESTART_PARAMETERS_REVISION_1 1 #endif /* NDIS maximum lookahead */ #define NDIS_M_MAX_LOOKAHEAD 526 /* NDIS miniport interrupt revision number */ #if NDIS_SUPPORT_NDIS6 #define NDIS_MINIPORT_INTERRUPT_REVISION_1 1 #endif /* NDIS miniport Plug and Play characteristics revision number */ #if NDIS_SUPPORT_NDIS6 #define NDIS_MINIPORT_PNP_CHARACTERISTICS_REVISION_1 1 #endif /* NDIS scatter/gather DMA description flags */ #if NDIS_SUPPORT_NDIS6 #define NDIS_SG_DMA_64_BIT_ADDRESS 0x00000001L #endif /* NDIS scatter/gather DMA description revision number */ #if NDIS_SUPPORT_NDIS6 #define NDIS_SG_DMA_DESCRIPTION_REVISION_1 1 #endif /* NDIS miniport initialization parameters revision number */ #if NDIS_SUPPORT_NDIS6 #define NDIS_MINIPORT_INIT_PARAMETERS_REVISION_1 1 #endif /* NDIS miniport restart parameters revision number */ #if NDIS_SUPPORT_NDIS6 #define NDIS_MINIPORT_RESTART_PARAMETERS_REVISION_1 1 #endif /* NDIS miniport adapter registration attributes revision number */ #if NDIS_SUPPORT_NDIS6 #define NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES_REVISION_1 1 #endif /* NDIS supported statistics flags */ #if NDIS_SUPPORT_NDIS6 #define NDIS_STATISTICS_XMIT_OK_SUPPORTED 0x00000001L #define NDIS_STATISTICS_RCV_OK_SUPPORTED 0x00000002L #define NDIS_STATISTICS_XMIT_ERROR_SUPPORTED 0x00000004L #define NDIS_STATISTICS_RCV_ERROR_SUPPORTED 0x00000008L #define NDIS_STATISTICS_RCV_NO_BUFFER_SUPPORTED 0x00000010L #define NDIS_STATISTICS_DIRECTED_BYTES_XMIT_SUPPORTED 0x00000020L #define NDIS_STATISTICS_DIRECTED_FRAMES_XMIT_SUPPORTED 0x00000040L #define NDIS_STATISTICS_MULTICAST_BYTES_XMIT_SUPPORTED 0x00000080L #define NDIS_STATISTICS_MULTICAST_FRAMES_XMIT_SUPPORTED 0x00000100L #define NDIS_STATISTICS_BROADCAST_BYTES_XMIT_SUPPORTED 0x00000200L #define NDIS_STATISTICS_BROADCAST_FRAMES_XMIT_SUPPORTED 0x00000400L #define NDIS_STATISTICS_DIRECTED_BYTES_RCV_SUPPORTED 0x00000800L #define NDIS_STATISTICS_DIRECTED_FRAMES_RCV_SUPPORTED 0x00001000L #define NDIS_STATISTICS_MULTICAST_BYTES_RCV_SUPPORTED 0x00002000L #define NDIS_STATISTICS_MULTICAST_FRAMES_RCV_SUPPORTED 0x00004000L #define NDIS_STATISTICS_BROADCAST_BYTES_RCV_SUPPORTED 0x00008000L #define NDIS_STATISTICS_BROADCAST_FRAMES_RCV_SUPPORTED 0x00010000L #define NDIS_STATISTICS_RCV_CRC_ERROR_SUPPORTED 0x00020000L #define NDIS_STATISTICS_TRANSMIT_QUEUE_LENGTH_SUPPORTED 0x00040000L #define NDIS_STATISTICS_BYTES_RCV_SUPPORTED 0x00080000L #define NDIS_STATISTICS_BYTES_XMIT_SUPPORTED 0x00100000L #define NDIS_STATISTICS_RCV_DISCARDS_SUPPORTED 0x00200000L #define NDIS_STATISTICS_GEN_STATISTICS_SUPPORTED 0x00400000L #define NDIS_STATISTICS_XMIT_DISCARDS_SUPPORTED 0x08000000L #endif /* NDIS miniport add device registration attributes revision number */ #if NDIS_SUPPORT_NDIS6 #define NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES_REVISION_1 1 #endif /* NDIS miniport adapter general attributes revision numbers */ #if NDIS_SUPPORT_NDIS6 #define NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES_REVISION_1 1 #endif #if NDIS_SUPPORT_NDIS620 #define NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES_REVISION_2 2 #endif /* NDIS header/data split attributes revision number */ #if NDIS_SUPPORT_NDIS61 #define NDIS_HD_SPLIT_ATTRIBUTES_REVISION_1 1 #endif /* NDIS miniport adapter hardware assist attributes revision number */ #if NDIS_SUPPORT_NDIS61 #define NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES_REVISION_1 1 #endif #if NDIS_SUPPORT_NDIS620 #define NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES_REVISION_2 2 #endif /* NDIS miniport adapter offload attributes revision number */ #if NDIS_SUPPORT_NDIS6 #define NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES_REVISION_1 1 #endif /* NDIS miniport adapter 802.11 attributes revision numbers */ #if NDIS_SUPPORT_NDIS6 #define NDIS_MINIPORT_ADAPTER_802_11_ATTRIBUTES_REVISION_1 1 #define NDIS_MINIPORT_ADAPTER_802_11_ATTRIBUTES_REVISION_2 2 #endif /* NDIS miniport attributes */ #if NDIS_SUPPORT_NDIS6 #define NDIS_MINIPORT_ATTRIBUTES_HARDWARE_DEVICE 0x00000001L #define NDIS_MINIPORT_ATTRIBUTES_NDIS_WDM 0x00000002L #define NDIS_MINIPORT_ATTRIBUTES_SURPRISE_REMOVE_OK 0x00000004L #define NDIS_MINIPORT_ATTRIBUTES_NOT_CO_NDIS 0x00000008L #define NDIS_MINIPORT_ATTRIBUTES_DO_NOT_BIND_TO_ALL_CO 0x00000010L #define NDIS_MINIPORT_ATTRIBUTES_NO_HALT_ON_SUSPEND 0x00000020L #define NDIS_MINIPORT_ATTRIBUTES_BUS_MASTER 0x00000040L #define NDIS_MINIPORT_ATTRIBUTES_CONTROLS_DEFAULT_PORT 0x00000080L #endif /* NDIS miniport pause parameters revision number */ #if NDIS_SUPPORT_NDIS6 #define NDIS_MINIPORT_PAUSE_PARAMETERS_REVISION_1 1 #endif /* Network device Plug and Play event revision number */ #if NDIS_SUPPORT_NDIS6 #define NET_DEVICE_PNP_EVENT_REVISION_1 1 #endif /* NDIS 6.0 miniport characteristic flags */ #if NDIS_SUPPORT_NDIS6 #define NDIS_INTERMEDIATE_DRIVER 0x00000001L #define NDIS_WDM_DRIVER 0x00000002L #endif /* NDIS miniport driver characteristics revision number */ #if NDIS_SUPPORT_NDIS6 #define NDIS_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_1 1 #endif #if NDIS_SUPPORT_NDIS61 #define NDIS_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_2 2 #endif /* NDIS miniport CO characteristics revision number */ #if NDIS_SUPPORT_NDIS6 #define NDIS_MINIPORT_CO_CHARACTERISTICS_REVISION_1 1 #endif /* NDIS DMA sizes */ #define NDIS_DMA_24BITS 0 #define NDIS_DMA_32BITS 1 #define NDIS_DMA_64BITS 2 /* NDIS attributes */ #if NDIS_LEGACY_MINIPORT #define NDIS_ATTRIBUTE_IGNORE_PACKET_TIMEOUT 0x00000001L #define NDIS_ATTRIBUTE_IGNORE_REQUEST_TIMEOUT 0x00000002L #define NDIS_ATTRIBUTE_IGNORE_TOKEN_RING_ERRORS 0x00000004L #define NDIS_ATTRIBUTE_BUS_MASTER 0x00000008L #define NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER 0x00000010L #define NDIS_ATTRIBUTE_DESERIALIZE 0x00000020L #define NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND 0x00000040L #define NDIS_ATTRIBUTE_SURPRISE_REMOVE_OK 0x00000080L #define NDIS_ATTRIBUTE_NOT_CO_NDIS 0x00000100L #define NDIS_ATTRIBUTE_USES_SAFE_BUFFER_APIS 0x00000200L #define NDIS_ATTRIBUTE_DO_NOT_BIND_TO_ALL_CO 0x00000400L #define NDIS_ATTRIBUTE_MINIPORT_PADS_SHORT_PACKETS 0x00000800L #endif /* NDIS MSIX configuration parameters revision number */ #if NDIS_SUPPORT_NDIS61 #define NDIS_MSIX_CONFIG_PARAMETERS_REVISION_1 1 #endif /* NdisMAllocateNetBufferSGList() flags */ #if NDIS_SUPPORT_NDIS6 #define NDIS_SG_LIST_WRITE_TO_DEVICE 0x00000001L #endif /* CO send flags */ #define CO_SEND_FLAG_SET_DISCARD_ELIBILITY 0x00000001L /* CO media parameter flags */ #define RECEIVE_TIME_INDICATION 0x00000001L #define USE_TIME_STAMPS 0x00000002L #define TRANSMIT_VC 0x00000004L #define RECEIVE_VC 0x00000008L #define INDICATE_ERRED_PACKETS 0x00000010L #define INDICATE_END_OF_TX 0x00000020L #define RESERVE_RESOURCES_VC 0x00000040L #define ROUND_DOWN_FLOW 0x00000080L #define ROUND_UP_FLOW 0x00000100L /* Erred packet indication */ #define ERRED_PACKET_INDICATION 0x00000001L /* CO call parameter flags */ #define PERMANENT_VC 0x00000001L #define CALL_PARAMETERS_CHANGED 0x00000002L #define QUERY_CALL_PARAMETERS 0x00000004L #define BROADCAST_VC 0x00000008L #define MULTIPOINT_VC 0x00000010L /* String formats */ #ifndef __NDISTAPI_STRINGFORMATS_DEFINED #define __NDISTAPI_STRINGFORMATS_DEFINED #define STRINGFORMAT_ASCII 0x00000001L #define STRINGFORMAT_DBCS 0x00000002L #define STRINGFORMAT_UNICODE 0x00000003L #define STRINGFORMAT_BINARY 0x00000004L #endif /* NDIS CO client optional handlers revision number */ #if NDIS_SUPPORT_NDIS6 #define NDIS_CO_CLIENT_OPTIONAL_HANDLERS_REVISION_1 1 #endif /* NDIS CO call manager optional handlers revision number */ #if NDIS_SUPPORT_NDIS6 #define NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS_REVISION_1 1 #endif /* NDIS filter attach flags */ #if NDIS_SUPPORT_NDIS6 #define NDIS_FILTER_ATTACH_FLAGS_IGNORE_MANDATORY 0x00000001L #endif /* NDIS filter attach parameters revision numbers */ #if NDIS_SUPPORT_NDIS6 #define NDIS_FILTER_ATTACH_PARAMETERS_REVISION_1 1 #endif #if NDIS_SUPPORT_NDIS61 #define NDIS_FILTER_ATTACH_PARAMETERS_REVISION_2 2 #endif #if NDIS_SUPPORT_NDIS620 #define NDIS_FILTER_ATTACH_PARAMETERS_REVISION_3 3 #endif /* NDIS filter restart parameters revision number */ #if NDIS_SUPPORT_NDIS6 #define NDIS_FILTER_RESTART_PARAMETERS_REVISION_1 1 #endif /* NDIS filter pause parameters revision number */ #if NDIS_SUPPORT_NDIS6 #define NDIS_FILTER_PAUSE_PARAMETERS_REVISION_1 1 #endif /* NDIS filter partial characteristics revision number */ #if NDIS_SUPPORT_NDIS6 #define NDIS_FILTER_PARTIAL_CHARACTERISTICS_REVISION_1 1 #endif /* NDIS filter driver mandatory */ #if NDIS_SUPPORT_NDIS6 #define NDIS_FILTER_DRIVER_MANDATORY 0x00000001L #endif /* NDIS filter characteristics revision numbers */ #if NDIS_SUPPORT_NDIS6 #define NDIS_FILTER_CHARACTERISTICS_REVISION_1 1 #endif #if NDIS_SUPPORT_NDIS61 #define NDIS_FILTER_CHARACTERISTICS_REVISION_2 2 #endif /* NDIS filter attributes revision number */ #if NDIS_SUPPORT_NDIS6 #define NDIS_FILTER_ATTRIBUTES_REVISION_1 1 #endif /* Opaque data types */ #if NDIS_SUPPORT_NDIS620 typedef struct _NDIS_RW_LOCK_EX NDIS_RW_LOCK_EX; typedef struct _NDIS_RW_LOCK_EX *PNDIS_RW_LOCK_EX; #endif typedef struct _NDIS_WRAPPER_HANDLE NDIS_WRAPPER_HANDLE; typedef struct _NDIS_WRAPPER_HANDLE *PNDIS_WRAPPER_HANDLE; typedef struct _NDIS_PROTOCOL_BLOCK NDIS_PROTOCOL_BLOCK; typedef struct _NDIS_PROTOCOL_BLOCK *PNDIS_PROTOCOL_BLOCK; typedef struct _NDIS_M_DRIVER_BLOCK NDIS_M_DRIVER_BLOCK; typedef struct _NDIS_M_DRIVER_BLOCK *PNDIS_M_DRIVER_BLOCK; typedef struct _CO_CALL_PARAMETERS CO_CALL_PARAMETERS; typedef struct _CO_CALL_PARAMETERS *PCO_CALL_PARAMETERS; typedef struct _CO_MEDIA_PARAMETERS CO_MEDIA_PARAMETERS; typedef struct _CO_MEDIA_PARAMETERS *PCO_MEDIA_PARAMETERS; #if (NTDDI_VERSION < 0x06000000) && !NDIS_SUPPORT_NDIS6 typedef struct _NDIS_OFFLOAD NDIS_OFFLOAD; typedef struct _NDIS_OFFLOAD *PNDIS_OFFLOAD; #endif typedef struct _NDIS_AF_LIST NDIS_AF_LIST; typedef struct _NDIS_AF_LIST *PNDIS_AF_LIST; typedef struct _X_FILTER ETH_FILTER; typedef struct _X_FILTER *PETH_FILTER; typedef struct _X_FILTER TR_FILTER; typedef struct _X_FILTER *PTR_FILTER; typedef struct _X_FILTER NULL_FILTER; typedef struct _X_FILTER *PNULL_FILTER; /* Network Plug and Play event codes */ typedef enum _NET_PNP_EVENT_CODE { NetEventSetPower = 0, NetEventQueryPower = 1, NetEventQueryRemoveDevice = 2, NetEventCancelRemoveDevice = 3, NetEventReconfigure = 4, NetEventBindList = 5, NetEventBindsComplete = 6, NetEventPnPCapabilities = 7, NetEventPause = 8, NetEventRestart = 9, NetEventPortActivation = 10, NetEventPortDeactivation = 11, NetEventIMReEnableDevice = 12, NetEventMaximum = 13 } NET_PNP_EVENT_CODE; typedef NET_PNP_EVENT_CODE *PNET_PNP_EVENT_CODE; /* Network Plug and Play event */ typedef struct _NET_PNP_EVENT { NET_PNP_EVENT_CODE NetEvent; PVOID Buffer; ULONG BufferLength; ULONG_PTR NdisReserved[4]; ULONG_PTR TransportReserved[4]; ULONG_PTR TdiReserved[4]; ULONG_PTR TdiClientReserved[4]; } NET_PNP_EVENT; typedef NET_PNP_EVENT *PNET_PNP_EVENT; /* Network device power states */ typedef enum _NET_DEVICE_POWER_STATE { NetDeviceStateUnspecified = 0, NetDeviceStateD0 = 1, NetDeviceStateD1 = 2, NetDeviceStateD2 = 3, NetDeviceStateD3 = 4, NetDeviceStateMaximum = 5 } NET_DEVICE_POWER_STATE; typedef NET_DEVICE_POWER_STATE *PNET_DEVICE_POWER_STATE; /* NDIS generic object */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_GENERIC_OBJECT { NDIS_OBJECT_HEADER Header; PVOID Caller; PVOID CallersCaller; PDRIVER_OBJECT DriverObject; } NDIS_GENERIC_OBJECT; typedef NDIS_GENERIC_OBJECT *PNDIS_GENERIC_OBJECT; #endif /* NDIS spin lock */ typedef struct _NDIS_SPIN_LOCK { KSPIN_LOCK SpinLock; KIRQL OldIrql; } NDIS_SPIN_LOCK; typedef NDIS_SPIN_LOCK *PNDIS_SPIN_LOCK; /* NDIS event */ typedef struct _NDIS_EVENT { KEVENT Event; } NDIS_EVENT; typedef NDIS_EVENT *PNDIS_EVENT; /* NDIS procedure */ typedef VOID (NTAPI *NDIS_PROC)( struct _NDIS_WORK_ITEM *, PVOID ); /* NDIS work item */ typedef struct _NDIS_WORK_ITEM { PVOID Context; NDIS_PROC Routine; UCHAR WrapperReserved[8 * sizeof( PVOID )]; } NDIS_WORK_ITEM; typedef NDIS_WORK_ITEM *PNDIS_WORK_ITEM; /* NDIS parameter types */ typedef enum _NDIS_PARAMETER_TYPE { NdisParameterInteger = 0, NdisParameterHexInteger = 1, NdisParameterString = 2, NdisParameterMultiString = 3, NdisParameterBinary = 4 } NDIS_PARAMETER_TYPE; typedef NDIS_PARAMETER_TYPE *PNDIS_PARAMETER_TYPE; /* Binary data */ typedef struct { USHORT Length; PVOID Buffer; } BINARY_DATA; /* NDIS configuration parameter */ typedef struct _NDIS_CONFIGURATION_PARAMETER { NDIS_PARAMETER_TYPE ParameterType; union { ULONG IntegerData; NDIS_STRING StringData; BINARY_DATA BinaryData; } ParameterData; } NDIS_CONFIGURATION_PARAMETER; typedef NDIS_CONFIGURATION_PARAMETER *PNDIS_CONFIGURATION_PARAMETER; /* NDIS processor types */ typedef enum _NDIS_PROCESSOR_TYPE { NdisProcessorX86 = 0, NdisProcessorMips = 1, NdisProcessorAlpha = 2, NdisProcessorPpc = 3, NdisProcessorAmd64 = 4, NdisProcessorIA64 = 5 } NDIS_PROCESSOR_TYPE; typedef NDIS_PROCESSOR_TYPE *PNDIS_PROCESSOR_TYPE; /* NDIS environment types */ typedef enum _NDIS_ENVIRONMENT_TYPE { NdisEnvironmentWindows = 0, NdisEnvironmentWindowsNt = 1 } NDIS_ENVIRONMENT_TYPE; typedef NDIS_ENVIRONMENT_TYPE *PNDIS_ENVIRONMENT_TYPE; /* NDIS interface types */ typedef enum _NDIS_INTERFACE_TYPE { NdisInterfaceInternal = Internal, NdisInterfaceIsa = Isa, NdisInterfaceEisa = Eisa, NdisInterfaceMca = MicroChannel, NdisInterfaceTurboChannel = TurboChannel, NdisInterfacePci = PCIBus, NdisInterfacePcMcia = PCMCIABus, NdisInterfaceCBus = CBus, NdisInterfaceMPIBus = MPIBus, NdisInterfaceMPSABus = MPSABus, NdisInterfaceProcessorInternal = ProcessorInternal, NdisInterfaceInternalPowerBus = InternalPowerBus, NdisInterfacePNPISABus = PNPISABus, NdisInterfacePNPBus = PNPBus, NdisInterfaceUSB = 16, NdisInterfaceIrda = 17, NdisInterface1394 = 18, NdisMaximumInterfaceType = 19 } NDIS_INTERFACE_TYPE; typedef NDIS_INTERFACE_TYPE *PNDIS_INTERFACE_TYPE; /* NDIS WAN line up */ typedef struct _NDIS_WAN_LINE_UP { ULONG LinkSpeed; ULONG MaximumTotalSize; NDIS_WAN_QUALITY Quality; USHORT SendWindow; UCHAR RemoteAddress[6]; UCHAR LocalAddress[6]; ULONG ProtocolBufferLength; PUCHAR ProtocolBuffer; USHORT ProtocolType; NDIS_STRING DeviceName; } NDIS_WAN_LINE_UP; typedef NDIS_WAN_LINE_UP *PNDIS_WAN_LINE_UP; /* NDIS WAN line down */ typedef struct _NDIS_WAN_LINE_DOWN { UCHAR RemoteAddress[6]; UCHAR LocalAddress[6]; } NDIS_WAN_LINE_DOWN; typedef NDIS_WAN_LINE_DOWN *PNDIS_WAN_LINE_DOWN; /* NDIS WAN fragment */ typedef struct _NDIS_WAN_FRAGMENT { UCHAR RemoteAddress[6]; UCHAR LocalAddress[6]; } NDIS_WAN_FRAGMENT; typedef NDIS_WAN_FRAGMENT *PNDIS_WAN_FRAGMENT; /* NDIS WAN get statistics */ typedef struct _NDIS_WAN_GET_STATS { UCHAR LocalAddress[6]; ULONG BytesSent; ULONG BytesRcvd; ULONG FramesSent; ULONG FramesRcvd; ULONG CRCErrors; ULONG TimeoutErrors; ULONG AlignmentErrors; ULONG SerialOverrunErrors; ULONG FramingErrors; ULONG BufferOverrunErrors; ULONG BytesTransmittedUncompressed; ULONG BytesReceivedUncompressed; ULONG BytesTransmittedCompressed; ULONG BytesReceivedCompressed; } NDIS_WAN_GET_STATS; typedef NDIS_WAN_GET_STATS *PNDIS_WAN_GET_STATS; /* NDIS private packet */ #if NDIS_LEGACY_DRIVER typedef struct _NDIS_PACKET_PRIVATE { UINT PhysicalCount; UINT TotalLength; PNDIS_BUFFER Head; PNDIS_BUFFER Tail; PNDIS_PACKET_POOL Pool; UINT Count; ULONG Flags; BOOLEAN ValidCounts; UCHAR NdisPacketFlags; USHORT NdisPacketOobOffset; } NDIS_PACKET_PRIVATE; typedef NDIS_PACKET_PRIVATE *PNDIS_PACKET_PRIVATE; #endif /* NDIS class identifiers */ typedef enum _NDIS_CLASS_ID { NdisClass802_3Priority = 0, NdisClassWirelessWanMbxMailbox = 1, NdisClassIrdaPacketInfo = 2, NdisClassAtmAALInfo = 3 } NDIS_CLASS_ID; /* Media specific information */ typedef struct _MEDIA_SPECIFIC_INFORMATION { UINT NextEntryOffset; NDIS_CLASS_ID ClassId; UINT Size; UCHAR ClassInformation[1]; } MEDIA_SPECIFIC_INFORMATION; typedef MEDIA_SPECIFIC_INFORMATION *PMEDIA_SPECIFIC_INFORMATION; /* NDIS packet OOB data */ #if NDIS_LEGACY_DRIVER typedef struct _NDIS_PACKET_OOB_DATA { union { ULONGLONG TimeToSend; ULONGLONG TimeSent; }; ULONGLONG TimeReceived; UINT HeaderSize; UINT SizeMediaSpecificInfo; PVOID MediaSpecificInformation; NDIS_STATUS Status; } NDIS_PACKET_OOB_DATA; typedef NDIS_PACKET_OOB_DATA *PNDIS_PACKET_OOB_DATA; #endif /* NDIS packet */ #if NDIS_LEGACY_DRIVER typedef struct _NDIS_PACKET { NDIS_PACKET_PRIVATE Private; union { struct { UCHAR MiniportReserved[2 * sizeof( PVOID )]; UCHAR WrapperReserved[2 * sizeof( PVOID )]; }; struct { UCHAR MiniportReservedEx[3 * sizeof( PVOID )]; UCHAR WrapperReservedEx[sizeof( PVOID )]; }; struct { UCHAR MacReserved[4 * sizeof( PVOID )]; }; }; ULONG_PTR Reserved[2]; UCHAR ProtocolReserved[1]; } NDIS_PACKET; typedef NDIS_PACKET *PNDIS_PACKET; typedef NDIS_PACKET **PPNDIS_PACKET; #endif /* NDIS per packet information */ typedef enum _NDIS_PER_PACKET_INFO { TcpIpChecksumPacketInfo = 0, IpSecPacketInfo = 1, TcpLargeSendPacketInfo = 2, ClassificationHandlePacketInfo = 3, ScatterGatherListPacketInfo = 5, Ieee8021QInfo = 6, OriginalPacketInfo = 7, PacketCancelId = 8, OriginalNetBufferList = 9, CachedNetBufferList = 10, ShortPacketPaddingInfo = 11, MaxPerPacketInfo = 12 } NDIS_PER_PACKET_INFO; typedef NDIS_PER_PACKET_INFO *PNDIS_PER_PACKET_INFO; #if NDIS_LEGACY_DRIVER #define Ieee8021pPriority Ieee8021QInfo #endif /* NDIS packet extension */ #if NDIS_LEGACY_DRIVER typedef struct _NDIS_PACKET_EXTENSION { PVOID NdisPacketInfo[MaxPerPacketInfo]; } NDIS_PACKET_EXTENSION; typedef NDIS_PACKET_EXTENSION *PNDIS_PACKET_EXTENSION; #endif /* NDIS packet stack */ #if NDIS_LEGACY_DRIVER typedef struct _NDIS_PACKET_STACK { ULONG_PTR IMReserved[2]; ULONG_PTR NdisReserved[4]; } NDIS_PACKET_STACK; typedef NDIS_PACKET_STACK *PNDIS_PACKET_STACK; #endif /* NDIS TCP/IP checksum packet information */ typedef struct _NDIS_TCP_IP_CHECKSUM_PACKET_INFO { union { struct { ULONG NdisPacketChecksumV4 : 1; ULONG NdisPacketChecksumV6 : 1; ULONG NdisPacketTcpChecksum : 1; ULONG NdisPacketUdpChecksum : 1; ULONG NdisPacketIpChecksum : 1; } Transmit; struct { ULONG NdisPacketTcpChecksumFailed : 1; ULONG NdisPacketUdpChecksumFailed : 1; ULONG NdisPacketIpChecksumFailed : 1; ULONG NdisPacketTcpChecksumSucceeded : 1; ULONG NdisPacketUdpChecksumSucceeded : 1; ULONG NdisPacketIpChecksumSucceeded : 1; ULONG NdisPacketLoopback : 1; } Receive; ULONG Value; }; } NDIS_TCP_IP_CHECKSUM_PACKET_INFO; typedef NDIS_TCP_IP_CHECKSUM_PACKET_INFO *PNDIS_TCP_IP_CHECKSUM_PACKET_INFO; /* NDIS packet 8021Q information */ typedef struct _NDIS_PACKET_8021Q_INFO { union { struct { UINT32 UserPriority : 3; UINT32 CanonicalFormatId : 1; UINT32 VlanId : 12; UINT32 Reserved : 16; } TagHeader; PVOID Value; }; } NDIS_PACKET_8021Q_INFO; typedef NDIS_PACKET_8021Q_INFO *PNDIS_PACKET_8021Q_INFO; /* NDIS WAN packet */ #if NDIS_LEGACY_DRIVER typedef struct _NDIS_WAN_PACKET { LIST_ENTRY WanPocketQueue; PUCHAR CurrentBuffer; ULONG CurrentLength; PUCHAR StartBuffer; PUCHAR EndBuffer; PVOID ProtocolReserved1; PVOID ProtocolReserved2; PVOID ProtocolReserved3; PVOID ProtocolReserved4; PVOID MacReserved1; PVOID MacReserved2; PVOID MacReserved3; PVOID MacReserved4; } NDIS_WAN_PACKET; typedef NDIS_WAN_PACKET *PNDIS_WAN_PACKET; #endif /* NDIS request types */ typedef enum _NDIS_REQUEST_TYPE { NdisRequestQueryInformation = 0, NdisRequestSetInformation = 1, NdisRequestQueryStatistics = 2, NdisRequestOpen = 3, NdisRequestClose = 4, NdisRequestSend = 5, NdisRequestTransferData = 6, NdisRequestReset = 7, NdisRequestGeneric1 = 8, NdisRequestGeneric2 = 9, NdisRequestGeneric3 = 10, #if NDIS_SUPPORT_NDIS6 NdisRequestGeneric4 = 11, NdisRequestMethod = 12 #else NdisRequestGeneric4 = 11 #endif } NDIS_REQUEST_TYPE; typedef NDIS_REQUEST_TYPE *PNDIS_REQUEST_TYPE; /* NDIS request */ #if NDIS_LEGACY_DRIVER typedef struct _NDIS_REQUEST { UCHAR MacReserved[4 * sizeof( PVOID )]; NDIS_REQUEST_TYPE RequestType; union _DATA { struct _QUERY_INFORMATION { NDIS_OID Oid; PVOID InformationBuffer; UINT InformationBufferLength; UINT BytesWritten; UINT BytesNeeded; } QUERY_INFORMATION; struct _SET_INFORMATION { NDIS_OID Oid; PVOID InformationBuffer; UINT InformationBufferLength; UINT BytesRead; UINT BytesNeeded; } SET_INFORMATION; } DATA; #if defined( NDIS50 ) || defined( NDIS51 ) || defined( NDIS50_MINIPORT ) || \ defined( NDIS51_MINIPORT ) UCHAR NdisReserved[9 * sizeof( PVOID )]; union { UCHAR CallMgrReserved[2 * sizeof( PVOID )]; UCHAR ProtocolReserved[2 * sizeof( PVOID )]; }; UCHAR MiniportReserved[2 * sizeof( PVOID )]; #endif } NDIS_REQUEST; typedef NDIS_REQUEST *PNDIS_REQUEST; #endif /* CO address family */ typedef struct { NDIS_AF AddressFamily; ULONG MajorVersion; ULONG MinorVersion; } CO_ADDRESS_FAMILY; typedef CO_ADDRESS_FAMILY *PCO_ADDRESS_FAMILY; /* CO sap */ typedef struct { ULONG SapType; ULONG SapLength; UCHAR Sap[1]; } CO_SAP; typedef CO_SAP *PCO_SAP; /* NDIS physical address unit */ typedef struct _NDIS_PHYSICAL_ADDRESS_UNIT { NDIS_PHYSICAL_ADDRESS PhysicalAddress; UINT Length; } NDIS_PHYSICAL_ADDRESS_UNIT; typedef NDIS_PHYSICAL_ADDRESS_UNIT *PNDIS_PHYSICAL_ADDRESS_UNIT; /* Reference */ typedef struct _REFERENCE { KSPIN_LOCK SpinLock; USHORT ReferenceCount; BOOLEAN Closing; } REFERENCE; typedef REFERENCE *PREFERENCE; /* NDIS read/write lock reference count */ #if NDIS_SUPPORT_60_COMPATIBLE_API typedef struct _NDIS_RW_LOCK_REFCOUNT { ULONG RefCount; UCHAR cacheLine[16]; } NDIS_RW_LOCK_REFCOUNT; typedef NDIS_RW_LOCK_REFCOUNT *PNDIS_RW_LOCK_REFCOUNT; #endif /* NDIS read/write lock */ #if NDIS_SUPPORT_60_COMPATIBLE_API typedef struct _NDIS_RW_LOCK { union { struct { KSPIN_LOCK SpinLock; PVOID Context; }; UCHAR Reserved[16]; }; union { NDIS_RW_LOCK_REFCOUNT RefCount[MAXIMUM_PROCESSORS]; ULONG RefCountEx[sizeof( NDIS_RW_LOCK_REFCOUNT ) / sizeof( ULONG ) * MAXIMUM_PROCESSORS]; struct { KSPIN_LOCK RefCountLock; volatile ULONG SharedRefCount; volatile BOOLEAN WriterWaiting; }; }; } NDIS_RW_LOCK; typedef NDIS_RW_LOCK *PNDIS_RW_LOCK; #endif /* Lock state */ #if NDIS_SUPPORT_60_COMPATIBLE_API typedef struct _LOCK_STATE { USHORT LockState; KIRQL OldIrql; } LOCK_STATE; typedef LOCK_STATE *PLOCK_STATE; #endif /* Lock state (extended version) */ #if NDIS_SUPPORT_NDIS620 typedef struct _LOCK_STATE_EX { KIRQL OldIrql; UCHAR LockState; UCHAR Flags; } LOCK_STATE_EX; typedef LOCK_STATE_EX *PLOCK_STATE_EX; #endif /* NDIS timer callback */ typedef VOID (NTAPI NDIS_TIMER_FUNCTION)( PVOID, PVOID, PVOID, PVOID ); typedef NDIS_TIMER_FUNCTION *PNDIS_TIMER_FUNCTION; /* NDIS timer */ typedef struct _NDIS_TIMER { KTIMER Timer; KDPC Dpc; } NDIS_TIMER; typedef NDIS_TIMER *PNDIS_TIMER; /* NDIS restart attributes */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_RESTART_ATTRIBUTES { struct _NDIS_RESTART_ATTRIBUTES *Next; NDIS_OID Oid; ULONG DataLength; UCHAR Data[1]; } NDIS_RESTART_ATTRIBUTES; typedef NDIS_RESTART_ATTRIBUTES *PNDIS_RESTART_ATTRIBUTES; #endif /* NDIS handlers */ #if NDIS_SUPPORT_NDIS6 typedef NDIS_STATUS (NTAPI SET_OPTIONS)( NDIS_HANDLE, NDIS_HANDLE ); typedef SET_OPTIONS *SET_OPTIONS_HANDLER; typedef SET_OPTIONS MINIPORT_SET_OPTIONS; typedef SET_OPTIONS PROTOCOL_SET_OPTIONS; typedef SET_OPTIONS FILTER_SET_OPTIONS; #endif #if NDIS_LEGACY_DRIVER typedef NDIS_STATUS (NTAPI *WAN_SEND_HANDLER)( NDIS_HANDLE, NDIS_HANDLE, PVOID ); typedef NDIS_STATUS (NTAPI *SEND_HANDLER)( NDIS_HANDLE, PNDIS_PACKET ); typedef NDIS_STATUS (NTAPI *TRANSFER_DATA_HANDLER)( NDIS_HANDLE, NDIS_HANDLE, UINT, UINT, PNDIS_PACKET, PUINT ); typedef NDIS_STATUS (NTAPI *RESET_HANDLER)( NDIS_HANDLE ); typedef NDIS_STATUS (NTAPI *REQUEST_HANDLER)( NDIS_HANDLE, PNDIS_REQUEST ); typedef VOID (NTAPI *SEND_PACKETS_HANDLER)( NDIS_HANDLE, PPNDIS_PACKET, UINT ); #endif /* NDIS configuration object */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_CONFIGURATION_OBJECT { NDIS_OBJECT_HEADER Header; NDIS_HANDLE NdisHandle; ULONG Flags; } NDIS_CONFIGURATION_OBJECT; typedef NDIS_CONFIGURATION_OBJECT *PNDIS_CONFIGURATION_OBJECT; #endif /* NDIS driver optional handlers */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_DRIVER_OPTIONAL_HANDLERS { NDIS_OBJECT_HEADER Header; } NDIS_DRIVER_OPTIONAL_HANDLERS; typedef NDIS_DRIVER_OPTIONAL_HANDLERS *PNDIS_DRIVER_OPTIONAL_HANDLERS; #endif /* Network Plug and Play event notification */ #if NDIS_SUPPORT_NDIS6 typedef struct _NET_PNP_EVENT_NOTIFICATION { NDIS_OBJECT_HEADER Header; NDIS_PORT_NUMBER PortNumber; NET_PNP_EVENT NetPnPEvent; ULONG Flags; } NET_PNP_EVENT_NOTIFICATION; typedef NET_PNP_EVENT_NOTIFICATION *PNET_PNP_EVENT_NOTIFICATION; #endif /* NDIS object identifier request */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_OID_REQUEST { NDIS_OBJECT_HEADER Header; NDIS_REQUEST_TYPE RequestType; NDIS_PORT_NUMBER PortNumber; UINT Timeout; PVOID RequestId; NDIS_HANDLE RequestHandle; union _REQUEST_DATA { struct _QUERY { NDIS_OID Oid; PVOID InformationBuffer; UINT InformationBufferLength; UINT BytesWritten; UINT BytesNeeded; } QUERY_INFORMATION; struct _SET { NDIS_OID Oid; PVOID InformationBuffer; UINT InformationBufferLength; UINT BytesRead; UINT BytesNeeded; } SET_INFORMATION; struct _METHOD { NDIS_OID Oid; PVOID InformationBuffer; ULONG InputBufferLength; ULONG OutputBufferLength; ULONG MethodId; UINT BytesWritten; UINT BytesRead; UINT BytesNeeded; } METHOD_INFORMATION; } DATA; UCHAR NdisReserved[NDIS_OID_REQUEST_NDIS_RESERVED_SIZE * sizeof( PVOID )]; UCHAR MiniportReserved[2 * sizeof( PVOID )]; UCHAR SourceReserved[2 * sizeof( PVOID )]; UCHAR SupportedRevision; UCHAR Reserved1; USHORT Reserved2; } NDIS_OID_REQUEST; typedef NDIS_OID_REQUEST *PNDIS_OID_REQUEST; #endif /* NDIS status indication */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_STATUS_INDICATION { NDIS_OBJECT_HEADER Header; NDIS_HANDLE SourceHandle; NDIS_PORT_NUMBER PortNumber; NDIS_STATUS StatusCode; ULONG Flags; NDIS_HANDLE DestinationHandle; PVOID RequestId; PVOID StatusBuffer; ULONG StatusBufferSize; GUID Guid; PVOID NdisReserved[4]; } NDIS_STATUS_INDICATION; typedef NDIS_STATUS_INDICATION *PNDIS_STATUS_INDICATION; #endif /* NDIS timer characteristics */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_TIMER_CHARACTERISTICS { NDIS_OBJECT_HEADER Header; ULONG AllocationTag; PNDIS_TIMER_FUNCTION TimerFunction; PVOID FunctionContext; } NDIS_TIMER_CHARACTERISTICS; typedef NDIS_TIMER_CHARACTERISTICS *PNDIS_TIMER_CHARACTERISTICS; #endif /* NDIS restart general attributes */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_RESTART_GENERAL_ATTRIBUTES { NDIS_OBJECT_HEADER Header; ULONG MtuSize; ULONG64 MaxXmitLinkSpeed; ULONG64 MaxRcvLinkSpeed; ULONG LookaheadSize; ULONG MacOptions; ULONG SupportedPacketFilters; ULONG MaxMulticastListSize; PNDIS_RECEIVE_SCALE_CAPABILITIES RecvScaleCapabilities; NET_IF_ACCESS_TYPE AccessType; ULONG Flags; NET_IF_CONNECTION_TYPE ConnectionType; ULONG SupportedStatistics; ULONG DataBackFillSize; ULONG ContextBackFillSize; PNDIS_OID SupportedOidList; ULONG SupportedOidListLength; #if NDIS_SUPPORT_NDIS620 ULONG MaxLookaheadSizeAccessed; #endif } NDIS_RESTART_GENERAL_ATTRIBUTES; typedef NDIS_RESTART_GENERAL_ATTRIBUTES *PNDIS_RESTART_GENERAL_ATTRIBUTES; #endif /* NDIS processor information */ #if NDIS_SUPPORT_NDIS6 && NDIS_SUPPORT_60_COMPATIBLE_API typedef struct _NDIS_PROCESSOR_INFO { ULONG CpuNumber; ULONG PhysicalPackageId; ULONG CoreId; ULONG HyperThreadID; } NDIS_PROCESSOR_INFO; typedef NDIS_PROCESSOR_INFO *PNDIS_PROCESSOR_INFO; #endif /* NDIS system processor information */ #if NDIS_SUPPORT_NDIS6 && NDIS_SUPPORT_60_COMPATIBLE_API typedef struct _NDIS_SYSTEM_PROCESSOR_INFO { NDIS_OBJECT_HEADER Header; ULONG Flags; NDIS_PROCESSOR_VENDOR ProcessorVendor; ULONG NumPhysicalPackages; ULONG NumCores; ULONG NumCoresPerPhysicalPackage; ULONG MaxHyperThreadingCpusPerCore; ULONG RssBaseCpu; ULONG RssCpuCount; PUCHAR RssProcessors; NDIS_PROCESSOR_INFO CpuInfo[MAXIMUM_PROC_PER_GROUP]; } NDIS_SYSTEM_PROCESSOR_INFO; typedef NDIS_SYSTEM_PROCESSOR_INFO *PNDIS_SYSTEM_PROCESSOR_INFO; #endif /* NDIS filter interface */ #if (NTDDI_VERSION == 0x06000000) && (NDIS_LEGACY_DRIVER || NDIS_SUPPORT_NDIS6) typedef struct _NDIS_FILTER_INTERFACE { NDIS_OBJECT_HEADER Header; ULONG Flags; ULONG FilterType; ULONG FilterRunType; NET_IFINDEX IfIndex; NET_LUID NetLuid; NDIS_STRING FilterClass; NDIS_STRING FilterInstanceName; } NDIS_FILTER_INTERFACE; typedef NDIS_FILTER_INTERFACE *PNDIS_FILTER_INTERFACE; #endif /* NDIS enumerate filters */ #if (NTDDI_VERSION == 0x06000000) && (NDIS_LEGACY_DRIVER || NDIS_SUPPORT_NDIS6) typedef struct _NDIS_ENUM_FILTERS { NDIS_OBJECT_HEADER Header; ULONG Flags; ULONG NumberOfFilters; ULONG OffsetFirstFilter; NDIS_FILTER_INTERFACE Filter[1]; } NDIS_ENUM_FILTERS; typedef NDIS_ENUM_FILTERS *PNDIS_ENUM_FILTERS; #endif /* NDIS device object attributes */ #if (NTDDI_VERSION == 0x06000000) && (NDIS_LEGACY_DRIVER || NDIS_SUPPORT_NDIS6) typedef struct _NDIS_DEVICE_OBJECT_ATTRIBUTES { NDIS_OBJECT_HEADER Header; PNDIS_STRING DeviceName; PNDIS_STRING SymbolicName; PDRIVER_DISPATCH *MajorFunctions; ULONG ExtensionSize; PCUNICODE_STRING DefaultSDDLString; LPCGUID DeviceClassGuid; } NDIS_DEVICE_OBJECT_ATTRIBUTES; typedef NDIS_DEVICE_OBJECT_ATTRIBUTES *PNDIS_DEVICE_OBJECT_ATTRIBUTES; #endif /* NDIS driver wrapper handle */ #if (NTDDI_VERSION == 0x06000000) && (NDIS_LEGACY_DRIVER || NDIS_SUPPORT_NDIS6) typedef struct _NDIS_DRIVER_WRAPPER_HANDLE { NDIS_OBJECT_HEADER Header; NDIS_HANDLE NdisWrapperHandle; } NDIS_DRIVER_WRAPPER_HANDLE; typedef NDIS_DRIVER_WRAPPER_HANDLE *PNDIS_DRIVER_WRAPPER_HANDLE; #endif /* NDIS shared memory usage values */ #if NDIS_SUPPORT_NDIS620 typedef enum _NDIS_SHARED_MEMORY_USAGE { NdisSharedMemoryUsageUndefined = 0, NdisSharedMemoryUsageXmit = 1, NdisSharedMemoryUsageXmitHeader = 2, NdisSharedMemoryUsageXmitData = 3, NdisSharedMemoryUsageReceive = 4, NdisSharedMemoryUsageReceiveLookahead = 5, NdisSharedMemoryUsageReceivePostLookahead = 6, NdisSharedMemoryUsageReceiveHeader = 7, NdisSharedMemoryUsageReceiveData = 8, NdisSharedMemoryUsageOther = 9, NdisSharedMemoryUsageMax = 10 } NDIS_SHARED_MEMORY_USAGE; typedef NDIS_SHARED_MEMORY_USAGE *PNDIS_SHARED_MEMORY_USAGE; #endif /* NDIS shared memory parameters */ #if NDIS_SUPPORT_NDIS620 typedef struct _NDIS_SHARED_MEMORY_PARAMETERS { NDIS_OBJECT_HEADER Header; ULONG Flags; NDIS_RECEIVE_QUEUE_ID QueueId; NDIS_HANDLE SharedMemoryHandle; NODE_REQUIREMENT PreferredNode; NDIS_SHARED_MEMORY_USAGE Usage; ULONG Length; PVOID VirtualAddress; ULONG SGListBufferLength; PSCATTER_GATHER_LIST SGListBuffer; } NDIS_SHARED_MEMORY_PARAMETERS; typedef NDIS_SHARED_MEMORY_PARAMETERS *PNDIS_SHARED_MEMORY_PARAMETERS; #endif /* Shared memory callbacks */ #if NDIS_SUPPORT_NDIS620 typedef NDIS_STATUS (NTAPI *ALLOCATE_SHARED_MEMORY_HANDLER)( NDIS_HANDLE, PNDIS_SHARED_MEMORY_PARAMETERS ); typedef VOID (NTAPI *FREE_SHARED_MEMORY_HANDLER)( NDIS_HANDLE, NDIS_HANDLE ); #endif /* NDIS shared memory provider characteristics */ #if NDIS_SUPPORT_NDIS620 typedef struct _NDIS_SHARED_MEMORY_PROVIDER_CHARACTERISTICS { NDIS_OBJECT_HEADER Header; ULONG Flags; NDIS_HANDLE ProviderContext; ALLOCATE_SHARED_MEMORY_HANDLER AllocateSharedMemoryHandler; FREE_SHARED_MEMORY_HANDLER FreeSharedMemoryHandler; } NDIS_SHARED_MEMORY_PROVIDER_CHARACTERISTICS; typedef NDIS_SHARED_MEMORY_PROVIDER_CHARACTERISTICS *PNDIS_SHARED_MEMORY_PROVIDER_CHARACTERISTICS; #endif /* NDIS receive queue state */ #if NDIS_SUPPORT_NDIS620 typedef struct _NDIS_RECEIVE_QUEUE_STATE { NDIS_OBJECT_HEADER Header; ULONG Flags; NDIS_RECEIVE_QUEUE_ID QueueId; NDIS_RECEIVE_QUEUE_OPERATIONAL_STATE QueueState; } NDIS_RECEIVE_QUEUE_STATE; typedef NDIS_RECEIVE_QUEUE_STATE *PNDIS_RECEIVE_QUEUE_STATE; #endif /* NDIS process scatter/gather list handler */ #if NDIS_SUPPORT_NDIS620 typedef VOID (NTAPI NDIS_PROCESS_SG_LIST)( PDEVICE_OBJECT, PVOID, PSCATTER_GATHER_LIST, PVOID ); typedef NDIS_PROCESS_SG_LIST *NDIS_PROCESS_SG_LIST_HANDLER; #endif /* NDIS scatter/gather list parameters */ #if NDIS_SUPPORT_NDIS620 typedef struct _NDIS_SCATTER_GATHER_LIST_PARAMETERS { NDIS_OBJECT_HEADER Header; ULONG Flags; NDIS_RECEIVE_QUEUE_ID QueueId; NDIS_SHARED_MEMORY_USAGE SharedMemoryUsage; PMDL Mdl; PVOID CurrentVa; ULONG Length; NDIS_PROCESS_SG_LIST_HANDLER ProcessSGListHandler; PVOID Context; PSCATTER_GATHER_LIST ScatterGatherListBuffer; ULONG ScatterGatherListBufferSize; ULONG ScatterGatherListBufferSizeNeeded; } NDIS_SCATTER_GATHER_LIST_PARAMETERS; typedef NDIS_SCATTER_GATHER_LIST_PARAMETERS *PNDIS_SCATTER_GATHER_LIST_PARAMETERS; #endif /* Network buffer data length */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef union _NET_BUFFER_DATA_LENGTH { ULONG DataLength; SIZE_T stDataLength; } NET_BUFFER_DATA_LENGTH; typedef NET_BUFFER_DATA_LENGTH *PNET_BUFFER_DATA_LENGTH; #endif /* Network buffer data */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NET_BUFFER_DATA { struct _NET_BUFFER *Next; PMDL CurrentMdl; ULONG CurrentMdlOffset; #ifdef __cplusplus NET_BUFFER_DATA_LENGTH NbDataLength; #else NET_BUFFER_DATA_LENGTH; #endif PMDL MdlChain; ULONG DataOffset; } NET_BUFFER_DATA; typedef NET_BUFFER_DATA *PNET_BUFFER_DATA; #endif /* Network buffer header */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef union _NET_BUFFER_HEADER { #ifdef __cplusplus NET_BUFFER_DATA NetBufferData; #else NET_BUFFER_DATA; #endif SLIST_HEADER Link; } NET_BUFFER_HEADER; typedef NET_BUFFER_HEADER *PNET_BUFFER_HEADER; #endif /* Network buffer shared memory */ #if NDIS_SUPPORT_NDIS620 typedef struct _NET_BUFFER_SHARED_MEMORY { struct _NET_BUFFER_SHARED_MEMORY *NextSharedMemorySegment; ULONG SharedMemoryFlags; NDIS_HANDLE SharedMemoryHandle; ULONG SharedMemoryOffset; ULONG SharedMemoryLength; } NET_BUFFER_SHARED_MEMORY; typedef NET_BUFFER_SHARED_MEMORY *PNET_BUFFER_SHARED_MEMORY; #endif /* Network buffer */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NET_BUFFER { #ifdef __cplusplus NET_BUFFER_HEADER NetBufferHeader; #else NET_BUFFER_HEADER; #endif USHORT ChecksumBias; USHORT Reserved; NDIS_HANDLE NdisPoolHandle; PVOID NdisReserved[2]; PVOID ProtocolReserved[6]; PVOID MiniportReserved[4]; NDIS_PHYSICAL_ADDRESS DataPhysicalAddress; #if NDIS_SUPPORT_NDIS620 union { PNET_BUFFER_SHARED_MEMORY SharedMemoryInfo; PSCATTER_GATHER_LIST ScatterGatherList; }; #endif } NET_BUFFER; typedef NET_BUFFER *PNET_BUFFER; #endif /* Network buffer list context */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NET_BUFFER_LIST_CONTEXT { struct _NET_BUFFER_LIST_CONTEXT *Next; USHORT Size; USHORT Offset; UCHAR ContextData[]; } NET_BUFFER_LIST_CONTEXT; typedef NET_BUFFER_LIST_CONTEXT *PNET_BUFFER_LIST_CONTEXT; #endif /* NDIS network buffer list information */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef enum _NDIS_NET_BUFFER_LIST_INFO { TcpIpChecksumNetBufferListInfo = 0, TcpOffloadBytesTransferred = TcpIpChecksumNetBufferListInfo, IPsecOffloadV1NetBufferListInfo = 1, #if NDIS_SUPPORT_NDIS61 IPsecOffloadV2NetBufferListInfo = IPsecOffloadV1NetBufferListInfo, #endif TcpLargeSendNetBufferListInfo = 2, TcpReceiveNoPush = TcpLargeSendNetBufferListInfo, ClassificationHandleNetBufferListInfo = 3, Ieee8021QNetBufferListInfo = 4, NetBufferListCancelId = 5, MediaSpecificInformation = 6, NetBufferListFrameType = 7, NetBufferListProtocolId = NetBufferListFrameType, NetBufferListHashValue = 8, NetBufferListHashInfo = 9, WfpNetBufferListInfo = 10, #if NDIS_SUPPORT_NDIS61 IPsecOffloadV2TunnelNetBufferListInfo = 11, IPsecOffloadV2HeaderNetBufferListInfo = 12, #endif #if NDIS_SUPPORT_NDIS620 NetBufferListCorrelationId = 13, NetBufferListFilteringInfo = 14, MediaSpecificInformationEx = 15, NblOriginalInterfaceIfIndex = 16, NblReAuthWfpFlowContext = NblOriginalInterfaceIfIndex, TcpReceiveBytesTransferred = 17, #endif MaxNetBufferListInfo = 18 } NDIS_NET_BUFFER_LIST_INFO; typedef NDIS_NET_BUFFER_LIST_INFO *PNDIS_NET_BUFFER_LIST_INFO; #endif /* Network buffer list data */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NET_BUFFER_LIST_DATA { struct _NET_BUFFER_LIST *Next; PNET_BUFFER FirstNetBuffer; } NET_BUFFER_LIST_DATA; typedef NET_BUFFER_LIST_DATA *PNET_BUFFER_LIST_DATA; #endif /* Network buffer list header */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef union _NET_BUFFER_LIST_HEADER { #ifdef __cplusplus NET_BUFFER_LIST_DATA NetBufferListData; #else NET_BUFFER_LIST_DATA; #endif SLIST_HEADER Link; } NET_BUFFER_LIST_HEADER; typedef NET_BUFFER_LIST_HEADER *PNET_BUFFER_LIST_HEADER; #endif /* Network buffer list */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NET_BUFFER_LIST { #ifdef __cplusplus NET_BUFFER_LIST_HEADER NetBufferListHeader; #else NET_BUFFER_LIST_HEADER; #endif PNET_BUFFER_LIST_CONTEXT Context; struct _NET_BUFFER_LIST *ParentNetBufferList; NDIS_HANDLE NdisPoolHandle; PVOID NdisReserved[2]; PVOID ProtocolReserved[4]; PVOID MiniportReserved[2]; PVOID Scratch; NDIS_HANDLE SourceHandle; ULONG NblFlags; LONG ChildRefCount; ULONG Flags; NDIS_STATUS Status; PVOID NetBufferListInfo[MaxNetBufferListInfo]; } NET_BUFFER_LIST; typedef NET_BUFFER_LIST *PNET_BUFFER_LIST; #endif /* NDIS network buffer list 8021Q information */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NDIS_NET_BUFFER_LIST_8021Q_INFO { union { struct { UINT32 UserPriority : 3; UINT32 CanonicalFormatId : 1; UINT32 VlanId : 12; UINT32 Reserved : 16; } TagHeader; struct { UINT32 UserPriority : 3; UINT32 CanonicalFormatId : 1; UINT32 VlanId : 12; UINT32 WMMInfo : 4; UINT32 Reserved : 12; } WLanTagHeader; PVOID Value; }; } NDIS_NET_BUFFER_LIST_8021Q_INFO; typedef NDIS_NET_BUFFER_LIST_8021Q_INFO *PNDIS_NET_BUFFER_LIST_8021Q_INFO; #endif /* NDIS network buffer list media-specific information */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NDIS_NET_BUFFER_LIST_MEDIA_SPECIFIC_INFO { union { PVOID MediaSpecificInfo; PVOID NativeWifiSpecificInfo; PVOID Value; }; } NDIS_NET_BUFFER_LIST_MEDIA_SPECIFIC_INFO; typedef NDIS_NET_BUFFER_LIST_MEDIA_SPECIFIC_INFO *PNDIS_NET_BUFFER_LIST_MEDIA_SPECIFIC_INFO; #endif /* NDIS NBL media-specific information */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NDIS_NBL_MEDIA_SPECIFIC_INFORMATION { struct _NDIS_NBL_MEDIA_SPECIFIC_INFORMATION *NextEntry; ULONG Tag; UCHAR Data[1]; } NDIS_NBL_MEDIA_SPECIFIC_INFORMATION; typedef NDIS_NBL_MEDIA_SPECIFIC_INFORMATION *PNDIS_NBL_MEDIA_SPECIFIC_INFORMATION; #endif /* NDIS NBL media-specific information (extended version) */ #if NDIS_SUPPORT_NDIS620 typedef struct _NDIS_NBL_MEDIA_SPECIFIC_INFORMATION_EX { NDIS_OBJECT_HEADER Header; struct _NDIS_NBL_MEDIA_SPECIFIC_INFORMATION_EX *NextEntry; ULONG Tag; PVOID Data; } NDIS_NBL_MEDIA_SPECIFIC_INFORMATION_EX; typedef NDIS_NBL_MEDIA_SPECIFIC_INFORMATION_EX *PNDIS_NBL_MEDIA_SPECIFIC_INFORMATION_EX; #endif /* NDIS network buffer list filtering information */ #if NDIS_SUPPORT_NDIS620 typedef struct _NDIS_NET_BUFFER_LIST_FILTERING_INFO { union { struct { USHORT FilterId; USHORT QueueId; } FilteringInfo; PVOID Value; }; } NDIS_NET_BUFFER_LIST_FILTERING_INFO; typedef NDIS_NET_BUFFER_LIST_FILTERING_INFO *PNDIS_NET_BUFFER_LIST_FILTERING_INFO; #endif /* Network buffer list pool parameters */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NET_BUFFER_LIST_POOL_PARAMETERS { NDIS_OBJECT_HEADER Header; UCHAR ProtocolId; BOOLEAN fAllocateNetBuffer; USHORT ContextSize; ULONG PoolTag; ULONG DataSize; } NET_BUFFER_LIST_POOL_PARAMETERS; typedef NET_BUFFER_LIST_POOL_PARAMETERS *PNET_BUFFER_LIST_POOL_PARAMETERS; #endif /* Network buffer pool parameters */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NET_BUFFER_POOL_PARAMETERS { NDIS_OBJECT_HEADER Header; ULONG PoolTag; ULONG DataSize; } NET_BUFFER_POOL_PARAMETERS; typedef NET_BUFFER_POOL_PARAMETERS *PNET_BUFFER_POOL_PARAMETERS; #endif /* Network buffer callbacks */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef PMDL (NTAPI *NET_BUFFER_ALLOCATE_MDL_HANDLER)( PULONG ); typedef VOID (NTAPI *NET_BUFFER_FREE_MDL_HANDLER)( PMDL ); #endif /* NDIS IPsec packet information */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NDIS_IPSEC_PACKET_INFO { union { struct { NDIS_HANDLE OffloadHandle; NDIS_HANDLE NextOffloadHandle; } Transmit; struct { ULONG SA_DELETE_REQ : 1; ULONG CRYPTO_DONE : 1; ULONG NEXT_CRYPTO_DONE : 1; ULONG CryptoStatus; } Receive; }; } NDIS_IPSEC_PACKET_INFO; typedef NDIS_IPSEC_PACKET_INFO *PNDIS_IPSEC_PACKET_INFO; #endif /* NDIS IPsec offload network buffer list information (version 1) */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO { union { struct { NDIS_HANDLE OffloadHandle; } Transmit; struct { USHORT SaDeleteReq : 1; USHORT CryptoDone : 1; USHORT NextCryptoDone : 1; USHORT Pad : 13; USHORT CryptoStatus; } Receive; }; } NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO; typedef NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO *PNDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO; #endif /* NDIS tasks */ #if NDIS_LEGACY_DRIVER typedef enum _NDIS_TASK { TcpIpChecksumNdisTask = 0, IpSecNdisTask = 1, TcpLargeSendNdisTask = 2, MaxNdisTask = 3 } NDIS_TASK; typedef NDIS_TASK *PNDIS_TASK; #endif /* NDIS encapsulation values */ #if NDIS_LEGACY_DRIVER typedef enum _NDIS_ENCAPSULATION { UNSPECIFIED_Encapsulation = 0, NULL_Encapsulation = 1, IEEE_802_3_Encapsulation = 2, IEEE_802_5_Encapsulation = 3, LLC_SNAP_ROUTED_Encapsulation = 4, LLC_SNAP_BRIDGED_Encapsulation = 5 } NDIS_ENCAPSULATION; #endif /* NDIS encapsulation format */ #if NDIS_LEGACY_DRIVER typedef struct _NDIS_ENCAPSULATION_FORMAT { NDIS_ENCAPSULATION Encapsulation; struct { ULONG FixedHeaderSize : 1; ULONG Reserved : 31; } Flags; ULONG EncapsulationHeaderSize; } NDIS_ENCAPSULATION_FORMAT; typedef NDIS_ENCAPSULATION_FORMAT *PNDIS_ENCAPSULATION_FORMAT; #endif /* NDIS task offload header */ #if NDIS_LEGACY_DRIVER typedef struct _NDIS_TASK_OFFLOAD_HEADER { ULONG Version; ULONG Size; ULONG Reserved; ULONG OffsetFirstTask; NDIS_ENCAPSULATION_FORMAT EncapsulationFormat; } NDIS_TASK_OFFLOAD_HEADER; typedef NDIS_TASK_OFFLOAD_HEADER *PNDIS_TASK_OFFLOAD_HEADER; #endif /* NDIS task offload */ #if NDIS_LEGACY_DRIVER typedef struct _NDIS_TASK_OFFLOAD { ULONG Version; ULONG Size; NDIS_TASK Task; ULONG OffsetNextTask; ULONG TaskBufferLength; UCHAR TaskBuffer[1]; } NDIS_TASK_OFFLOAD; typedef NDIS_TASK_OFFLOAD *PNDIS_TASK_OFFLOAD; #endif /* NDIS task TCP/IP checksum */ #if NDIS_LEGACY_DRIVER typedef struct _NDIS_TASK_TCP_IP_CHECKSUM { struct { ULONG IpOptionsSupported : 1; ULONG TcpOptionsSupported : 1; ULONG TcpChecksum : 1; ULONG UdpChecksum : 1; ULONG IpChecksum : 1; } V4Transmit; struct { ULONG IpOptionsSupported : 1; ULONG TcpOptionsSupported : 1; ULONG TcpChecksum : 1; ULONG UdpChecksum : 1; ULONG IpChecksum : 1; } V4Receive; struct { ULONG IpOptionsSupported : 1; ULONG TcpOptionsSupported : 1; ULONG TcpChecksum : 1; ULONG UdpChecksum : 1; } V6Transmit; struct { ULONG IpOptionsSupported : 1; ULONG TcpOptionsSupported : 1; ULONG TcpChecksum : 1; ULONG UdpChecksum : 1; } V6Receive; } NDIS_TASK_TCP_IP_CHECKSUM; typedef NDIS_TASK_TCP_IP_CHECKSUM *PNDIS_TASK_TCP_IP_CHECKSUM; #endif /* NDIS task TCP large send */ #if NDIS_LEGACY_DRIVER typedef struct _NDIS_TASK_TCP_LARGE_SEND { ULONG Version; ULONG MaxOffLoadSize; ULONG MinSegmentCount; BOOLEAN TcpOptions; BOOLEAN IpOptions; } NDIS_TASK_TCP_LARGE_SEND; typedef NDIS_TASK_TCP_LARGE_SEND *PNDIS_TASK_TCP_LARGE_SEND; #endif /* NDIS task IPsec */ #if NDIS_LEGACY_DRIVER typedef struct _NDIS_TASK_IPSEC { struct { ULONG AH_ESP_COMBINED; ULONG TRANSPORT_TUNNEL_COMBINED; ULONG V4_OPTIONS; ULONG RESERVED; } Supported; struct { ULONG MD5 : 1; ULONG SHA_1 : 1; ULONG Transport : 1; ULONG Tunnel : 1; ULONG Send : 1; ULONG Receive : 1; } V4AH; struct { ULONG DES : 1; ULONG RESERVED : 1; ULONG TRIPLE_DES : 1; ULONG NULL_ESP : 1; ULONG Transport : 1; ULONG Tunnel : 1; ULONG Send : 1; ULONG Receive : 1; } V4ESP; } NDIS_TASK_IPSEC; typedef NDIS_TASK_IPSEC *PNDIS_TASK_IPSEC; #endif /* NDIS TCP large send offload network buffer list information */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO { union { struct { ULONG Unused : 30; ULONG Type : 1; ULONG Reserved2 : 1; } Transmit; struct { ULONG MSS : 20; ULONG TcpHeaderOffset : 10; ULONG Type : 1; ULONG Reserved2 : 1; } LsoV1Transmit; struct { ULONG TcpPayload : 30; ULONG Type : 1; ULONG Reserved2 : 1; } LsoV1TransmitComplete; struct { ULONG MSS : 20; ULONG TcpHeaderOffset : 10; ULONG Type : 1; ULONG IPVersion : 1; } LsoV2Transmit; struct { ULONG Reserved : 30; ULONG Type : 1; ULONG Reserved2 : 1; } LsoV2TransmitComplete; PVOID Value; }; } NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO; typedef NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO *PNDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_INFO; #endif /* NDIS TCP/IP checksum network buffer list information */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO { union { struct { ULONG IsIPv4 : 1; ULONG IsIPv6 : 1; ULONG TcpChecksum : 1; ULONG UdpChecksum : 1; ULONG IpHeaderChecksum : 1; ULONG Reserved : 11; ULONG TcpHeaderChecksum : 10; } Transmit; struct { ULONG TcpChecksumFailed : 1; ULONG UdpChecksumFailed : 1; ULONG IpChecksumFailed : 1; ULONG TcpChecksumSucceeded : 1; ULONG UdpChecksumSucceeded : 1; ULONG IpChecksumSucceeded : 1; ULONG Loopback : 1; } Receive; PVOID Value; }; } NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO; typedef NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO *PNDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO; #endif /* NDIS offload encapsulation */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NDIS_OFFLOAD_ENCAPSULATION { NDIS_OBJECT_HEADER Header; struct { ULONG Enabled; ULONG EncapsulationType; ULONG HeaderSize; } IPv4; struct { ULONG Enabled; ULONG EncapsulationType; ULONG HeaderSize; } IPv6; } NDIS_OFFLOAD_ENCAPSULATION; typedef NDIS_OFFLOAD_ENCAPSULATION *PNDIS_OFFLOAD_ENCAPSULATION; #endif /* NDIS IPsec offload (version 2) network buffer list information */ #if NDIS_SUPPORT_NDIS61 typedef struct _NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO { union { struct { PVOID OffloadHandle; } Transmit; struct { ULONG SaDeleteReq : 1; ULONG CryptoDone : 1; ULONG NextCryptoDone : 1; ULONG Reserved : 13; ULONG CryptoStatus : 16; } Receive; }; } NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO; typedef NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO *PNDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO; #endif /* NDIS IPsec offload (version 2) tunnel network buffer list information */ #if NDIS_SUPPORT_NDIS61 typedef struct _NDIS_IPSEC_OFFLOAD_V2_TUNNEL_NET_BUFFER_LIST_INFO { struct { NDIS_HANDLE TunnelHandle; } Transmit; } NDIS_IPSEC_OFFLOAD_V2_TUNNEL_NET_BUFFER_LIST_INFO; typedef NDIS_IPSEC_OFFLOAD_V2_TUNNEL_NET_BUFFER_LIST_INFO *PNDIS_IPSEC_OFFLOAD_V2_TUNNEL_NET_BUFFER_LIST_INFO; #endif /* NDIS IPsec offload (version 2) header network buffer list information */ #if NDIS_SUPPORT_NDIS61 typedef struct _NDIS_IPSEC_OFFLOAD_V2_HEADER_NET_BUFFER_LIST_INFO { union { struct { ULONG NextHeader : 8; ULONG PadLength : 8; ULONG AhHeaderOffset : 8; ULONG EspHeaderOffset : 8; } Transmit; struct { ULONG NextHeader : 8; ULONG PadLength : 8; ULONG HeaderInfoSet : 1; } Receive; }; } NDIS_IPSEC_OFFLOAD_V2_HEADER_NET_BUFFER_LIST_INFO; typedef NDIS_IPSEC_OFFLOAD_V2_HEADER_NET_BUFFER_LIST_INFO *PNDIS_IPSEC_OFFLOAD_V2_HEADER_NET_BUFFER_INFO; #endif /* IPsec offload (version 2) operations */ #if NDIS_SUPPORT_NDIS61 typedef enum _IPSEC_OFFLOAD_V2_OPERATION { IPsecOffloadV2Ah = 1, IPsecOffloadV2Esp = 2, IPsecOffloadV2Max = 3 } IPSEC_OFFLOAD_V2_OPERATION; typedef IPSEC_OFFLOAD_V2_OPERATION *PIPSEC_OFFLOAD_V2_OPERATION; #endif /* IPsec offload (version 2) algorithm information */ #if NDIS_SUPPORT_NDIS61 typedef struct _IPSEC_OFFLOAD_V2_ALGORITHM_INFO { ULONG Identifier; ULONG KeyLength; ULONG KeyOffsetBytes; ULONG AdditionalInfo; } IPSEC_OFFLOAD_V2_ALGORITHM_INFO; typedef IPSEC_OFFLOAD_V2_ALGORITHM_INFO *PIPSEC_OFFLOAD_V2_ALGORITHM_INFO; #endif /* IPsec offload (version 2) security association */ #if NDIS_SUPPORT_NDIS61 typedef struct _IPSEC_OFFLOAD_V2_SECURITY_ASSOCIATION { ULONG Flags; IPSEC_OFFLOAD_V2_OPERATION Operation; IPSEC_OFFLOAD_V2_SPI_TYPE Spi; IPSEC_OFFLOAD_V2_ALGORITHM_INFO AuthenticationAlgorithm; IPSEC_OFFLOAD_V2_ALGORITHM_INFO EncryptionAlgorithm; ULONG SequenceNumberHighOrder; } IPSEC_OFFLOAD_V2_SECURITY_ASSOCIATION; typedef IPSEC_OFFLOAD_V2_SECURITY_ASSOCIATION *PIPSEC_OFFLOAD_V2_SECURITY_ASSOCIATION; #endif /* IPsec offload (version 2) add security association */ #if NDIS_SUPPORT_NDIS61 typedef struct _IPSEC_OFFLOAD_V2_ADD_SA { NDIS_OBJECT_HEADER Header; struct _IPSEC_OFFLOAD_V2_ADD_SA *Next; ULONG NumExtHdrs; ULONG Flags; union { struct { IPAddr SrcAddr; IPAddr DestAddr; } IPv4Endpoints; struct { UCHAR SrcAddr[16]; UCHAR DestAddr[16]; } IPv6Endpoints; }; NDIS_HANDLE OffloadHandle; ULONG UdpEspEncapsulation; IPSEC_OFFLOAD_V2_SECURITY_ASSOCIATION SecAssoc[IPSEC_OFFLOAD_V2_MAX_EXTENSION_HEADERS]; ULONG KeyLength; UCHAR KeyData[1]; } IPSEC_OFFLOAD_V2_ADD_SA; typedef IPSEC_OFFLOAD_V2_ADD_SA *PIPSEC_OFFLOAD_V2_ADD_SA; #endif /* IPsec offload (version 2) delete security association */ #if NDIS_SUPPORT_NDIS61 typedef struct _IPSEC_OFFLOAD_V2_DELETE_SA { NDIS_OBJECT_HEADER Header; struct _IPSEC_OFFLOAD_V2_DELETE_SA *Next; NDIS_HANDLE OffloadHandle; } IPSEC_OFFLOAD_V2_DELETE_SA; typedef IPSEC_OFFLOAD_V2_DELETE_SA *PIPSEC_OFFLOAD_V2_DELETE_SA; #endif /* IPsec offload (version 2) update security association */ #if NDIS_SUPPORT_NDIS61 typedef struct _IPSEC_OFFLOAD_V2_UPDATE_SA { NDIS_OBJECT_HEADER Header; NDIS_HANDLE OffloadHandle; IPSEC_OFFLOAD_V2_OPERATION Operation; IPSEC_OFFLOAD_V2_SPI_TYPE Spi; ULONG SequenceNumberHighOrder; } IPSEC_OFFLOAD_V2_UPDATE_SA; typedef IPSEC_OFFLOAD_V2_UPDATE_SA *PIPSEC_OFFLOAD_V2_UPDATE_SA; #endif /* NDIS 4.0 protocol characteristics callbacks */ #if NDIS_LEGACY_PROTOCOL typedef VOID (NTAPI *OPEN_ADAPTER_COMPLETE_HANDLER)( NDIS_HANDLE, NDIS_STATUS, NDIS_STATUS ); typedef VOID (NTAPI *CLOSE_ADAPTER_COMPLETE_HANDLER)( NDIS_HANDLE, NDIS_STATUS ); typedef VOID (NTAPI *RESET_COMPLETE_HANDLER)( NDIS_HANDLE, NDIS_STATUS ); typedef VOID (NTAPI *REQUEST_COMPLETE_HANDLER)( NDIS_HANDLE, PNDIS_REQUEST, NDIS_STATUS ); typedef VOID (NTAPI *STATUS_HANDLER)( NDIS_HANDLE, NDIS_STATUS, PVOID, UINT ); typedef VOID (NTAPI *STATUS_COMPLETE_HANDLER)( NDIS_HANDLE ); typedef VOID (NTAPI *SEND_COMPLETE_HANDLER)( NDIS_HANDLE, PNDIS_PACKET, NDIS_STATUS ); typedef VOID (NTAPI *WAN_SEND_COMPLETE_HANDLER)( NDIS_HANDLE, PNDIS_WAN_PACKET, NDIS_STATUS ); typedef VOID (NTAPI *TRANSFER_DATA_COMPLETE_HANDLER)( NDIS_HANDLE, PNDIS_PACKET, NDIS_STATUS, UINT ); typedef VOID (NTAPI *WAN_TRANSFER_DATA_COMPLETE_HANDLER)( VOID ); typedef NDIS_STATUS (NTAPI *RECEIVE_HANDLER)( NDIS_HANDLE, NDIS_HANDLE, PVOID, UINT, PVOID, UINT, UINT ); typedef NDIS_STATUS (NTAPI *WAN_RECEIVE_HANDLER)( NDIS_HANDLE, PUCHAR, ULONG ); typedef VOID (NTAPI *RECEIVE_COMPLETE_HANDLER)( NDIS_HANDLE ); typedef INT (NTAPI *RECEIVE_PACKET_HANDLER)( NDIS_HANDLE, PNDIS_PACKET ); typedef VOID (NTAPI *BIND_HANDLER)( PNDIS_STATUS, NDIS_HANDLE, PNDIS_STRING, PVOID, PVOID ); typedef VOID (NTAPI *UNBIND_HANDLER)( PNDIS_STATUS, NDIS_HANDLE, NDIS_HANDLE ); typedef NDIS_STATUS (NTAPI *PNP_EVENT_HANDLER)( NDIS_HANDLE, PNET_PNP_EVENT ); typedef VOID (NTAPI *UNLOAD_PROTOCOL_HANDLER)( VOID ); #endif /* NDIS 4.0 protocol characteristics */ #if NDIS_LEGACY_PROTOCOL typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS { UCHAR MajorNdisVersion; UCHAR MinorNdisVersion; USHORT Filler; union { UINT Reserved; UINT Flags; }; OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler; CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler; union { SEND_COMPLETE_HANDLER SendCompleteHandler; WAN_SEND_COMPLETE_HANDLER WanSendCompleteHandler; }; union { TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; WAN_TRANSFER_DATA_COMPLETE_HANDLER WanTransferDataCompleteHandler; }; RESET_COMPLETE_HANDLER ResetCompleteHandler; REQUEST_COMPLETE_HANDLER RequestCompleteHandler; union { RECEIVE_HANDLER ReceiveHandler; WAN_RECEIVE_HANDLER WanReceiveHandler; }; RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; STATUS_HANDLER StatusHandler; STATUS_COMPLETE_HANDLER StatusCompleteHandler; NDIS_STRING Name; RECEIVE_PACKET_HANDLER ReceivePacketHandler; BIND_HANDLER BindAdapterHandler; UNBIND_HANDLER UnbindAdapterHandler; PNP_EVENT_HANDLER PnPEventHandler; UNLOAD_PROTOCOL_HANDLER UnloadHandler; } NDIS40_PROTOCOL_CHARACTERISTICS; #endif /* NDIS 5.0 protocol characteristics callbacks */ #if NDIS_LEGACY_DRIVER typedef VOID (NTAPI *CO_SEND_COMPLETE_HANDLER)( NDIS_STATUS, NDIS_HANDLE, PNDIS_PACKET ); typedef VOID (NTAPI *CO_STATUS_HANDLER)( NDIS_HANDLE, NDIS_HANDLE, NDIS_STATUS, PVOID, UINT ); typedef UINT (NTAPI *CO_RECEIVE_PACKET_HANDLER)( NDIS_HANDLE, NDIS_HANDLE, PNDIS_PACKET ); typedef NDIS_STATUS (NTAPI *CO_REQUEST_HANDLER)( NDIS_HANDLE, NDIS_HANDLE, NDIS_HANDLE, PNDIS_REQUEST ); typedef VOID (NTAPI *CO_REQUEST_COMPLETE_HANDLER)( NDIS_STATUS, NDIS_HANDLE, NDIS_HANDLE, NDIS_HANDLE, PNDIS_REQUEST ); #endif #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef NDIS_STATUS (NTAPI PROTOCOL_CO_OID_REQUEST)( NDIS_HANDLE, NDIS_HANDLE, NDIS_HANDLE, PNDIS_OID_REQUEST ); typedef VOID (NTAPI PROTOCOL_CO_OID_REQUEST_COMPLETE)( NDIS_HANDLE, NDIS_HANDLE, NDIS_HANDLE, PNDIS_OID_REQUEST, NDIS_STATUS ); typedef PROTOCOL_CO_OID_REQUEST *CO_OID_REQUEST_HANDLER; typedef PROTOCOL_CO_OID_REQUEST_COMPLETE *CO_OID_REQUEST_COMPLETE_HANDLER; #endif typedef NDIS_STATUS (NTAPI PROTOCOL_CO_CREATE_VC)( NDIS_HANDLE, NDIS_HANDLE, PNDIS_HANDLE ); typedef NDIS_STATUS (NTAPI PROTOCOL_CO_DELETE_VC)( NDIS_HANDLE ); typedef VOID (NTAPI PROTOCOL_CO_AF_REGISTER_NOTIFY)( NDIS_HANDLE, PCO_ADDRESS_FAMILY ); typedef PROTOCOL_CO_CREATE_VC *CO_CREATE_VC_HANDLER; typedef PROTOCOL_CO_DELETE_VC *CO_DELETE_VC_HANDLER; typedef PROTOCOL_CO_AF_REGISTER_NOTIFY *CO_AF_REGISTER_NOTIFY_HANDLER; /* NDIS 5.0 protocol characteristics */ #if NDIS_LEGACY_PROTOCOL typedef struct _NDIS50_PROTOCOL_CHARACTERISTICS { #ifdef __cplusplus NDIS40_PROTOCOL_CHARACTERISTICS Ndis40Chars; #else NDIS40_PROTOCOL_CHARACTERISTICS; #endif PVOID ReservedHandlers[4]; CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler; CO_STATUS_HANDLER CoStatusHandler; CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler; CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler; } NDIS50_PROTOCOL_CHARACTERISTICS; #endif /* NDIS 6.0 protocol characteristics callbacks */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef VOID (NTAPI PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS)( NDIS_HANDLE, NDIS_HANDLE, PNET_BUFFER_LIST, ULONG, ULONG ); typedef VOID (NTAPI PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE)( NDIS_HANDLE, PNET_BUFFER_LIST, ULONG ); typedef VOID (NTAPI PROTOCOL_CO_STATUS_EX)( NDIS_HANDLE, NDIS_HANDLE, PNDIS_STATUS_INDICATION ); typedef NDIS_STATUS (NTAPI PROTOCOL_CL_NOTIFY_CLOSE_AF)( NDIS_HANDLE ); typedef VOID (NTAPI PROTOCOL_CL_OPEN_AF_COMPLETE_EX)( NDIS_HANDLE, NDIS_HANDLE, NDIS_STATUS ); typedef VOID (NTAPI PROTOCOL_CM_NOTIFY_CLOSE_AF_COMPLETE)( NDIS_HANDLE, NDIS_STATUS ); typedef PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS *CO_RECEIVE_NET_BUFFER_LISTS_HANDLER; typedef PROTOCOL_CO_SEND_NET_BUFFER_LISTS_COMPLETE *CO_SEND_NET_BUFFER_LISTS_COMPLETE_HANDLER; typedef PROTOCOL_CO_STATUS_EX *CO_STATUS_HANDLER_EX; typedef PROTOCOL_CL_NOTIFY_CLOSE_AF *CL_NOTIFY_CLOSE_AF_HANDLER; typedef PROTOCOL_CL_OPEN_AF_COMPLETE_EX *CL_OPEN_AF_COMPLETE_HANDLER_EX; typedef PROTOCOL_CM_NOTIFY_CLOSE_AF_COMPLETE *CM_NOTIFY_CLOSE_AF_COMPLETE_HANDLER; #endif /* TDI callbacks */ typedef NTSTATUS (NTAPI *TDI_REGISTER_CALLBACK)( PUNICODE_STRING, HANDLE * ); typedef NTSTATUS (NTAPI *TDI_PNP_HANDLER)( PUNICODE_STRING, PUNICODE_STRING, PUNICODE_STRING, PVOID, UINT, UINT ); /* NDIS bind parameters */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NDIS_BIND_PARAMETERS { NDIS_OBJECT_HEADER Header; PNDIS_STRING ProtocolSection; PNDIS_STRING AdapterName; PDEVICE_OBJECT PhysicalDeviceObject; NDIS_MEDIUM MediaType; ULONG MtuSize; ULONG64 MaxXmitLinkSpeed; ULONG64 XmitLinkSpeed; ULONG64 MaxRcvLinkSpeed; ULONG64 RcvLinkSpeed; NDIS_MEDIA_CONNECT_STATE MediaConnectState; NDIS_MEDIA_DUPLEX_STATE MediaDuplexState; ULONG LookaheadSize; PNDIS_PNP_CAPABILITIES PowerManagementCapabilities; ULONG SupportedPacketFilters; ULONG MaxMulticastListSize; USHORT MacAddressLength; UCHAR CurrentMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH]; NDIS_PHYSICAL_MEDIUM PhysicalMediumType; PNDIS_RECEIVE_SCALE_CAPABILITIES RcvScaleCapabilities; NET_LUID BoundIfNetluid; NET_IFINDEX BoundIfIndex; NET_LUID LowestIfNetluid; NET_IFINDEX LowestIfIndex; NET_IF_ACCESS_TYPE AccessType; NET_IF_DIRECTION_TYPE DirectionType; NET_IF_CONNECTION_TYPE ConnectionType; NET_IFTYPE IfType; BOOLEAN IfConnectorPresent; PNDIS_PORT ActivePorts; ULONG DataBackFillSize; ULONG ContextBackFillSize; ULONG MacOptions; NET_IF_COMPARTMENT_ID CompartmentId; PNDIS_OFFLOAD DefaultOffloadConfiguration; PNDIS_TCP_CONNECTION_OFFLOAD TcpConnectionOffloadCapabilities; PNDIS_STRING BoundAdapterName; #if NDIS_SUPPORT_NDIS61 PNDIS_HD_SPLIT_CURRENT_CONFIG HDSplitCurrentConfig; #endif #if NDIS_SUPPORT_NDIS620 PNDIS_RECEIVE_FILTER_CAPABILITIES ReceiveFilterCapabilities; PNDIS_PM_CAPABILITIES PowerManagementCapabilitiesEx; PNDIS_NIC_SWITCH_CAPABILITIES NicSwitchCapabilities; #endif } NDIS_BIND_PARAMETERS; typedef NDIS_BIND_PARAMETERS *PNDIS_BIND_PARAMETERS; #endif /* NDIS 6.0 protocol entry points */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef VOID (NTAPI PROTOCOL_OID_REQUEST_COMPLETE)( NDIS_HANDLE, PNDIS_OID_REQUEST, NDIS_STATUS ); typedef VOID (NTAPI PROTOCOL_RECEIVE_NET_BUFFER_LISTS)( NDIS_HANDLE, PNET_BUFFER_LIST, NDIS_PORT_NUMBER, ULONG, ULONG ); typedef VOID (NTAPI PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE)( NDIS_HANDLE, PNET_BUFFER_LIST, ULONG ); typedef NDIS_STATUS (NTAPI PROTOCOL_BIND_ADAPTER_EX)( NDIS_HANDLE, NDIS_HANDLE, PNDIS_BIND_PARAMETERS ); typedef NDIS_STATUS (NTAPI PROTOCOL_UNBIND_ADAPTER_EX)( NDIS_HANDLE, NDIS_HANDLE ); typedef VOID (NTAPI PROTOCOL_OPEN_ADAPTER_COMPLETE_EX)( NDIS_HANDLE, NDIS_STATUS ); typedef VOID (NTAPI PROTOCOL_CLOSE_ADAPTER_COMPLETE_EX)( NDIS_HANDLE ); typedef VOID (NTAPI PROTOCOL_STATUS_EX)( NDIS_HANDLE, PNDIS_STATUS_INDICATION ); typedef NDIS_STATUS (NTAPI PROTOCOL_NET_PNP_EVENT)( NDIS_HANDLE, PNET_PNP_EVENT_NOTIFICATION ); typedef VOID (NTAPI PROTOCOL_UNINSTALL)( VOID ); typedef PROTOCOL_OID_REQUEST_COMPLETE *OID_REQUEST_COMPLETE_HANDLER; typedef PROTOCOL_RECEIVE_NET_BUFFER_LISTS *RECEIVE_NET_BUFFER_LISTS_HANDLER; typedef PROTOCOL_SEND_NET_BUFFER_LISTS_COMPLETE *SEND_NET_BUFFER_LISTS_COMPLETE_HANDLER; typedef PROTOCOL_BIND_ADAPTER_EX *BIND_HANDLER_EX; typedef PROTOCOL_UNBIND_ADAPTER_EX *UNBIND_HANDLER_EX; typedef PROTOCOL_OPEN_ADAPTER_COMPLETE_EX *OPEN_ADAPTER_COMPLETE_HANDLER_EX; typedef PROTOCOL_CLOSE_ADAPTER_COMPLETE_EX *CLOSE_ADAPTER_COMPLETE_HANDLER_EX; typedef PROTOCOL_STATUS_EX *STATUS_HANDLER_EX; typedef PROTOCOL_NET_PNP_EVENT *NET_PNP_EVENT_HANDLER; typedef PROTOCOL_UNINSTALL *UNINSTALL_PROTOCOL_HANDLER; #endif #if NDIS_SUPPORT_NDIS61 typedef VOID (NTAPI PROTOCOL_DIRECT_OID_REQUEST_COMPLETE)( NDIS_HANDLE, PNDIS_OID_REQUEST, NDIS_STATUS ); typedef PROTOCOL_DIRECT_OID_REQUEST_COMPLETE *DIRECT_OID_REQUEST_COMPLETE_HANDLER; #endif /* NDIS protocol CO characteristics */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NDIS_PROTOCOL_CO_CHARACTERISTICS { NDIS_OBJECT_HEADER Header; ULONG Flags; CO_STATUS_HANDLER_EX CoStatusHandlerEx; CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler; CO_RECEIVE_NET_BUFFER_LISTS_HANDLER CoReceiveNetBufferListsHandler; CO_SEND_NET_BUFFER_LISTS_COMPLETE_HANDLER CoSendNetBufferListsCompleteHandler; } NDIS_PROTOCOL_CO_CHARACTERISTICS; typedef NDIS_PROTOCOL_CO_CHARACTERISTICS *PNDIS_PROTOCOL_CO_CHARACTERISTICS; #endif /* NDIS protocol driver characteristics */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NDIS_PROTOCOL_DRIVER_CHARACTERISTICS { NDIS_OBJECT_HEADER Header; UCHAR MajorNdisVersion; UCHAR MinorNdisVersion; UCHAR MajorDriverVersion; UCHAR MinorDriverVersion; ULONG Flags; NDIS_STRING Name; SET_OPTIONS_HANDLER SetOptionsHandler; BIND_HANDLER_EX BindAdapterHandlerEx; UNBIND_HANDLER_EX UnbindAdapterHandlerEx; OPEN_ADAPTER_COMPLETE_HANDLER_EX OpenAdapterCompleteHandlerEx; CLOSE_ADAPTER_COMPLETE_HANDLER_EX CloseAdapterCompleteHandlerEx; NET_PNP_EVENT_HANDLER NetPnPEventHandler; UNINSTALL_PROTOCOL_HANDLER UninstallHandler; OID_REQUEST_COMPLETE_HANDLER OidRequestCompleteHandler; STATUS_HANDLER_EX StatusHandlerEx; RECEIVE_NET_BUFFER_LISTS_HANDLER ReceiveNetBufferListsHandler; SEND_NET_BUFFER_LISTS_COMPLETE_HANDLER SendNetBufferListsCompleteHandler; #if NDIS_SUPPORT_NDIS61 DIRECT_OID_REQUEST_COMPLETE_HANDLER DirectOidRequestCompleteHandler; #endif } NDIS_PROTOCOL_DRIVER_CHARACTERISTICS; typedef NDIS_PROTOCOL_DRIVER_CHARACTERISTICS *PNDIS_PROTOCOL_DRIVER_CHARACTERISTICS; #endif /* NDIS protocol characteristics */ #if NDIS_LEGACY_PROTOCOL #if defined( NDIS50 ) || defined( NDIS51 ) typedef NDIS50_PROTOCOL_CHARACTERISTICS NDIS_PROTOCOL_CHARACTERISTICS; #else typedef NDIS40_PROTOCOL_CHARACTERISTICS NDIS_PROTOCOL_CHARACTERISTICS; #endif typedef NDIS_PROTOCOL_CHARACTERISTICS *PNDIS_PROTOCOL_CHARACTERISTICS; #endif /* NDIS open parameters */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NDIS_OPEN_PARAMETERS { NDIS_OBJECT_HEADER Header; PNDIS_STRING AdapterName; PNDIS_MEDIUM MediumArray; UINT MediumArraySize; PUINT SelectedMediumIndex; PNET_FRAME_TYPE FrameTypeArray; UINT FrameTypeArraySize; } NDIS_OPEN_PARAMETERS; typedef NDIS_OPEN_PARAMETERS *PNDIS_OPEN_PARAMETERS; #endif /* NDIS protocol pause parameters */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NDIS_PROTOCOL_PAUSE_PARAMETERS { NDIS_OBJECT_HEADER Header; ULONG Flags; ULONG PauseReason; } NDIS_PROTOCOL_PAUSE_PARAMETERS; typedef NDIS_PROTOCOL_PAUSE_PARAMETERS *PNDIS_PROTOCOL_PAUSE_PARAMETERS; #endif /* NDIS protocol restart parameters */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NDIS_PROTOCOL_RESTART_PARAMETERS { NDIS_OBJECT_HEADER Header; PUCHAR FilterModuleNameBuffer; ULONG FilterModuleNameBufferLength; PNDIS_RESTART_ATTRIBUTES RestartAttributes; NET_IFINDEX BoundIfIndex; NET_LUID BoundIfNetluid; ULONG Flags; } NDIS_PROTOCOL_RESTART_PARAMETERS; typedef NDIS_PROTOCOL_RESTART_PARAMETERS *PNDIS_PROTOCOL_RESTART_PARAMETERS; #endif /* NDIS common open block */ #if !defined( NDIS_WRAPPER ) && NDIS_LEGACY_PROTOCOL typedef struct _NDIS_COMMON_OPEN_BLOCK { PVOID MacHandle; NDIS_HANDLE BindingHandle; NDIS_HANDLE Reserved6; NDIS_HANDLE Reserved7; NDIS_HANDLE Reserved8; PVOID Reserved9; NDIS_HANDLE Reserved10; NDIS_HANDLE Reserved11; BOOLEAN Reserved12; BOOLEAN Reserved2; BOOLEAN Reserved3; BOOLEAN Reserved4; PVOID Reserved13; KSPIN_LOCK Reserved5; NDIS_HANDLE Reserved14; union { SEND_HANDLER SendHandler; WAN_SEND_HANDLER WanSendHandler; }; TRANSFER_DATA_HANDLER TransferDataHandler; SEND_COMPLETE_HANDLER SendCompleteHandler; TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; RECEIVE_HANDLER ReceiveHandler; RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; WAN_RECEIVE_HANDLER WanReceiveHandler; REQUEST_COMPLETE_HANDLER RequestCompleteHandler; RECEIVE_PACKET_HANDLER ReceivePacketHandler; SEND_PACKETS_HANDLER SendPacketsHandler; RESET_HANDLER ResetHandler; REQUEST_HANDLER RequestHandler; RESET_COMPLETE_HANDLER ResetCompleteHandler; STATUS_HANDLER StatusHandler; STATUS_COMPLETE_HANDLER StatusCompleteHandler; } NDIS_COMMON_OPEN_BLOCK; typedef NDIS_COMMON_OPEN_BLOCK *PNDIS_COMMON_OPEN_BLOCK; #endif /* NDIS open block */ #if !defined( NDIS_WRAPPER ) && NDIS_LEGACY_PROTOCOL typedef struct _NDIS_OPEN_BLOCK { #ifdef __cplusplus NDIS_COMMON_OPEN_BLOCK NdisCommonOpenBlock; #else NDIS_COMMON_OPEN_BLOCK; #endif } NDIS_OPEN_BLOCK; typedef NDIS_OPEN_BLOCK *PNDIS_OPEN_BLOCK; #endif /* NDIS miniport characteristics callbacks */ #if NDIS_LEGACY_MINIPORT typedef BOOLEAN (NTAPI *W_CHECK_FOR_HANG_HANDLER)( NDIS_HANDLE ); typedef VOID (NTAPI *W_DISABLE_INTERRUPT_HANDLER)( NDIS_HANDLE ); typedef VOID (NTAPI *W_ENABLE_INTERRUPT_HANDLER)( NDIS_HANDLE ); typedef VOID (NTAPI *W_HALT_HANDLER)( NDIS_HANDLE ); typedef VOID (NTAPI *W_HANDLE_INTERRUPT_HANDLER)( NDIS_HANDLE ); typedef NDIS_STATUS (NTAPI *W_INITIALIZE_HANDLER)( PNDIS_STATUS, PUINT, PNDIS_MEDIUM, UINT, NDIS_HANDLE, NDIS_HANDLE ); typedef VOID (NTAPI *W_ISR_HANDLER)( PBOOLEAN, PBOOLEAN, NDIS_HANDLE ); typedef NDIS_STATUS (NTAPI *W_QUERY_INFORMATION_HANDLER)( NDIS_HANDLE, NDIS_OID, PVOID, ULONG, PULONG, PULONG ); typedef NDIS_STATUS (NTAPI *W_RECONFIGURE_HANDLER)( PNDIS_STATUS, NDIS_HANDLE, NDIS_HANDLE ); typedef NDIS_STATUS (NTAPI *W_RESET_HANDLER)( PBOOLEAN, NDIS_HANDLE ); typedef NDIS_STATUS (NTAPI *W_SEND_HANDLER)( NDIS_HANDLE, PNDIS_PACKET, UINT ); typedef NDIS_STATUS (NTAPI *WM_SEND_HANDLER)( NDIS_HANDLE, NDIS_HANDLE, PNDIS_WAN_PACKET ); typedef NDIS_STATUS (NTAPI *W_SET_INFORMATION_HANDLER)( NDIS_HANDLE, NDIS_OID, PVOID, ULONG, PULONG, PULONG ); typedef NDIS_STATUS (NTAPI *W_TRANSFER_DATA_HANDLER)( PNDIS_PACKET, PUINT, NDIS_HANDLE, NDIS_HANDLE, UINT, UINT ); typedef NDIS_STATUS (NTAPI *WM_TRANSFER_DATA_HANDLER)( VOID ); typedef VOID (NTAPI *ADAPTER_SHUTDOWN_HANDLER)( PVOID ); typedef VOID (NTAPI *W_RETURN_PACKET_HANDLER)( NDIS_HANDLE, PNDIS_PACKET ); typedef VOID (NTAPI *W_SEND_PACKETS_HANDLER)( NDIS_HANDLE, PPNDIS_PACKET, UINT ); typedef VOID (NTAPI *W_ALLOCATE_COMPLETE_HANDLER)( NDIS_HANDLE, PVOID, PNDIS_PHYSICAL_ADDRESS, ULONG, PVOID ); #endif typedef NDIS_STATUS (NTAPI MINIPORT_CO_CREATE_VC)( NDIS_HANDLE, NDIS_HANDLE, PNDIS_HANDLE ); typedef NDIS_STATUS (NTAPI MINIPORT_CO_DELETE_VC)( NDIS_HANDLE ); typedef NDIS_STATUS (NTAPI MINIPORT_CO_ACTIVATE_VC)( NDIS_HANDLE, PCO_CALL_PARAMETERS ); typedef NDIS_STATUS (NTAPI MINIPORT_CO_DEACTIVATE_VC)( NDIS_HANDLE ); typedef MINIPORT_CO_CREATE_VC *W_CO_CREATE_VC_HANDLER; typedef MINIPORT_CO_DELETE_VC *W_CO_DELETE_VC_HANDLER; typedef MINIPORT_CO_ACTIVATE_VC *W_CO_ACTIVATE_VC_HANDLER; typedef MINIPORT_CO_DEACTIVATE_VC *W_CO_DEACTIVATE_VC_HANDLER; #if NDIS_LEGACY_MINIPORT typedef VOID (NTAPI *W_CO_SEND_PACKETS_HANDLER)( NDIS_HANDLE, PPNDIS_PACKET, UINT ); typedef NDIS_STATUS (NTAPI *W_CO_REQUEST_HANDLER)( NDIS_HANDLE, NDIS_HANDLE, PNDIS_REQUEST ); #endif #if NDIS_SUPPORT_NDIS6 typedef VOID (NTAPI MINIPORT_CO_SEND_NET_BUFFER_LISTS)( NDIS_HANDLE, PNET_BUFFER_LIST, ULONG ); typedef NDIS_STATUS (NTAPI MINIPORT_CO_OID_REQUEST)( NDIS_HANDLE, NDIS_HANDLE, PNDIS_OID_REQUEST ); typedef MINIPORT_CO_SEND_NET_BUFFER_LISTS *W_CO_SEND_NET_BUFFER_LISTS_HANDLER; typedef MINIPORT_CO_OID_REQUEST *W_CO_OID_REQUEST_HANDLER; #endif /* NDIS device Plug and Play events */ typedef enum _NDIS_DEVICE_PNP_EVENT { NdisDevicePnPEventQueryRemoved = 0, NdisDevicePnPEventRemoved = 1, NdisDevicePnPEventSurpriseRemoved = 2, NdisDevicePnPEventQueryStopped = 3, NdisDevicePnPEventStopped = 4, NdisDevicePnPEventPowerProfileChanged = 5, #if NDIS_SUPPORT_NDIS6 NdisDevicePnPEventFilterListChanged = 6, NdisDevicePnPEventMaximum = 7 #else NdisDevicePnPEventMaximum = 6 #endif } NDIS_DEVICE_PNP_EVENT; typedef NDIS_DEVICE_PNP_EVENT *PNDIS_DEVICE_PNP_EVENT; /* NDIS power profiles */ typedef enum _NDIS_POWER_PROFILE { NdisPowerProfileBattery = 0, NdisPowerProfileAcOnLine = 1 } NDIS_POWER_PROFILE; typedef NDIS_POWER_PROFILE *PNDIS_POWER_PROFILE; /* NDIS 5.0 miniport characteristics */ #if NDIS_LEGACY_MINIPORT typedef struct _NDIS50_MINIPORT_CHARACTERISTICS { UCHAR MajorNdisVersion; UCHAR MinorNdisVersion; USHORT Filler; UINT Reserved; W_CHECK_FOR_HANG_HANDLER CheckForHangHandler; W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler; W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler; W_HALT_HANDLER HaltHandler; W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler; W_INITIALIZE_HANDLER InitializeHandler; W_ISR_HANDLER ISRHandler; W_QUERY_INFORMATION_HANDLER QueryInformationHandler; W_RECONFIGURE_HANDLER ReconfigureHandler; W_RESET_HANDLER ResetHandler; union { W_SEND_HANDLER SendHandler; WM_SEND_HANDLER WanSendHandler; }; W_SET_INFORMATION_HANDLER SetInformationHandler; union { W_TRANSFER_DATA_HANDLER TransferDataHandler; WM_TRANSFER_DATA_HANDLER WanTransferDataHandler; }; W_RETURN_PACKET_HANDLER ReturnPacketHandler; W_SEND_PACKETS_HANDLER SendPacketsHandler; W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler; W_CO_CREATE_VC_HANDLER CoCreateVcHandler; W_CO_DELETE_VC_HANDLER CoDeleteVcHandler; W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler; W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler; W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler; W_CO_REQUEST_HANDLER CoRequestHandler; } NDIS50_MINIPORT_CHARACTERISTICS; #endif /* NDIS 5.1 miniport characteristics callbacks */ #if NDIS_LEGACY_MINIPORT #if ((NDIS_MINIPORT_MAJOR_VERSION == 5) && (NDIS_MINIPORT_MINOR_VERSION == 1)) || \ NDIS_WRAPPER typedef VOID (NTAPI *W_CANCEL_SEND_PACKETS_HANDLER)( NDIS_HANDLE, PVOID ); typedef VOID (NTAPI *W_PNP_EVENT_NOTIFY_HANDLER)( NDIS_HANDLE, NDIS_DEVICE_PNP_EVENT, PVOID, ULONG ); typedef VOID (NTAPI *W_MINIPORT_SHUTDOWN_HANDLER)( NDIS_HANDLE ); #endif #endif /* NDIS receive throttle parameters */ #if NDIS_SUPPORT_NDIS620 typedef struct _NDIS_RECEIVE_THROTTLE_PARAMETERS { ULONG MaxNblsToIndicate; ULONG MoreNblsPending : 1; } NDIS_RECEIVE_THROTTLE_PARAMETERS; typedef NDIS_RECEIVE_THROTTLE_PARAMETERS *PNDIS_RECEIVE_THROTTLE_PARAMETERS; #endif /* NDIS 6.0 miniport interrupt characteristics callbacks */ #if NDIS_SUPPORT_NDIS6 typedef BOOLEAN (NTAPI MINIPORT_ISR)( NDIS_HANDLE, PBOOLEAN, PULONG ); typedef VOID (NTAPI MINIPORT_INTERRUPT_DPC)( NDIS_HANDLE, PVOID, PVOID, PVOID ); typedef VOID (NTAPI MINIPORT_DISABLE_INTERRUPT)( NDIS_HANDLE ); typedef VOID (NTAPI MINIPORT_ENABLE_INTERRUPT)( NDIS_HANDLE ); typedef BOOLEAN (NTAPI MINIPORT_MESSAGE_INTERRUPT)( NDIS_HANDLE, ULONG, PBOOLEAN, PULONG ); #if NDIS_SUPPORT_NDIS620 typedef VOID (NTAPI MINIPORT_MESSAGE_INTERRUPT_DPC)( NDIS_HANDLE, ULONG, PVOID, PVOID, PVOID ); #else typedef VOID (NTAPI MINIPORT_MESSAGE_INTERRUPT_DPC)( NDIS_HANDLE, ULONG, PVOID, PULONG, PULONG ); #endif typedef VOID (NTAPI MINIPORT_DISABLE_MESSAGE_INTERRUPT)( NDIS_HANDLE, ULONG ); typedef VOID (NTAPI MINIPORT_ENABLE_MESSAGE_INTERRUPT)( NDIS_HANDLE, ULONG ); typedef BOOLEAN (NTAPI MINIPORT_SYNCHRONIZE_INTERRUPT)( NDIS_HANDLE ); typedef MINIPORT_ISR *MINIPORT_ISR_HANDLER; typedef MINIPORT_INTERRUPT_DPC *MINIPORT_INTERRUPT_DPC_HANDLER; typedef MINIPORT_DISABLE_INTERRUPT *MINIPORT_DISABLE_INTERRUPT_HANDLER; typedef MINIPORT_ENABLE_INTERRUPT *MINIPORT_ENABLE_INTERRUPT_HANDLER; typedef MINIPORT_MESSAGE_INTERRUPT *MINIPORT_MSI_ISR_HANDLER; typedef MINIPORT_MESSAGE_INTERRUPT_DPC *MINIPORT_MSI_INTERRUPT_DPC_HANDLER; typedef MINIPORT_DISABLE_MESSAGE_INTERRUPT *MINIPORT_DISABLE_MSI_INTERRUPT_HANDLER; typedef MINIPORT_ENABLE_MESSAGE_INTERRUPT *MINIPORT_ENABLE_MSI_INTERRUPT_HANDLER; typedef MINIPORT_SYNCHRONIZE_INTERRUPT *MINIPORT_SYNCHRONIZE_INTERRUPT_HANDLER; typedef MINIPORT_SYNCHRONIZE_INTERRUPT MINIPORT_SYNCHRONIZE_MESSAGE_INTERRUPT; typedef MINIPORT_SYNCHRONIZE_MESSAGE_INTERRUPT *MINIPORT_SYNCHRONIZE_MSI_INTERRUPT_HANDLER; #endif /* NDIS interrupt types */ #if NDIS_SUPPORT_NDIS6 typedef enum _NDIS_INTERRUPT_TYPE { NDIS_CONNECT_LINE_BASED = 1, NDIS_CONNECT_MESSAGE_BASED = 2 } NDIS_INTERRUPT_TYPE; typedef NDIS_INTERRUPT_TYPE *PNDIS_INTERRUPT_TYPE; #endif /* NDIS miniport interrupt characteristics */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS { NDIS_OBJECT_HEADER Header; MINIPORT_ISR_HANDLER InterruptHandler; MINIPORT_INTERRUPT_DPC_HANDLER InterruptDpcHandler; MINIPORT_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler; MINIPORT_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler; BOOLEAN MsiSupported; BOOLEAN MsiSyncWithAllMessages; MINIPORT_MSI_ISR_HANDLER MessageInterruptHandler; MINIPORT_MSI_INTERRUPT_DPC_HANDLER MessageInterruptDpcHandler; MINIPORT_DISABLE_MSI_INTERRUPT_HANDLER DisableMessageInterruptHandler; MINIPORT_ENABLE_MSI_INTERRUPT_HANDLER EnableMessageInterruptHandler; NDIS_INTERRUPT_TYPE InterruptType; PIO_INTERRUPT_MESSAGE_INFO MessageInfoTable; } NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS; typedef NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS *PNDIS_MINIPORT_INTERRUPT_CHARACTERISTICS; #endif /* NDIS miniport Plug and Play characteristics callbacks */ #if NDIS_SUPPORT_NDIS6 typedef NDIS_STATUS (NTAPI MINIPORT_ADD_DEVICE)( NDIS_HANDLE, NDIS_HANDLE ); typedef VOID (NTAPI MINIPORT_REMOVE_DEVICE)( NDIS_HANDLE ); typedef NDIS_STATUS (NTAPI MINIPORT_PNP_IRP)( NDIS_HANDLE, PIRP ); typedef MINIPORT_ADD_DEVICE *MINIPORT_ADD_DEVICE_HANDLER; typedef MINIPORT_REMOVE_DEVICE *MINIPORT_REMOVE_DEVICE_HANDLER; typedef MINIPORT_PNP_IRP *MINIPORT_PNP_IRP_HANDLER; typedef MINIPORT_PNP_IRP MINIPORT_START_DEVICE; typedef MINIPORT_PNP_IRP *MINIPORT_START_DEVICE_HANDLER; typedef MINIPORT_PNP_IRP MINIPORT_FILTER_RESOURCE_REQUIREMENTS; typedef MINIPORT_PNP_IRP *MINIPORT_FILTER_RESOURCE_REQUIREMENTS_HANDLER; #endif /* NDIS miniport Plug and Play characteristics */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_MINIPORT_PNP_CHARACTERISTICS { NDIS_OBJECT_HEADER Header; MINIPORT_ADD_DEVICE_HANDLER MiniportAddDeviceHandler; MINIPORT_REMOVE_DEVICE_HANDLER MiniportRemoveDeviceHandler; MINIPORT_FILTER_RESOURCE_REQUIREMENTS_HANDLER MiniportFilterResourceRequirementsHandler; MINIPORT_START_DEVICE_HANDLER MiniportStartDeviceHandler; ULONG Flags; } NDIS_MINIPORT_PNP_CHARACTERISTICS; typedef NDIS_MINIPORT_PNP_CHARACTERISTICS *PNDIS_MINIPORT_PNP_CHARACTERISTICS; #endif /* NDIS 5.1 miniport characteristics */ #if NDIS_LEGACY_MINIPORT #if ((NDIS_MINIPORT_MAJOR_VERSION == 5) && (NDIS_MINIPORT_MINOR_VERSION == 1)) || \ NDIS_WRAPPER typedef struct _NDIS51_MINIPORT_CHARACTERISTICS { #ifdef __cplusplus NDIS50_MINIPORT_CHARACTERISTICS Ndis50Chars; #else NDIS50_MINIPORT_CHARACTERISTICS; #endif W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler; W_PNP_EVENT_NOTIFY_HANDLER PnPEventNotifyHandler; W_MINIPORT_SHUTDOWN_HANDLER AdapterShutdownHandler; PVOID Reserved1; PVOID Reserved2; PVOID Reserved3; PVOID Reserved4; } NDIS51_MINIPORT_CHARACTERISTICS; #endif #endif /* NDIS miniport interrupt */ #if NDIS_LEGACY_MINIPORT typedef struct _NDIS_MINIPORT_INTERRUPT { PKINTERRUPT InterruptObject; KSPIN_LOCK DpcCountLock; PVOID Reserved; W_ISR_HANDLER MiniportIsr; W_HANDLE_INTERRUPT_HANDLER MiniportDpc; KDPC InterruptDpc; struct _NDIS_MINIPORT_BLOCK *Miniport; UCHAR DpcCount; BOOLEAN Filler1; KEVENT DpcsCompletedEvent; BOOLEAN SharedInterrupt; BOOLEAN IsrRequested; } NDIS_MINIPORT_INTERRUPT; typedef NDIS_MINIPORT_INTERRUPT *PNDIS_MINIPORT_INTERRUPT; #endif /* NDIS miniport timer */ typedef struct _NDIS_MINIPORT_TIMER { KTIMER Timer; KDPC Dpc; PNDIS_TIMER_FUNCTION MiniportTimerFunction; PVOID MiniportTimerContext; struct _NDIS_MINIPORT_BLOCK *Miniport; struct _NDIS_MINIPORT_TIMER *NextTimer; } NDIS_MINIPORT_TIMER; typedef NDIS_MINIPORT_TIMER *PNDIS_MINIPORT_TIMER; /* NDIS miniport block callbacks */ #if NDIS_LEGACY_MINIPORT typedef VOID (NTAPI *ETH_RCV_INDICATE_HANDLER)( PETH_FILTER, NDIS_HANDLE, PCHAR, PVOID, UINT, PVOID, UINT, UINT ); typedef VOID (NTAPI *ETH_RCV_COMPLETE_HANDLER)( PETH_FILTER ); typedef VOID (NTAPI *TR_RCV_INDICATE_HANDLER)( PTR_FILTER, NDIS_HANDLE, PVOID, UINT, PVOID, UINT, UINT ); typedef VOID (NTAPI *TR_RCV_COMPLETE_HANDLER)( PTR_FILTER ); typedef VOID (NTAPI *WAN_RCV_HANDLER)( PNDIS_STATUS, NDIS_HANDLE, NDIS_HANDLE, PUCHAR, ULONG ); typedef VOID (NTAPI *WAN_RCV_COMPLETE_HANDLER)( NDIS_HANDLE, NDIS_HANDLE ); typedef VOID (NTAPI *NDIS_M_SEND_COMPLETE_HANDLER)( NDIS_HANDLE, PNDIS_PACKET, NDIS_STATUS ); typedef VOID (NTAPI *NDIS_WM_SEND_COMPLETE_HANDLER)( NDIS_HANDLE, PVOID, NDIS_STATUS ); typedef VOID (NTAPI *NDIS_M_TD_COMPLETE_HANDLER)( NDIS_HANDLE, PNDIS_PACKET, NDIS_STATUS, UINT ); typedef VOID (NTAPI *NDIS_M_SEND_RESOURCES_HANDLER)( NDIS_HANDLE ); typedef VOID (NTAPI *NDIS_M_STATUS_HANDLER)( NDIS_HANDLE, NDIS_STATUS, PVOID, UINT ); typedef VOID (NTAPI *NDIS_M_STS_COMPLETE_HANDLER)( NDIS_HANDLE ); typedef VOID (NTAPI *NDIS_M_REQ_COMPLETE_HANDLER)( NDIS_HANDLE, NDIS_STATUS ); typedef VOID (NTAPI *NDIS_M_RESET_COMPLETE_HANDLER)( NDIS_HANDLE, NDIS_STATUS, BOOLEAN ); typedef BOOLEAN (FASTCALL *NDIS_M_START_SENDS)( struct _NDIS_MINIPORT_BLOCK * ); #endif /* Callbacks for NdisMRegisterScatterGatherDma() */ #if NDIS_SUPPORT_NDIS6 typedef VOID (NTAPI MINIPORT_PROCESS_SG_LIST)( PDEVICE_OBJECT, PVOID, PSCATTER_GATHER_LIST, PVOID ); typedef VOID (NTAPI MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE)( NDIS_HANDLE, PVOID, PNDIS_PHYSICAL_ADDRESS, ULONG, PVOID ); typedef MINIPORT_PROCESS_SG_LIST *MINIPORT_PROCESS_SG_LIST_HANDLER; typedef MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE *MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE_HANDLER; #endif /* NDIS DMA description */ typedef struct _NDIS_DMA_DESCRIPTION { BOOLEAN DemandMode; BOOLEAN AutoInitialize; BOOLEAN DmaChannelSpecified; DMA_WIDTH DmaWidth; DMA_SPEED DmaSpeed; ULONG DmaPort; ULONG DmaChannel; } NDIS_DMA_DESCRIPTION; typedef NDIS_DMA_DESCRIPTION *PNDIS_DMA_DESCRIPTION; /* NDIS DMA block */ typedef struct _NDIS_DMA_BLOCK { PVOID MapRegisterBase; KEVENT AllocationEvent; PVOID SystemAdapterObject; PVOID Miniport; BOOLEAN InProgress; } NDIS_DMA_BLOCK; typedef NDIS_DMA_BLOCK *PNDIS_DMA_BLOCK; /* NDIS scatter/gather DMA description */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_SG_DMA_DESCRIPTION { NDIS_OBJECT_HEADER Header; ULONG Flags; ULONG MaximumPhysicalMapping; MINIPORT_PROCESS_SG_LIST_HANDLER ProcessSGListHandler; MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE_HANDLER SharedMemAllocateCompleteHandler; ULONG ScatterGatherListSize; } NDIS_SG_DMA_DESCRIPTION; typedef NDIS_SG_DMA_DESCRIPTION *PNDIS_SG_DMA_DESCRIPTION; #endif /* NDIS miniport initialization parameters */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_MINIPORT_INIT_PARAMETERS { NDIS_OBJECT_HEADER Header; ULONG Flags; PNDIS_RESOURCE_LIST AllocatedResources; NDIS_HANDLE IMDeviceInstanceContext; NDIS_HANDLE MiniportAddDeviceContext; NET_IFINDEX IfIndex; NET_LUID NetLuid; PNDIS_PORT_AUTHENTICATION_PARAMETERS DefaultPortAuthStates; PNDIS_PCI_DEVICE_CUSTOM_PROPERTIES PciDeviceCustomProperties; } NDIS_MINIPORT_INIT_PARAMETERS; typedef NDIS_MINIPORT_INIT_PARAMETERS *PNDIS_MINIPORT_INIT_PARAMETERS; #endif /* NDIS miniport restart parameters */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_MINIPORT_RESTART_PARAMETERS { NDIS_OBJECT_HEADER Header; PNDIS_RESTART_ATTRIBUTES RestartAttributes; ULONG Flags; } NDIS_MINIPORT_RESTART_PARAMETERS; typedef NDIS_MINIPORT_RESTART_PARAMETERS *PNDIS_MINIPORT_RESTART_PARAMETERS; #endif /* NDIS miniport adapter registration attributes */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES { NDIS_OBJECT_HEADER Header; NDIS_HANDLE MiniportAdapterContext; ULONG AttributeFlags; UINT CheckForHangTimeInSeconds; NDIS_INTERFACE_TYPE InterfaceType; } NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES; typedef NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES *PNDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES; #endif /* NDIS miniport add device registration attributes */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES { NDIS_OBJECT_HEADER Header; NDIS_HANDLE MiniportAddDeviceContext; ULONG Flags; } NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES; typedef NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES *PNDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES; #endif /* NDIS miniport adapter general attributes */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES { NDIS_OBJECT_HEADER Header; ULONG Flags; NDIS_MEDIUM MediaType; NDIS_PHYSICAL_MEDIUM PhysicalMediumType; ULONG MtuSize; ULONG64 MaxXmitLinkSpeed; ULONG64 XmitLinkSpeed; ULONG64 MaxRcvLinkSpeed; ULONG64 RcvLinkSpeed; NDIS_MEDIA_CONNECT_STATE MediaConnectState; NDIS_MEDIA_DUPLEX_STATE MediaDuplexState; ULONG LookaheadSize; PNDIS_PNP_CAPABILITIES PowerManagementCapabilities; ULONG MacOptions; ULONG SupportedPacketFilters; ULONG MaxMulticastListSize; USHORT MacAddressLength; UCHAR PermanentMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH]; UCHAR CurrentMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH]; PNDIS_RECEIVE_SCALE_CAPABILITIES RecvScaleCapabilities; NET_IF_ACCESS_TYPE AccessType; NET_IF_DIRECTION_TYPE DirectionType; NET_IF_CONNECTION_TYPE ConnectionType; NET_IFTYPE IfType; BOOLEAN IfConnectorPresent; ULONG SupportedStatistics; ULONG SupportedPauseFunctions; ULONG DataBackFillSize; ULONG ContextBackFillSize; PNDIS_OID SupportedOidList; ULONG SupportedOidListLength; ULONG AutoNegotiationFlags; #if NDIS_SUPPORT_NDIS620 PNDIS_PM_CAPABILITIES PowerManagementCapabilitiesEx; #endif } NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES; typedef NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES *PNDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES; #endif /* NDIS header/data split attributes */ #if NDIS_SUPPORT_NDIS61 typedef struct _NDIS_HD_SPLIT_ATTRIBUTES { NDIS_OBJECT_HEADER Header; ULONG HardwareCapabilities; ULONG CurrentCapabilities; ULONG HDSplitFlags; ULONG BackfillSize; ULONG MaxHeaderSize; } NDIS_HD_SPLIT_ATTRIBUTES; typedef NDIS_HD_SPLIT_ATTRIBUTES *PNDIS_HD_SPLIT_ATTRIBUTES; #endif /* NDIS miniport adapter hardware assist attributes */ #if NDIS_SUPPORT_NDIS61 typedef struct _NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES { NDIS_OBJECT_HEADER Header; PNDIS_HD_SPLIT_ATTRIBUTES HDSplitAttributes; #if NDIS_SUPPORT_NDIS620 PNDIS_RECEIVE_FILTER_CAPABILITIES HardwareReceiveFilterCapabilities; PNDIS_RECEIVE_FILTER_CAPABILITIES CurrentReceiveFilterCapabilities; PNDIS_NIC_SWITCH_CAPABILITIES HardwareNicSwitchCapabilities; PNDIS_NIC_SWITCH_CAPABILITIES CurrentNicSwitchCapabilities; #endif } NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES; typedef NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES *PNDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES; #endif /* NDIS miniport adapter offload attributes */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES { NDIS_OBJECT_HEADER Header; PNDIS_OFFLOAD DefaultOffloadConfiguration; PNDIS_OFFLOAD HardwareOffloadCapabilities; PNDIS_TCP_CONNECTION_OFFLOAD DefaultTcpConnectionOffloadConfiguration; PNDIS_TCP_CONNECTION_OFFLOAD TcpConnectionOffloadHardwareCapabilities; } NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES; typedef NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES *PNDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES; #endif /* NDIS miniport adapter native 802.11 attributes */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_MINIPORT_ADAPTER_NATIVE_802_11_ATTRIBUTES { NDIS_OBJECT_HEADER Header; ULONG OpModeCapability; ULONG NumOfTXBuffers; ULONG NumOfRXBuffers; BOOLEAN MultiDomainCapabilityImplemented; ULONG NumSupportedPhys; PDOT11_PHY_ATTRIBUTES SupportedPhyAttributes; PDOT11_EXTSTA_ATTRIBUTES ExtSTAAttributes; #if NDIS_SUPPORT_NDIS620 PDOT11_VWIFI_ATTRIBUTES VWiFiAttributes; PDOT11_EXTAP_ATTRIBUTES ExtAPAttributes; #endif } NDIS_MINIPORT_ADAPTER_NATIVE_802_11_ATTRIBUTES; typedef NDIS_MINIPORT_ADAPTER_NATIVE_802_11_ATTRIBUTES *PNDIS_MINIPORT_ADAPTER_NATIVE_802_11_ATTRIBUTES; #endif /* NDIS miniport adapter attributes */ #if NDIS_SUPPORT_NDIS6 typedef union _NDIS_MINIPORT_ADAPTER_ATTRIBUTES { NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES AddDeviceRegistrationAttributes; NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES RegistrationAttributes; NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES GeneralAttributes; NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES OffloadAttributes; NDIS_MINIPORT_ADAPTER_NATIVE_802_11_ATTRIBUTES Native_802_11_Attributes; #if NDIS_SUPPORT_NDIS61 NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES HardwareAssistAttributes; #endif } NDIS_MINIPORT_ADAPTER_ATTRIBUTES; typedef NDIS_MINIPORT_ADAPTER_ATTRIBUTES *PNDIS_MINIPORT_ADAPTER_ATTRIBUTES; #endif /* NDIS halt actions */ #if NDIS_SUPPORT_NDIS6 typedef enum _NDIS_HALT_ACTION { NdisHaltDeviceDisabled = 0, NdisHaltDeviceInstanceDeInitialized = 1, NdisHaltDevicePoweredDown = 2, NdisHaltDeviceSurpriseRemoved = 3, NdisHaltDeviceFailed = 4, NdisHaltDeviceInitializationFailed = 5, NdisHaltDeviceStopped = 6 } NDIS_HALT_ACTION; typedef NDIS_HALT_ACTION *PNDIS_HALT_ACTION; #endif /* NDIS miniport pause parameters */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_MINIPORT_PAUSE_PARAMETERS { NDIS_OBJECT_HEADER Header; ULONG Flags; ULONG PauseReason; } NDIS_MINIPORT_PAUSE_PARAMETERS; typedef NDIS_MINIPORT_PAUSE_PARAMETERS *PNDIS_MINIPORT_PAUSE_PARAMETERS; #endif /* NDIS shutdown actions */ #if NDIS_SUPPORT_NDIS6 typedef enum _NDIS_SHUTDOWN_ACTION { NdisShutdownPowerOff = 0, NdisShutdownBugCheck = 1 } NDIS_SHUTDOWN_ACTION; typedef NDIS_SHUTDOWN_ACTION *PNDIS_SHUTDOWN_ACTION; #endif /* Network device Plug and Play event */ #if NDIS_SUPPORT_NDIS6 typedef struct _NET_DEVICE_PNP_EVENT { NDIS_OBJECT_HEADER Header; NDIS_PORT_NUMBER PortNumber; NDIS_DEVICE_PNP_EVENT DevicePnPEvent; PVOID InformationBuffer; ULONG InformationBufferLength; UCHAR NdisReserved[2 * sizeof( PVOID )]; } NET_DEVICE_PNP_EVENT; typedef NET_DEVICE_PNP_EVENT *PNET_DEVICE_PNP_EVENT; #endif /* Miniport handlers */ #if NDIS_SUPPORT_NDIS6 typedef NDIS_STATUS (NTAPI MINIPORT_INITIALIZE)( NDIS_HANDLE, NDIS_HANDLE, PNDIS_MINIPORT_INIT_PARAMETERS ); typedef VOID (NTAPI MINIPORT_HALT)( NDIS_HANDLE, NDIS_HALT_ACTION ); typedef NDIS_STATUS (NTAPI MINIPORT_PAUSE)( NDIS_HANDLE, PNDIS_MINIPORT_PAUSE_PARAMETERS ); typedef NDIS_STATUS (NTAPI MINIPORT_RESTART)( NDIS_HANDLE, PNDIS_MINIPORT_RESTART_PARAMETERS ); typedef NDIS_STATUS (NTAPI MINIPORT_OID_REQUEST)( NDIS_HANDLE, PNDIS_OID_REQUEST ); typedef VOID (NTAPI MINIPORT_UNLOAD)( PDRIVER_OBJECT ); typedef VOID (NTAPI MINIPORT_SHUTDOWN)( NDIS_HANDLE, NDIS_SHUTDOWN_ACTION ); typedef VOID (NTAPI MINIPORT_DEVICE_PNP_EVENT_NOTIFY)( NDIS_HANDLE, PNET_DEVICE_PNP_EVENT ); typedef VOID (NTAPI MINIPORT_CANCEL_SEND)( NDIS_HANDLE, PVOID ); typedef BOOLEAN (NTAPI MINIPORT_CHECK_FOR_HANG)( NDIS_HANDLE ); typedef NDIS_STATUS (NTAPI MINIPORT_RESET)( NDIS_HANDLE, PBOOLEAN ); typedef VOID (NTAPI MINIPORT_CANCEL_OID_REQUEST)( NDIS_HANDLE, PVOID ); typedef VOID (NTAPI MINIPORT_SEND_NET_BUFFER_LISTS)( NDIS_HANDLE, PNET_BUFFER_LIST, NDIS_PORT_NUMBER, ULONG ); typedef VOID (NTAPI MINIPORT_RETURN_NET_BUFFER_LISTS)( NDIS_HANDLE, PNET_BUFFER_LIST, ULONG ); typedef MINIPORT_INITIALIZE *MINIPORT_INITIALIZE_HANDLER; typedef MINIPORT_HALT *MINIPORT_HALT_HANDLER; typedef MINIPORT_PAUSE *MINIPORT_PAUSE_HANDLER; typedef MINIPORT_RESTART *MINIPORT_RESTART_HANDLER; typedef MINIPORT_OID_REQUEST *MINIPORT_OID_REQUEST_HANDLER; typedef MINIPORT_UNLOAD *MINIPORT_DRIVER_UNLOAD; typedef MINIPORT_SHUTDOWN *MINIPORT_SHUTDOWN_HANDLER; typedef MINIPORT_DEVICE_PNP_EVENT_NOTIFY *MINIPORT_DEVICE_PNP_EVENT_NOTIFY_HANDLER; typedef MINIPORT_CANCEL_SEND *MINIPORT_CANCEL_SEND_HANDLER; typedef MINIPORT_CHECK_FOR_HANG *MINIPORT_CHECK_FOR_HANG_HANDLER; typedef MINIPORT_RESET *MINIPORT_RESET_HANDLER; typedef MINIPORT_CANCEL_OID_REQUEST *MINIPORT_CANCEL_OID_REQUEST_HANDLER; typedef MINIPORT_SEND_NET_BUFFER_LISTS *MINIPORT_SEND_NET_BUFFER_LISTS_HANDLER; typedef MINIPORT_RETURN_NET_BUFFER_LISTS *MINIPORT_RETURN_NET_BUFFER_LISTS_HANDLER; #endif #if NDIS_SUPPORT_NDIS61 typedef NDIS_STATUS (NTAPI MINIPORT_DIRECT_OID_REQUEST)( NDIS_HANDLE, PNDIS_OID_REQUEST ); typedef VOID (NTAPI MINIPORT_CANCEL_DIRECT_OID_REQUEST)( NDIS_HANDLE, PVOID ); typedef MINIPORT_DIRECT_OID_REQUEST *MINIPORT_DIRECT_OID_REQUEST_HANDLER; typedef MINIPORT_CANCEL_DIRECT_OID_REQUEST *MINIPORT_CANCEL_DIRECT_OID_REQUEST_HANDLER; #endif /* NDIS miniport driver characteristics */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_MINIPORT_DRIVER_CHARACTERISTICS { NDIS_OBJECT_HEADER Header; UCHAR MajorNdisVersion; UCHAR MinorNdisVersion; UCHAR MajorDriverVersion; UCHAR MinorDriverVersion; ULONG Flags; SET_OPTIONS_HANDLER SetOptionsHandler; MINIPORT_INITIALIZE_HANDLER InitializeHandlerEx; MINIPORT_HALT_HANDLER HaltHandlerEx; MINIPORT_DRIVER_UNLOAD UnloadHandler; MINIPORT_PAUSE_HANDLER PauseHandler; MINIPORT_RESTART_HANDLER RestartHandler; MINIPORT_OID_REQUEST_HANDLER OidRequestHandler; MINIPORT_SEND_NET_BUFFER_LISTS_HANDLER SendNetBufferListsHandler; MINIPORT_RETURN_NET_BUFFER_LISTS_HANDLER ReturnNetBufferListsHandler; MINIPORT_CANCEL_SEND_HANDLER CancelSendHandler; MINIPORT_CHECK_FOR_HANG_HANDLER CheckForHangHandlerEx; MINIPORT_RESET_HANDLER ResetHandlerEx; MINIPORT_DEVICE_PNP_EVENT_NOTIFY_HANDLER DevicePnPEventNotifyHandler; MINIPORT_SHUTDOWN_HANDLER ShutdownHandlerEx; MINIPORT_CANCEL_OID_REQUEST_HANDLER CancelOidRequestHandler; #if NDIS_SUPPORT_NDIS61 MINIPORT_DIRECT_OID_REQUEST_HANDLER DirectOidRequestHandler; MINIPORT_CANCEL_DIRECT_OID_REQUEST_HANDLER CancelDirectOidRequestHandler; #endif } NDIS_MINIPORT_DRIVER_CHARACTERISTICS; typedef NDIS_MINIPORT_DRIVER_CHARACTERISTICS *PNDIS_MINIPORT_DRIVER_CHARACTERISTICS; #endif /* NDIS miniport CO characteristics */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_MINIPORT_CO_CHARACTERISTICS { NDIS_OBJECT_HEADER Header; ULONG Flags; W_CO_CREATE_VC_HANDLER CoCreateVcHandler; W_CO_DELETE_VC_HANDLER CoDeleteVcHandler; W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler; W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler; W_CO_SEND_NET_BUFFER_LISTS_HANDLER CoSendNetBufferListsHandler; W_CO_OID_REQUEST_HANDLER CoOidRequestHandler; } NDIS_MINIPORT_CO_CHARACTERISTICS; typedef NDIS_MINIPORT_CO_CHARACTERISTICS *PNDIS_MINIPORT_CO_CHARACTERISTICS; #endif /* FilterDBS */ typedef struct { union { PETH_FILTER EthDB; PNULL_FILTER NullDB; }; PTR_FILTER TrDB; PVOID YYYDB; PVOID XXXDB; } FILTERDBS; typedef FILTERDBS *PFILTERDBS; /* Filter packet indication handler */ #if NDIS_LEGACY_MINIPORT typedef VOID (NTAPI *FILTER_PACKET_INDICATION_HANDLER)( NDIS_HANDLE, PPNDIS_PACKET, UINT ); #endif /* NDIS miniport block */ #if !NDIS_WRAPPER && NDIS_LEGACY_MINIPORT typedef struct _NDIS_MINIPORT_BLOCK { NDIS_OBJECT_HEADER Header; struct _NDIS_MINIPORT_BLOCK *NextMiniport; struct _NDIS_MINIPORT_BLOCK *BaseMiniport; NDIS_HANDLE MiniportAdapterContext; UNICODE_STRING Reserved4; PVOID Reserved10; NDIS_HANDLE OpenQueue; REFERENCE ShortRef; NDIS_HANDLE Reserved12; UCHAR Padding1; UCHAR LockAcquired; UCHAR PmodeOpens; UCHAR Reserved23; KSPIN_LOCK Lock; PNDIS_REQUEST MediaRequest; PVOID Interrupt; ULONG Flags; ULONG PnPFlags; LIST_ENTRY PacketList; PNDIS_PACKET FirstPendingPacket; PNDIS_PACKET ReturnPacketsQueue; ULONG RequestBuffer; PVOID SetMCastBuffer; struct _NDIS_MINIPORT_BLOCK *PrimaryMiniport; PVOID Reserved11; PVOID BusDataContext; ULONG Reserved3; PCM_RESOURCE_LIST Resources; NDIS_TIMER WakeUpDpcTimer; UNICODE_STRING Reserved20; UNICODE_STRING SymbolicLinkName; ULONG CheckForHandSeconds; USHORT CFHangTicks; USHORT CFHangCurrentTick; NDIS_STATUS ResetStatus; NDIS_HANDLE ResetOpen; #ifdef __cplusplus FILTERDBS FilterDbs; #else FILTERDBS; #endif FILTER_PACKET_INDICATION_HANDLER PacketIndicateHandler; NDIS_M_SEND_COMPLETE_HANDLER SendCompleteHandler; NDIS_M_SEND_RESOURCES_HANDLER SendResourcesHandler; NDIS_M_RESET_COMPLETE_HANDLER ResetCompleteHandler; NDIS_MEDIUM MediaType; ULONG BusNumber; NDIS_INTERFACE_TYPE BusType; NDIS_INTERFACE_TYPE AdapterType; PDEVICE_OBJECT Reserved6; PDEVICE_OBJECT Reserved7; PDEVICE_OBJECT Reserved8; PVOID MiniportSGDmaBlock; PNDIS_AF_LIST CallMgrAfList; PVOID MiniportThread; PVOID SetInfoBuf; USHORT SetInfoBufLen; USHORT MaxSendPackets; NDIS_STATUS FakeStatus; PVOID Reserved24; PUNICODE_STRING Reserved9; PVOID Reserved21; UINT MacOptions; PNDIS_REQUEST PendingRequest; UINT MaximumLongAddresses; UINT MaximumShortAddresses; UINT CurrentLookahead; UINT MaximumLookahead; ULONG_PTR Reserved1; W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler; W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler; W_SEND_PACKETS_HANDLER SendPacketsHandler; NDIS_M_START_SENDS DeferredSendHandler; ETH_RCV_INDICATE_HANDLER EthRxIndicateHandler; TR_RCV_INDICATE_HANDLER TrRxIndicateHandler; PVOID Reserved2; ETH_RCV_COMPLETE_HANDLER EthRxCompleteHandler; TR_RCV_COMPLETE_HANDLER TrRxCompleteHandler; PVOID Reserved22; NDIS_M_STATUS_HANDLER StatusHandler; NDIS_M_STS_COMPLETE_HANDLER StatusCompleteHandler; NDIS_M_TD_COMPLETE_HANDLER TDCompleteHandler; NDIS_M_REQ_COMPLETE_HANDLER QueryCompleteHandler; NDIS_M_REQ_COMPLETE_HANDLER SetCompleteHandler; NDIS_WM_SEND_COMPLETE_HANDLER WanSendCompleteHandler; WAN_RCV_HANDLER WanRcvHandler; WAN_RCV_COMPLETE_HANDLER WanRcvCompleteHandler; } NDIS_MINIPORT_BLOCK; #else typedef struct _NDIS_MINIPORT_BLOCK NDIS_MINIPORT_BLOCK; #endif typedef NDIS_MINIPORT_BLOCK *PNDIS_MINIPORT_BLOCK; /* NDIS miniport characteristics */ #if NDIS_LEGACY_MINIPORT #ifdef NDIS51_MINIPORT typedef struct _NDIS51_MINIPORT_CHARACTERISTICS NDIS_MINIPORT_CHARACTERISTICS; #else #ifdef NDIS50_MINIPORT typedef struct _NDIS50_MINIPORT_CHARACTERISTICS NDIS_MINIPORT_CHARACTERISTICS; #else #ifdef NDIS40_MINIPORT typedef struct _NDIS40_MINIPORT_CHARACTERISTICS NDIS_MINIPORT_CHARACTERISTICS; #else typedef struct _NDIS30_MINIPORT_CHARACTERISTICS NDIS_MINIPORT_CHARACTERISTICS; #endif #endif #endif typedef NDIS_MINIPORT_CHARACTERISTICS *PNDIS_MINIPORT_CHARACTERISTICS; typedef NDIS_MINIPORT_CHARACTERISTICS NDIS_WAN_MINIPORT_CHARACTERISTICS; typedef NDIS_WAN_MINIPORT_CHARACTERISTICS *PNDIS_WAN_MINIPORT_CHARACTERISTICS; #endif /* NDIS I/O work item routine */ #if NDIS_SUPPORT_NDIS6 typedef VOID (NTAPI NDIS_IO_WORKITEM_FUNCTION)( PVOID, NDIS_HANDLE ); typedef NDIS_IO_WORKITEM_FUNCTION *NDIS_IO_WORKITEM_ROUTINE; #endif /* NDIS MSIX table configuration operations */ #if NDIS_SUPPORT_NDIS61 typedef enum _NDIS_MSIX_TABLE_CONFIG { NdisMSIXTableConfigSetTableEntry = 0, NdisMSIXTableConfigMaskTableEntry = 1, NdisMSIXTableConfigUnmaskTableEntry = 2, NdisMSIXTableConfigMax = 3 } NDIS_MSIX_TABLE_OPERATION; typedef NDIS_MSIX_TABLE_OPERATION *PNDIS_MSIX_TABLE_OPERATION; #endif /* NDIS MSIX configuration parameters */ #if NDIS_SUPPORT_NDIS61 typedef struct _NDIS_MSIX_CONFIG_PARAMETERS { NDIS_OBJECT_HEADER Header; NDIS_MSIX_TABLE_OPERATION ConfigOperation; ULONG TableEntry; ULONG MessageNumber; } NDIS_MSIX_CONFIG_PARAMETERS; typedef NDIS_MSIX_CONFIG_PARAMETERS *PNDIS_MSIX_CONFIG_PARAMETERS; #endif /* Client handlers */ typedef VOID (NTAPI PROTOCOL_CL_OPEN_AF_COMPLETE)( NDIS_STATUS, NDIS_HANDLE, NDIS_HANDLE ); typedef VOID (NTAPI PROTOCOL_CL_CLOSE_AF_COMPLETE)( NDIS_STATUS, NDIS_HANDLE ); typedef VOID (NTAPI PROTOCOL_CL_REGISTER_SAP_COMPLETE)( NDIS_STATUS, NDIS_HANDLE, PCO_SAP, NDIS_HANDLE ); typedef VOID (NTAPI PROTOCOL_CL_DEREGISTER_SAP_COMPLETE)( NDIS_STATUS, NDIS_HANDLE ); typedef VOID (NTAPI PROTOCOL_CL_MAKE_CALL_COMPLETE)( NDIS_STATUS, NDIS_HANDLE, NDIS_HANDLE, PCO_CALL_PARAMETERS ); typedef VOID (NTAPI PROTOCOL_CL_CLOSE_CALL_COMPLETE)( NDIS_STATUS, NDIS_HANDLE, NDIS_HANDLE ); typedef VOID (NTAPI PROTOCOL_CL_ADD_PARTY_COMPLETE)( NDIS_STATUS, NDIS_HANDLE, NDIS_HANDLE, PCO_CALL_PARAMETERS ); typedef VOID (NTAPI PROTOCOL_CL_DROP_PARTY_COMPLETE)( NDIS_STATUS, NDIS_HANDLE ); typedef NDIS_STATUS (NTAPI PROTOCOL_CL_INCOMING_CALL)( NDIS_STATUS, NDIS_STATUS, PCO_CALL_PARAMETERS ); typedef VOID (NTAPI PROTOCOL_CL_CALL_CONNECTED)( NDIS_HANDLE ); typedef VOID (NTAPI PROTOCOL_CL_INCOMING_CLOSE_CALL)( NDIS_STATUS, NDIS_HANDLE, PVOID, UINT ); typedef VOID (NTAPI PROTOCOL_CL_INCOMING_DROP_PARTY)( NDIS_STATUS, NDIS_HANDLE, PVOID, UINT ); typedef VOID (NTAPI PROTOCOL_CL_MODIFY_CALL_QOS_COMPLETE)( NDIS_STATUS, NDIS_HANDLE, PCO_CALL_PARAMETERS ); typedef VOID (NTAPI PROTOCOL_CL_INCOMING_CALL_QOS_CHANGE)( NDIS_HANDLE, PCO_CALL_PARAMETERS ); typedef PROTOCOL_CL_OPEN_AF_COMPLETE *CL_OPEN_AF_COMPLETE_HANDLER; typedef PROTOCOL_CL_CLOSE_AF_COMPLETE *CL_CLOSE_AF_COMPLETE_HANDLER; typedef PROTOCOL_CL_REGISTER_SAP_COMPLETE *CL_REG_SAP_COMPLETE_HANDLER; typedef PROTOCOL_CL_DEREGISTER_SAP_COMPLETE *CL_DEREG_SAP_COMPLETE_HANDLER; typedef PROTOCOL_CL_MAKE_CALL_COMPLETE *CL_MAKE_CALL_COMPLETE_HANDLER; typedef PROTOCOL_CL_CLOSE_CALL_COMPLETE *CL_CLOSE_CALL_COMPLETE_HANDLER; typedef PROTOCOL_CL_ADD_PARTY_COMPLETE *CL_ADD_PARTY_COMPLETE_HANDLER; typedef PROTOCOL_CL_DROP_PARTY_COMPLETE *CL_DROP_PARTY_COMPLETE_HANDLER; typedef PROTOCOL_CL_INCOMING_CALL *CL_INCOMING_CALL_HANDLER; typedef PROTOCOL_CL_CALL_CONNECTED *CL_CALL_CONNECTED_HANDLER; typedef PROTOCOL_CL_INCOMING_CLOSE_CALL *CL_INCOMING_CLOSE_CALL_HANDLER; typedef PROTOCOL_CL_INCOMING_DROP_PARTY *CL_INCOMING_DROP_PARTY_HANDLER; typedef PROTOCOL_CL_MODIFY_CALL_QOS_COMPLETE *CL_MODIFY_CALL_QOS_COMPLETE_HANDLER; typedef PROTOCOL_CL_INCOMING_CALL_QOS_CHANGE *CL_INCOMING_CALL_QOS_CHANGE_HANDLER; /* NDIS client characteristics */ #if NDIS_LEGACY_PROTOCOL typedef struct _NDIS_CLIENT_CHARACTERISTICS { UCHAR MajorVersion; UCHAR MinorVersion; USHORT Filler; UINT Reserved; CO_CREATE_VC_HANDLER ClCreateVcHandler; CO_DELETE_VC_HANDLER ClDeleteVcHandler; CO_REQUEST_HANDLER ClRequestHandler; CO_REQUEST_COMPLETE_HANDLER ClRequestCompleteHandler; CL_OPEN_AF_COMPLETE_HANDLER ClOpenAfCompleteHandler; CL_CLOSE_AF_COMPLETE_HANDLER ClCloseAfCompleteHandler; CL_REG_SAP_COMPLETE_HANDLER ClRegisterSapCompleteHandler; CL_DEREG_SAP_COMPLETE_HANDLER ClDeregisterSapCompleteHandler; CL_MAKE_CALL_COMPLETE_HANDLER ClMakeCallCompleteHandler; CL_MODIFY_CALL_QOS_COMPLETE_HANDLER ClModifyCallQoSCompleteHandler; CL_CLOSE_CALL_COMPLETE_HANDLER ClCloseCallCompleteHandler; CL_ADD_PARTY_COMPLETE_HANDLER ClAddPartyCompleteHandler; CL_DROP_PARTY_COMPLETE_HANDLER ClDropPartyCompleteHandler; CL_INCOMING_CALL_HANDLER ClIncomingCallHandler; CL_INCOMING_CALL_QOS_CHANGE_HANDLER ClIncomingCallQoSChangeHandler; CL_INCOMING_CLOSE_CALL_HANDLER ClIncomingCloseCallHandler; CL_INCOMING_DROP_PARTY_HANDLER ClIncomingDropPartyHandler; CL_CALL_CONNECTED_HANDLER ClCallConnectedHandler; } NDIS_CLIENT_CHARACTERISTICS; typedef NDIS_CLIENT_CHARACTERISTICS *PNDIS_CLIENT_CHARACTERISTICS; #endif /* Call manager handlers */ typedef NDIS_STATUS (NTAPI PROTOCOL_CM_OPEN_AF)( NDIS_HANDLE, PCO_ADDRESS_FAMILY, NDIS_HANDLE, PNDIS_HANDLE ); typedef NDIS_STATUS (NTAPI PROTOCOL_CM_CLOSE_AF)( NDIS_HANDLE ); typedef NDIS_STATUS (NTAPI PROTOCOL_CM_REG_SAP)( NDIS_HANDLE, PCO_SAP, NDIS_HANDLE, PNDIS_HANDLE ); typedef NDIS_STATUS (NTAPI PROTOCOL_CM_DEREGISTER_SAP)( NDIS_HANDLE ); typedef NDIS_STATUS (NTAPI PROTOCOL_CM_MAKE_CALL)( NDIS_HANDLE, PCO_CALL_PARAMETERS, NDIS_HANDLE, PNDIS_HANDLE ); typedef NDIS_STATUS (NTAPI PROTOCOL_CM_CLOSE_CALL)( NDIS_HANDLE, NDIS_HANDLE, PVOID, UINT ); typedef NDIS_STATUS (NTAPI PROTOCOL_CM_MODIFY_QOS_CALL)( NDIS_HANDLE, PCO_CALL_PARAMETERS ); typedef VOID (NTAPI PROTOCOL_CM_INCOMING_CALL_COMPLETE)( NDIS_STATUS, NDIS_HANDLE, PCO_CALL_PARAMETERS ); typedef VOID (NTAPI PROTOCOL_CM_ACTIVATE_VC_COMPLETE)( NDIS_STATUS, NDIS_HANDLE, PCO_CALL_PARAMETERS ); typedef VOID (NTAPI PROTOCOL_CM_DEACTIVATE_VC_COMPLETE)( NDIS_STATUS, NDIS_HANDLE ); typedef NDIS_STATUS (NTAPI PROTOCOL_CM_ADD_PARTY)( NDIS_HANDLE, PCO_CALL_PARAMETERS, NDIS_HANDLE, PNDIS_HANDLE ); typedef NDIS_STATUS (NTAPI PROTOCOL_CM_DROP_PARTY)( NDIS_HANDLE, PVOID, UINT ); typedef PROTOCOL_CM_OPEN_AF *CM_OPEN_AF_HANDLER; typedef PROTOCOL_CM_CLOSE_AF *CM_CLOSE_AF_HANDLER; typedef PROTOCOL_CM_REG_SAP *CM_REG_SAP_HANDLER; typedef PROTOCOL_CM_DEREGISTER_SAP *CM_DEREG_SAP_HANDLER; typedef PROTOCOL_CM_MAKE_CALL *CM_MAKE_CALL_HANDLER; typedef PROTOCOL_CM_CLOSE_CALL *CM_CLOSE_CALL_HANDLER; typedef PROTOCOL_CM_MODIFY_QOS_CALL *CM_MODIFY_CALL_QOS_HANDLER; typedef PROTOCOL_CM_INCOMING_CALL_COMPLETE *CM_INCOMING_CALL_COMPLETE_HANDLER; typedef PROTOCOL_CM_ACTIVATE_VC_COMPLETE *CM_ACTIVATE_VC_COMPLETE_HANDLER; typedef PROTOCOL_CM_DEACTIVATE_VC_COMPLETE *CM_DEACTIVATE_VC_COMPLETE_HANDLER; typedef PROTOCOL_CM_ADD_PARTY *CM_ADD_PARTY_HANDLER; typedef PROTOCOL_CM_DROP_PARTY *CM_DROP_PARTY_HANDLER; /* NDIS call manager characteristics */ #if NDIS_LEGACY_DRIVER typedef struct _NDIS_CALL_MANAGER_CHARACTERISTICS { UCHAR MajorVersion; UCHAR MinorVersion; USHORT Filler; UINT Reserved; CO_CREATE_VC_HANDLER CmCreateVcHandler; CO_DELETE_VC_HANDLER CmDeleteVcHandler; CM_OPEN_AF_HANDLER CmOpenAfHandler; CM_CLOSE_AF_HANDLER CmCloseAfHandler; CM_REG_SAP_HANDLER CmRegisterSapHandler; CM_DEREG_SAP_HANDLER CmDeregisterSapHandler; CM_MAKE_CALL_HANDLER CmMakeCallHandler; CM_CLOSE_CALL_HANDLER CmCloseCallHandler; CM_INCOMING_CALL_COMPLETE_HANDLER CmIncomingCallCompleteHandler; CM_ADD_PARTY_HANDLER CmAddPartyHandler; CM_DROP_PARTY_HANDLER CmDropPartyHandler; CM_ACTIVATE_VC_COMPLETE_HANDLER CmActivateVcCompleteHandler; CM_DEACTIVATE_VC_COMPLETE_HANDLER CmDeactivateVcCompleteHandler; CM_MODIFY_CALL_QOS_HANDLER CmModifyCallQoSHandler; CO_REQUEST_HANDLER CmRequestHandler; CO_REQUEST_COMPLETE_HANDLER CmRequestCompleteHandler; } NDIS_CALL_MANAGER_CHARACTERISTICS; typedef NDIS_CALL_MANAGER_CHARACTERISTICS *PNDIS_CALL_MANAGER_CHARACTERISTICS; #endif /* CO address */ typedef struct _CO_ADDRESS { ULONG AddressSize; UCHAR Address[1]; } CO_ADDRESS; typedef CO_ADDRESS *PCO_ADDRESS; /* CO address list */ typedef struct _CO_ADDRESS_LIST { ULONG NumberOfAddressesAvailable; ULONG NumberOfAddresses; CO_ADDRESS AddressList; } CO_ADDRESS_LIST; typedef CO_ADDRESS_LIST *PCO_ADDRESS_LIST; /* CO specific parameters */ typedef struct _CO_SPECIFIC_PARAMETERS { ULONG ParamType; ULONG Length; UCHAR Parameters[1]; } CO_SPECIFIC_PARAMETERS; typedef CO_SPECIFIC_PARAMETERS *PCO_SPECIFIC_PARAMETERS; /* CO call manager parameters */ typedef struct _CO_CALL_MANAGER_PARAMETERS { FLOWSPEC Transmit; FLOWSPEC Receive; CO_SPECIFIC_PARAMETERS CallMgrSpecific; } CO_CALL_MANAGER_PARAMETERS; typedef CO_CALL_MANAGER_PARAMETERS *PCO_CALL_MANAGER_PARAMETERS; /* CO media parameters */ typedef struct _CO_MEDIA_PARAMETERS { ULONG Flags; ULONG ReceivePriority; ULONG ReceiveSizeHint; CO_SPECIFIC_PARAMETERS MediaSpecific; } CO_MEDIA_PARAMETERS; typedef CO_MEDIA_PARAMETERS *PCO_MEDIA_PARAMETERS; /* CO call parameters */ typedef struct _CO_CALL_PARAMETERS { ULONG Flags; PCO_CALL_MANAGER_PARAMETERS CallMgrParameters; PCO_MEDIA_PARAMETERS MediaParameters; } CO_CALL_PARAMETERS; typedef CO_CALL_PARAMETERS *PCO_CALL_PARAMETERS; /* CO PVC */ typedef struct _CO_PVC { NDIS_HANDLE NdisAfHandle; CO_SPECIFIC_PARAMETERS PvcParameters; } CO_PVC; typedef CO_PVC *PCO_PVC; /* Variable string */ #ifndef __NDISTAPI_VAR_STRING_DECLARED #define __NDISTAPI_VAR_STRING_DECLARED typedef struct _VAR_STRING { ULONG ulTotalSize; ULONG ulNeededSize; ULONG ulUsedSize; ULONG ulStringFormat; ULONG ulStringSize; ULONG ulStringOffset; } VAR_STRING; typedef VAR_STRING *PVAR_STRING; #endif /* NDIS CO client optional handlers */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_CO_CLIENT_OPTIONAL_HANDLERS { NDIS_OBJECT_HEADER Header; ULONG Reserved; CO_CREATE_VC_HANDLER ClCreateVcHandler; CO_DELETE_VC_HANDLER ClDeleteVcHandler; CO_OID_REQUEST_HANDLER ClOidRequestHandler; CO_OID_REQUEST_COMPLETE_HANDLER ClOidRequestCompleteHandler; CL_OPEN_AF_COMPLETE_HANDLER_EX ClOpenAfCompleteHandlerEx; CL_CLOSE_AF_COMPLETE_HANDLER ClCloseAfCompleteHandler; CL_REG_SAP_COMPLETE_HANDLER ClRegisterSapCompleteHandler; CL_DEREG_SAP_COMPLETE_HANDLER ClDeregisterSapCompleteHandler; CL_MAKE_CALL_COMPLETE_HANDLER ClMakeCallCompleteHandler; CL_MODIFY_CALL_QOS_COMPLETE_HANDLER ClModifyCallQoSCompleteHandler; CL_CLOSE_CALL_COMPLETE_HANDLER ClCloseCallCompleteHandler; CL_ADD_PARTY_COMPLETE_HANDLER ClAddPartyCompleteHandler; CL_DROP_PARTY_COMPLETE_HANDLER ClDropPartyCompleteHandler; CL_INCOMING_CALL_HANDLER ClIncomingCallHandler; CL_INCOMING_CALL_QOS_CHANGE_HANDLER ClIncomingCallQoSChangeHandler; CL_INCOMING_CLOSE_CALL_HANDLER ClIncomingCloseCallHandler; CL_INCOMING_DROP_PARTY_HANDLER ClIncomingDropPartyHandler; CL_CALL_CONNECTED_HANDLER ClCallConnectedHandler; CL_NOTIFY_CLOSE_AF_HANDLER ClNotifyCloseAfHandler; } NDIS_CO_CLIENT_OPTIONAL_HANDLERS; typedef NDIS_CO_CLIENT_OPTIONAL_HANDLERS *PNDIS_CO_CLIENT_OPTIONAL_HANDLERS; #endif /* NDIS CO call manager optional handlers */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS { NDIS_OBJECT_HEADER Header; ULONG Reserved; CO_CREATE_VC_HANDLER CmCreateVcHandler; CO_DELETE_VC_HANDLER CmDeleteVcHandler; CM_OPEN_AF_HANDLER CmOpenAfHandler; CM_CLOSE_AF_HANDLER CmCloseAfHandler; CM_REG_SAP_HANDLER CmRegisterSapHandler; CM_DEREG_SAP_HANDLER CmDeregisterSapHandler; CM_MAKE_CALL_HANDLER CmMakeCallHandler; CM_CLOSE_CALL_HANDLER CmCloseCallHandler; CM_INCOMING_CALL_COMPLETE_HANDLER CmIncomingCallCompleteHandler; CM_ADD_PARTY_HANDLER CmAddPartyHandler; CM_DROP_PARTY_HANDLER CmDropPartyHandler; CM_ACTIVATE_VC_COMPLETE_HANDLER CmActivateVcCompleteHandler; CM_DEACTIVATE_VC_COMPLETE_HANDLER CmDeactivateVcCompleteHandler; CM_MODIFY_CALL_QOS_HANDLER CmModifyCallQoSHandler; CO_OID_REQUEST_HANDLER CmOidRequestHandler; CO_OID_REQUEST_COMPLETE_HANDLER CmOidRequestCompleteHandler; CM_NOTIFY_CLOSE_AF_COMPLETE_HANDLER CmNotifyCloseAfCompleteHandler; } NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS; typedef NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS *PNDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS; #endif /* NDIS filter attach parameters */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_FILTER_ATTACH_PARAMETERS { NDIS_OBJECT_HEADER Header; NET_IFINDEX IfIndex; NET_LUID NetLuid; PNDIS_STRING FilterModuleGuidName; NET_IFINDEX BaseMiniportIfIndex; PNDIS_STRING BaseMiniportInstanceName; PNDIS_STRING BaseMiniportName; NDIS_MEDIA_CONNECT_STATE MediaConnectState; NET_IF_MEDIA_DUPLEX_STATE MediaDuplexState; ULONG64 XmitLinkSpeed; ULONG64 RcvLinkSpeed; NDIS_MEDIUM MiniportMediumType; NDIS_PHYSICAL_MEDIUM MiniportPhysicalMediaType; NDIS_HANDLE MiniportMediaSpecificAttributes; PNDIS_OFFLOAD DefaultOffloadConfiguration; USHORT MacAddressLength; UCHAR CurrentMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH]; NET_LUID BaseMiniportNetLuid; NET_IFINDEX LowerIfIndex; NET_LUID LowerIfNetLuid; ULONG Flags; #if NDIS_SUPPORT_NDIS61 PNDIS_HD_SPLIT_CURRENT_CONFIG HDSplitCurrentConfig; #endif #if NDIS_SUPPORT_NDIS620 PNDIS_RECEIVE_FILTER_CAPABILITIES ReceiveFilterCapabilities; PDEVICE_OBJECT MiniportPhysicalDeviceObject; PNDIS_NIC_SWITCH_CAPABILITIES NicSwitchCapabilities; #endif } NDIS_FILTER_ATTACH_PARAMETERS; typedef NDIS_FILTER_ATTACH_PARAMETERS *PNDIS_FILTER_ATTACH_PARAMETERS; #endif /* NDIS filter restart parameters */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_FILTER_RESTART_PARAMETERS { NDIS_OBJECT_HEADER Header; NDIS_MEDIUM MiniportMediaType; NDIS_PHYSICAL_MEDIUM MiniportPhysicalMediaType; PNDIS_RESTART_ATTRIBUTES RestartAttributes; NET_IFINDEX LowerIfIndex; NET_LUID LowerIfNetLuid; ULONG Flags; } NDIS_FILTER_RESTART_PARAMETERS; typedef NDIS_FILTER_RESTART_PARAMETERS *PNDIS_FILTER_RESTART_PARAMETERS; #endif /* NDIS filter pause parameters */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_FILTER_PAUSE_PARAMETERS { NDIS_OBJECT_HEADER Header; ULONG Flags; ULONG PauseReason; } NDIS_FILTER_PAUSE_PARAMETERS; typedef NDIS_FILTER_PAUSE_PARAMETERS *PNDIS_FILTER_PAUSE_PARAMETERS; #endif /* Filter handlers */ #if NDIS_SUPPORT_NDIS6 typedef NDIS_STATUS (NTAPI FILTER_ATTACH)( NDIS_HANDLE, NDIS_HANDLE, PNDIS_FILTER_ATTACH_PARAMETERS ); typedef VOID (NTAPI FILTER_DETACH)( NDIS_HANDLE ); typedef NDIS_STATUS (NTAPI FILTER_SET_FILTER_MODULE_OPTIONS)( NDIS_HANDLE ); typedef NDIS_STATUS (NTAPI FILTER_RESTART)( NDIS_HANDLE, PNDIS_FILTER_RESTART_PARAMETERS ); typedef NDIS_STATUS (NTAPI FILTER_PAUSE)( NDIS_HANDLE, PNDIS_FILTER_PAUSE_PARAMETERS ); typedef NDIS_STATUS (NTAPI FILTER_OID_REQUEST)( NDIS_HANDLE, PNDIS_OID_REQUEST ); typedef VOID (NTAPI FILTER_CANCEL_OID_REQUEST)( NDIS_HANDLE, PVOID ); typedef VOID (NTAPI FILTER_SEND_NET_BUFFER_LISTS)( NDIS_HANDLE, PNET_BUFFER_LIST, NDIS_PORT_NUMBER, ULONG ); typedef VOID (NTAPI FILTER_CANCEL_SEND_NET_BUFFER_LISTS)( NDIS_HANDLE, PVOID ); typedef VOID (NTAPI FILTER_RETURN_NET_BUFFER_LISTS)( NDIS_HANDLE, PNET_BUFFER_LIST, ULONG ); typedef VOID (NTAPI FILTER_SEND_NET_BUFFER_LISTS_COMPLETE)( NDIS_HANDLE, PNET_BUFFER_LIST, ULONG ); typedef VOID (NTAPI FILTER_RECEIVE_NET_BUFFER_LISTS)( NDIS_HANDLE, PNET_BUFFER_LIST, NDIS_PORT_NUMBER, ULONG, ULONG ); typedef VOID (NTAPI FILTER_DEVICE_PNP_EVENT_NOTIFY)( NDIS_HANDLE, PNET_DEVICE_PNP_EVENT ); typedef NDIS_STATUS (NTAPI FILTER_NET_PNP_EVENT)( NDIS_HANDLE, PNET_PNP_EVENT_NOTIFICATION ); typedef VOID (NTAPI FILTER_STATUS)( NDIS_HANDLE, PNDIS_STATUS_INDICATION ); typedef VOID (NTAPI FILTER_OID_REQUEST_COMPLETE)( NDIS_HANDLE, PNDIS_OID_REQUEST, NDIS_STATUS ); typedef FILTER_ATTACH *FILTER_ATTACH_HANDLER; typedef FILTER_DETACH *FILTER_DETACH_HANDLER; typedef FILTER_SET_FILTER_MODULE_OPTIONS *FILTER_SET_FILTER_MODULE_OPTIONS_HANDLER; typedef FILTER_RESTART *FILTER_RESTART_HANDLER; typedef FILTER_PAUSE *FILTER_PAUSE_HANDLER; typedef FILTER_OID_REQUEST *FILTER_OID_REQUEST_HANDLER; typedef FILTER_CANCEL_OID_REQUEST *FILTER_CANCEL_OID_REQUEST_HANDLER; typedef FILTER_SEND_NET_BUFFER_LISTS *FILTER_SEND_NET_BUFFER_LISTS_HANDLER; typedef FILTER_CANCEL_SEND_NET_BUFFER_LISTS *FILTER_CANCEL_SEND_HANDLER; typedef FILTER_RETURN_NET_BUFFER_LISTS *FILTER_RETURN_NET_BUFFER_LISTS_HANDLER; typedef FILTER_SEND_NET_BUFFER_LISTS_COMPLETE *FILTER_SEND_NET_BUFFER_LISTS_COMPLETE_HANDLER; typedef FILTER_RECEIVE_NET_BUFFER_LISTS *FILTER_RECEIVE_NET_BUFFER_LISTS_HANDLER; typedef FILTER_DEVICE_PNP_EVENT_NOTIFY *FILTER_DEVICE_PNP_EVENT_NOTIFY_HANDLER; typedef FILTER_NET_PNP_EVENT *FILTER_NET_PNP_EVENT_HANDLER; typedef FILTER_STATUS *FILTER_STATUS_HANDLER; typedef FILTER_OID_REQUEST_COMPLETE *FILTER_OID_REQUEST_COMPLETE_HANDLER; #endif #if NDIS_SUPPORT_NDIS61 typedef NDIS_STATUS (NTAPI FILTER_DIRECT_OID_REQUEST)( NDIS_HANDLE, PNDIS_OID_REQUEST ); typedef VOID (NTAPI FILTER_DIRECT_OID_REQUEST_COMPLETE)( NDIS_HANDLE, PNDIS_OID_REQUEST, NDIS_STATUS ); typedef VOID (NTAPI FILTER_CANCEL_DIRECT_OID_REQUEST)( NDIS_HANDLE, PVOID ); typedef FILTER_DIRECT_OID_REQUEST *FILTER_DIRECT_OID_REQUEST_HANDLER; typedef FILTER_DIRECT_OID_REQUEST_COMPLETE *FILTER_DIRECT_OID_REQUEST_COMPLETE_HANDLER; typedef FILTER_CANCEL_DIRECT_OID_REQUEST *FILTER_CANCEL_DIRECT_OID_REQUEST_HANDLER; #endif /* NDIS filter partial characteristics */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_FILTER_PARTIAL_CHARACTERISTICS { NDIS_OBJECT_HEADER Header; ULONG Flags; FILTER_SEND_NET_BUFFER_LISTS_HANDLER SendNetBufferListsHandler; FILTER_SEND_NET_BUFFER_LISTS_COMPLETE_HANDLER SendNetBufferListsCompleteHandler; FILTER_CANCEL_SEND_HANDLER CancelSendNetBufferListsHandler; FILTER_RECEIVE_NET_BUFFER_LISTS_HANDLER ReceiveNetBufferListsHandler; FILTER_RETURN_NET_BUFFER_LISTS_HANDLER ReturnNetBufferListsHandler; } NDIS_FILTER_PARTIAL_CHARACTERISTICS; typedef NDIS_FILTER_PARTIAL_CHARACTERISTICS *PNDIS_FILTER_PARTIAL_CHARACTERISTICS; #endif /* NDIS filter driver characteristics */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_FILTER_DRIVER_CHARACTERISTICS { NDIS_OBJECT_HEADER Header; UCHAR MajorNdisVersion; UCHAR MinorNdisVersion; UCHAR MajorDriverVersion; UCHAR MinorDriverVersion; ULONG Flags; NDIS_STRING FriendlyName; NDIS_STRING UniqueName; NDIS_STRING ServiceName; SET_OPTIONS_HANDLER SetOptionsHandler; FILTER_SET_FILTER_MODULE_OPTIONS_HANDLER SetFilterModuleOptionsHandler; FILTER_ATTACH_HANDLER AttachHandler; FILTER_DETACH_HANDLER DetachHandler; FILTER_RESTART_HANDLER RestartHandler; FILTER_PAUSE_HANDLER PauseHandler; FILTER_SEND_NET_BUFFER_LISTS_HANDLER SendNetBufferListsHandler; FILTER_SEND_NET_BUFFER_LISTS_COMPLETE_HANDLER SendNetBufferListsCompleteHandler; FILTER_CANCEL_SEND_HANDLER CancelSendNetBufferListsHandler; FILTER_RECEIVE_NET_BUFFER_LISTS_HANDLER ReceiveNetBufferListsHandler; FILTER_RETURN_NET_BUFFER_LISTS_HANDLER ReturnNetBufferListsHandler; FILTER_OID_REQUEST_HANDLER OidRequestHandler; FILTER_OID_REQUEST_COMPLETE_HANDLER OidRequestCompleteHandler; FILTER_CANCEL_OID_REQUEST_HANDLER CancelOidRequestHandler; FILTER_DEVICE_PNP_EVENT_NOTIFY_HANDLER DevicePnPEventNotifyHandler; FILTER_NET_PNP_EVENT_HANDLER NetPnPEventHandler; FILTER_STATUS_HANDLER StatusHandler; #if NDIS_SUPPORT_NDIS61 FILTER_DIRECT_OID_REQUEST_HANDLER DirectOidRequestHandler; FILTER_DIRECT_OID_REQUEST_COMPLETE_HANDLER DirectOidRequestCompleteHandler; FILTER_CANCEL_DIRECT_OID_REQUEST_HANDLER CancelDirectOidRequestHandler; #endif } NDIS_FILTER_DRIVER_CHARACTERISTICS; typedef NDIS_FILTER_DRIVER_CHARACTERISTICS *PNDIS_FILTER_DRIVER_CHARACTERISTICS; #endif /* NDIS filter attributes */ #if NDIS_SUPPORT_NDIS6 typedef struct _NDIS_FILTER_ATTRIBUTES { NDIS_OBJECT_HEADER Header; ULONG Flags; } NDIS_FILTER_ATTRIBUTES; typedef NDIS_FILTER_ATTRIBUTES *PNDIS_FILTER_ATTRIBUTES; #endif /* IF provider callbacks */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef NDIS_STATUS (NTAPI *IFP_QUERY_OBJECT)( NDIS_HANDLE, NET_IF_OBJECT_ID, PULONG, PVOID ); typedef NDIS_STATUS (NTAPI *IFP_SET_OBJECT)( NDIS_HANDLE, NET_IF_OBJECT_ID, ULONG, PVOID ); #endif /* NDIS IF provider characteristics */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NDIS_IF_PROVIDER_CHARACTERISTICS { NDIS_OBJECT_HEADER Header; IFP_QUERY_OBJECT QueryObjectHandler; IFP_SET_OBJECT SetObjectHandler; PVOID Reserved1; PVOID Reserved2; } NDIS_IF_PROVIDER_CHARACTERISTICS; typedef NDIS_IF_PROVIDER_CHARACTERISTICS *PNDIS_IF_PROVIDER_CHARACTERISTICS; #endif /* Network IF information */ #if NDIS_SUPPORT_NDIS6 || NDIS60 typedef struct _NET_IF_INFORMATION { NDIS_OBJECT_HEADER Header; ULONG Flags; NET_PHYSICAL_LOCATION PhysicalLocation; ULONG WanTunnelType; ULONG PortNumber; NET_IF_ACCESS_TYPE AccessType; NET_IF_DIRECTION_TYPE DirectionType; NET_IF_CONNECTION_TYPE ConnectionType; BOOLEAN ifConnectorPresent; USHORT PhysAddressLength; USHORT PhysAddressOffset; USHORT PermanentPhysAddressOffset; USHORT FriendlyNameLength; USHORT FriendlyNameOffset; GUID InterfaceGuid; NET_IF_NETWORK_GUID NetworkGuid; ULONG SupportedStatistics; NDIS_MEDIUM MediaType; NDIS_PHYSICAL_MEDIUM PhysicalMediumType; } NET_IF_INFORMATION; typedef NET_IF_INFORMATION *PNET_IF_INFORMATION; #endif /* Functions in NDIS.SYS */ EXPORT NDIS_STATUS NTAPI NdisAllocateMemoryWithTag( PVOID *, UINT, ULONG ); EXPORT VOID NTAPI NdisCancelTimer( PNDIS_TIMER, PBOOLEAN ); EXPORT NDIS_STATUS NTAPI NdisClAddParty( NDIS_HANDLE, NDIS_HANDLE, PCO_CALL_PARAMETERS, PNDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisClCloseAddressFamily( NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisClCloseCall( NDIS_HANDLE, NDIS_HANDLE, PVOID, UINT ); EXPORT NDIS_STATUS NTAPI NdisClDeregisterSap( NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisClDropParty( NDIS_HANDLE, PVOID, UINT ); EXPORT NDIS_STATUS NTAPI NdisClGetProtocolVcContextFromTapiCallId( UNICODE_STRING, PNDIS_HANDLE ); EXPORT VOID NTAPI NdisClIncomingCallComplete( NDIS_STATUS, NDIS_HANDLE, PCO_CALL_PARAMETERS ); EXPORT NDIS_STATUS NTAPI NdisClMakeCall( NDIS_HANDLE, PCO_CALL_PARAMETERS, NDIS_HANDLE, PNDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisClModifyCallQoS( NDIS_HANDLE, PCO_CALL_PARAMETERS ); EXPORT NDIS_STATUS NTAPI NdisClRegisterSap( NDIS_HANDLE, NDIS_HANDLE, PCO_SAP, PNDIS_HANDLE ); EXPORT VOID NTAPI NdisCloseConfiguration( NDIS_HANDLE ); EXPORT VOID NTAPI NdisCloseFile( PNDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisCmActivateVc( NDIS_HANDLE, PCO_CALL_PARAMETERS ); EXPORT VOID NTAPI NdisCmAddPartyComplete( NDIS_STATUS, NDIS_HANDLE, NDIS_HANDLE, PCO_CALL_PARAMETERS ); EXPORT VOID NTAPI NdisCmCloseAddressFamilyComplete( NDIS_STATUS, NDIS_HANDLE ); EXPORT VOID NTAPI NdisCmCloseCallComplete( NDIS_STATUS, NDIS_HANDLE, NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisCmDeactivateVc( NDIS_HANDLE ); EXPORT VOID NTAPI NdisCmDeregisterSapComplete( NDIS_STATUS, NDIS_HANDLE ); EXPORT VOID NTAPI NdisCmDispatchCallConnected( NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisCmDispatchIncomingCall( NDIS_HANDLE, NDIS_HANDLE, PCO_CALL_PARAMETERS ); EXPORT VOID NTAPI NdisCmDispatchIncomingCallQoSChange( NDIS_HANDLE, PCO_CALL_PARAMETERS ); EXPORT VOID NTAPI NdisCmDispatchIncomingCloseCall( NDIS_STATUS, NDIS_HANDLE, PVOID, UINT ); EXPORT VOID NTAPI NdisCmDispatchIncomingDropParty( NDIS_STATUS, NDIS_HANDLE, PVOID, UINT ); EXPORT VOID NTAPI NdisCmDropPartyComplete( NDIS_STATUS, NDIS_HANDLE ); EXPORT VOID NTAPI NdisCmMakeCallComplete( NDIS_STATUS, NDIS_HANDLE, NDIS_HANDLE, NDIS_HANDLE, PCO_CALL_PARAMETERS ); EXPORT VOID NTAPI NdisCmModifyCallQoSComplete( NDIS_STATUS, NDIS_HANDLE, PCO_CALL_PARAMETERS ); EXPORT VOID NTAPI NdisCmOpenAddressFamilyComplete( NDIS_STATUS, NDIS_HANDLE, NDIS_HANDLE ); EXPORT VOID NTAPI NdisCmRegisterSapComplete( NDIS_STATUS, NDIS_HANDLE, NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisCoAssignInstanceName( NDIS_HANDLE, PNDIS_STRING, PNDIS_STRING ); EXPORT NDIS_STATUS NTAPI NdisCoCreateVc( NDIS_HANDLE, NDIS_HANDLE, NDIS_HANDLE, PNDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisCoDeleteVc( NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisCoGetTapiCallId( NDIS_HANDLE, PVAR_STRING ); EXPORT VOID NTAPI NdisCompleteDmaTransfer( PNDIS_STATUS, NDIS_HANDLE, PNDIS_BUFFER, ULONG, ULONG, BOOLEAN ); EXPORT VOID NTAPI NdisCopyBuffer( PNDIS_STATUS, PNDIS_BUFFER *, NDIS_HANDLE, PVOID, UINT, UINT ); EXPORT VOID NTAPI NdisDeregisterTdiCallBack( VOID ); EXPORT VOID NTAPI NdisFreeMemory( PVOID, UINT, UINT ); EXPORT VOID NTAPI NdisFreeMemoryWithTag( PVOID, ULONG ); EXPORT UCHAR NTAPI NdisGeneratePartialCancelId( VOID ); EXPORT VOID NTAPI NdisGetCurrentProcessorCounts( PULONG, PULONG, PULONG ); EXPORT VOID NTAPI NdisGetCurrentProcessorCpuUsage( PULONG ); EXPORT PVOID NTAPI NdisGetRoutineAddress( PNDIS_STRING ); EXPORT ULONG NTAPI NdisGetSharedDataAlignment( VOID ); EXPORT UINT NTAPI NdisGetVersion( VOID ); EXPORT VOID NTAPI NdisIMAssociateMiniport( NDIS_HANDLE, NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisIMCancelInitializeDeviceInstance( NDIS_HANDLE, PNDIS_STRING ); EXPORT NDIS_STATUS NTAPI NdisIMDeInitializeDeviceInstance( NDIS_HANDLE ); EXPORT NDIS_HANDLE NTAPI NdisIMGetBindingContext( NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisIMInitializeDeviceInstanceEx( NDIS_HANDLE, PNDIS_STRING, NDIS_HANDLE ); EXPORT VOID NTAPI NdisInitializeEvent( PNDIS_EVENT ); EXPORT VOID NTAPI NdisInitializeString( PNDIS_STRING, PUCHAR ); EXPORT VOID NTAPI NdisInitializeTimer( PNDIS_TIMER, PNDIS_TIMER_FUNCTION, PVOID ); EXPORT VOID NTAPI NdisMAllocateSharedMemory( NDIS_HANDLE, ULONG, BOOLEAN, PVOID *, PNDIS_PHYSICAL_ADDRESS ); EXPORT NDIS_STATUS NTAPI NdisMAllocateSharedMemoryAsync( NDIS_HANDLE, ULONG, BOOLEAN, PVOID ); EXPORT VOID NTAPI NdisMCancelTimer( PNDIS_MINIPORT_TIMER, PBOOLEAN ); EXPORT VOID NTAPI NdisMCloseLog( NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisMCmActivateVc( NDIS_HANDLE, PCO_CALL_PARAMETERS ); EXPORT NDIS_STATUS NTAPI NdisMCmCreateVc( NDIS_HANDLE, NDIS_HANDLE, NDIS_HANDLE, PNDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisMCmDeactivateVc( NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisMCmDeleteVc( NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisMCmRegisterAddressFamily( NDIS_HANDLE, PCO_ADDRESS_FAMILY, PNDIS_CALL_MANAGER_CHARACTERISTICS, UINT ); EXPORT VOID NTAPI NdisMCoActivateVcComplete( NDIS_STATUS, NDIS_HANDLE, PCO_CALL_PARAMETERS ); EXPORT VOID NTAPI NdisMCoDeactivateVcComplete( NDIS_STATUS, NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisMCreateLog( NDIS_HANDLE, UINT, PNDIS_HANDLE ); EXPORT VOID NTAPI NdisMDeregisterDmaChannel( NDIS_HANDLE ); EXPORT VOID NTAPI NdisMDeregisterIoPortRange( NDIS_HANDLE, UINT, UINT, PVOID ); EXPORT VOID NTAPI NdisMFlushLog( NDIS_HANDLE ); EXPORT VOID NTAPI NdisMFreeSharedMemory( NDIS_HANDLE, ULONG, BOOLEAN, PVOID, NDIS_PHYSICAL_ADDRESS ); EXPORT VOID NTAPI NdisMGetDeviceProperty( NDIS_HANDLE, PDEVICE_OBJECT *, PDEVICE_OBJECT *, PDEVICE_OBJECT *, PCM_RESOURCE_LIST *, PCM_RESOURCE_LIST * ); EXPORT ULONG NTAPI NdisMGetDmaAlignment( NDIS_HANDLE ); EXPORT VOID NTAPI NdisMInitializeTimer( PNDIS_MINIPORT_TIMER, NDIS_HANDLE, PNDIS_TIMER_FUNCTION, PVOID ); EXPORT NDIS_STATUS NTAPI NdisMMapIoSpace( PVOID *, NDIS_HANDLE, NDIS_PHYSICAL_ADDRESS, UINT ); EXPORT NDIS_STATUS NTAPI NdisMQueryAdapterInstanceName( PNDIS_STRING, NDIS_HANDLE ); EXPORT ULONG NTAPI NdisMReadDmaCounter( NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisMRegisterDmaChannel( PNDIS_HANDLE, NDIS_HANDLE, UINT, BOOLEAN, PNDIS_DMA_DESCRIPTION, ULONG ); EXPORT NDIS_STATUS NTAPI NdisMRegisterIoPortRange( PVOID *, NDIS_HANDLE, UINT, UINT ); EXPORT NDIS_STATUS NTAPI NdisMRemoveMiniport( NDIS_HANDLE ); EXPORT VOID NTAPI NdisMSetPeriodicTimer( PNDIS_MINIPORT_TIMER, UINT ); EXPORT VOID NTAPI NdisMSleep( ULONG ); EXPORT VOID NTAPI NdisMUnmapIoSpace( NDIS_HANDLE, PVOID, UINT ); EXPORT NDIS_STATUS NTAPI NdisMWriteLogData( NDIS_HANDLE, PVOID, UINT ); EXPORT VOID NTAPI NdisMapFile( PNDIS_STATUS, PVOID *, NDIS_HANDLE ); EXPORT VOID NTAPI NdisOpenConfigurationKeyByIndex( PNDIS_STATUS, NDIS_HANDLE, ULONG, PNDIS_STRING, PNDIS_HANDLE ); EXPORT VOID NTAPI NdisOpenConfigurationKeyByName( PNDIS_STATUS, NDIS_HANDLE, PNDIS_STRING, PNDIS_HANDLE ); EXPORT VOID NTAPI NdisOpenFile( PNDIS_STATUS, PNDIS_HANDLE, PUINT, PNDIS_STRING, NDIS_PHYSICAL_ADDRESS ); EXPORT NDIS_STATUS NTAPI NdisQueryAdapterInstanceName( PNDIS_STRING, NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisQueryBindInstanceName( PNDIS_STRING, NDIS_HANDLE ); EXPORT VOID NTAPI NdisReEnumerateProtocolBindings( NDIS_HANDLE ); EXPORT VOID NTAPI NdisReadConfiguration( PNDIS_STATUS, PNDIS_CONFIGURATION_PARAMETER *, NDIS_HANDLE, PNDIS_STRING, NDIS_PARAMETER_TYPE ); EXPORT VOID NTAPI NdisReadNetworkAddress( PNDIS_STATUS, PVOID *, PUINT, NDIS_HANDLE ); EXPORT VOID NTAPI NdisRegisterTdiCallBack( TDI_REGISTER_CALLBACK, TDI_PNP_HANDLER ); EXPORT VOID NTAPI NdisResetEvent( PNDIS_EVENT ); EXPORT VOID NTAPI NdisSetEvent( PNDIS_EVENT ); EXPORT VOID NTAPI NdisSetPeriodicTimer( PNDIS_TIMER, UINT ); EXPORT VOID NTAPI NdisSetTimer( PNDIS_TIMER, UINT ); EXPORT VOID NTAPI NdisSetTimerEx( PNDIS_TIMER, UINT, PVOID ); EXPORT VOID NTAPI NdisSetupDmaTransfer( PNDIS_STATUS, NDIS_HANDLE, PNDIS_BUFFER, ULONG, ULONG, BOOLEAN ); EXPORT VOID NTAPI NdisUnmapFile( NDIS_HANDLE ); EXPORT VOID NTAPI NdisUpdateSharedMemory( NDIS_HANDLE, ULONG, PVOID, NDIS_PHYSICAL_ADDRESS ); EXPORT BOOLEAN NTAPI NdisWaitEvent( PNDIS_EVENT, UINT ); EXPORT VOID NTAPI NdisWriteConfiguration( PNDIS_STATUS, NDIS_HANDLE, PNDIS_STRING, PNDIS_CONFIGURATION_PARAMETER ); EXPORT VOID __cdecl NdisWriteErrorLogEntry( NDIS_HANDLE, NDIS_ERROR_CODE, ULONG, ... ); EXPORT NDIS_STATUS NTAPI NdisWriteEventLogEntry( PVOID, NDIS_STATUS, ULONG, USHORT, PVOID, ULONG, PVOID ); #if NDIS_SUPPORT_60_COMPATIBLE_API EXPORT VOID NTAPI NdisAcquireReadWriteLock( PNDIS_RW_LOCK, BOOLEAN, PLOCK_STATE ); EXPORT VOID NTAPI NdisInitializeReadWriteLock( PNDIS_RW_LOCK ); EXPORT VOID NTAPI NdisReleaseReadWriteLock( PNDIS_RW_LOCK, PLOCK_STATE ); EXPORT CCHAR NTAPI NdisSystemProcessorCount( VOID ); #endif #if NDIS_LEGACY_DRIVER EXPORT VOID NTAPI NdisAllocateBuffer( PNDIS_STATUS, PNDIS_BUFFER *, NDIS_HANDLE, PVOID, UINT ); EXPORT VOID NTAPI NdisAllocateBufferPool( PNDIS_STATUS, PNDIS_HANDLE, UINT ); EXPORT NDIS_STATUS NTAPI NdisAllocateMemory( PVOID *, UINT, UINT, NDIS_PHYSICAL_ADDRESS ); EXPORT VOID NTAPI NdisAllocatePacket( PNDIS_STATUS, PNDIS_PACKET *, NDIS_HANDLE ); EXPORT VOID NTAPI NdisAllocatePacketPool( PNDIS_STATUS, PNDIS_HANDLE, UINT, UINT ); EXPORT VOID NTAPI NdisAllocatePacketPoolEx( PNDIS_STATUS, PNDIS_HANDLE, UINT, UINT, UINT ); EXPORT NDIS_STATUS NTAPI NdisCmRegisterAddressFamily( NDIS_HANDLE, PCO_ADDRESS_FAMILY, PNDIS_CALL_MANAGER_CHARACTERISTICS, UINT ); EXPORT VOID NTAPI NdisCopyFromPacketToPacket( PNDIS_PACKET, UINT, UINT, PNDIS_PACKET, UINT, PUINT ); EXPORT VOID NTAPI NdisCopyFromPacketToPacketSafe( PNDIS_PACKET, UINT, UINT, PNDIS_PACKET, UINT, PUINT, MM_PAGE_PRIORITY ); EXPORT VOID NTAPI NdisDprAllocatePacket( PNDIS_STATUS, PNDIS_PACKET *, NDIS_HANDLE ); EXPORT VOID NTAPI NdisDprAllocatePacketNonInterlocked( PNDIS_STATUS, PNDIS_PACKET *, NDIS_HANDLE ); EXPORT VOID NTAPI NdisDprFreePacket( PNDIS_PACKET ); EXPORT VOID NTAPI NdisDprFreePacketNonInterlocked( PNDIS_PACKET ); EXPORT VOID NTAPI NdisFreeBufferPool( NDIS_HANDLE ); EXPORT VOID NTAPI NdisFreePacket( PNDIS_PACKET ); EXPORT VOID NTAPI NdisFreePacketPool( NDIS_HANDLE ); EXPORT NDIS_HANDLE NTAPI NdisGetPoolFromPacket( PNDIS_PACKET ); EXPORT VOID NTAPI NdisGetSystemUpTime( PULONG ); EXPORT PNDIS_PACKET_STACK NTAPI NdisIMGetCurrentPacketStack( PNDIS_PACKET, BOOLEAN * ); EXPORT VOID NTAPI NdisOpenConfiguration( PNDIS_STATUS, PNDIS_HANDLE, NDIS_HANDLE ); EXPORT UINT NTAPI NdisPacketPoolUsage( NDIS_HANDLE ); EXPORT UINT NTAPI NdisPacketSize( UINT ); EXPORT NDIS_STATUS NTAPI NdisScheduleWorkItem( PNDIS_WORK_ITEM ); EXPORT VOID NTAPI NdisSetPacketPoolProtocolId( NDIS_HANDLE, UINT ); EXPORT VOID NTAPI NdisSetPacketStatus( PNDIS_PACKET, NDIS_STATUS, NDIS_HANDLE, ULONG ); EXPORT VOID NTAPI NdisUnchainBufferAtBack( PNDIS_PACKET, PNDIS_BUFFER * ); EXPORT VOID NTAPI NdisUnchainBufferAtFront( PNDIS_PACKET, PNDIS_BUFFER * ); #endif #if NDIS_LEGACY_MINIPORT EXPORT VOID NTAPI NdisIMCopySendCompletePerPacketInfo( PNDIS_PACKET, PNDIS_PACKET ); EXPORT VOID NTAPI NdisIMCopySendPerPacketInfo( PNDIS_PACKET, PNDIS_PACKET ); EXPORT VOID NTAPI NdisIMDeregisterLayeredMiniport( NDIS_HANDLE ); EXPORT NDIS_HANDLE NTAPI NdisIMGetDeviceContext( NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisIMNotifyPnPEvent( NDIS_HANDLE, PNET_PNP_EVENT ); EXPORT NDIS_STATUS NTAPI NdisIMRegisterLayeredMiniport( NDIS_HANDLE, PNDIS_MINIPORT_CHARACTERISTICS, UINT, PNDIS_HANDLE ); EXPORT VOID NTAPI NdisInitializeWrapper( PNDIS_HANDLE, PVOID, PVOID, PVOID ); EXPORT NDIS_STATUS NTAPI NdisMAllocateMapRegisters( NDIS_HANDLE, UINT, NDIS_DMA_SIZE, ULONG, ULONG ); EXPORT NDIS_STATUS NTAPI NdisMCmRequest( NDIS_HANDLE, NDIS_HANDLE, NDIS_HANDLE, PNDIS_REQUEST ); EXPORT VOID NTAPI NdisMCoIndicateReceivePacket( NDIS_HANDLE, PPNDIS_PACKET, UINT ); EXPORT VOID NTAPI NdisMCoIndicateStatus( NDIS_HANDLE, NDIS_HANDLE, NDIS_STATUS, PVOID, ULONG ); EXPORT VOID NTAPI NdisMCoReceiveComplete( NDIS_HANDLE ); EXPORT VOID NTAPI NdisMCoRequestComplete( NDIS_STATUS, NDIS_HANDLE, PNDIS_REQUEST ); EXPORT VOID NTAPI NdisMCoSendComplete( NDIS_STATUS, NDIS_HANDLE, PNDIS_PACKET ); EXPORT VOID NTAPI NdisMCompleteBufferPhysicalMapping( NDIS_HANDLE, PNDIS_BUFFER, ULONG ); EXPORT VOID NTAPI NdisMDeregisterAdapterShutdownHandler( NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisMDeregisterDevice( NDIS_HANDLE ); EXPORT VOID NTAPI NdisMDeregisterInterrupt( PNDIS_MINIPORT_INTERRUPT ); EXPORT VOID NTAPI NdisMFreeMapRegisters( NDIS_HANDLE ); EXPORT VOID NTAPI NdisMIndicateStatus( NDIS_HANDLE, NDIS_STATUS, PVOID, UINT ); EXPORT VOID NTAPI NdisMIndicateStatusComplete( NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisMInitializeScatterGatherDma( NDIS_HANDLE, BOOLEAN, ULONG ); EXPORT NDIS_STATUS NTAPI NdisMPciAssignResources( NDIS_HANDLE, ULONG, PNDIS_RESOURCE_LIST * ); EXPORT NDIS_STATUS NTAPI NdisMPromoteMiniport( NDIS_HANDLE ); EXPORT VOID NTAPI NdisMQueryAdapterResources( PNDIS_STATUS, NDIS_HANDLE, PNDIS_RESOURCE_LIST, PUINT ); EXPORT VOID NTAPI NdisMRegisterAdapterShutdownHandler( NDIS_HANDLE, PVOID, ADAPTER_SHUTDOWN_HANDLER ); EXPORT NDIS_STATUS NTAPI NdisMRegisterDevice( NDIS_HANDLE, PNDIS_STRING, PNDIS_STRING, PDRIVER_DISPATCH [], PDEVICE_OBJECT *, NDIS_HANDLE * ); EXPORT NDIS_STATUS NTAPI NdisMRegisterInterrupt( PNDIS_MINIPORT_INTERRUPT, NDIS_HANDLE, UINT, UINT, BOOLEAN, BOOLEAN, NDIS_INTERRUPT_MODE ); EXPORT NDIS_STATUS NTAPI NdisMRegisterMiniport( NDIS_HANDLE, PNDIS_MINIPORT_CHARACTERISTICS, UINT ); EXPORT VOID NTAPI NdisMRegisterUnloadHandler( NDIS_HANDLE, PDRIVER_UNLOAD ); EXPORT VOID NTAPI NdisMSetAttributesEx( NDIS_HANDLE, NDIS_HANDLE, UINT, ULONG, NDIS_INTERFACE_TYPE ); EXPORT NDIS_STATUS NTAPI NdisMSetMiniportSecondary( NDIS_HANDLE, NDIS_HANDLE ); EXPORT VOID NTAPI NdisMStartBufferPhysicalMapping( NDIS_HANDLE, PNDIS_BUFFER, ULONG, BOOLEAN, PNDIS_PHYSICAL_ADDRESS_UNIT, PUINT ); EXPORT BOOLEAN NTAPI NdisMSynchronizeWithInterrupt( PNDIS_MINIPORT_INTERRUPT, PVOID, PVOID ); EXPORT ULONG NTAPI NdisReadPciSlotInformation( NDIS_HANDLE, ULONG, ULONG, PVOID, ULONG ); EXPORT ULONG NTAPI NdisReadPcmciaAttributeMemory( NDIS_HANDLE, ULONG, PVOID, ULONG ); EXPORT VOID NTAPI NdisTerminateWrapper( NDIS_HANDLE, PVOID ); EXPORT ULONG NTAPI NdisWritePciSlotInformation( NDIS_HANDLE, ULONG, ULONG, PVOID, ULONG ); EXPORT ULONG NTAPI NdisWritePcmciaAttributeMemory( NDIS_HANDLE, ULONG, PVOID, ULONG ); #endif #if NDIS_LEGACY_PROTOCOL EXPORT VOID NTAPI NdisCancelSendPackets( NDIS_HANDLE, PVOID ); EXPORT NDIS_STATUS NTAPI NdisClOpenAddressFamily( NDIS_HANDLE, PCO_ADDRESS_FAMILY, NDIS_HANDLE, PNDIS_CLIENT_CHARACTERISTICS, UINT, PNDIS_HANDLE ); EXPORT VOID NTAPI NdisCloseAdapter( PNDIS_STATUS, NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisCoRequest( NDIS_HANDLE, NDIS_HANDLE, NDIS_HANDLE, NDIS_HANDLE, PNDIS_REQUEST ); EXPORT VOID NTAPI NdisCoRequestComplete( NDIS_STATUS, NDIS_HANDLE, NDIS_HANDLE, NDIS_HANDLE, PNDIS_REQUEST ); EXPORT VOID NTAPI NdisCoSendPackets( NDIS_HANDLE, PPNDIS_PACKET, UINT ); EXPORT VOID NTAPI NdisCompleteBindAdapter( NDIS_HANDLE, NDIS_STATUS, NDIS_STATUS ); EXPORT VOID NTAPI NdisCompletePnPEvent( NDIS_STATUS, NDIS_HANDLE, PNET_PNP_EVENT ); EXPORT VOID NTAPI NdisCompleteUnbindAdapter( NDIS_HANDLE, NDIS_STATUS ); EXPORT VOID NTAPI NdisDeregisterProtocol( PNDIS_STATUS, NDIS_HANDLE ); EXPORT VOID NTAPI NdisGetDriverHandle( NDIS_HANDLE, PNDIS_HANDLE ); EXPORT PNDIS_PACKET NTAPI NdisGetReceivedPacket( NDIS_HANDLE, NDIS_HANDLE ); EXPORT VOID NTAPI NdisOpenAdapter( PNDIS_STATUS, PNDIS_STATUS, PNDIS_HANDLE, PUINT, PNDIS_MEDIUM, UINT, NDIS_HANDLE, NDIS_HANDLE, PNDIS_STRING, UINT, PSTRING ); EXPORT VOID NTAPI NdisOpenProtocolConfiguration( PNDIS_STATUS, PNDIS_HANDLE, PNDIS_STRING ); EXPORT NDIS_STATUS NTAPI NdisQueryPendingIOCount( PVOID, PULONG ); EXPORT NDIS_STATUS NTAPI NdisRegisterProtocol( PNDIS_STATUS, PNDIS_HANDLE, PNDIS_PROTOCOL_CHARACTERISTICS, UINT ); EXPORT VOID NTAPI NdisRequest( PNDIS_STATUS, NDIS_HANDLE, PNDIS_REQUEST ); EXPORT VOID NTAPI NdisReset( PNDIS_STATUS, NDIS_HANDLE ); EXPORT VOID NTAPI NdisReturnPackets( PNDIS_PACKET *, UINT ); EXPORT VOID NTAPI NdisSetProtocolFilter( PNDIS_STATUS, NDIS_HANDLE, RECEIVE_HANDLER, RECEIVE_PACKET_HANDLER, NDIS_MEDIUM, UINT, UINT, PUCHAR ); #endif #if NDIS_SUPPORT_NDIS6 EXPORT NDIS_STATUS NTAPI NdisAllocateCloneOidRequest( NDIS_HANDLE, PNDIS_OID_REQUEST, UINT, PNDIS_OID_REQUEST * ); EXPORT PNDIS_GENERIC_OBJECT NTAPI NdisAllocateGenericObject( PDRIVER_OBJECT, ULONG, USHORT ); EXPORT NDIS_HANDLE NTAPI NdisAllocateIoWorkItem( NDIS_HANDLE ); EXPORT PVOID NTAPI NdisAllocateMemoryWithTagPriority( NDIS_HANDLE, UINT, ULONG, EX_POOL_PRIORITY ); EXPORT NDIS_STATUS NTAPI NdisAllocateTimerObject( NDIS_HANDLE, PNDIS_TIMER_CHARACTERISTICS, PNDIS_HANDLE ); EXPORT BOOLEAN NTAPI NdisCancelTimerObject( NDIS_HANDLE ); EXPORT VOID NTAPI NdisClNotifyCloseAddressFamilyComplete( NDIS_HANDLE, NDIS_STATUS ); EXPORT NDIS_STATUS NTAPI NdisClOpenAddressFamilyEx( NDIS_HANDLE, PCO_ADDRESS_FAMILY, NDIS_HANDLE, PNDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisCmNotifyCloseAddressFamily( NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisCmRegisterAddressFamilyEx( NDIS_HANDLE, PCO_ADDRESS_FAMILY ); EXPORT NDIS_STATUS NTAPI NdisCoOidRequest( NDIS_HANDLE, NDIS_HANDLE, NDIS_HANDLE, NDIS_HANDLE, PNDIS_OID_REQUEST ); EXPORT VOID NTAPI NdisCoOidRequestComplete( NDIS_HANDLE, NDIS_HANDLE, NDIS_HANDLE, PNDIS_OID_REQUEST, NDIS_STATUS ); EXPORT VOID NTAPI NdisCoSendNetBufferLists( NDIS_HANDLE, PNET_BUFFER_LIST, ULONG ); EXPORT VOID NTAPI NdisFCancelOidRequest( NDIS_HANDLE, PVOID ); EXPORT VOID NTAPI NdisFCancelSendNetBufferLists( NDIS_HANDLE, PVOID ); EXPORT VOID NTAPI NdisFDeregisterFilterDriver( NDIS_HANDLE ); EXPORT VOID NTAPI NdisFDevicePnPEventNotify( NDIS_HANDLE, PNET_DEVICE_PNP_EVENT ); EXPORT VOID NTAPI NdisFIndicateReceiveNetBufferLists( NDIS_HANDLE, PNET_BUFFER_LIST, NDIS_PORT_NUMBER, ULONG, ULONG ); EXPORT VOID NTAPI NdisFIndicateStatus( NDIS_HANDLE, PNDIS_STATUS_INDICATION ); EXPORT NDIS_STATUS NTAPI NdisFNetPnPEvent( NDIS_HANDLE, PNET_PNP_EVENT_NOTIFICATION ); EXPORT NDIS_STATUS NTAPI NdisFOidRequest( NDIS_HANDLE, PNDIS_OID_REQUEST ); EXPORT VOID NTAPI NdisFOidRequestComplete( NDIS_HANDLE, PNDIS_OID_REQUEST, NDIS_STATUS ); EXPORT VOID NTAPI NdisFPauseComplete( NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisFRegisterFilterDriver( PDRIVER_OBJECT, NDIS_HANDLE, PNDIS_FILTER_DRIVER_CHARACTERISTICS, PNDIS_HANDLE ); EXPORT VOID NTAPI NdisFRestartComplete( NDIS_HANDLE, NDIS_STATUS ); EXPORT NDIS_STATUS NTAPI NdisFRestartFilter( NDIS_HANDLE ); EXPORT VOID NTAPI NdisFReturnNetBufferLists( NDIS_HANDLE, PNET_BUFFER_LIST, ULONG ); EXPORT VOID NTAPI NdisFSendNetBufferLists( NDIS_HANDLE, PNET_BUFFER_LIST, NDIS_PORT_NUMBER, ULONG ); EXPORT NDIS_STATUS NTAPI NdisFSetAttributes( NDIS_HANDLE, NDIS_HANDLE, PNDIS_FILTER_ATTRIBUTES ); EXPORT VOID NTAPI NdisFreeCloneOidRequest( NDIS_HANDLE, PNDIS_OID_REQUEST ); EXPORT VOID NTAPI NdisFreeGenericObject( PNDIS_GENERIC_OBJECT ); EXPORT VOID NTAPI NdisFreeIoWorkItem( NDIS_HANDLE ); EXPORT VOID NTAPI NdisFreeTimerObject( NDIS_HANDLE ); EXPORT VOID NTAPI NdisGetSystemUpTimeEx( PLARGE_INTEGER ); EXPORT NDIS_STATUS NTAPI NdisMAllocateNetBufferSGList( NDIS_HANDLE, PNET_BUFFER, PVOID, ULONG, PVOID, ULONG ); EXPORT NDIS_STATUS NTAPI NdisMAllocatePort( NDIS_HANDLE, PNDIS_PORT_CHARACTERISTICS ); EXPORT NDIS_STATUS NTAPI NdisMCmOidRequest( NDIS_HANDLE, NDIS_HANDLE, NDIS_HANDLE, PNDIS_OID_REQUEST ); EXPORT NDIS_STATUS NTAPI NdisMCmRegisterAddressFamilyEx( NDIS_HANDLE, PCO_ADDRESS_FAMILY ); EXPORT VOID NTAPI NdisMCoIndicateReceiveNetBufferLists( NDIS_HANDLE, PNET_BUFFER_LIST, ULONG, ULONG ); EXPORT VOID NTAPI NdisMCoIndicateStatusEx( NDIS_HANDLE, NDIS_HANDLE, PNDIS_STATUS_INDICATION ); EXPORT VOID NTAPI NdisMCoOidRequestComplete( NDIS_HANDLE, NDIS_HANDLE, PNDIS_OID_REQUEST, NDIS_STATUS ); EXPORT VOID NTAPI NdisMCoSendNetBufferListsComplete( NDIS_HANDLE, PNET_BUFFER_LIST, ULONG ); EXPORT VOID NTAPI NdisMDeregisterInterruptEx( NDIS_HANDLE ); EXPORT VOID NTAPI NdisMDeregisterMiniportDriver( NDIS_HANDLE ); EXPORT VOID NTAPI NdisMDeregisterScatterGatherDma( NDIS_HANDLE ); EXPORT VOID NTAPI NdisMFreeNetBufferSGList( NDIS_HANDLE, PSCATTER_GATHER_LIST, PNET_BUFFER ); EXPORT NDIS_STATUS NTAPI NdisMFreePort( NDIS_HANDLE, NDIS_PORT_NUMBER ); EXPORT ULONG NTAPI NdisMGetBusData( NDIS_HANDLE, ULONG, ULONG, PVOID, ULONG ); EXPORT VOID NTAPI NdisMIndicateReceiveNetBufferLists( NDIS_HANDLE, PNET_BUFFER_LIST, NDIS_PORT_NUMBER, ULONG, ULONG ); EXPORT VOID NTAPI NdisMIndicateStatusEx( NDIS_HANDLE, PNDIS_STATUS_INDICATION ); EXPORT NDIS_STATUS NTAPI NdisMNetPnPEvent( NDIS_HANDLE, PNET_PNP_EVENT_NOTIFICATION ); EXPORT VOID NTAPI NdisMOidRequestComplete( NDIS_HANDLE, PNDIS_OID_REQUEST, NDIS_STATUS ); EXPORT VOID NTAPI NdisMPauseComplete( NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisMRegisterInterruptEx( NDIS_HANDLE, NDIS_HANDLE, PNDIS_MINIPORT_INTERRUPT_CHARACTERISTICS, PNDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisMRegisterMiniportDriver( PDRIVER_OBJECT, PUNICODE_STRING, NDIS_HANDLE, PNDIS_MINIPORT_DRIVER_CHARACTERISTICS, PNDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisMRegisterScatterGatherDma( NDIS_HANDLE, PNDIS_SG_DMA_DESCRIPTION, PNDIS_HANDLE ); EXPORT VOID NTAPI NdisMResetComplete( NDIS_HANDLE, NDIS_STATUS, BOOLEAN ); EXPORT VOID NTAPI NdisMRestartComplete( NDIS_HANDLE, NDIS_STATUS ); EXPORT VOID NTAPI NdisMSendNetBufferListsComplete( NDIS_HANDLE, PNET_BUFFER_LIST, ULONG ); EXPORT ULONG NTAPI NdisMSetBusData( NDIS_HANDLE, ULONG, ULONG, PVOID, ULONG ); EXPORT NDIS_STATUS NTAPI NdisMSetMiniportAttributes( NDIS_HANDLE, PNDIS_MINIPORT_ADAPTER_ATTRIBUTES ); EXPORT NDIS_STATUS NTAPI NdisOpenConfigurationEx( PNDIS_CONFIGURATION_OBJECT, PNDIS_HANDLE ); EXPORT VOID NTAPI NdisQueueIoWorkItem( NDIS_HANDLE, NDIS_IO_WORKITEM_ROUTINE, PVOID ); EXPORT NDIS_STATUS NTAPI NdisSetOptionalHandlers( NDIS_HANDLE, PNDIS_DRIVER_OPTIONAL_HANDLERS ); EXPORT BOOLEAN NTAPI NdisSetTimerObject( NDIS_HANDLE, LARGE_INTEGER, LONG, PVOID ); #if NDIS_SUPPORT_60_COMPATIBLE_API EXPORT VOID NTAPI NdisDprAcquireReadWriteLock( PNDIS_RW_LOCK, BOOLEAN, PLOCK_STATE ); EXPORT VOID NTAPI NdisDprReleaseReadWriteLock( PNDIS_RW_LOCK, PLOCK_STATE ); EXPORT NDIS_STATUS NTAPI NdisGetProcessorInformation( PNDIS_SYSTEM_PROCESSOR_INFO ); EXPORT ULONG NTAPI NdisMQueueDpc( NDIS_HANDLE, ULONG, ULONG, PVOID ); EXPORT ULONG NTAPI NdisSystemActiveProcessorCount( PKAFFINITY ); #endif #endif #if NDIS_SUPPORT_NDIS6 || NDIS60 EXPORT VOID NTAPI NdisAdjustNetBufferCurrentMdl( PNET_BUFFER ); EXPORT VOID NTAPI NdisAdvanceNetBufferDataStart( PNET_BUFFER, ULONG, BOOLEAN, NET_BUFFER_FREE_MDL_HANDLER ); EXPORT VOID NTAPI NdisAdvanceNetBufferListDataStart( PNET_BUFFER_LIST, ULONG, BOOLEAN, NET_BUFFER_FREE_MDL_HANDLER ); EXPORT PNET_BUFFER_LIST NTAPI NdisAllocateCloneNetBufferList( PNET_BUFFER_LIST, NDIS_HANDLE, NDIS_HANDLE, ULONG ); EXPORT PNET_BUFFER_LIST NTAPI NdisAllocateFragmentNetBufferList( PNET_BUFFER_LIST, NDIS_HANDLE, NDIS_HANDLE, ULONG, ULONG, ULONG, ULONG, ULONG ); EXPORT PMDL NTAPI NdisAllocateMdl( NDIS_HANDLE, PVOID, UINT ); EXPORT PNET_BUFFER NTAPI NdisAllocateNetBuffer( NDIS_HANDLE, PMDL, ULONG, SIZE_T ); EXPORT PNET_BUFFER_LIST NTAPI NdisAllocateNetBufferAndNetBufferList( NDIS_HANDLE, USHORT, USHORT, PMDL, ULONG, SIZE_T ); EXPORT PNET_BUFFER_LIST NTAPI NdisAllocateNetBufferList( NDIS_HANDLE, USHORT, USHORT ); EXPORT NDIS_STATUS NTAPI NdisAllocateNetBufferListContext( PNET_BUFFER_LIST, USHORT, USHORT, ULONG ); EXPORT NDIS_HANDLE NTAPI NdisAllocateNetBufferListPool( NDIS_HANDLE, PNET_BUFFER_LIST_POOL_PARAMETERS ); EXPORT PNET_BUFFER NTAPI NdisAllocateNetBufferMdlAndData( NDIS_HANDLE ); EXPORT NDIS_HANDLE NTAPI NdisAllocateNetBufferPool( NDIS_HANDLE, PNET_BUFFER_POOL_PARAMETERS ); EXPORT PNET_BUFFER_LIST NTAPI NdisAllocateReassembledNetBufferList( PNET_BUFFER_LIST, NDIS_HANDLE, ULONG, ULONG, ULONG, ULONG ); EXPORT VOID NTAPI NdisCancelOidRequest( NDIS_HANDLE, PVOID ); EXPORT VOID NTAPI NdisCancelSendNetBufferLists( NDIS_HANDLE, PVOID ); EXPORT NDIS_STATUS NTAPI NdisCloseAdapterEx( NDIS_HANDLE ); EXPORT VOID NTAPI NdisCompleteBindAdapterEx( NDIS_HANDLE, NDIS_STATUS ); EXPORT VOID NTAPI NdisCompleteNetPnPEvent( NDIS_HANDLE, PNET_PNP_EVENT_NOTIFICATION, NDIS_STATUS ); EXPORT VOID NTAPI NdisCompleteUnbindAdapterEx( NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisCopyFromNetBufferToNetBuffer( PNET_BUFFER, ULONG, ULONG, PNET_BUFFER, ULONG, PULONG ); EXPORT VOID NTAPI NdisCopyReceiveNetBufferListInfo( PNET_BUFFER_LIST, PNET_BUFFER_LIST ); EXPORT VOID NTAPI NdisCopySendNetBufferListInfo( PNET_BUFFER_LIST, PNET_BUFFER_LIST ); EXPORT VOID NTAPI NdisDeregisterProtocolDriver( NDIS_HANDLE ); EXPORT VOID NTAPI NdisFreeCloneNetBufferList( PNET_BUFFER_LIST, ULONG ); EXPORT VOID NTAPI NdisFreeFragmentNetBufferList( PNET_BUFFER_LIST, ULONG, ULONG ); EXPORT VOID NTAPI NdisFreeMdl( PMDL ); EXPORT VOID NTAPI NdisFreeNetBuffer( PNET_BUFFER ); EXPORT VOID NTAPI NdisFreeNetBufferList( PNET_BUFFER_LIST ); EXPORT VOID NTAPI NdisFreeNetBufferListContext( PNET_BUFFER_LIST, USHORT ); EXPORT VOID NTAPI NdisFreeNetBufferListPool( NDIS_HANDLE ); EXPORT VOID NTAPI NdisFreeNetBufferPool( NDIS_HANDLE ); EXPORT VOID NTAPI NdisFreeReassembledNetBufferList( PNET_BUFFER_LIST, ULONG, ULONG ); EXPORT PVOID NTAPI NdisGetDataBuffer( PNET_BUFFER, ULONG, PVOID, UINT, UINT ); EXPORT UCHAR NTAPI NdisGetNetBufferListProtocolId( PNET_BUFFER_LIST ); EXPORT NDIS_HANDLE NTAPI NdisGetPoolFromNetBuffer( PNET_BUFFER ); EXPORT NDIS_HANDLE NTAPI NdisGetPoolFromNetBufferList( PNET_BUFFER_LIST ); EXPORT NDIS_STATUS NTAPI NdisIfAddIfStackEntry( NET_IFINDEX, NET_IFINDEX ); EXPORT NDIS_STATUS NTAPI NdisIfAllocateNetLuidIndex( NET_IFTYPE, PUINT32 ); EXPORT VOID NTAPI NdisIfDeleteIfStackEntry( NET_IFINDEX, NET_IFINDEX ); EXPORT VOID NTAPI NdisIfDeregisterInterface( NET_IFINDEX ); EXPORT VOID NTAPI NdisIfDeregisterProvider( NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisIfFreeNetLuidIndex( NET_IFTYPE, UINT32 ); EXPORT NDIS_STATUS NTAPI NdisIfGetInterfaceIndexFromNetLuid( NET_LUID, PNET_IFINDEX ); EXPORT NDIS_STATUS NTAPI NdisIfGetNetLuidFromInterfaceIndex( NET_IFINDEX, PNET_LUID ); EXPORT NDIS_STATUS NTAPI NdisIfQueryBindingIfIndex( NDIS_HANDLE, PNET_IFINDEX, PNET_LUID, PNET_IFINDEX, PNET_LUID ); EXPORT NDIS_STATUS NTAPI NdisIfRegisterInterface( NDIS_HANDLE, NET_LUID, NDIS_HANDLE, PNET_IF_INFORMATION, PNET_IFINDEX ); EXPORT NDIS_STATUS NTAPI NdisIfRegisterProvider( PNDIS_IF_PROVIDER_CHARACTERISTICS, NDIS_HANDLE, PNDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisOidRequest( NDIS_HANDLE, PNDIS_OID_REQUEST ); EXPORT NDIS_STATUS NTAPI NdisOpenAdapterEx( NDIS_HANDLE, NDIS_HANDLE, PNDIS_OPEN_PARAMETERS, NDIS_HANDLE, PNDIS_HANDLE ); EXPORT ULONG NTAPI NdisQueryNetBufferPhysicalCount( PNET_BUFFER ); EXPORT NDIS_STATUS NTAPI NdisRegisterProtocolDriver( NDIS_HANDLE, PNDIS_PROTOCOL_DRIVER_CHARACTERISTICS, PNDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisRetreatNetBufferDataStart( PNET_BUFFER, ULONG, ULONG, NET_BUFFER_ALLOCATE_MDL_HANDLER ); EXPORT NDIS_STATUS NTAPI NdisRetreatNetBufferListDataStart( PNET_BUFFER_LIST, ULONG, ULONG, NET_BUFFER_ALLOCATE_MDL_HANDLER, NET_BUFFER_FREE_MDL_HANDLER ); EXPORT VOID NTAPI NdisReturnNetBufferLists( NDIS_HANDLE, PNET_BUFFER_LIST, ULONG ); EXPORT VOID NTAPI NdisSendNetBufferLists( NDIS_HANDLE, PNET_BUFFER_LIST, NDIS_PORT_NUMBER, ULONG ); EXPORT NDIS_STATUS NTAPI NdisUnbindAdapter( NDIS_HANDLE ); #endif #if NDIS_SUPPORT_NDIS61 EXPORT VOID NTAPI NdisCancelDirectOidRequest( NDIS_HANDLE, PVOID ); EXPORT NDIS_STATUS NTAPI NdisDirectOidRequest( NDIS_HANDLE, PNDIS_OID_REQUEST ); EXPORT VOID NTAPI NdisFCancelDirectOidRequest( NDIS_HANDLE, PVOID ); EXPORT NDIS_STATUS NTAPI NdisFDirectOidRequest( NDIS_HANDLE, PNDIS_OID_REQUEST ); EXPORT VOID NTAPI NdisFDirectOidRequestComplete( NDIS_HANDLE, PNDIS_OID_REQUEST, NDIS_STATUS ); EXPORT NDIS_STATUS NTAPI NdisMConfigMSIXTableEntry( NDIS_HANDLE, PNDIS_MSIX_CONFIG_PARAMETERS ); EXPORT VOID NTAPI NdisMDirectOidRequestComplete( NDIS_HANDLE, PNDIS_OID_REQUEST, NDIS_STATUS ); #endif #if NDIS_SUPPORT_NDIS620 EXPORT VOID NTAPI NdisAcquireRWLockRead( PNDIS_RW_LOCK_EX, PLOCK_STATE_EX, UCHAR ); EXPORT VOID NTAPI NdisAcquireRWLockWrite( PNDIS_RW_LOCK_EX, PLOCK_STATE_EX, UCHAR ); EXPORT USHORT NTAPI NdisActiveGroupCount( VOID ); EXPORT PNDIS_RW_LOCK_EX NTAPI NdisAllocateRWLock( NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisAllocateSharedMemory( NDIS_HANDLE, PNDIS_SHARED_MEMORY_PARAMETERS, PNDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisBuildScatterGatherList( NDIS_HANDLE, PNDIS_SCATTER_GATHER_LIST_PARAMETERS ); EXPORT PROCESSOR_NUMBER NTAPI NdisCurrentGroupAndProcessor( VOID ); EXPORT ULONG NTAPI NdisCurrentProcessorIndex( VOID ); EXPORT VOID NTAPI NdisFreeMemoryWithTagPriority( NDIS_HANDLE, PVOID, ULONG ); EXPORT VOID NTAPI NdisFreeRWLock( PNDIS_RW_LOCK_EX ); EXPORT VOID NTAPI NdisFreeScatterGatherList( NDIS_HANDLE, PSCATTER_GATHER_LIST, BOOLEAN ); EXPORT VOID NTAPI NdisFreeSharedMemory( NDIS_HANDLE, NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisGetHypervisorInfo( PNDIS_HYPERVISOR_INFO ); EXPORT NDIS_STATUS NTAPI NdisGetProcessorInformationEx( NDIS_HANDLE, PNDIS_SYSTEM_PROCESSOR_INFO_EX, PSIZE_T ); EXPORT NDIS_STATUS NTAPI NdisGetRssProcessorInformation( NDIS_HANDLE, PNDIS_RSS_PROCESSOR_INFO, PSIZE_T ); EXPORT ULONG NTAPI NdisGroupActiveProcessorCount( USHORT ); EXPORT KAFFINITY NTAPI NdisGroupActiveProcessorMask( USHORT ); EXPORT ULONG NTAPI NdisGroupMaxProcessorCount( USHORT ); EXPORT KAFFINITY NTAPI NdisMQueueDpcEx( NDIS_HANDLE, ULONG, PGROUP_AFFINITY, PVOID ); EXPORT USHORT NTAPI NdisMaxGroupCount( VOID ); EXPORT NTSTATUS NTAPI NdisProcessorIndexToNumber( ULONG, PPROCESSOR_NUMBER ); EXPORT ULONG NTAPI NdisProcessorNumberToIndex( PROCESSOR_NUMBER ); EXPORT VOID NTAPI NdisReleaseRWLock( PNDIS_RW_LOCK_EX, PLOCK_STATE_EX ); EXPORT BOOLEAN NTAPI NdisSetCoalescableTimerObject( NDIS_HANDLE, LARGE_INTEGER, LONG, PVOID, ULONG ); #endif #if (NTDDI_VERSION == 0x06000000) && (NDIS_LEGACY_DRIVER || NDIS_SUPPORT_NDIS6) EXPORT VOID NTAPI NdisDeregisterDeviceEx( NDIS_HANDLE ); EXPORT NDIS_STATUS NTAPI NdisEnumerateFilterModules( NDIS_HANDLE, PVOID, ULONG, PULONG, PULONG ); EXPORT PVOID NTAPI NdisGetDeviceReservedExtension( PDEVICE_OBJECT ); EXPORT NDIS_STATUS NTAPI NdisRegisterDeviceEx( NDIS_HANDLE, PNDIS_DEVICE_OBJECT_ATTRIBUTES, PDEVICE_OBJECT *, PNDIS_HANDLE ); #endif /* Functions in NDIS.SYS that are defined differently on different versions * of Windows. */ #if NDIS_SUPPORT_NDIS620 EXPORT BOOLEAN NTAPI NdisMSychronizeWithInterruptEx( NDIS_HANDLE, ULONG, MINIPORT_SYNCHRONIZE_INTERRUPT_HANDLER, PVOID ); #elif NDIS_SUPPORT_NDIS6 EXPORT BOOLEAN NTAPI NdisMSynchronizeWithInterruptEx( NDIS_HANDLE, ULONG, PVOID, PVOID ); #endif /* Functions implemented as macros */ #define NdisGetPhysicalAddressHigh( x ) ((x).HighPart) #define NdisSetPhysicalAddressHigh( x, p ) ((x).HighPart) = (p) #define NdisGetPhysicalAddressLow( x ) ((x).LowPart) #define NdisSetPhysicalAddressLow( x, p ) ((x).LowPart) = (p) #define NdisAllocateSpinLock( x ) KeInitializeSpinLock( &(x)->SpinLock ) #define NdisFreeSpinLock( x ) #define NdisAcquireSpinLock( x ) \ KeAcquireSpinLock( &(x)->SpinLock, &(x)->OldIrql ) #define NdisReleaseSpinLock( x ) \ KeReleaseSpinLock( &(x)->SpinLock, (x)->OldIrql ) #define NdisDprAcquireSpinLock( x ) \ KeAcquireSpinLockAtDpcLevel( &(x)->SpinLock ) #define NdisDprReleaseSpinLock( x ) \ KeReleaseSpinLockFromDpcLevel( &(x)->SpinLock ) #define NdisInterlockedAddUlong( x, p1, p2 ) \ ExInterlockedAddUlong( x, p1, &(p2)->SpinLock ) #define NdisInterlockedInsertHeadList( x, p1, p2 ) \ ExInterlockedInsertHeadList( x, p1, &(p2)->SpinLock ) #define NdisInterlockedInsertTailList( x, p1, p2 ) \ ExInterlockedInsertTailList( x, p1, &(p2)->SpinLock ) #define NdisInterlockedRemoveHeadList( x, p ) \ ExInterlockedRemoveHeadList( x, &(p)->SpinLock ) #define NdisInterlockedPushEntryList( x, p1, p2 ) \ ExInterlockedPushEntryList( x, p1, &(p2)->SpinLock ) #define NdisInterlockedPopEntryList( x, p ) \ ExInterlockedPopEntryList( x, &(p)->SpinLock ) #define NdisInterlockedAddLargeStatistic( x, p ) \ ExInterlockedAddLargeStatistic( (PLARGE_INTEGER)(x), p ) #define NdisInterlockedPushEntrySList( x, p1, p2 ) \ ExInterlockedPushEntrySList( x, p1, &(p2)->SpinLock ) #define NdisInterlockedPopEntrySList( x, p ) \ ExInterlockedPopEntrySList( x, &(p)->SpinLock ) #define NdisQueryBufferState( x, p1, p2, p3 ) \ { \ if( (p1) != NULL ) { \ *(PVOID *)(p1) = MmGetSystemAddressForMdlSafe( x, p3 ); \ } \ *(p2) = MmGetMdlByteCount( x ); \ } #define NdisQueryBufferOffset( x, p1, p2 ) \ { \ *(p1) = MmGetMdlByteOffset( x ); \ *(p2) = MmGetMdlByteCount( x ); \ } #define NdisGetBufferPhysicalArraySize( x, p ) \ (*(p) = NDIS_BUFFER_TO_SPAN_PAGES( x )) #define NdisGetNextBuffer( x, p ) { *(p) = (x)->Next; } #define NdisAdjustBufferLength( x, p ) ((x)->ByteCount = (p)) #define NdisFlushBuffer( x, p ) KeFlushIoBuffers( x, !(p), TRUE ) #define NdisRawWritePortUchar( p1, p2 ) \ WRITE_PORT_UCHAR( (PUCHAR)(p1), (UCHAR)(p2) ) #define NdisRawWritePortUshort( p1, p2 ) \ WRITE_PORT_USHORT( (PUSHORT)(p1), (USHORT)(p2) ) #define NdisRawWritePortUlong( p1, p2 ) \ WRITE_PORT_ULONG( (PULONG)(p1), (ULONG)(p2) ) #define NdisRawWritePortBufferUchar( p1, p2, p3 ) \ WRITE_PORT_BUFFER_UCHAR( (PUCHAR)(p1), (PUCHAR)(p2), p3 ) #define NdisRawReadPortUchar( p1, p2 ) *(p2) = READ_PORT_UCHAR( (PUCHAR)(p1) ) #define NdisRawReadPortUshort( p1, p2 ) *(p2) = READ_PORT_USHORT( (PUSHORT)(p1) ) #define NdisRawReadPortUlong( p1, p2 ) *(p2) = READ_PORT_ULONG( (PULONG)(p1) ) #define NdisRawReadPortBufferUchar( p1, p2, p3 ) \ READ_PORT_BUFFER_UCHAR( (PUCHAR)(p1), (PUCHAR)(p2), p3 ) #define NdisFreeString( x ) \ NdisFreeMemory( (x).Buffer, (x).MaximumLength, 0 ) #define NdisPrintString( x ) DbgPrint( "%ls", (x).Buffer ); #define NdisCreateLookaheadBufferFromSharedMemory( p1, p2, p3 ) (*(p3) = (p1)) #define NdisDestroyLookaheadBufferFromSharedMemory( x ) #define NdisAnsiStringToUnicodeString( p1, p2 ) \ RtlAnsiStringToUnicodeString( p1, p2, FALSE ) #define NdisUnicodeStringToAnsiString( p1, p2 ) \ RtlUnicodeStringToAnsiString( p1, p2, FALSE ) #define NdisUpcaseUnicodeString( p1, p2 ) RtlUpcaseUnicodeString( p1, p2, FALSE ) #define NdisMSetTimer( x, p ) NdisSetTimer( (PNDIS_TIMER)(x), p ) #define NdisBufferLength( x ) MmGetMdlByteCount( x ) #define NdisBufferVirtualAddress( x ) MmGetSystemAddressForMdl( x ) #define NdisBufferVirtualAddressSafe( x, p ) MmGetSystemAddressForMdlSafe( x, p ) #ifdef __cplusplus #define WanMiniportSend( x, p1, p2, p3 ) \ { \ *(x) = (((PNDIS_OPEN_BLOCK)(p1))->NdisCommonOpenBlock.WanSendHandler)( \ ((PNDIS_OPEN_BLOCK)(p1))->NdisCommonOpenBlock.BindingHandle, (p2), \ (PNDIS_PACKET)(p3) ); \ } #else #define WanMiniportSend( x, p1, p2, p3 ) \ { \ *(x) = (((PNDIS_OPEN_BLOCK)(p1))->WanSendHandler)( \ ((PNDIS_OPEN_BLOCK)(p1))->BindingHandle, (p2), (PNDIS_PACKET)(p3) ); \ } #endif #ifdef _X86_ #define NdisMoveMappedMemory( p1, p2, p3 ) RtlCopyMemory( p1, p2, p3 ) #define NdisZeroMappedMemory( p1, p2 ) RtlZeroMemory( p1, p2 ) #define NdisCopyLookaheadData( p1, p2, p3, p4 ) RtlCopyMemory( p1, p2, p3 ) #define NdisRawWritePortBufferUshort( p1, p2, p3 ) \ WRITE_PORT_BUFFER_USHORT( (PUSHORT)(p1), (PUSHORT)(p2), p3 ) #define NdisRawWritePortBufferUlong( p1, p2, p3 ) \ WRITE_PORT_BUFFER_ULONG( (PULONG)(p1), (PULONG)(p2), p3 ) #define NdisRawReadPortBufferUshort( p1, p2, p3 ) \ READ_PORT_BUFFER_USHORT( (PUSHORT)(p1), (PUSHORT)(p2), p3 ) #define NdisRawReadPortBufferUlong( p1, p2, p3 ) \ READ_PORT_BUFFER_ULONG( (PULONG)(p1), (PULONG)(p2), p3 ) #define NdisReadRegisterUchar( p1, p2 ) \ *(p2) = *((volatile UCHAR * const)(p1)) #define NdisReadRegisterUshort( p1, p2 ) \ *(p2) = *((volatile USHORT * const)(p1)) #define NdisReadRegisterUlong( p1, p2 ) \ *(p2) = *((volatile ULONG * const)(p1)) #endif #if NDIS_LEGACY_DRIVER #define NdisSetPacketCancelId( x, p ) NDIS_SET_PACKET_CANCEL_ID( x, p ) #define NdisGetPacketCancelId( x ) NDIS_GET_PACKET_CANCEL_ID( x ) #define NdisGetPacketFlags( x ) ((x)->Private.Flags) #define NdisSetPacketFlags( x, p ) ((x)->Private.Flags |= (p)) #define NdisClearPacketFlags( x, p ) ((x)->Private.Flags &= ~(p)) #define NdisReinitializePacket( x ) \ { \ (x)->Private.Head = (PNDIS_BUFFER)NULL; \ (x)->Private.ValidCounts = FALSE; \ } #define NdisQueryBuffer( x, p1, p2 ) \ { \ if( (p1) != NULL ) { \ *(PVOID *)(p1) = MmGetSystemAddressForMdl( x ); \ } \ *(p2) = MmGetMdlByteCount( x ); \ } #define NdisGetFirstBufferFromPacket( x, p1, p2, p3, p4 ) \ { \ PNDIS_BUFFER _v; \ _v = (x)->Private.Head; \ *(p1) = _v; \ if( _v ) { \ *(p2) = MmGetSystemAddressForMdl( _v ); \ *(p3) = *(p4) = MmGetMdlByteCount( _v ); \ for( _v = _v->Next; _v != NULL; _v = _v->Next ) { \ *(p4) += MmGetMdlByteCount( _v ); \ } \ } else { \ *(p2) = 0; \ *(p3) = 0; \ *(p4) = 0; \ } \ } #define NdisGetFirstBufferFromPacketSafe( x, p1, p2, p3, p4, p5 ) \ { \ PNDIS_BUFFER _v; \ _v = (x)->Private.Head; \ *(p1) = _v; \ if( _v ) { \ *(p2) = MmGetSystemAddressForMdlSafe( _v, p5 ); \ *(p3) = *(p4) = MmGetMdlByteCount( _v ); \ for( _v = _v->Next; _v != NULL; _v = _v->Next ) { \ *(p4) += MmGetMdlByteCount( _v ); \ } \ } else { \ *(p2) = 0; \ *(p3) = 0; \ *(p4) = 0; \ } \ } #define NdisRecalculatePacketCounts( x ) \ { \ PNDIS_BUFFER _v = (x)->Private.Head; \ if( _v ) { \ while( _v->Next ) { \ _v = _v->Next; \ } \ (x)->Private.Tail = _v; \ } \ (x)->Private.ValidCounts = FALSE; \ } #define NdisChainBufferAtFront( x, p ) \ { \ PNDIS_BUFFER _v = (p); \ for( ;; ) { \ if( _v->Next == NULL ) { \ break; \ } \ _v = _v->Next; \ } \ if( (x)->Private.Head == NULL ) { \ (x)->Private.Tail = _v; \ } \ _v->Next = (x)->Private.Head; \ (x)->Private.Head = p; \ (x)->Private.ValidCounts = FALSE; \ } #define NdisChainBufferAtBack( x, p ) \ { \ PNDIS_BUFFER _v = (p); \ for( ;; ) { \ if( _v->Next == NULL ) { \ break; \ } \ _v = _v->Next; \ } \ if( (x)->Private.Head != NULL ) { \ (x)->Private.Tail->Next = p; \ } else { \ (x)->Private.Head = p; \ } \ (x)->Private.Tail = _v; \ (x)->Private.ValidCounts = FALSE; \ } #define NdisQueryPacketLength( x, p ) \ { \ if( !(x)->Private.ValidCounts ) { \ NdisQueryPacket( x, NULL, NULL, NULL, p ); \ } else { \ *(p) = (x)->Private.TotalLength; \ } \ } #define NdisInitializeWorkItem( x, p1, p2 ) \ { \ (x)->Context = p1; \ (x)->Context = p2; \ } #endif #if NDIS_LEGACY_PROTOCOL #define NdisSetSendFlags( x, p ) (x)->Private.Flags = (p) #define NdisQuerySendFlags( x, p ) *(p) = (x)->Private.Flags #ifdef __cplusplus #define NdisSend( x, p1, p2 ) \ { \ *(x) = (((PNDIS_OPEN_BLOCK)(p1))->NdisCommonOpenBlock.SendHandler)( \ ((PNDIS_OPEN_BLOCK)(p1))->NdisCommonOpenBlock.BindingHandle, (p2) ); \ } #define NdisSendPackets( x, p1, p2 ) \ { \ (((PNDIS_OPEN_BLOCK)(x))->NdisCommonOpenBlock.SendPacketsHandler)( \ (PNDIS_OPEN_BLOCK)(x), (p1), (p2) ); \ } #define NdisTransferData( x, p1, p2, p3, p4, p5, p6 ) \ { \ *(x) = (((PNDIS_OPEN_BLOCK)(p1))->NdisCommonOpenBlock.TransferDataHandler)( \ ((PNDIS_OPEN_BLOCK)(p1))->NdisCommonOpenBlock.BindingHandle, (p2), \ (p3), (p4), (p5), (p6) ); \ } #else #define NdisSend( x, p1, p2 ) \ { \ *(x) = (((PNDIS_OPEN_BLOCK)(p1))->SendHandler)( \ ((PNDIS_OPEN_BLOCK)(p1))->BindingHandle, (p2) ); \ } #define NdisSendPackets( x, p1, p2 ) \ { \ (((PNDIS_OPEN_BLOCK)(x))->SendPacketsHandler)( \ (PNDIS_OPEN_BLOCK)(x), (p1), (p2) ); \ } #define NdisTransferData( x, p1, p2, p3, p4, p5, p6 ) \ { \ *(x) = (((PNDIS_OPEN_BLOCK)(p1))->TransferDataHandler)( \ ((PNDIS_OPEN_BLOCK)(p1))->BindingHandle, (p2), (p3), (p4), (p5), \ (p6) ); \ } #endif #endif #if NDIS_LEGACY_MINIPORT #define NdisMUpdateSharedMemory( p1, p2, p3, p4 ) #define NdisMInitializeWrapper( p1, p2, p3, p4 ) \ NdisInitializeWrapper( p1, p2, p3, p4 ) #define NdisIMInitializeDeviceInstance( p1, p2 ) \ NdisIMInitializeDeviceInstanceEx( p1, p2, NULL ) #define NdisMSetAttributes( p1, p2, p3, p4 ) \ NdisMSetAttributesEx( p1, p2, 0, (p3) ? NDIS_ATTRIBUTE_BUS_MASTER : 0, p4 ) #define NdisMSendComplete( x, p1, p2 ) \ (*((PNDIS_MINIPORT_BLOCK)(x))->SendCompleteHandler)( x, p1, p2 ) #define NdisMSendResourcesAvailable( x ) \ (*((PNDIS_MINIPORT_BLOCK)(x))->SendResourcesHandler)( x ) #define NdisMTransferDataComplete( x, p1, p2, p3 ) \ (*((PNDIS_MINIPORT_BLOCK)(x))->TDCompleteHandler)( x, p1, p2, p3 ) #define NdisMWanSendComplete( x, p1, p2 ) \ (*((PNDIS_MINIPORT_BLOCK)(x))->WanSendCompleteHandler)( x, p1, p2 ) #define NdisMQueryInformationComplete( x, p ) \ (*((PNDIS_MINIPORT_BLOCK)(x))->QueryCompleteHandler)( x, p ) #define NdisMSetInformationComplete( x, p ) \ (*((PNDIS_MINIPORT_BLOCK)(x))->SetCompleteHandler)( x, p ) #define NdisMIndicateReceivePacket( x, p1, p2 ) \ { (*((PNDIS_MINIPORT_BLOCK)(x))->PacketIndicateHandler)( x, p1, p2 ); } #define NdisMWanIndicateReceive( p1, p2, p3, p4, p5 ) \ (*((PNDIS_MINIPORT_BLOCK)(p2))->WanRcvHandler)( p1, p2, p3, p4, p5 ) #define NdisMWanIndicateReceiveComplete( x, p ) \ (*((PNDIS_MINIPORT_BLOCK)(x))->WanRcvCompleteHandler)( x, p ) #define NdisMCmRequestComplete( p1, p2, p3, p4, p5 ) \ NdisCoRequestComplete( p1, p2, p3, p4, p5 ) #ifdef __cplusplus #define NdisMEthIndicateReceive( x, p1, p2, p3, p4, p5, p6 ) \ { (*((PNDIS_MINIPORT_BLOCK)(x))->EthRxIndicateHandler)( \ ((PNDIS_MINIPORT_BLOCK)(x))->FilterDbs.EthDB, p1, p2, p2, p3, p4, p5, p6 ); } #define NdisMTrIndicateReceive( x, p1, p2, p3, p4, p5, p6 ) \ { (*((PNDIS_MINIPORT_BLOCK)(x))->TrRxIndicateHandler)( \ ((PNDIS_MINIPORT_BLOCK)(x))->FilterDbs.TrDB, p1, p2, p3, p4, p5, p6 ); } #define NdisMEthIndicateReceiveComplete( x ) \ { (*((PNDIS_MINIPORT_BLOCK)(x))->EthRxCompleteHandler)( \ ((PNDIS_MINIPORT_BLOCK)(x))->FilterDbs.EthDB ); } #define NdisMTrIndicateReceiveComplete( x ) \ { (*((PNDIS_MINIPORT_BLOCK)(x))->TrRxCompleteHandler)( \ ((PNDIS_MINIPORT_BLOCK)(x))->FilterDbs.TrDB ); } #else #define NdisMEthIndicateReceive( x, p1, p2, p3, p4, p5, p6 ) \ { (*((PNDIS_MINIPORT_BLOCK)(x))->EthRxIndicateHandler)( \ ((PNDIS_MINIPORT_BLOCK)(x))->EthDB, p1, p2, p2, p3, p4, p5, p6 ); } #define NdisMTrIndicateReceive( x, p1, p2, p3, p4, p5, p6 ) \ { (*((PNDIS_MINIPORT_BLOCK)(x))->TrRxIndicateHandler)( \ ((PNDIS_MINIPORT_BLOCK)(x))->TrDB, p1, p2, p3, p4, p5, p6 ); } #define NdisMEthIndicateReceiveComplete( x ) \ { (*((PNDIS_MINIPORT_BLOCK)(x))->EthRxCompleteHandler)( \ ((PNDIS_MINIPORT_BLOCK)(x))->EthDB ); } #define NdisMTrIndicateReceiveComplete( x ) \ { (*((PNDIS_MINIPORT_BLOCK)(x))->TrRxCompleteHandler)( \ ((PNDIS_MINIPORT_BLOCK)(x))->TrDB ); } #endif #if NDIS_LEGACY_MINIPORT && !NDIS_WRAPPER && !NDIS_SUPPORT_NDIS6 #define NdisMResetComplete( x, p1, p2 ) \ (*((PNDIS_MINIPORT_BLOCK)(x))->ResetCompleteHandler)( x, p1, p2 ) #endif #endif #if NDIS_SUPPORT_NDIS6 #define NdisAdjustMdlLength( x, p ) ((x)->ByteLength = (p)) #endif #if NDIS_SUPPORT_NDIS6 || NDIS60 #define NdisSetNetBufferListProtocolId( x, p ) \ *((PUCHAR)(&NET_BUFFER_LIST_INFO( x, NetBufferListProtocolId )) = (p) #define NdisQueryMdl( x, p1, p2, p3 ) \ { \ if( (p1) != NULL ) { \ *(PVOID *)(p1) = MmGetSystemAddressForMdlSafe( x, p3 ); \ } \ *(p2) = MmGetMdlByteCount( x ); \ } #define NdisQueryMdlOffset( x, p1, p2 ) \ { \ *(p1) = MmGetMdlByteOffset( x ); \ *(p2) = MmGetMdlByteCount( x ); \ } #define NdisGetMdlPhysicalArraySize( x, p ) \ (*(p) = NDIS_MDL_TO_SPAN_PAGES( x )) #define NdisGetNextMdl( x, p ) \ { *(p) = (x)->Next; } #define NdisTestNblFlag( x, p ) (((x)->NblFlags & (p)) != 0) #define NdisTestNblFlags( x, p ) (((x)->NblFlags & (p)) == (p)) #define NdisSetNblFlag( x, p ) ((x)->NblFlags |= (p)) #define NdisClearNblFlag( x, p ) ((x)->NblFlags &= ~(p)) #define NdisMCmOidRequestComplete( p1, p2, p3, p4, p5 ) \ NdisCoOidRequestComplete( p1, p2, p3, p4, p5 ) #endif /* Other macros */ #if NDIS_LEGACY_DRIVER #define NDIS_GET_PACKET_PROTOCOL_TYPE( x ) \ ((x)->Private.Flags & NDIS_PROTOCOL_ID_MASK) #define NDIS_OOB_DATA_FROM_PACKET( x ) \ (PNDIS_PACKET_OOB_DATA)((PUCHAR)(x) + (x)->Private.NdisPacketOobOffset) #define NDIS_GET_PACKET_HEADER_SIZE( x ) \ ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(x) + \ (x)->Private.NdisPacketOobOffset))->HeaderSize #define NDIS_GET_PACKET_STATUS( x ) \ ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(x) + \ (x)->Private.NdisPacketOobOffset))->Status #define NDIS_GET_PACKET_TIME_TO_SEND( x ) \ ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(x) + \ (x)->Private.NdisPacketOobOffset))->TimeToSend #define NDIS_GET_PACKET_TIME_SENT( x ) \ ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(x) + \ (x)->Private.NdisPacketOobOffset))->TimeSent #define NDIS_GET_PACKET_TIME_RECEIVED( x ) \ ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(x) + \ (x)->Private.NdisPacketOobOffset))->TimeReceived #define NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO( x, p1, p2 ) \ { \ if( !((x)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS) || \ !((x)->Private.NdisPacketFlags & \ fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO)) { \ *(p1) = NULL; \ *(p2) = 0; \ } else { \ *(p1) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(x) + \ (x)->Private.NdisPacketOobOffset))->MediaSpecificInformation; \ *(p2) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(x) + \ (x)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo; \ } \ } #define NDIS_SET_PACKET_HEADER_SIZE( x, p ) \ ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(x) + \ (x)->Private.NdisPacketOobOffset))->HeaderSize = (p) #define NDIS_SET_PACKET_STATUS( x, p ) \ ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(x) + \ (x)->Private.NdisPacketOobOffset))->Status = (p) #define NDIS_SET_PACKET_TIME_TO_SEND( x, p ) \ ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(x) + \ (x)->Private.NdisPacketOobOffset))->TimeToSend = (p) #define NDIS_SET_PACKET_TIME_SENT( x, p ) \ ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(x) + \ (x)->Private.NdisPacketOobOffset))->TimeSent = (p) #define NDIS_SET_PACKET_TIME_RECEIVED( x, p ) \ ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(x) + \ (x)->Private.NdisPacketOobOffset))->TimeReceived = (p) #define NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO( x, p1, p2 ) \ { \ if( (x)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS ) { \ (x)->Private.NdisPacketFlags |= fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO; \ ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(x) + \ (x)->Private.NdisPacketOobOffset))->MediaSpecificInformation = (p1); \ ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(x) + \ (x)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo = (p2); \ } \ } #define NDIS_PACKET_EXTENSION_FROM_PACKET( x ) \ ((PNDIS_PACKET_EXTENSION)((PUCHAR)(x) + (x)->Private.NdisPacketOobOffset + \ sizeof( NDIS_PACKET_OOB_DATA ))) #define NDIS_PER_PACKET_INFO_FROM_PACKET( x, p ) \ ((PNDIS_PACKET_EXTENSION)((PUCHAR)(x) + (x)->Private.NdisPacketOobOffset + \ sizeof( NDIS_PACKET_OOB_DATA )))->NdisPacketInfo[(p)] #define NDIS_GET_ORIGINAL_PACKET( x ) \ NDIS_PER_PACKET_INFO_FROM_PACKET( x, OriginalPacketInfo ) #define NDIS_SET_ORIGINAL_PACKET( x, p ) \ NDIS_PER_PACKET_INFO_FROM_PACKET( x, OriginalPacketInfo ) = (p) #define NDIS_GET_PACKET_CANCEL_ID( x ) \ NDIS_PER_PACKET_INFO_FROM_PACKET( x, PacketCancelId ) #define NDIS_SET_PACKET_CANCEL_ID( x, p ) \ NDIS_PER_PACKET_INFO_FROM_PACKET( x, PacketCancelId ) = (p) #define NDIS_PACKET_FIRST_NDIS_BUFFER( x ) ((x)->Private.Head) #define NDIS_PACKET_LAST_NDIS_BUFFER( x ) ((x)->Private.Tail) #define NDIS_PACKET_VALID_COUNTS( x ) ((x)->Private.ValidCounts) #endif #if NDIS_SUPPORT_NDIS6 #define NDIS_STATUS_INDICATION_SET_FLAG( x, p ) ((x)->Flags |= (p)) #define NDIS_STATUS_INDICATION_TEST_FLAG( x, p ) (((x)->Flags & (p)) != 0) #define NDIS_STATUS_INDICATION_CLEAR_FLAG( x, p ) ((x)->Flags &= ~(p)) #endif #if NDIS_SUPPORT_NDIS6 || NDIS60 #ifdef __cplusplus #define NET_BUFFER_NEXT_NB( x ) ((x)->NetBufferHeader.NetBufferData.Next) #define NET_BUFFER_FIRST_MDL( x ) \ ((x)->NetBufferHeader.NetBufferData.MdlChain) #define NET_BUFFER_DATA_LENGTH( x ) \ ((x)->NetBufferHeader.NetBufferData.NbDataLength.DataLength) #define NET_BUFFER_DATA_OFFSET( x ) \ ((x)->NetBufferHeader.NetBufferData.DataOffset) #define NET_BUFFER_CURRENT_MDL( x ) \ ((x)->NetBufferHeader.NetBufferData.CurrentMdl) #define NET_BUFFER_CURRENT_MDL_OFFSET( x ) \ ((x)->NetBufferHeader.NetBufferData.CurrentMdlOffset) #define NET_BUFFER_LIST_NEXT_NBL( x ) \ ((x)->NetBufferListHeader.NetBufferListData.Next) #define NET_BUFFER_LIST_FIRST_NB( x ) \ ((x)->NetBufferListHeader.NetBufferListData.FirstNetBuffer) #else #define NET_BUFFER_NEXT_NB( x ) ((x)->Next) #define NET_BUFFER_FIRST_MDL( x ) ((x)->MdlChain) #define NET_BUFFER_DATA_LENGTH( x ) ((x)->DataLength) #define NET_BUFFER_DATA_OFFSET( x ) ((x)->DataOffset) #define NET_BUFFER_CURRENT_MDL( x ) ((x)->CurrentMdl) #define NET_BUFFER_CURRENT_MDL_OFFSET( x ) ((x)->CurrentMdlOffset) #define NET_BUFFER_LIST_NEXT_NBL( x ) ((x)->Next) #define NET_BUFFER_LIST_FIRST_NB( x ) ((x)->FirstNetBuffer) #endif #define NET_BUFFER_PROTOCOL_RESERVED( x ) ((x)->ProtocolReserved) #define NET_BUFFER_MINIPORT_RESERVED( x ) ((x)->MiniportReserved) #define NET_BUFFER_CHECKSUM_BIAS( x ) ((x)->ChecksumBias) #define NET_BUFFER_LIST_FLAGS( x ) ((x)->Flags) #define NET_BUFFER_LIST_NBL_FLAGS( x ) ((x)->NblFlags) #define NET_BUFFER_LIST_PROTOCOL_RESERVED( x ) ((x)->ProtocolReserved) #define NET_BUFFER_LIST_MINIPORT_RESERVED( x ) ((x)->MiniportReserved) #define NET_BUFFER_LIST_CONTEXT_DATA_START( x ) \ ((PUCHAR)(((x)->Context) + 1) + (x)->Context->Offset) #define NET_BUFFER_LIST_CONTEXT_DATA_SIZE( x ) (((x)->Context)->Size) #define NET_BUFFER_LIST_INFO( p1, p2 ) ((p1)->NetBufferListInfo[p2]) #define NET_BUFFER_LIST_STATUS( x ) ((x)->Status) #define NDIS_GET_NET_BUFFER_LIST_CANCEL_ID( x ) \ NET_BUFFER_LIST_INFO( x, NetBufferListCancelId ) #define NDIS_SET_NET_BUFFER_LIST_CANCEL_ID( x, p ) \ NET_BUFFER_LIST_INFO( x, NetBufferListCancelId ) = p #define NDIS_NBL_ADD_MEDIA_SPECIFIC_INFO( x, p ) \ { \ PNDIS_NBL_MEDIA_SPECIFIC_INFORMATION _v = NULL; \ if( NET_BUFFER_LIST_INFO( x, MediaSpecificInformation ) != NULL ) { \ _v = (PNDIS_NBL_MEDIA_SPECIFIC_INFORMATION)(NET_BUFFER_LIST_INFO( x, \ MediaSpecificInformation )); \ } \ NET_BUFFER_LIST_INFO( x, MediaSpecificInformation ) = (p); \ (p)->NextEntry = _v; \ } #define NDIS_NBL_REMOVE_MEDIA_SPECIFIC_INFO( x, p ) \ { \ PNDIS_NBL_MEDIA_SPECIFIC_INFORMATION *_v; \ _v = (PNDIS_NBL_MEDIA_SPECIFIC_INFORMATION *)&(NET_BUFFER_LIST_INFO( x, \ MediaSpecificInformation )); \ for( ; *_v != NULL; _v = &(*_v)->NextEntry ) { \ if( (*_v)->Tag == (p)->Tag ) { \ *_v = (*_v)->NextEntry; \ break; \ } \ } \ } #define NDIS_NBL_GET_MEDIA_SPECIFIC_INFO( x, p1, p2 ) \ { \ PNDIS_NBL_MEDIA_SPECIFIC_INFORMATION _v; \ (p2) = NULL; \ _v = (PNDIS_NBL_MEDIA_SPECIFIC_INFORMATION)(NET_BUFFER_LIST_INFO( x, \ MediaSpecificInformation )); \ for( ; _v != NULL; _v = _v->NextEntry ) { \ if( _v->Tag == (p1) ) { \ (p2) = _v; \ break; \ } \ } \ } #define NET_BUFFER_LIST_SET_HASH_TYPE( x, p ) \ (NET_BUFFER_LIST_INFO( x, NetBufferListHashInfo ) = UlongToPtr( ((PtrToLong( \ NET_BUFFER_LIST_INFO( x, NetBufferListHashInfo ) ) & ~NDIS_HASH_TYPE_MASK) | \ ((p) & NDIS_HASH_TYPEMASK)) )) #define NET_BUFFER_LIST_SET_HASH_FUNCTION( x, p ) \ (NET_BUFFER_LIST_INFO( x, NetBufferListHashInfo ) = UlongToPtr( ((PtrToLong( \ NET_BUFFER_LIST_INFO( x, NetBufferListHashInfo ) ) & \ ~NDIS_HASH_FUNCTION_MASK) | ((p) & NDIS_HASH_FUNCTION_MASK)) )) #define NET_BUFFER_LIST_SET_HASH_VALUE( x, p ) \ (NET_BUFFER_LIST_INFO( x, NetBufferListHashValue ) = UlongToPtr( p )) #define NET_BUFFER_LIST_GET_HASH_TYPE( x ) \ (PtrToUlong( NET_BUFFER_LIST_INFO( x, NetBufferListHashInfo ) ) & \ NDIS_HASH_TYPE_MASK) #define NET_BUFFER_LIST_GET_HASH_FUNCTION( x ) \ (PtrToUlong( NET_BUFFER_LIST_INFO( x, NetBufferListHashInfo ) ) & \ NDIS_HASH_FUNCTION_MASK) #define NET_BUFFER_LIST_GET_HASH_VALUE( x ) \ PtrToUlong( NET_BUFFER_LIST_INFO( x, NetBufferListHashValue ) ) #define NDIS_MDL_TO_SPAN_PAGES( x ) \ (MmGetMdlByteCount( x ) == 0 ? 1 : (ADDRESS_AND_SIZE_TO_SPAN_PAGES( \ MmGetMdlVirtualAddress( x ), MmGetMdlByteCount( x ) ))) #define NDIS_MDL_LINKAGE( x ) ((x)->Next) #endif #if NDIS_SUPPORT_NDIS61 #define NET_BUFFER_DATA_PHYSICAL_ADDRESS( x ) ((x)->DataPhysicalAddress) #endif #if NDIS_SUPPORT_NDIS620 #define NET_BUFFER_FIRST_SHARED_MEM_INFO( x ) ((x)->SharedMemoryInfo) #define NET_BUFFER_SHARED_MEM_NEXT_SEGMENT( x ) ((x)->NextSharedMemorySegment) #define NET_BUFFER_SHARED_MEM_FLAGS( x ) ((x)->SharedMemoryFlags) #define NET_BUFFER_SHARED_MEM_HANDLE( x ) ((x)->SharedMemoryHandle) #define NET_BUFFER_SHARED_MEM_OFFSET( x ) ((x)->SharedMemoryOffset) #define NET_BUFFER_SHARED_MEM_LENGTH( x ) ((x)->SharedMemoryLength) #define NET_BUFFER_SCATTER_GATHER_LIST( x ) ((x)->ScatterGatherList) #define NDIS_NBL_ADD_MEDIA_SPECIFIC_INFO_EX( x, p ) \ { \ PNDIS_NBL_MEDIA_SPECIFIC_INFORMATION_EX v; \ v = NET_BUFFER_LIST_INFO( x, MediaSpecificInformationEx ); \ NET_BUFFER_LIST_INFO( x, MediaSpecificInformationEx ) = (p); \ (p)->NextEntry = v; \ } #define NDIS_NBL_REMOVE_MEDIA_SPECIFIC_INFO_EX( x, p ) \ { \ PNDIS_NBL_MEDIA_SPECIFIC_INFORMATION_EX *v; \ v = (PNDIS_NBL_MEDIA_SPECIFIC_INFORMATION_EX *) \ &NET_BUFFER_LIST_INFO( x, MediaSpecificInformationEx ); \ while( *v != NULL ) { \ if( (*v)->Tag == (p)->Tag ) { \ *v = (*v)->NextEntry; \ break; \ } \ v = &(*v)->NextEntry; \ } \ } #define NDIS_NBL_GET_MEDIA_SPECIFIC_INFO_EX( x, p1, p2 ) \ { \ PNDIS_NBL_MEDIA_SPECIFIC_INFORMATION_EX v; \ p2 = NULL; \ v = (PNDIS_MEDIA_SPECIFIC_INFORMATION_EX) \ NET_BUFFER_LIST_INFO( x, MediaSpecificInformationEx ); \ while( v != NULL ) { \ if( v->Tag == p1 ) { \ p2 = v; \ break; \ } \ v = v->NextEntry; \ } \ } #define NET_BUFFER_LIST_RECEIVE_FILTER_ID( x ) \ (((PNDIS_NET_BUFFER_LIST_FILTERING_INFO)&NET_BUFFER_LIST_INFO( x, \ NetBufferListFilteringInfo ))->FilteringInfo.FilterId) #define NET_BUFFER_LIST_RECEIVE_QUEUE_ID( x ) \ (((PNDIS_NET_BUFFER_LIST_FILTERING_INFO)&NET_BUFFER_LIST_INFO( x, \ NetBufferListFilteringInfo ))->FilteringInfo.QueueId) #endif /* Aliases */ #define NdisMoveMemory RtlCopyMemory #define NdisZeroMemory RtlZeroMemory #define NdisEqualMemory RtlEqualMemory #define NdisFillMemory RtlFillMemory #define NdisRetrieveUlong RtlRetrieveUlong #define NdisStoreUlong RtlStroeUlong #define NdisMoveToMappedMemory NdisMoveMappedMemory #define NdisMoveFromMappedMemory NdisMoveMappedMemory #define NdisGetCurrentSystemTime KeQuerySystemTime #define NdisInterlockedIncrement InterlockedIncrement #define NdisInterlockedDecrement InterlockedDecrement #define NdisInterlockedFlushSList ExInterlockedFlushSList #define NdisInitializeSListHead ExInitializeSListHead #define NdisQueryDepthSList ExQueryDepthSList #define NdisInitializeListHead InitializeListHead #define NdisStallExecution KeStallExecutionProcessor #define NdisEqualString RtlEqualUnicodeString #define NdisEqualUnicodeString RtlEqualUnicodeString #define NdisInitAnsiString RtlInitString #define NdisInitUnicodeString RtlInitUnicodeString #define NdisInitializeNPagedLookasideList ExInitializeNPagedLookasideList #define NdisDeleteNPagedLookasideList ExDeleteNPagedLookasideList #define NdisAllocateFromNPagedLookasideList ExAllocateFromNPagedLookasideList #define NdisFreeToNPagedLookasideList ExFreeToNPagedLookasideList #define NdisMSetupDmaTransfer NdisSetupDmaTransfer #define NdisMCompleteDmaTransfer NdisCompleteDmaTransfer #define NdisMCmOpenAddressFamilyComplete NdisCmOpenAddressFamilyComplete #define NdisMCmNotifyCloseAddressFamily NdisCmNotifyCloseAddressFamily #define NdisMCmCloseAddressFamilyComplete NdisCmCloseAddressFamilyComplete #define NdisMCmRegisterSapComplete NdisCmRegisterSapComplete #define NdisMCmDeregisterSapComplete NdisCmDeregisterSapComplete #define NdisMCmMakeCallComplete NdisCmMakeCallComplete #define NdisMCmCloseCallComplete NdisCmCloseCallComplete #define NdisMCmAddPartyComplete NdisCmAddPartyComplete #define NdisMCmDropPartyComplete NdisCmDropPartyComplete #define NdisMCmDispatchIncomingCall NdisCmDispatchIncomingCall #define NdisMCmDispatchCallConnected NdisCmDispatchCallConnected #define NdisMCmModifyCallQoSComplete NdisCmModifyCallQoSComplete #define NdisMCmDispatchIncomingCallQoSChange NdisCmDispatchIncomingCallQoSChange #define NdisMCmDispatchIncomingCloseCall NdisCmDispatchIncomingCloseCall #define NdisMCmDispatchIncomingDropParty NdisCmDispatchIncomingDropParty #ifdef _X86_ #define NdisWriteRegisterUchar WRITE_REGISTER_UCHAR #define NdisWriteRegisterUshort WRITE_REGISTER_USHORT #define NdisWriteRegisterUlong WRITE_REGISTER_ULONG #endif #if NDIS_LEGACY_DRIVER #define NdisFreeBuffer IoFreeMdl #endif #if NDIS_SUPPORT_NDIS6 #define NdisMAllocateSharedMemoryAsyncEx NdisMAllocateSharedMemoryAsync #endif #if NDIS_LEGACY_DRIVER __inline VOID NdisQueryPacket( PNDIS_PACKET x, PUINT p1, PUINT p2, PNDIS_BUFFER *p3, PUINT p4 ) { if( p3 != NULL ) { PNDIS_BUFFER *v1 = p3; *v1 = x->Private.Head; } if( p1 || p2 || p4 ) { if( !x->Private.ValidCounts ) { PNDIS_BUFFER v2 = (x)->Private.Head; UINT v3 = 0; UINT v4 = 0; UINT v5 = 0; UINT v6; UINT v7; while( v2 != NULL ) { NdisQueryBufferOffset( v2, &v7, &v6 ); v3 += v6; v4 += (UINT)NDIS_BUFFER_TO_SPAN_PAGES( v2 ); ++v5; v2 = v2->Next; } x->Private.Count = v5; x->Private.TotalLength = v3; x->Private.PhysicalCount = v4; x->Private.ValidCounts = TRUE; } if( p1 ) { *p1 = x->Private.PhysicalCount; } if( p2 ) { *p2 = x->Private.Count; } if( p4 ) { *p4 = x->Private.TotalLength; } } } #endif /* NDIS_LEGACY_DRIVER */ #ifdef __cplusplus } /* extern "C" */ #endif #endif /* _NDIS_ */