Home | History | Annotate | Download | only in include
      1 /**
      2 * This file is part of the mingw-w64 runtime package.
      3 * No warranty is given; refer to the file DISCLAIMER within this package.
      4 */
      5 
      6 #ifndef _NTDDNDIS_
      7 #define _NTDDNDIS_
      8 
      9 #include <winapifamily.h>
     10 
     11 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
     12 
     13 #ifdef __cplusplus
     14 extern "C" {
     15 #endif
     16 
     17 #ifndef NDIS_SUPPORT_NDIS6
     18 #if defined (UM_NDIS60) || defined (UM_NDIS61) || defined (UM_NDIS620) || defined (UM_NDIS630)
     19 #define NDIS_SUPPORT_NDIS6 1
     20 #else
     21 #define NDIS_SUPPORT_NDIS6 0
     22 #endif
     23 #endif
     24 
     25 #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
     26 #include <ifdef.h>
     27 #include <devpkey.h>
     28 #include <pciprop.h>
     29 #endif
     30 
     31 #ifndef NDIS_SUPPORT_NDIS61
     32 #if defined (UM_NDIS61) || defined (UM_NDIS620) || defined (UM_NDIS630)
     33 #define NDIS_SUPPORT_NDIS61 1
     34 #else
     35 #define NDIS_SUPPORT_NDIS61 0
     36 #endif
     37 #endif
     38 
     39 #ifndef NDIS_SUPPORT_NDIS620
     40 #if defined (UM_NDIS620) || defined (UM_NDIS630)
     41 #define NDIS_SUPPORT_NDIS620 1
     42 #else
     43 #define NDIS_SUPPORT_NDIS620 0
     44 #endif
     45 #endif
     46 
     47 #ifndef NDIS_SUPPORT_NDIS630
     48 #ifdef UM_NDIS630
     49 #define NDIS_SUPPORT_NDIS630 1
     50 #else
     51 #define NDIS_SUPPORT_NDIS630 0
     52 #endif
     53 #endif
     54 
     55 #define DD_NDIS_DEVICE_NAME "\\Device\\UNKNOWN"
     56 
     57 #define _NDIS_CONTROL_CODE(request, method) CTL_CODE (FILE_DEVICE_PHYSICAL_NETCARD, request, method, FILE_ANY_ACCESS)
     58 
     59 #define IOCTL_NDIS_QUERY_GLOBAL_STATS _NDIS_CONTROL_CODE (0, METHOD_OUT_DIRECT)
     60 #define IOCTL_NDIS_QUERY_ALL_STATS _NDIS_CONTROL_CODE (1, METHOD_OUT_DIRECT)
     61 #define IOCTL_NDIS_DO_PNP_OPERATION _NDIS_CONTROL_CODE (2, METHOD_BUFFERED)
     62 #define IOCTL_NDIS_QUERY_SELECTED_STATS _NDIS_CONTROL_CODE (3, METHOD_OUT_DIRECT)
     63 #define IOCTL_NDIS_ENUMERATE_INTERFACES _NDIS_CONTROL_CODE (4, METHOD_BUFFERED)
     64 #define IOCTL_NDIS_ADD_TDI_DEVICE _NDIS_CONTROL_CODE (5, METHOD_BUFFERED)
     65 #define IOCTL_NDIS_GET_LOG_DATA _NDIS_CONTROL_CODE (7, METHOD_OUT_DIRECT)
     66 #define IOCTL_NDIS_GET_VERSION _NDIS_CONTROL_CODE (8, METHOD_BUFFERED)
     67 
     68 #define IOCTL_NDIS_RESERVED1 _NDIS_CONTROL_CODE (9, METHOD_BUFFERED)
     69 #define IOCTL_NDIS_RESERVED2 _NDIS_CONTROL_CODE (0xa, METHOD_BUFFERED)
     70 #define IOCTL_NDIS_RESERVED3 _NDIS_CONTROL_CODE (0xb, METHOD_BUFFERED)
     71 #define IOCTL_NDIS_RESERVED4 _NDIS_CONTROL_CODE (0xc, METHOD_BUFFERED)
     72 #define IOCTL_NDIS_RESERVED5 CTL_CODE (FILE_DEVICE_PHYSICAL_NETCARD, 0xd, METHOD_BUFFERED, FILE_ANY_ACCESS)
     73 #define IOCTL_NDIS_RESERVED6 CTL_CODE (FILE_DEVICE_PHYSICAL_NETCARD, 0xe, METHOD_BUFFERED, FILE_WRITE_ACCESS)
     74 #define IOCTL_NDIS_RESERVED7 _NDIS_CONTROL_CODE (0xf, METHOD_OUT_DIRECT)
     75 #define IOCTL_NDIS_RESERVED8 _NDIS_CONTROL_CODE (0x10, METHOD_BUFFERED)
     76 #define IOCTL_NDIS_RESERVED9 _NDIS_CONTROL_CODE (0x11, METHOD_BUFFERED)
     77 #define IOCTL_NDIS_RESERVED10 _NDIS_CONTROL_CODE (0x12, METHOD_BUFFERED)
     78 #define IOCTL_NDIS_RESERVED11 _NDIS_CONTROL_CODE (0x13, METHOD_BUFFERED)
     79 #define IOCTL_NDIS_RESERVED12 _NDIS_CONTROL_CODE (0x14, METHOD_BUFFERED)
     80 #define IOCTL_NDIS_RESERVED13 _NDIS_CONTROL_CODE (0x15, METHOD_BUFFERED)
     81 #define IOCTL_NDIS_RESERVED14 _NDIS_CONTROL_CODE (0x16, METHOD_BUFFERED)
     82 #define IOCTL_NDIS_RESERVED15 _NDIS_CONTROL_CODE (0x17, METHOD_BUFFERED)
     83 #define IOCTL_NDIS_RESERVED16 _NDIS_CONTROL_CODE (0x18, METHOD_BUFFERED)
     84 #define IOCTL_NDIS_RESERVED17 _NDIS_CONTROL_CODE (0x19, METHOD_BUFFERED)
     85 #define IOCTL_NDIS_RESERVED18 _NDIS_CONTROL_CODE (0x1a, METHOD_BUFFERED)
     86 #define IOCTL_NDIS_RESERVED19 _NDIS_CONTROL_CODE (0x1b, METHOD_BUFFERED)
     87 #define IOCTL_NDIS_RESERVED20 _NDIS_CONTROL_CODE (0x1c, METHOD_BUFFERED)
     88 #define IOCTL_NDIS_RESERVED21 _NDIS_CONTROL_CODE (0x1d, METHOD_BUFFERED)
     89 #define IOCTL_NDIS_RESERVED22 _NDIS_CONTROL_CODE (0x1e, METHOD_BUFFERED)
     90 #define IOCTL_NDIS_RESERVED23 _NDIS_CONTROL_CODE (0x1f, METHOD_BUFFERED)
     91 #define IOCTL_NDIS_RESERVED24 _NDIS_CONTROL_CODE (0x20, METHOD_BUFFERED)
     92 #define IOCTL_NDIS_RESERVED25 _NDIS_CONTROL_CODE (0x21, METHOD_BUFFERED)
     93 #define IOCTL_NDIS_RESERVED26 _NDIS_CONTROL_CODE (0x22, METHOD_BUFFERED)
     94 #define IOCTL_NDIS_RESERVED27 _NDIS_CONTROL_CODE (0x23, METHOD_BUFFERED)
     95 #define IOCTL_NDIS_RESERVED28 _NDIS_CONTROL_CODE (0x24, METHOD_BUFFERED)
     96 #define IOCTL_NDIS_RESERVED29 _NDIS_CONTROL_CODE (0x25, METHOD_BUFFERED)
     97 #define IOCTL_NDIS_RESERVED30 _NDIS_CONTROL_CODE (0x26, METHOD_BUFFERED)
     98 
     99   typedef ULONG NDIS_OID, *PNDIS_OID;
    100   typedef struct _NDIS_STATISTICS_VALUE {
    101     NDIS_OID Oid;
    102     ULONG DataLength;
    103     UCHAR Data[1];
    104   } NDIS_STATISTICS_VALUE;
    105 
    106   typedef NDIS_STATISTICS_VALUE UNALIGNED *PNDIS_STATISTICS_VALUE;
    107 
    108 #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
    109   typedef struct _NDIS_STATISTICS_VALUE_EX {
    110     NDIS_OID Oid;
    111     ULONG DataLength;
    112     ULONG Length;
    113     UCHAR Data[1];
    114   } NDIS_STATISTICS_VALUE_EX;
    115 
    116   typedef NDIS_STATISTICS_VALUE_EX UNALIGNED *PNDIS_STATISTICS_VALUE_EX;
    117 #endif
    118 
    119   typedef struct _NDIS_VAR_DATA_DESC {
    120     USHORT Length;
    121     USHORT MaximumLength;
    122     ULONG_PTR Offset;
    123   } NDIS_VAR_DATA_DESC, *PNDIS_VAR_DATA_DESC;
    124 
    125 #ifndef GUID_DEFINED
    126 #include <guiddef.h>
    127 #endif
    128 
    129 #define NDIS_OBJECT_TYPE_DEFAULT 0x80
    130 #define NDIS_OBJECT_TYPE_MINIPORT_INIT_PARAMETERS 0x81
    131 #define NDIS_OBJECT_TYPE_SG_DMA_DESCRIPTION 0x83
    132 #define NDIS_OBJECT_TYPE_MINIPORT_INTERRUPT 0x84
    133 #define NDIS_OBJECT_TYPE_DEVICE_OBJECT_ATTRIBUTES 0x85
    134 #define NDIS_OBJECT_TYPE_BIND_PARAMETERS 0x86
    135 #define NDIS_OBJECT_TYPE_OPEN_PARAMETERS 0x87
    136 #define NDIS_OBJECT_TYPE_RSS_CAPABILITIES 0x88
    137 #define NDIS_OBJECT_TYPE_RSS_PARAMETERS 0x89
    138 #define NDIS_OBJECT_TYPE_MINIPORT_DRIVER_CHARACTERISTICS 0x8a
    139 #define NDIS_OBJECT_TYPE_FILTER_DRIVER_CHARACTERISTICS 0x8b
    140 #define NDIS_OBJECT_TYPE_FILTER_PARTIAL_CHARACTERISTICS 0x8c
    141 #define NDIS_OBJECT_TYPE_FILTER_ATTRIBUTES 0x8d
    142 #define NDIS_OBJECT_TYPE_CLIENT_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS 0x8e
    143 #define NDIS_OBJECT_TYPE_PROVIDER_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS 0x8f
    144 #define NDIS_OBJECT_TYPE_CO_PROTOCOL_CHARACTERISTICS 0x90
    145 #define NDIS_OBJECT_TYPE_CO_MINIPORT_CHARACTERISTICS 0x91
    146 #define NDIS_OBJECT_TYPE_MINIPORT_PNP_CHARACTERISTICS 0x92
    147 #define NDIS_OBJECT_TYPE_CLIENT_CHIMNEY_OFFLOAD_CHARACTERISTICS 0x93
    148 #define NDIS_OBJECT_TYPE_PROVIDER_CHIMNEY_OFFLOAD_CHARACTERISTICS 0x94
    149 #define NDIS_OBJECT_TYPE_PROTOCOL_DRIVER_CHARACTERISTICS 0x95
    150 #define NDIS_OBJECT_TYPE_REQUEST_EX 0x96
    151 #define NDIS_OBJECT_TYPE_OID_REQUEST 0x96
    152 #define NDIS_OBJECT_TYPE_TIMER_CHARACTERISTICS 0x97
    153 #define NDIS_OBJECT_TYPE_STATUS_INDICATION 0x98
    154 #define NDIS_OBJECT_TYPE_FILTER_ATTACH_PARAMETERS 0x99
    155 #define NDIS_OBJECT_TYPE_FILTER_PAUSE_PARAMETERS 0x9a
    156 #define NDIS_OBJECT_TYPE_FILTER_RESTART_PARAMETERS 0x9b
    157 #define NDIS_OBJECT_TYPE_PORT_CHARACTERISTICS 0x9c
    158 #define NDIS_OBJECT_TYPE_PORT_STATE 0x9d
    159 #define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES 0x9e
    160 #define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES 0x9f
    161 #define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES 0xa0
    162 #define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_NATIVE_802_11_ATTRIBUTES 0xa1
    163 #define NDIS_OBJECT_TYPE_RESTART_GENERAL_ATTRIBUTES 0xa2
    164 #define NDIS_OBJECT_TYPE_PROTOCOL_RESTART_PARAMETERS 0xa3
    165 #define NDIS_OBJECT_TYPE_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES 0xa4
    166 #define NDIS_OBJECT_TYPE_CO_CALL_MANAGER_OPTIONAL_HANDLERS 0xa5
    167 #define NDIS_OBJECT_TYPE_CO_CLIENT_OPTIONAL_HANDLERS 0xa6
    168 #define NDIS_OBJECT_TYPE_OFFLOAD 0xa7
    169 #define NDIS_OBJECT_TYPE_OFFLOAD_ENCAPSULATION 0xa8
    170 #define NDIS_OBJECT_TYPE_CONFIGURATION_OBJECT 0xa9
    171 #define NDIS_OBJECT_TYPE_DRIVER_WRAPPER_OBJECT 0xaa
    172 #if NDIS_SUPPORT_NDIS61
    173 #define NDIS_OBJECT_TYPE_HD_SPLIT_ATTRIBUTES 0xab
    174 #endif
    175 #define NDIS_OBJECT_TYPE_NSI_NETWORK_RW_STRUCT 0xac
    176 #define NDIS_OBJECT_TYPE_NSI_COMPARTMENT_RW_STRUCT 0xad
    177 #define NDIS_OBJECT_TYPE_NSI_INTERFACE_PERSIST_RW_STRUCT 0xae
    178 #if NDIS_SUPPORT_NDIS61
    179 #define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 0xaf
    180 #endif
    181 #if NDIS_SUPPORT_NDIS620
    182 #define NDIS_OBJECT_TYPE_SHARED_MEMORY_PROVIDER_CHARACTERISTICS 0xb0
    183 #define NDIS_OBJECT_TYPE_RSS_PROCESSOR_INFO 0xb1
    184 #endif
    185 #if NDIS_SUPPORT_NDIS630
    186 #define NDIS_OBJECT_TYPE_NDK_PROVIDER_CHARACTERISTICS 0xb2
    187 #define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_NDK_ATTRIBUTES 0xb3
    188 #define NDIS_OBJECT_TYPE_MINIPORT_SS_CHARACTERISTICS 0xb4
    189 #define NDIS_OBJECT_TYPE_QOS_CAPABILITIES 0xb5
    190 #define NDIS_OBJECT_TYPE_QOS_PARAMETERS 0xb6
    191 #define NDIS_OBJECT_TYPE_QOS_CLASSIFICATION_ELEMENT 0xb7
    192 #define NDIS_OBJECT_TYPE_SWITCH_OPTIONAL_HANDLERS 0xb8
    193 #define NDIS_OBJECT_TYPE_IOCTL_OID_INFO 0xb9
    194 #define NDIS_OBJECT_TYPE_LBFO_DIAGNOSTIC_OID 0xba
    195 #endif
    196 
    197   typedef struct _NDIS_OBJECT_HEADER {
    198     UCHAR Type;
    199     UCHAR Revision;
    200     USHORT Size;
    201   } NDIS_OBJECT_HEADER, *PNDIS_OBJECT_HEADER;
    202 
    203   typedef enum _NDIS_REQUEST_TYPE {
    204     NdisRequestQueryInformation,
    205     NdisRequestSetInformation,
    206     NdisRequestQueryStatistics,
    207     NdisRequestOpen,
    208     NdisRequestClose,
    209     NdisRequestSend,
    210     NdisRequestTransferData,
    211     NdisRequestReset,
    212     NdisRequestGeneric1,
    213     NdisRequestGeneric2,
    214     NdisRequestGeneric3,
    215     NdisRequestGeneric4
    216 #if NDIS_SUPPORT_NDIS6
    217     , NdisRequestMethod
    218 #endif
    219   } NDIS_REQUEST_TYPE, *PNDIS_REQUEST_TYPE;
    220 
    221 #define NDIS_OBJECT_REVISION_1 1
    222 
    223 #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
    224 #define NDIS_STATISTICS_FLAGS_VALID_DIRECTED_FRAMES_RCV 0x00000001
    225 #define NDIS_STATISTICS_FLAGS_VALID_MULTICAST_FRAMES_RCV 0x00000002
    226 #define NDIS_STATISTICS_FLAGS_VALID_BROADCAST_FRAMES_RCV 0x00000004
    227 #define NDIS_STATISTICS_FLAGS_VALID_BYTES_RCV 0x00000008
    228 #define NDIS_STATISTICS_FLAGS_VALID_RCV_DISCARDS 0x00000010
    229 #define NDIS_STATISTICS_FLAGS_VALID_RCV_ERROR 0x00000020
    230 #define NDIS_STATISTICS_FLAGS_VALID_DIRECTED_FRAMES_XMIT 0x00000040
    231 #define NDIS_STATISTICS_FLAGS_VALID_MULTICAST_FRAMES_XMIT 0x00000080
    232 #define NDIS_STATISTICS_FLAGS_VALID_BROADCAST_FRAMES_XMIT 0x00000100
    233 #define NDIS_STATISTICS_FLAGS_VALID_BYTES_XMIT 0x00000200
    234 #define NDIS_STATISTICS_FLAGS_VALID_XMIT_ERROR 0x00000400
    235 #define NDIS_STATISTICS_FLAGS_VALID_XMIT_DISCARDS 0x00008000
    236 #define NDIS_STATISTICS_FLAGS_VALID_DIRECTED_BYTES_RCV 0x00010000
    237 #define NDIS_STATISTICS_FLAGS_VALID_MULTICAST_BYTES_RCV 0x00020000
    238 #define NDIS_STATISTICS_FLAGS_VALID_BROADCAST_BYTES_RCV 0x00040000
    239 #define NDIS_STATISTICS_FLAGS_VALID_DIRECTED_BYTES_XMIT 0x00080000
    240 #define NDIS_STATISTICS_FLAGS_VALID_MULTICAST_BYTES_XMIT 0x00100000
    241 #define NDIS_STATISTICS_FLAGS_VALID_BROADCAST_BYTES_XMIT 0x00200000
    242 
    243 #define NDIS_INTERRUPT_MODERATION_CHANGE_NEEDS_RESET 0x00000001
    244 #define NDIS_INTERRUPT_MODERATION_CHANGE_NEEDS_REINITIALIZE 0x00000002
    245 
    246 #define NDIS_STATISTICS_INFO_REVISION_1 1
    247 #define NDIS_INTERRUPT_MODERATION_PARAMETERS_REVISION_1 1
    248 #define NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES_REVISION_1 1
    249 #define NDIS_OBJECT_TYPE_PCI_DEVICE_CUSTOM_PROPERTIES_REVISION_1 1
    250 #if NTDDI_VERSION >= 0x06010000 || NDIS_SUPPORT_NDIS620
    251 #define NDIS_OBJECT_TYPE_PCI_DEVICE_CUSTOM_PROPERTIES_REVISION_2 2
    252 #endif
    253 #if NDIS_SUPPORT_NDIS630
    254 #define NDIS_RSC_STATISTICS_REVISION_1 1
    255 #endif
    256 
    257 #define NDIS_SIZEOF_STATISTICS_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_STATISTICS_INFO, ifHCOutBroadcastOctets)
    258 #define NDIS_SIZEOF_INTERRUPT_MODERATION_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_INTERRUPT_MODERATION_PARAMETERS, InterruptModeration)
    259 #define NDIS_SIZEOF_TIMEOUT_DPC_REQUEST_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES, TimeoutArray)
    260 #define NDIS_SIZEOF_PCI_DEVICE_CUSTOM_PROPERTIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PCI_DEVICE_CUSTOM_PROPERTIES, MaxLinkWidth)
    261 #if NTDDI_VERSION >= 0x06010000 || NDIS_SUPPORT_NDIS620
    262 #define NDIS_SIZEOF_PCI_DEVICE_CUSTOM_PROPERTIES_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_PCI_DEVICE_CUSTOM_PROPERTIES, MaxInterruptMessages)
    263 #endif
    264 #if NDIS_SUPPORT_NDIS630
    265 #define NDIS_SIZEOF_RSC_STATISTICS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RSC_STATISTICS_INFO, Aborts)
    266 #endif
    267 
    268   typedef struct _NDIS_STATISTICS_INFO {
    269     NDIS_OBJECT_HEADER Header;
    270     ULONG SupportedStatistics;
    271     ULONG64 ifInDiscards;
    272     ULONG64 ifInErrors;
    273     ULONG64 ifHCInOctets;
    274     ULONG64 ifHCInUcastPkts;
    275     ULONG64 ifHCInMulticastPkts;
    276     ULONG64 ifHCInBroadcastPkts;
    277     ULONG64 ifHCOutOctets;
    278     ULONG64 ifHCOutUcastPkts;
    279     ULONG64 ifHCOutMulticastPkts;
    280     ULONG64 ifHCOutBroadcastPkts;
    281     ULONG64 ifOutErrors;
    282     ULONG64 ifOutDiscards;
    283     ULONG64 ifHCInUcastOctets;
    284     ULONG64 ifHCInMulticastOctets;
    285     ULONG64 ifHCInBroadcastOctets;
    286     ULONG64 ifHCOutUcastOctets;
    287     ULONG64 ifHCOutMulticastOctets;
    288     ULONG64 ifHCOutBroadcastOctets;
    289   } NDIS_STATISTICS_INFO, *PNDIS_STATISTICS_INFO;
    290 
    291 #if NDIS_SUPPORT_NDIS630
    292   typedef struct _NDIS_RSC_STATISTICS_INFO {
    293     NDIS_OBJECT_HEADER Header;
    294     ULONG64 CoalescedPkts;
    295     ULONG64 CoalescedOctets;
    296     ULONG64 CoalesceEvents;
    297     ULONG64 Aborts;
    298   } NDIS_RSC_STATISTICS_INFO, *PNDIS_RSC_STATISTICS_INFO;
    299 #endif
    300 
    301   typedef enum _NDIS_INTERRUPT_MODERATION {
    302     NdisInterruptModerationUnknown,
    303     NdisInterruptModerationNotSupported,
    304     NdisInterruptModerationEnabled,
    305     NdisInterruptModerationDisabled
    306   } NDIS_INTERRUPT_MODERATION, *PNDIS_INTERRUPT_MODERATION;
    307 
    308   typedef struct _NDIS_INTERRUPT_MODERATION_PARAMETERS {
    309     NDIS_OBJECT_HEADER Header;
    310     ULONG Flags;
    311     NDIS_INTERRUPT_MODERATION InterruptModeration;
    312   } NDIS_INTERRUPT_MODERATION_PARAMETERS, *PNDIS_INTERRUPT_MODERATION_PARAMETERS;
    313 
    314   typedef struct _NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES {
    315     NDIS_OBJECT_HEADER Header;
    316     ULONG Flags;
    317     ULONG TimeoutArrayLength;
    318     ULONG TimeoutArray[1];
    319   } NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES, *PNDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES;
    320 
    321   typedef struct _NDIS_PCI_DEVICE_CUSTOM_PROPERTIES {
    322     NDIS_OBJECT_HEADER Header;
    323     UINT32 DeviceType;
    324     UINT32 CurrentSpeedAndMode;
    325     UINT32 CurrentPayloadSize;
    326     UINT32 MaxPayloadSize;
    327     UINT32 MaxReadRequestSize;
    328     UINT32 CurrentLinkSpeed;
    329     UINT32 CurrentLinkWidth;
    330     UINT32 MaxLinkSpeed;
    331     UINT32 MaxLinkWidth;
    332 #if (NTDDI_VERSION >= 0x06010000 || NDIS_SUPPORT_NDIS620)
    333     UINT32 PciExpressVersion;
    334     UINT32 InterruptType;
    335     UINT32 MaxInterruptMessages;
    336 #endif
    337   } NDIS_PCI_DEVICE_CUSTOM_PROPERTIES, *PNDIS_PCI_DEVICE_CUSTOM_PROPERTIES;
    338 #endif
    339 
    340 #define OID_GEN_SUPPORTED_LIST 0x00010101
    341 #define OID_GEN_HARDWARE_STATUS 0x00010102
    342 #define OID_GEN_MEDIA_SUPPORTED 0x00010103
    343 #define OID_GEN_MEDIA_IN_USE 0x00010104
    344 #define OID_GEN_MAXIMUM_LOOKAHEAD 0x00010105
    345 #define OID_GEN_MAXIMUM_FRAME_SIZE 0x00010106
    346 #define OID_GEN_LINK_SPEED 0x00010107
    347 #define OID_GEN_TRANSMIT_BUFFER_SPACE 0x00010108
    348 #define OID_GEN_RECEIVE_BUFFER_SPACE 0x00010109
    349 #define OID_GEN_TRANSMIT_BLOCK_SIZE 0x0001010a
    350 #define OID_GEN_RECEIVE_BLOCK_SIZE 0x0001010b
    351 #define OID_GEN_VENDOR_ID 0x0001010c
    352 #define OID_GEN_VENDOR_DESCRIPTION 0x0001010d
    353 #define OID_GEN_CURRENT_PACKET_FILTER 0x0001010e
    354 #define OID_GEN_CURRENT_LOOKAHEAD 0x0001010f
    355 #define OID_GEN_DRIVER_VERSION 0x00010110
    356 #define OID_GEN_MAXIMUM_TOTAL_SIZE 0x00010111
    357 #define OID_GEN_PROTOCOL_OPTIONS 0x00010112
    358 #define OID_GEN_MAC_OPTIONS 0x00010113
    359 #define OID_GEN_MEDIA_CONNECT_STATUS 0x00010114
    360 #define OID_GEN_MAXIMUM_SEND_PACKETS 0x00010115
    361 
    362 #define OID_GEN_VENDOR_DRIVER_VERSION 0x00010116
    363 #define OID_GEN_SUPPORTED_GUIDS 0x00010117
    364 #define OID_GEN_NETWORK_LAYER_ADDRESSES 0x00010118
    365 #define OID_GEN_TRANSPORT_HEADER_OFFSET 0x00010119
    366 #define OID_GEN_MEDIA_CAPABILITIES 0x00010201
    367 #define OID_GEN_PHYSICAL_MEDIUM 0x00010202
    368 #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
    369 #define OID_GEN_RECEIVE_SCALE_CAPABILITIES 0x00010203
    370 #define OID_GEN_RECEIVE_SCALE_PARAMETERS 0x00010204
    371 #define OID_GEN_MAC_ADDRESS 0x00010205
    372 #define OID_GEN_MAX_LINK_SPEED 0x00010206
    373 #define OID_GEN_LINK_STATE 0x00010207
    374 #define OID_GEN_LINK_PARAMETERS 0x00010208
    375 #define OID_GEN_INTERRUPT_MODERATION 0x00010209
    376 #define OID_GEN_NDIS_RESERVED_3 0x0001020a
    377 #define OID_GEN_NDIS_RESERVED_4 0x0001020b
    378 #define OID_GEN_NDIS_RESERVED_5 0x0001020c
    379 #define OID_GEN_ENUMERATE_PORTS 0x0001020d
    380 #define OID_GEN_PORT_STATE 0x0001020e
    381 #define OID_GEN_PORT_AUTHENTICATION_PARAMETERS 0x0001020f
    382 #define OID_GEN_TIMEOUT_DPC_REQUEST_CAPABILITIES 0x00010210
    383 #define OID_GEN_PCI_DEVICE_CUSTOM_PROPERTIES 0x00010211
    384 #define OID_GEN_NDIS_RESERVED_6 0x00010212
    385 #define OID_GEN_PHYSICAL_MEDIUM_EX 0x00010213
    386 #endif
    387 
    388 #define OID_GEN_MACHINE_NAME 0x0001021a
    389 #define OID_GEN_RNDIS_CONFIG_PARAMETER 0x0001021b
    390 #define OID_GEN_VLAN_ID 0x0001021c
    391 #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
    392 #define OID_GEN_RECEIVE_HASH 0x0001021f
    393 #define OID_GEN_MINIPORT_RESTART_ATTRIBUTES 0x0001021d
    394 
    395 #if NDIS_SUPPORT_NDIS61
    396 #define OID_GEN_HD_SPLIT_PARAMETERS 0x0001021e
    397 #define OID_GEN_HD_SPLIT_CURRENT_CONFIG 0x00010220
    398 #endif
    399 
    400 #define OID_GEN_PROMISCUOUS_MODE 0x00010280
    401 #define OID_GEN_LAST_CHANGE 0x00010281
    402 #define OID_GEN_DISCONTINUITY_TIME 0x00010282
    403 #define OID_GEN_OPERATIONAL_STATUS 0x00010283
    404 #define OID_GEN_XMIT_LINK_SPEED 0x00010284
    405 #define OID_GEN_RCV_LINK_SPEED 0x00010285
    406 #define OID_GEN_UNKNOWN_PROTOS 0x00010286
    407 #define OID_GEN_INTERFACE_INFO 0x00010287
    408 #define OID_GEN_ADMIN_STATUS 0x00010288
    409 #define OID_GEN_ALIAS 0x00010289
    410 #define OID_GEN_MEDIA_CONNECT_STATUS_EX 0x0001028a
    411 #define OID_GEN_LINK_SPEED_EX 0x0001028b
    412 #define OID_GEN_MEDIA_DUPLEX_STATE 0x0001028c
    413 #define OID_GEN_IP_OPER_STATUS 0x0001028d
    414 
    415 #define OID_WWAN_DRIVER_CAPS 0x0e010100
    416 #define OID_WWAN_DEVICE_CAPS 0x0e010101
    417 #define OID_WWAN_READY_INFO 0x0e010102
    418 #define OID_WWAN_RADIO_STATE 0x0e010103
    419 #define OID_WWAN_PIN 0x0e010104
    420 #define OID_WWAN_PIN_LIST 0x0e010105
    421 #define OID_WWAN_HOME_PROVIDER 0x0e010106
    422 #define OID_WWAN_PREFERRED_PROVIDERS 0x0e010107
    423 #define OID_WWAN_VISIBLE_PROVIDERS 0x0e010108
    424 #define OID_WWAN_REGISTER_STATE 0x0e010109
    425 #define OID_WWAN_PACKET_SERVICE 0x0e01010a
    426 #define OID_WWAN_SIGNAL_STATE 0x0e01010b
    427 #define OID_WWAN_CONNECT 0x0e01010c
    428 #define OID_WWAN_PROVISIONED_CONTEXTS 0x0e01010d
    429 #define OID_WWAN_SERVICE_ACTIVATION 0x0e01010e
    430 #define OID_WWAN_SMS_CONFIGURATION 0x0e01010f
    431 #define OID_WWAN_SMS_READ 0x0e010110
    432 #define OID_WWAN_SMS_SEND 0x0e010111
    433 #define OID_WWAN_SMS_DELETE 0x0e010112
    434 #define OID_WWAN_SMS_STATUS 0x0e010113
    435 #define OID_WWAN_VENDOR_SPECIFIC 0x0e010114
    436 #endif
    437 
    438 #if NTDDI_VERSION >= 0x06020000 || NDIS_SUPPORT_NDIS630
    439 #define OID_WWAN_AUTH_CHALLENGE 0x0e010115
    440 #define OID_WWAN_ENUMERATE_DEVICE_SERVICES 0x0e010116
    441 #define OID_WWAN_SUBSCRIBE_DEVICE_SERVICE_EVENTS 0x0e010117
    442 #define OID_WWAN_DEVICE_SERVICE_COMMAND 0x0e010118
    443 #define OID_WWAN_USSD 0x0e010119
    444 #define OID_WWAN_PIN_EX 0x0e010121
    445 #define OID_WWAN_ENUMERATE_DEVICE_SERVICE_COMMANDS 0x0e010122
    446 #define OID_WWAN_DEVICE_SERVICE_SESSION 0x0e010123
    447 #define OID_WWAN_DEVICE_SERVICE_SESSION_WRITE 0x0e010124
    448 #define OID_WWAN_PREFERRED_MULTICARRIER_PROVIDERS 0x0e010125
    449 #endif
    450 
    451 #define OID_GEN_XMIT_OK 0x00020101
    452 #define OID_GEN_RCV_OK 0x00020102
    453 #define OID_GEN_XMIT_ERROR 0x00020103
    454 #define OID_GEN_RCV_ERROR 0x00020104
    455 #define OID_GEN_RCV_NO_BUFFER 0x00020105
    456 #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
    457 #define OID_GEN_STATISTICS 0x00020106
    458 #endif
    459 
    460 #define OID_GEN_DIRECTED_BYTES_XMIT 0x00020201
    461 #define OID_GEN_DIRECTED_FRAMES_XMIT 0x00020202
    462 #define OID_GEN_MULTICAST_BYTES_XMIT 0x00020203
    463 #define OID_GEN_MULTICAST_FRAMES_XMIT 0x00020204
    464 #define OID_GEN_BROADCAST_BYTES_XMIT 0x00020205
    465 #define OID_GEN_BROADCAST_FRAMES_XMIT 0x00020206
    466 #define OID_GEN_DIRECTED_BYTES_RCV 0x00020207
    467 #define OID_GEN_DIRECTED_FRAMES_RCV 0x00020208
    468 #define OID_GEN_MULTICAST_BYTES_RCV 0x00020209
    469 #define OID_GEN_MULTICAST_FRAMES_RCV 0x0002020a
    470 #define OID_GEN_BROADCAST_BYTES_RCV 0x0002020b
    471 #define OID_GEN_BROADCAST_FRAMES_RCV 0x0002020c
    472 #define OID_GEN_RCV_CRC_ERROR 0x0002020d
    473 #define OID_GEN_TRANSMIT_QUEUE_LENGTH 0x0002020e
    474 #define OID_GEN_GET_TIME_CAPS 0x0002020f
    475 #define OID_GEN_GET_NETCARD_TIME 0x00020210
    476 #define OID_GEN_NETCARD_LOAD 0x00020211
    477 #define OID_GEN_DEVICE_PROFILE 0x00020212
    478 #define OID_GEN_INIT_TIME_MS 0x00020213
    479 #define OID_GEN_RESET_COUNTS 0x00020214
    480 #define OID_GEN_MEDIA_SENSE_COUNTS 0x00020215
    481 #define OID_GEN_FRIENDLY_NAME 0x00020216
    482 #define OID_GEN_NDIS_RESERVED_1 0x00020217
    483 #define OID_GEN_NDIS_RESERVED_2 0x00020218
    484 #define OID_GEN_NDIS_RESERVED_5 0x0001020c
    485 #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
    486 #define OID_GEN_BYTES_RCV 0x00020219
    487 #define OID_GEN_BYTES_XMIT 0x0002021a
    488 #define OID_GEN_RCV_DISCARDS 0x0002021b
    489 #define OID_GEN_XMIT_DISCARDS 0x0002021c
    490 #endif
    491 #if NTDDI_VERSION >= 0x06020000 || NDIS_SUPPORT_NDIS630
    492 #define OID_TCP_RSC_STATISTICS 0x0002021d
    493 #define OID_GEN_NDIS_RESERVED_7 0x0002021e
    494 #endif
    495 
    496 #define OID_GEN_CO_SUPPORTED_LIST OID_GEN_SUPPORTED_LIST
    497 #define OID_GEN_CO_HARDWARE_STATUS OID_GEN_HARDWARE_STATUS
    498 #define OID_GEN_CO_MEDIA_SUPPORTED OID_GEN_MEDIA_SUPPORTED
    499 #define OID_GEN_CO_MEDIA_IN_USE OID_GEN_MEDIA_IN_USE
    500 #define OID_GEN_CO_LINK_SPEED OID_GEN_LINK_SPEED
    501 #define OID_GEN_CO_VENDOR_ID OID_GEN_VENDOR_ID
    502 #define OID_GEN_CO_VENDOR_DESCRIPTION OID_GEN_VENDOR_DESCRIPTION
    503 #define OID_GEN_CO_DRIVER_VERSION OID_GEN_DRIVER_VERSION
    504 #define OID_GEN_CO_PROTOCOL_OPTIONS OID_GEN_PROTOCOL_OPTIONS
    505 #define OID_GEN_CO_MAC_OPTIONS OID_GEN_MAC_OPTIONS
    506 #define OID_GEN_CO_MEDIA_CONNECT_STATUS OID_GEN_MEDIA_CONNECT_STATUS
    507 #define OID_GEN_CO_VENDOR_DRIVER_VERSION OID_GEN_VENDOR_DRIVER_VERSION
    508 #define OID_GEN_CO_SUPPORTED_GUIDS OID_GEN_SUPPORTED_GUIDS
    509 #define OID_GEN_CO_GET_TIME_CAPS OID_GEN_GET_TIME_CAPS
    510 #define OID_GEN_CO_GET_NETCARD_TIME OID_GEN_GET_NETCARD_TIME
    511 #define OID_GEN_CO_MINIMUM_LINK_SPEED 0x00020120
    512 
    513 #define OID_GEN_CO_XMIT_PDUS_OK OID_GEN_XMIT_OK
    514 #define OID_GEN_CO_RCV_PDUS_OK OID_GEN_RCV_OK
    515 #define OID_GEN_CO_XMIT_PDUS_ERROR OID_GEN_XMIT_ERROR
    516 #define OID_GEN_CO_RCV_PDUS_ERROR OID_GEN_RCV_ERROR
    517 #define OID_GEN_CO_RCV_PDUS_NO_BUFFER OID_GEN_RCV_NO_BUFFER
    518 
    519 #define OID_GEN_CO_RCV_CRC_ERROR OID_GEN_RCV_CRC_ERROR
    520 #define OID_GEN_CO_TRANSMIT_QUEUE_LENGTH OID_GEN_TRANSMIT_QUEUE_LENGTH
    521 #define OID_GEN_CO_BYTES_XMIT OID_GEN_DIRECTED_BYTES_XMIT
    522 #define OID_GEN_CO_BYTES_RCV OID_GEN_DIRECTED_BYTES_RCV
    523 #define OID_GEN_CO_NETCARD_LOAD OID_GEN_NETCARD_LOAD
    524 #define OID_GEN_CO_DEVICE_PROFILE OID_GEN_DEVICE_PROFILE
    525 #define OID_GEN_CO_BYTES_XMIT_OUTSTANDING 0x00020221
    526 
    527 #define OID_802_3_PERMANENT_ADDRESS 0x01010101
    528 #define OID_802_3_CURRENT_ADDRESS 0x01010102
    529 #define OID_802_3_MULTICAST_LIST 0x01010103
    530 #define OID_802_3_MAXIMUM_LIST_SIZE 0x01010104
    531 
    532 #define OID_802_3_MAC_OPTIONS 0x01010105
    533 
    534 #define NDIS_802_3_MAC_OPTION_PRIORITY 0x00000001
    535 
    536 #define OID_802_3_RCV_ERROR_ALIGNMENT 0x01020101
    537 #define OID_802_3_XMIT_ONE_COLLISION 0x01020102
    538 #define OID_802_3_XMIT_MORE_COLLISIONS 0x01020103
    539 
    540 #define OID_802_3_XMIT_DEFERRED 0x01020201
    541 #define OID_802_3_XMIT_MAX_COLLISIONS 0x01020202
    542 #define OID_802_3_RCV_OVERRUN 0x01020203
    543 #define OID_802_3_XMIT_UNDERRUN 0x01020204
    544 #define OID_802_3_XMIT_HEARTBEAT_FAILURE 0x01020205
    545 #define OID_802_3_XMIT_TIMES_CRS_LOST 0x01020206
    546 #define OID_802_3_XMIT_LATE_COLLISIONS 0x01020207
    547 
    548 #if (NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6)
    549 #define OID_802_3_ADD_MULTICAST_ADDRESS 0x01010208
    550 #define OID_802_3_DELETE_MULTICAST_ADDRESS 0x01010209
    551 #endif
    552 
    553 #define OID_802_5_PERMANENT_ADDRESS 0x02010101
    554 #define OID_802_5_CURRENT_ADDRESS 0x02010102
    555 #define OID_802_5_CURRENT_FUNCTIONAL 0x02010103
    556 #define OID_802_5_CURRENT_GROUP 0x02010104
    557 #define OID_802_5_LAST_OPEN_STATUS 0x02010105
    558 #define OID_802_5_CURRENT_RING_STATUS 0x02010106
    559 #define OID_802_5_CURRENT_RING_STATE 0x02010107
    560 
    561 #define OID_802_5_LINE_ERRORS 0x02020101
    562 #define OID_802_5_LOST_FRAMES 0x02020102
    563 
    564 #define OID_802_5_BURST_ERRORS 0x02020201
    565 #define OID_802_5_AC_ERRORS 0x02020202
    566 #define OID_802_5_ABORT_DELIMETERS 0x02020203
    567 #define OID_802_5_FRAME_COPIED_ERRORS 0x02020204
    568 #define OID_802_5_FREQUENCY_ERRORS 0x02020205
    569 #define OID_802_5_TOKEN_ERRORS 0x02020206
    570 #define OID_802_5_INTERNAL_ERRORS 0x02020207
    571 
    572 #define OID_FDDI_LONG_PERMANENT_ADDR 0x03010101
    573 #define OID_FDDI_LONG_CURRENT_ADDR 0x03010102
    574 #define OID_FDDI_LONG_MULTICAST_LIST 0x03010103
    575 #define OID_FDDI_LONG_MAX_LIST_SIZE 0x03010104
    576 #define OID_FDDI_SHORT_PERMANENT_ADDR 0x03010105
    577 #define OID_FDDI_SHORT_CURRENT_ADDR 0x03010106
    578 #define OID_FDDI_SHORT_MULTICAST_LIST 0x03010107
    579 #define OID_FDDI_SHORT_MAX_LIST_SIZE 0x03010108
    580 
    581 #define OID_FDDI_ATTACHMENT_TYPE 0x03020101
    582 #define OID_FDDI_UPSTREAM_NODE_LONG 0x03020102
    583 #define OID_FDDI_DOWNSTREAM_NODE_LONG 0x03020103
    584 #define OID_FDDI_FRAME_ERRORS 0x03020104
    585 #define OID_FDDI_FRAMES_LOST 0x03020105
    586 #define OID_FDDI_RING_MGT_STATE 0x03020106
    587 #define OID_FDDI_LCT_FAILURES 0x03020107
    588 #define OID_FDDI_LEM_REJECTS 0x03020108
    589 #define OID_FDDI_LCONNECTION_STATE 0x03020109
    590 
    591 #define OID_FDDI_SMT_STATION_ID 0x03030201
    592 #define OID_FDDI_SMT_OP_VERSION_ID 0x03030202
    593 #define OID_FDDI_SMT_HI_VERSION_ID 0x03030203
    594 #define OID_FDDI_SMT_LO_VERSION_ID 0x03030204
    595 #define OID_FDDI_SMT_MANUFACTURER_DATA 0x03030205
    596 #define OID_FDDI_SMT_USER_DATA 0x03030206
    597 #define OID_FDDI_SMT_MIB_VERSION_ID 0x03030207
    598 #define OID_FDDI_SMT_MAC_CT 0x03030208
    599 #define OID_FDDI_SMT_NON_MASTER_CT 0x03030209
    600 #define OID_FDDI_SMT_MASTER_CT 0x0303020a
    601 #define OID_FDDI_SMT_AVAILABLE_PATHS 0x0303020b
    602 #define OID_FDDI_SMT_CONFIG_CAPABILITIES 0x0303020c
    603 #define OID_FDDI_SMT_CONFIG_POLICY 0x0303020d
    604 #define OID_FDDI_SMT_CONNECTION_POLICY 0x0303020e
    605 #define OID_FDDI_SMT_T_NOTIFY 0x0303020f
    606 #define OID_FDDI_SMT_STAT_RPT_POLICY 0x03030210
    607 #define OID_FDDI_SMT_TRACE_MAX_EXPIRATION 0x03030211
    608 #define OID_FDDI_SMT_PORT_INDEXES 0x03030212
    609 #define OID_FDDI_SMT_MAC_INDEXES 0x03030213
    610 #define OID_FDDI_SMT_BYPASS_PRESENT 0x03030214
    611 #define OID_FDDI_SMT_ECM_STATE 0x03030215
    612 #define OID_FDDI_SMT_CF_STATE 0x03030216
    613 #define OID_FDDI_SMT_HOLD_STATE 0x03030217
    614 #define OID_FDDI_SMT_REMOTE_DISCONNECT_FLAG 0x03030218
    615 #define OID_FDDI_SMT_STATION_STATUS 0x03030219
    616 #define OID_FDDI_SMT_PEER_WRAP_FLAG 0x0303021a
    617 #define OID_FDDI_SMT_MSG_TIME_STAMP 0x0303021b
    618 #define OID_FDDI_SMT_TRANSITION_TIME_STAMP 0x0303021c
    619 #define OID_FDDI_SMT_SET_COUNT 0x0303021d
    620 #define OID_FDDI_SMT_LAST_SET_STATION_ID 0x0303021e
    621 #define OID_FDDI_MAC_FRAME_STATUS_FUNCTIONS 0x0303021f
    622 #define OID_FDDI_MAC_BRIDGE_FUNCTIONS 0x03030220
    623 #define OID_FDDI_MAC_T_MAX_CAPABILITY 0x03030221
    624 #define OID_FDDI_MAC_TVX_CAPABILITY 0x03030222
    625 #define OID_FDDI_MAC_AVAILABLE_PATHS 0x03030223
    626 #define OID_FDDI_MAC_CURRENT_PATH 0x03030224
    627 #define OID_FDDI_MAC_UPSTREAM_NBR 0x03030225
    628 #define OID_FDDI_MAC_DOWNSTREAM_NBR 0x03030226
    629 #define OID_FDDI_MAC_OLD_UPSTREAM_NBR 0x03030227
    630 #define OID_FDDI_MAC_OLD_DOWNSTREAM_NBR 0x03030228
    631 #define OID_FDDI_MAC_DUP_ADDRESS_TEST 0x03030229
    632 #define OID_FDDI_MAC_REQUESTED_PATHS 0x0303022a
    633 #define OID_FDDI_MAC_DOWNSTREAM_PORT_TYPE 0x0303022b
    634 #define OID_FDDI_MAC_INDEX 0x0303022c
    635 #define OID_FDDI_MAC_SMT_ADDRESS 0x0303022d
    636 #define OID_FDDI_MAC_LONG_GRP_ADDRESS 0x0303022e
    637 #define OID_FDDI_MAC_SHORT_GRP_ADDRESS 0x0303022f
    638 #define OID_FDDI_MAC_T_REQ 0x03030230
    639 #define OID_FDDI_MAC_T_NEG 0x03030231
    640 #define OID_FDDI_MAC_T_MAX 0x03030232
    641 #define OID_FDDI_MAC_TVX_VALUE 0x03030233
    642 #define OID_FDDI_MAC_T_PRI0 0x03030234
    643 #define OID_FDDI_MAC_T_PRI1 0x03030235
    644 #define OID_FDDI_MAC_T_PRI2 0x03030236
    645 #define OID_FDDI_MAC_T_PRI3 0x03030237
    646 #define OID_FDDI_MAC_T_PRI4 0x03030238
    647 #define OID_FDDI_MAC_T_PRI5 0x03030239
    648 #define OID_FDDI_MAC_T_PRI6 0x0303023a
    649 #define OID_FDDI_MAC_FRAME_CT 0x0303023b
    650 #define OID_FDDI_MAC_COPIED_CT 0x0303023c
    651 #define OID_FDDI_MAC_TRANSMIT_CT 0x0303023d
    652 #define OID_FDDI_MAC_TOKEN_CT 0x0303023e
    653 #define OID_FDDI_MAC_ERROR_CT 0x0303023f
    654 #define OID_FDDI_MAC_LOST_CT 0x03030240
    655 #define OID_FDDI_MAC_TVX_EXPIRED_CT 0x03030241
    656 #define OID_FDDI_MAC_NOT_COPIED_CT 0x03030242
    657 #define OID_FDDI_MAC_LATE_CT 0x03030243
    658 #define OID_FDDI_MAC_RING_OP_CT 0x03030244
    659 #define OID_FDDI_MAC_FRAME_ERROR_THRESHOLD 0x03030245
    660 #define OID_FDDI_MAC_FRAME_ERROR_RATIO 0x03030246
    661 #define OID_FDDI_MAC_NOT_COPIED_THRESHOLD 0x03030247
    662 #define OID_FDDI_MAC_NOT_COPIED_RATIO 0x03030248
    663 #define OID_FDDI_MAC_RMT_STATE 0x03030249
    664 #define OID_FDDI_MAC_DA_FLAG 0x0303024a
    665 #define OID_FDDI_MAC_UNDA_FLAG 0x0303024b
    666 #define OID_FDDI_MAC_FRAME_ERROR_FLAG 0x0303024c
    667 #define OID_FDDI_MAC_NOT_COPIED_FLAG 0x0303024d
    668 #define OID_FDDI_MAC_MA_UNITDATA_AVAILABLE 0x0303024e
    669 #define OID_FDDI_MAC_HARDWARE_PRESENT 0x0303024f
    670 #define OID_FDDI_MAC_MA_UNITDATA_ENABLE 0x03030250
    671 #define OID_FDDI_PATH_INDEX 0x03030251
    672 #define OID_FDDI_PATH_RING_LATENCY 0x03030252
    673 #define OID_FDDI_PATH_TRACE_STATUS 0x03030253
    674 #define OID_FDDI_PATH_SBA_PAYLOAD 0x03030254
    675 #define OID_FDDI_PATH_SBA_OVERHEAD 0x03030255
    676 #define OID_FDDI_PATH_CONFIGURATION 0x03030256
    677 #define OID_FDDI_PATH_T_R_MODE 0x03030257
    678 #define OID_FDDI_PATH_SBA_AVAILABLE 0x03030258
    679 #define OID_FDDI_PATH_TVX_LOWER_BOUND 0x03030259
    680 #define OID_FDDI_PATH_T_MAX_LOWER_BOUND 0x0303025a
    681 #define OID_FDDI_PATH_MAX_T_REQ 0x0303025b
    682 #define OID_FDDI_PORT_MY_TYPE 0x0303025c
    683 #define OID_FDDI_PORT_NEIGHBOR_TYPE 0x0303025d
    684 #define OID_FDDI_PORT_CONNECTION_POLICIES 0x0303025e
    685 #define OID_FDDI_PORT_MAC_INDICATED 0x0303025f
    686 #define OID_FDDI_PORT_CURRENT_PATH 0x03030260
    687 #define OID_FDDI_PORT_REQUESTED_PATHS 0x03030261
    688 #define OID_FDDI_PORT_MAC_PLACEMENT 0x03030262
    689 #define OID_FDDI_PORT_AVAILABLE_PATHS 0x03030263
    690 #define OID_FDDI_PORT_MAC_LOOP_TIME 0x03030264
    691 #define OID_FDDI_PORT_PMD_CLASS 0x03030265
    692 #define OID_FDDI_PORT_CONNECTION_CAPABILITIES 0x03030266
    693 #define OID_FDDI_PORT_INDEX 0x03030267
    694 #define OID_FDDI_PORT_MAINT_LS 0x03030268
    695 #define OID_FDDI_PORT_BS_FLAG 0x03030269
    696 #define OID_FDDI_PORT_PC_LS 0x0303026a
    697 #define OID_FDDI_PORT_EB_ERROR_CT 0x0303026b
    698 #define OID_FDDI_PORT_LCT_FAIL_CT 0x0303026c
    699 #define OID_FDDI_PORT_LER_ESTIMATE 0x0303026d
    700 #define OID_FDDI_PORT_LEM_REJECT_CT 0x0303026e
    701 #define OID_FDDI_PORT_LEM_CT 0x0303026f
    702 #define OID_FDDI_PORT_LER_CUTOFF 0x03030270
    703 #define OID_FDDI_PORT_LER_ALARM 0x03030271
    704 #define OID_FDDI_PORT_CONNNECT_STATE 0x03030272
    705 #define OID_FDDI_PORT_PCM_STATE 0x03030273
    706 #define OID_FDDI_PORT_PC_WITHHOLD 0x03030274
    707 #define OID_FDDI_PORT_LER_FLAG 0x03030275
    708 #define OID_FDDI_PORT_HARDWARE_PRESENT 0x03030276
    709 #define OID_FDDI_SMT_STATION_ACTION 0x03030277
    710 #define OID_FDDI_PORT_ACTION 0x03030278
    711 #define OID_FDDI_IF_DESCR 0x03030279
    712 #define OID_FDDI_IF_TYPE 0x0303027a
    713 #define OID_FDDI_IF_MTU 0x0303027b
    714 #define OID_FDDI_IF_SPEED 0x0303027c
    715 #define OID_FDDI_IF_PHYS_ADDRESS 0x0303027d
    716 #define OID_FDDI_IF_ADMIN_STATUS 0x0303027e
    717 #define OID_FDDI_IF_OPER_STATUS 0x0303027f
    718 #define OID_FDDI_IF_LAST_CHANGE 0x03030280
    719 #define OID_FDDI_IF_IN_OCTETS 0x03030281
    720 #define OID_FDDI_IF_IN_UCAST_PKTS 0x03030282
    721 #define OID_FDDI_IF_IN_NUCAST_PKTS 0x03030283
    722 #define OID_FDDI_IF_IN_DISCARDS 0x03030284
    723 #define OID_FDDI_IF_IN_ERRORS 0x03030285
    724 #define OID_FDDI_IF_IN_UNKNOWN_PROTOS 0x03030286
    725 #define OID_FDDI_IF_OUT_OCTETS 0x03030287
    726 #define OID_FDDI_IF_OUT_UCAST_PKTS 0x03030288
    727 #define OID_FDDI_IF_OUT_NUCAST_PKTS 0x03030289
    728 #define OID_FDDI_IF_OUT_DISCARDS 0x0303028a
    729 #define OID_FDDI_IF_OUT_ERRORS 0x0303028b
    730 #define OID_FDDI_IF_OUT_QLEN 0x0303028c
    731 #define OID_FDDI_IF_SPECIFIC 0x0303028d
    732 
    733 #define OID_WAN_PERMANENT_ADDRESS 0x04010101
    734 #define OID_WAN_CURRENT_ADDRESS 0x04010102
    735 #define OID_WAN_QUALITY_OF_SERVICE 0x04010103
    736 #define OID_WAN_PROTOCOL_TYPE 0x04010104
    737 #define OID_WAN_MEDIUM_SUBTYPE 0x04010105
    738 #define OID_WAN_HEADER_FORMAT 0x04010106
    739 
    740 #define OID_WAN_GET_INFO 0x04010107
    741 #define OID_WAN_SET_LINK_INFO 0x04010108
    742 #define OID_WAN_GET_LINK_INFO 0x04010109
    743 #define OID_WAN_LINE_COUNT 0x0401010a
    744 #define OID_WAN_PROTOCOL_CAPS 0x0401010b
    745 
    746 #define OID_WAN_GET_BRIDGE_INFO 0x0401020a
    747 #define OID_WAN_SET_BRIDGE_INFO 0x0401020b
    748 #define OID_WAN_GET_COMP_INFO 0x0401020c
    749 #define OID_WAN_SET_COMP_INFO 0x0401020d
    750 #define OID_WAN_GET_STATS_INFO 0x0401020e
    751 
    752 #define OID_WAN_CO_GET_INFO 0x04010180
    753 #define OID_WAN_CO_SET_LINK_INFO 0x04010181
    754 #define OID_WAN_CO_GET_LINK_INFO 0x04010182
    755 #define OID_WAN_CO_GET_COMP_INFO 0x04010280
    756 #define OID_WAN_CO_SET_COMP_INFO 0x04010281
    757 #define OID_WAN_CO_GET_STATS_INFO 0x04010282
    758 
    759 #define OID_LTALK_CURRENT_NODE_ID 0x05010102
    760 
    761 #define OID_LTALK_IN_BROADCASTS 0x05020101
    762 #define OID_LTALK_IN_LENGTH_ERRORS 0x05020102
    763 
    764 #define OID_LTALK_OUT_NO_HANDLERS 0x05020201
    765 #define OID_LTALK_COLLISIONS 0x05020202
    766 #define OID_LTALK_DEFERS 0x05020203
    767 #define OID_LTALK_NO_DATA_ERRORS 0x05020204
    768 #define OID_LTALK_RANDOM_CTS_ERRORS 0x05020205
    769 #define OID_LTALK_FCS_ERRORS 0x05020206
    770 
    771 #define OID_ARCNET_PERMANENT_ADDRESS 0x06010101
    772 #define OID_ARCNET_CURRENT_ADDRESS 0x06010102
    773 
    774 #define OID_ARCNET_RECONFIGURATIONS 0x06020201
    775 
    776 #define OID_TAPI_ACCEPT 0x07030101
    777 #define OID_TAPI_ANSWER 0x07030102
    778 #define OID_TAPI_CLOSE 0x07030103
    779 #define OID_TAPI_CLOSE_CALL 0x07030104
    780 #define OID_TAPI_CONDITIONAL_MEDIA_DETECTION 0x07030105
    781 #define OID_TAPI_CONFIG_DIALOG 0x07030106
    782 #define OID_TAPI_DEV_SPECIFIC 0x07030107
    783 #define OID_TAPI_DIAL 0x07030108
    784 #define OID_TAPI_DROP 0x07030109
    785 #define OID_TAPI_GET_ADDRESS_CAPS 0x0703010a
    786 #define OID_TAPI_GET_ADDRESS_ID 0x0703010b
    787 #define OID_TAPI_GET_ADDRESS_STATUS 0x0703010c
    788 #define OID_TAPI_GET_CALL_ADDRESS_ID 0x0703010d
    789 #define OID_TAPI_GET_CALL_INFO 0x0703010e
    790 #define OID_TAPI_GET_CALL_STATUS 0x0703010f
    791 #define OID_TAPI_GET_DEV_CAPS 0x07030110
    792 #define OID_TAPI_GET_DEV_CONFIG 0x07030111
    793 #define OID_TAPI_GET_EXTENSION_ID 0x07030112
    794 #define OID_TAPI_GET_ID 0x07030113
    795 #define OID_TAPI_GET_LINE_DEV_STATUS 0x07030114
    796 #define OID_TAPI_MAKE_CALL 0x07030115
    797 #define OID_TAPI_NEGOTIATE_EXT_VERSION 0x07030116
    798 #define OID_TAPI_OPEN 0x07030117
    799 #define OID_TAPI_PROVIDER_INITIALIZE 0x07030118
    800 #define OID_TAPI_PROVIDER_SHUTDOWN 0x07030119
    801 #define OID_TAPI_SECURE_CALL 0x0703011a
    802 #define OID_TAPI_SELECT_EXT_VERSION 0x0703011b
    803 #define OID_TAPI_SEND_USER_USER_INFO 0x0703011c
    804 #define OID_TAPI_SET_APP_SPECIFIC 0x0703011d
    805 #define OID_TAPI_SET_CALL_PARAMS 0x0703011e
    806 #define OID_TAPI_SET_DEFAULT_MEDIA_DETECTION 0x0703011f
    807 #define OID_TAPI_SET_DEV_CONFIG 0x07030120
    808 #define OID_TAPI_SET_MEDIA_MODE 0x07030121
    809 #define OID_TAPI_SET_STATUS_MESSAGES 0x07030122
    810 #define OID_TAPI_GATHER_DIGITS 0x07030123
    811 #define OID_TAPI_MONITOR_DIGITS 0x07030124
    812 
    813 #define OID_ATM_SUPPORTED_VC_RATES 0x08010101
    814 #define OID_ATM_SUPPORTED_SERVICE_CATEGORY 0x08010102
    815 #define OID_ATM_SUPPORTED_AAL_TYPES 0x08010103
    816 #define OID_ATM_HW_CURRENT_ADDRESS 0x08010104
    817 #define OID_ATM_MAX_ACTIVE_VCS 0x08010105
    818 #define OID_ATM_MAX_ACTIVE_VCI_BITS 0x08010106
    819 #define OID_ATM_MAX_ACTIVE_VPI_BITS 0x08010107
    820 #define OID_ATM_MAX_AAL0_PACKET_SIZE 0x08010108
    821 #define OID_ATM_MAX_AAL1_PACKET_SIZE 0x08010109
    822 #define OID_ATM_MAX_AAL34_PACKET_SIZE 0x0801010a
    823 #define OID_ATM_MAX_AAL5_PACKET_SIZE 0x0801010b
    824 
    825 #define OID_ATM_SIGNALING_VPIVCI 0x08010201
    826 #define OID_ATM_ASSIGNED_VPI 0x08010202
    827 #define OID_ATM_ACQUIRE_ACCESS_NET_RESOURCES 0x08010203
    828 #define OID_ATM_RELEASE_ACCESS_NET_RESOURCES 0x08010204
    829 #define OID_ATM_ILMI_VPIVCI 0x08010205
    830 #define OID_ATM_DIGITAL_BROADCAST_VPIVCI 0x08010206
    831 #define OID_ATM_GET_NEAREST_FLOW 0x08010207
    832 #define OID_ATM_ALIGNMENT_REQUIRED 0x08010208
    833 #define OID_ATM_LECS_ADDRESS 0x08010209
    834 #define OID_ATM_SERVICE_ADDRESS 0x0801020a
    835 
    836 #define OID_ATM_CALL_PROCEEDING 0x0801020b
    837 #define OID_ATM_CALL_ALERTING 0x0801020c
    838 #define OID_ATM_PARTY_ALERTING 0x0801020d
    839 #define OID_ATM_CALL_NOTIFY 0x0801020e
    840 
    841 #define OID_ATM_MY_IP_NM_ADDRESS 0x0801020f
    842 
    843 #define OID_ATM_RCV_CELLS_OK 0x08020101
    844 #define OID_ATM_XMIT_CELLS_OK 0x08020102
    845 #define OID_ATM_RCV_CELLS_DROPPED 0x08020103
    846 
    847 #define OID_ATM_RCV_INVALID_VPI_VCI 0x08020201
    848 #define OID_ATM_CELLS_HEC_ERROR 0x08020202
    849 #define OID_ATM_RCV_REASSEMBLY_ERROR 0x08020203
    850 
    851 #define OID_802_11_BSSID 0x0d010101
    852 #define OID_802_11_SSID 0x0d010102
    853 #define OID_802_11_NETWORK_TYPES_SUPPORTED 0x0d010203
    854 #define OID_802_11_NETWORK_TYPE_IN_USE 0x0d010204
    855 #define OID_802_11_TX_POWER_LEVEL 0x0d010205
    856 #define OID_802_11_RSSI 0x0d010206
    857 #define OID_802_11_RSSI_TRIGGER 0x0d010207
    858 #define OID_802_11_INFRASTRUCTURE_MODE 0x0d010108
    859 #define OID_802_11_FRAGMENTATION_THRESHOLD 0x0d010209
    860 #define OID_802_11_RTS_THRESHOLD 0x0d01020a
    861 #define OID_802_11_NUMBER_OF_ANTENNAS 0x0d01020b
    862 #define OID_802_11_RX_ANTENNA_SELECTED 0x0d01020c
    863 #define OID_802_11_TX_ANTENNA_SELECTED 0x0d01020d
    864 #define OID_802_11_SUPPORTED_RATES 0x0d01020e
    865 #define OID_802_11_DESIRED_RATES 0x0d010210
    866 #define OID_802_11_CONFIGURATION 0x0d010211
    867 #define OID_802_11_STATISTICS 0x0d020212
    868 #define OID_802_11_ADD_WEP 0x0d010113
    869 #define OID_802_11_REMOVE_WEP 0x0d010114
    870 #define OID_802_11_DISASSOCIATE 0x0d010115
    871 #define OID_802_11_POWER_MODE 0x0d010216
    872 #define OID_802_11_BSSID_LIST 0x0d010217
    873 #define OID_802_11_AUTHENTICATION_MODE 0x0d010118
    874 #define OID_802_11_PRIVACY_FILTER 0x0d010119
    875 #define OID_802_11_BSSID_LIST_SCAN 0x0d01011a
    876 #define OID_802_11_WEP_STATUS 0x0d01011b
    877 
    878 #define OID_802_11_ENCRYPTION_STATUS OID_802_11_WEP_STATUS
    879 #define OID_802_11_RELOAD_DEFAULTS 0x0d01011c
    880 
    881 #define OID_802_11_ADD_KEY 0x0d01011d
    882 #define OID_802_11_REMOVE_KEY 0x0d01011e
    883 #define OID_802_11_ASSOCIATION_INFORMATION 0x0d01011f
    884 #define OID_802_11_TEST 0x0d010120
    885 #define OID_802_11_MEDIA_STREAM_MODE 0x0d010121
    886 #define OID_802_11_CAPABILITY 0x0d010122
    887 #define OID_802_11_PMKID 0x0d010123
    888 #define OID_802_11_NON_BCAST_SSID_LIST 0x0d010124
    889 #define OID_802_11_RADIO_STATUS 0x0d010125
    890 
    891 #define NDIS_ETH_TYPE_IPV4 0x0800
    892 #define NDIS_ETH_TYPE_ARP 0x0806
    893 #define NDIS_ETH_TYPE_IPV6 0x86dd
    894 #define NDIS_ETH_TYPE_802_1X 0x888e
    895 #define NDIS_ETH_TYPE_802_1Q 0x8100
    896 #define NDIS_ETH_TYPE_SLOW_PROTOCOL 0x8809
    897 
    898 #define NDIS_802_11_LENGTH_SSID 32
    899 #define NDIS_802_11_LENGTH_RATES 8
    900 #define NDIS_802_11_LENGTH_RATES_EX 16
    901 
    902 #define NDIS_802_11_AUTH_REQUEST_REAUTH 0x01
    903 #define NDIS_802_11_AUTH_REQUEST_KEYUPDATE 0x02
    904 #define NDIS_802_11_AUTH_REQUEST_PAIRWISE_ERROR 0x06
    905 #define NDIS_802_11_AUTH_REQUEST_GROUP_ERROR 0x0e
    906 #define NDIS_802_11_AUTH_REQUEST_AUTH_FIELDS 0x0f
    907 
    908 #define NDIS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLED 0x01
    909 
    910 #define NDIS_802_11_AI_REQFI_CAPABILITIES 1
    911 #define NDIS_802_11_AI_REQFI_LISTENINTERVAL 2
    912 #define NDIS_802_11_AI_REQFI_CURRENTAPADDRESS 4
    913 
    914 #define NDIS_802_11_AI_RESFI_CAPABILITIES 1
    915 #define NDIS_802_11_AI_RESFI_STATUSCODE 2
    916 #define NDIS_802_11_AI_RESFI_ASSOCIATIONID 4
    917 
    918   typedef enum _NDIS_802_11_STATUS_TYPE {
    919     Ndis802_11StatusType_Authentication,
    920     Ndis802_11StatusType_MediaStreamMode,
    921     Ndis802_11StatusType_PMKID_CandidateList,
    922     Ndis802_11StatusTypeMax
    923   } NDIS_802_11_STATUS_TYPE, *PNDIS_802_11_STATUS_TYPE;
    924 
    925   typedef UCHAR NDIS_802_11_MAC_ADDRESS[6];
    926 
    927   typedef struct _NDIS_802_11_STATUS_INDICATION {
    928     NDIS_802_11_STATUS_TYPE StatusType;
    929   } NDIS_802_11_STATUS_INDICATION, *PNDIS_802_11_STATUS_INDICATION;
    930 
    931   typedef struct _NDIS_802_11_AUTHENTICATION_REQUEST {
    932     ULONG Length;
    933     NDIS_802_11_MAC_ADDRESS Bssid;
    934     ULONG Flags;
    935   } NDIS_802_11_AUTHENTICATION_REQUEST, *PNDIS_802_11_AUTHENTICATION_REQUEST;
    936 
    937   typedef struct _PMKID_CANDIDATE {
    938     NDIS_802_11_MAC_ADDRESS BSSID;
    939     ULONG Flags;
    940   } PMKID_CANDIDATE, *PPMKID_CANDIDATE;
    941 
    942   typedef struct _NDIS_802_11_PMKID_CANDIDATE_LIST {
    943     ULONG Version;
    944     ULONG NumCandidates;
    945     PMKID_CANDIDATE CandidateList[1];
    946   } NDIS_802_11_PMKID_CANDIDATE_LIST, *PNDIS_802_11_PMKID_CANDIDATE_LIST;
    947 
    948   typedef enum _NDIS_802_11_NETWORK_TYPE {
    949     Ndis802_11FH,
    950     Ndis802_11DS,
    951     Ndis802_11OFDM5,
    952     Ndis802_11OFDM24,
    953     Ndis802_11Automode,
    954     Ndis802_11NetworkTypeMax
    955   } NDIS_802_11_NETWORK_TYPE, *PNDIS_802_11_NETWORK_TYPE;
    956 
    957   typedef struct _NDIS_802_11_NETWORK_TYPE_LIST {
    958     ULONG NumberOfItems;
    959     NDIS_802_11_NETWORK_TYPE NetworkType [1];
    960   } NDIS_802_11_NETWORK_TYPE_LIST, *PNDIS_802_11_NETWORK_TYPE_LIST;
    961 
    962   typedef enum _NDIS_802_11_POWER_MODE {
    963     Ndis802_11PowerModeCAM,
    964     Ndis802_11PowerModeMAX_PSP,
    965     Ndis802_11PowerModeFast_PSP,
    966     Ndis802_11PowerModeMax
    967   } NDIS_802_11_POWER_MODE, *PNDIS_802_11_POWER_MODE;
    968 
    969   typedef ULONG NDIS_802_11_TX_POWER_LEVEL;
    970   typedef LONG NDIS_802_11_RSSI;
    971 
    972   typedef struct _NDIS_802_11_CONFIGURATION_FH {
    973     ULONG Length;
    974     ULONG HopPattern;
    975     ULONG HopSet;
    976     ULONG DwellTime;
    977   } NDIS_802_11_CONFIGURATION_FH, *PNDIS_802_11_CONFIGURATION_FH;
    978 
    979   typedef struct _NDIS_802_11_CONFIGURATION {
    980     ULONG Length;
    981     ULONG BeaconPeriod;
    982     ULONG ATIMWindow;
    983     ULONG DSConfig;
    984     NDIS_802_11_CONFIGURATION_FH FHConfig;
    985   } NDIS_802_11_CONFIGURATION, *PNDIS_802_11_CONFIGURATION;
    986 
    987   typedef struct _NDIS_802_11_STATISTICS {
    988     ULONG Length;
    989     LARGE_INTEGER TransmittedFragmentCount;
    990     LARGE_INTEGER MulticastTransmittedFrameCount;
    991     LARGE_INTEGER FailedCount;
    992     LARGE_INTEGER RetryCount;
    993     LARGE_INTEGER MultipleRetryCount;
    994     LARGE_INTEGER RTSSuccessCount;
    995     LARGE_INTEGER RTSFailureCount;
    996     LARGE_INTEGER ACKFailureCount;
    997     LARGE_INTEGER FrameDuplicateCount;
    998     LARGE_INTEGER ReceivedFragmentCount;
    999     LARGE_INTEGER MulticastReceivedFrameCount;
   1000     LARGE_INTEGER FCSErrorCount;
   1001     LARGE_INTEGER TKIPLocalMICFailures;
   1002     LARGE_INTEGER TKIPICVErrorCount;
   1003     LARGE_INTEGER TKIPCounterMeasuresInvoked;
   1004     LARGE_INTEGER TKIPReplays;
   1005     LARGE_INTEGER CCMPFormatErrors;
   1006     LARGE_INTEGER CCMPReplays;
   1007     LARGE_INTEGER CCMPDecryptErrors;
   1008     LARGE_INTEGER FourWayHandshakeFailures;
   1009     LARGE_INTEGER WEPUndecryptableCount;
   1010     LARGE_INTEGER WEPICVErrorCount;
   1011     LARGE_INTEGER DecryptSuccessCount;
   1012     LARGE_INTEGER DecryptFailureCount;
   1013   } NDIS_802_11_STATISTICS, *PNDIS_802_11_STATISTICS;
   1014 
   1015   typedef ULONG NDIS_802_11_KEY_INDEX;
   1016   typedef ULONGLONG NDIS_802_11_KEY_RSC;
   1017 
   1018   typedef struct _NDIS_802_11_KEY {
   1019     ULONG Length;
   1020     ULONG KeyIndex;
   1021     ULONG KeyLength;
   1022     NDIS_802_11_MAC_ADDRESS BSSID;
   1023     NDIS_802_11_KEY_RSC KeyRSC;
   1024     UCHAR KeyMaterial[1];
   1025   } NDIS_802_11_KEY, *PNDIS_802_11_KEY;
   1026 
   1027   typedef struct _NDIS_802_11_REMOVE_KEY {
   1028     ULONG Length;
   1029     ULONG KeyIndex;
   1030     NDIS_802_11_MAC_ADDRESS BSSID;
   1031   } NDIS_802_11_REMOVE_KEY, *PNDIS_802_11_REMOVE_KEY;
   1032   typedef struct _NDIS_802_11_WEP {
   1033     ULONG Length;
   1034     ULONG KeyIndex;
   1035     ULONG KeyLength;
   1036     UCHAR KeyMaterial[1];
   1037   } NDIS_802_11_WEP, *PNDIS_802_11_WEP;
   1038 
   1039   typedef enum _NDIS_802_11_NETWORK_INFRASTRUCTURE {
   1040     Ndis802_11IBSS,
   1041     Ndis802_11Infrastructure,
   1042     Ndis802_11AutoUnknown,
   1043     Ndis802_11InfrastructureMax
   1044   } NDIS_802_11_NETWORK_INFRASTRUCTURE, *PNDIS_802_11_NETWORK_INFRASTRUCTURE;
   1045 
   1046   typedef enum _NDIS_802_11_AUTHENTICATION_MODE {
   1047     Ndis802_11AuthModeOpen,
   1048     Ndis802_11AuthModeShared,
   1049     Ndis802_11AuthModeAutoSwitch,
   1050     Ndis802_11AuthModeWPA,
   1051     Ndis802_11AuthModeWPAPSK,
   1052     Ndis802_11AuthModeWPANone,
   1053     Ndis802_11AuthModeWPA2,
   1054     Ndis802_11AuthModeWPA2PSK,
   1055     Ndis802_11AuthModeMax
   1056   } NDIS_802_11_AUTHENTICATION_MODE, *PNDIS_802_11_AUTHENTICATION_MODE;
   1057 
   1058   typedef UCHAR NDIS_802_11_RATES[NDIS_802_11_LENGTH_RATES];
   1059   typedef UCHAR NDIS_802_11_RATES_EX[NDIS_802_11_LENGTH_RATES_EX];
   1060 
   1061   typedef struct _NDIS_802_11_SSID {
   1062     ULONG SsidLength;
   1063     UCHAR Ssid[NDIS_802_11_LENGTH_SSID];
   1064   } NDIS_802_11_SSID, *PNDIS_802_11_SSID;
   1065 
   1066   typedef struct _NDIS_WLAN_BSSID {
   1067     ULONG Length;
   1068     NDIS_802_11_MAC_ADDRESS MacAddress;
   1069     UCHAR Reserved[2];
   1070     NDIS_802_11_SSID Ssid;
   1071     ULONG Privacy;
   1072     NDIS_802_11_RSSI Rssi;
   1073     NDIS_802_11_NETWORK_TYPE NetworkTypeInUse;
   1074     NDIS_802_11_CONFIGURATION Configuration;
   1075     NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode;
   1076     NDIS_802_11_RATES SupportedRates;
   1077   } NDIS_WLAN_BSSID, *PNDIS_WLAN_BSSID;
   1078 
   1079   typedef struct _NDIS_802_11_BSSID_LIST {
   1080     ULONG NumberOfItems;
   1081     NDIS_WLAN_BSSID Bssid[1];
   1082   } NDIS_802_11_BSSID_LIST, *PNDIS_802_11_BSSID_LIST;
   1083 
   1084   typedef struct _NDIS_WLAN_BSSID_EX {
   1085     ULONG Length;
   1086     NDIS_802_11_MAC_ADDRESS MacAddress;
   1087     UCHAR Reserved[2];
   1088     NDIS_802_11_SSID Ssid;
   1089     ULONG Privacy;
   1090     NDIS_802_11_RSSI Rssi;
   1091     NDIS_802_11_NETWORK_TYPE NetworkTypeInUse;
   1092     NDIS_802_11_CONFIGURATION Configuration;
   1093     NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode;
   1094     NDIS_802_11_RATES_EX SupportedRates;
   1095     ULONG IELength;
   1096     UCHAR IEs[1];
   1097   } NDIS_WLAN_BSSID_EX, *PNDIS_WLAN_BSSID_EX;
   1098 
   1099   typedef struct _NDIS_802_11_BSSID_LIST_EX {
   1100     ULONG NumberOfItems;
   1101     NDIS_WLAN_BSSID_EX Bssid[1];
   1102   } NDIS_802_11_BSSID_LIST_EX, *PNDIS_802_11_BSSID_LIST_EX;
   1103 
   1104   typedef struct _NDIS_802_11_FIXED_IEs {
   1105     UCHAR Timestamp[8];
   1106     USHORT BeaconInterval;
   1107     USHORT Capabilities;
   1108   } NDIS_802_11_FIXED_IEs, *PNDIS_802_11_FIXED_IEs;
   1109 
   1110   typedef struct _NDIS_802_11_VARIABLE_IEs {
   1111     UCHAR ElementID;
   1112     UCHAR Length;
   1113     UCHAR data[1];
   1114   } NDIS_802_11_VARIABLE_IEs, *PNDIS_802_11_VARIABLE_IEs;
   1115 
   1116   typedef ULONG NDIS_802_11_FRAGMENTATION_THRESHOLD;
   1117   typedef ULONG NDIS_802_11_RTS_THRESHOLD;
   1118   typedef ULONG NDIS_802_11_ANTENNA;
   1119 
   1120   typedef enum _NDIS_802_11_PRIVACY_FILTER {
   1121     Ndis802_11PrivFilterAcceptAll,
   1122     Ndis802_11PrivFilter8021xWEP
   1123   } NDIS_802_11_PRIVACY_FILTER, *PNDIS_802_11_PRIVACY_FILTER;
   1124 
   1125   typedef enum _NDIS_802_11_WEP_STATUS {
   1126     Ndis802_11WEPEnabled,
   1127     Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled,
   1128     Ndis802_11WEPDisabled,
   1129     Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled,
   1130     Ndis802_11WEPKeyAbsent,
   1131     Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent,
   1132     Ndis802_11WEPNotSupported,
   1133     Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported,
   1134     Ndis802_11Encryption2Enabled,
   1135     Ndis802_11Encryption2KeyAbsent,
   1136     Ndis802_11Encryption3Enabled,
   1137     Ndis802_11Encryption3KeyAbsent
   1138   } NDIS_802_11_WEP_STATUS, *PNDIS_802_11_WEP_STATUS, NDIS_802_11_ENCRYPTION_STATUS, *PNDIS_802_11_ENCRYPTION_STATUS;
   1139 
   1140   typedef enum _NDIS_802_11_RELOAD_DEFAULTS {
   1141     Ndis802_11ReloadWEPKeys
   1142   } NDIS_802_11_RELOAD_DEFAULTS, *PNDIS_802_11_RELOAD_DEFAULTS;
   1143 
   1144   typedef struct _NDIS_802_11_AI_REQFI {
   1145     USHORT Capabilities;
   1146     USHORT ListenInterval;
   1147     NDIS_802_11_MAC_ADDRESS CurrentAPAddress;
   1148   } NDIS_802_11_AI_REQFI, *PNDIS_802_11_AI_REQFI;
   1149 
   1150   typedef struct _NDIS_802_11_AI_RESFI {
   1151     USHORT Capabilities;
   1152     USHORT StatusCode;
   1153     USHORT AssociationId;
   1154   } NDIS_802_11_AI_RESFI, *PNDIS_802_11_AI_RESFI;
   1155 
   1156   typedef struct _NDIS_802_11_ASSOCIATION_INFORMATION {
   1157     ULONG Length;
   1158     USHORT AvailableRequestFixedIEs;
   1159     NDIS_802_11_AI_REQFI RequestFixedIEs;
   1160     ULONG RequestIELength;
   1161     ULONG OffsetRequestIEs;
   1162     USHORT AvailableResponseFixedIEs;
   1163     NDIS_802_11_AI_RESFI ResponseFixedIEs;
   1164     ULONG ResponseIELength;
   1165     ULONG OffsetResponseIEs;
   1166   } NDIS_802_11_ASSOCIATION_INFORMATION, *PNDIS_802_11_ASSOCIATION_INFORMATION;
   1167 
   1168   typedef struct _NDIS_802_11_AUTHENTICATION_EVENT {
   1169     NDIS_802_11_STATUS_INDICATION Status;
   1170     NDIS_802_11_AUTHENTICATION_REQUEST Request[1];
   1171   } NDIS_802_11_AUTHENTICATION_EVENT, *PNDIS_802_11_AUTHENTICATION_EVENT;
   1172 
   1173   typedef struct _NDIS_802_11_TEST {
   1174     ULONG Length;
   1175     ULONG Type;
   1176     __C89_NAMELESS union {
   1177       NDIS_802_11_AUTHENTICATION_EVENT AuthenticationEvent;
   1178       NDIS_802_11_RSSI RssiTrigger;
   1179     };
   1180   } NDIS_802_11_TEST, *PNDIS_802_11_TEST;
   1181 
   1182   typedef enum _NDIS_802_11_MEDIA_STREAM_MODE {
   1183     Ndis802_11MediaStreamOff,
   1184     Ndis802_11MediaStreamOn,
   1185   } NDIS_802_11_MEDIA_STREAM_MODE, *PNDIS_802_11_MEDIA_STREAM_MODE;
   1186 
   1187   typedef UCHAR NDIS_802_11_PMKID_VALUE[16];
   1188 
   1189   typedef struct _BSSID_INFO {
   1190     NDIS_802_11_MAC_ADDRESS BSSID;
   1191     NDIS_802_11_PMKID_VALUE PMKID;
   1192   } BSSID_INFO, *PBSSID_INFO;
   1193 
   1194   typedef struct _NDIS_802_11_PMKID {
   1195     ULONG Length;
   1196     ULONG BSSIDInfoCount;
   1197     BSSID_INFO BSSIDInfo[1];
   1198   } NDIS_802_11_PMKID, *PNDIS_802_11_PMKID;
   1199 
   1200   typedef struct _NDIS_802_11_AUTHENTICATION_ENCRYPTION {
   1201     NDIS_802_11_AUTHENTICATION_MODE AuthModeSupported;
   1202     NDIS_802_11_ENCRYPTION_STATUS EncryptStatusSupported;
   1203   } NDIS_802_11_AUTHENTICATION_ENCRYPTION, *PNDIS_802_11_AUTHENTICATION_ENCRYPTION;
   1204 
   1205   typedef struct _NDIS_802_11_CAPABILITY {
   1206     ULONG Length;
   1207     ULONG Version;
   1208     ULONG NoOfPMKIDs;
   1209     ULONG NoOfAuthEncryptPairsSupported;
   1210     NDIS_802_11_AUTHENTICATION_ENCRYPTION AuthenticationEncryptionSupported[1];
   1211   } NDIS_802_11_CAPABILITY, *PNDIS_802_11_CAPABILITY;
   1212 
   1213   typedef struct _NDIS_802_11_NON_BCAST_SSID_LIST {
   1214     ULONG NumberOfItems;
   1215     NDIS_802_11_SSID Non_Bcast_Ssid[1];
   1216   } NDIS_802_11_NON_BCAST_SSID_LIST, *PNDIS_802_11_NON_BCAST_SSID_LIST;
   1217 
   1218   typedef enum _NDIS_802_11_RADIO_STATUS {
   1219     Ndis802_11RadioStatusOn,
   1220     Ndis802_11RadioStatusHardwareOff,
   1221     Ndis802_11RadioStatusSoftwareOff,
   1222     Ndis802_11RadioStatusHardwareSoftwareOff,
   1223     Ndis802_11RadioStatusMax
   1224   } NDIS_802_11_RADIO_STATUS, *PNDIS_802_11_RADIO_STATUS;
   1225 
   1226 #define OID_IRDA_RECEIVING 0x0a010100
   1227 #define OID_IRDA_TURNAROUND_TIME 0x0a010101
   1228 #define OID_IRDA_SUPPORTED_SPEEDS 0x0a010102
   1229 #define OID_IRDA_LINK_SPEED 0x0a010103
   1230 #define OID_IRDA_MEDIA_BUSY 0x0a010104
   1231 
   1232 #define OID_IRDA_EXTRA_RCV_BOFS 0x0a010200
   1233 #define OID_IRDA_RATE_SNIFF 0x0a010201
   1234 #define OID_IRDA_UNICAST_LIST 0x0a010202
   1235 #define OID_IRDA_MAX_UNICAST_LIST_SIZE 0x0a010203
   1236 #define OID_IRDA_MAX_RECEIVE_WINDOW_SIZE 0x0a010204
   1237 #define OID_IRDA_MAX_SEND_WINDOW_SIZE 0x0a010205
   1238 #define OID_IRDA_RESERVED1 0x0a01020a
   1239 #define OID_IRDA_RESERVED2 0x0a01020f
   1240 
   1241 #define OID_1394_LOCAL_NODE_INFO 0x0c010101
   1242 #define OID_1394_VC_INFO 0x0c010102
   1243 
   1244 #define OID_CO_ADD_PVC 0xfe000001
   1245 #define OID_CO_DELETE_PVC 0xfe000002
   1246 #define OID_CO_GET_CALL_INFORMATION 0xfe000003
   1247 #define OID_CO_ADD_ADDRESS 0xfe000004
   1248 #define OID_CO_DELETE_ADDRESS 0xfe000005
   1249 #define OID_CO_GET_ADDRESSES 0xfe000006
   1250 #define OID_CO_ADDRESS_CHANGE 0xfe000007
   1251 #define OID_CO_SIGNALING_ENABLED 0xfe000008
   1252 #define OID_CO_SIGNALING_DISABLED 0xfe000009
   1253 #define OID_CO_AF_CLOSE 0xfe00000a
   1254 
   1255 #define OID_CO_TAPI_CM_CAPS 0xfe001001
   1256 #define OID_CO_TAPI_LINE_CAPS 0xfe001002
   1257 #define OID_CO_TAPI_ADDRESS_CAPS 0xfe001003
   1258 #define OID_CO_TAPI_TRANSLATE_TAPI_CALLPARAMS 0xfe001004
   1259 #define OID_CO_TAPI_TRANSLATE_NDIS_CALLPARAMS 0xfe001005
   1260 #define OID_CO_TAPI_TRANSLATE_TAPI_SAP 0xfe001006
   1261 #define OID_CO_TAPI_GET_CALL_DIAGNOSTICS 0xfe001007
   1262 #define OID_CO_TAPI_REPORT_DIGITS 0xfe001008
   1263 #define OID_CO_TAPI_DONT_REPORT_DIGITS 0xfe001009
   1264 
   1265 #define OID_PNP_CAPABILITIES 0xfd010100
   1266 #define OID_PNP_SET_POWER 0xfd010101
   1267 #define OID_PNP_QUERY_POWER 0xfd010102
   1268 #define OID_PNP_ADD_WAKE_UP_PATTERN 0xfd010103
   1269 #define OID_PNP_REMOVE_WAKE_UP_PATTERN 0xfd010104
   1270 #define OID_PNP_WAKE_UP_PATTERN_LIST 0xfd010105
   1271 #define OID_PNP_ENABLE_WAKE_UP 0xfd010106
   1272 
   1273 #define OID_PNP_WAKE_UP_OK 0xfd020200
   1274 #define OID_PNP_WAKE_UP_ERROR 0xfd020201
   1275 
   1276 #if (NTDDI_VERSION >= 0x06010000 || NDIS_SUPPORT_NDIS620)
   1277 #define OID_PM_CURRENT_CAPABILITIES 0xfd010107
   1278 #define OID_PM_HARDWARE_CAPABILITIES 0xfd010108
   1279 #define OID_PM_PARAMETERS 0xfd010109
   1280 #define OID_PM_ADD_WOL_PATTERN 0xfd01010a
   1281 #define OID_PM_REMOVE_WOL_PATTERN 0xfd01010b
   1282 #define OID_PM_WOL_PATTERN_LIST 0xfd01010c
   1283 #define OID_PM_ADD_PROTOCOL_OFFLOAD 0xfd01010d
   1284 #define OID_PM_GET_PROTOCOL_OFFLOAD 0xfd01010e
   1285 #define OID_PM_REMOVE_PROTOCOL_OFFLOAD 0xfd01010f
   1286 #define OID_PM_PROTOCOL_OFFLOAD_LIST 0xfd010110
   1287 #define OID_PM_RESERVED_1 0xfd010111
   1288 
   1289 #define OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES 0x00010221
   1290 #define OID_RECEIVE_FILTER_GLOBAL_PARAMETERS 0x00010222
   1291 #define OID_RECEIVE_FILTER_ALLOCATE_QUEUE 0x00010223
   1292 #define OID_RECEIVE_FILTER_FREE_QUEUE 0x00010224
   1293 #define OID_RECEIVE_FILTER_ENUM_QUEUES 0x00010225
   1294 #define OID_RECEIVE_FILTER_QUEUE_PARAMETERS 0x00010226
   1295 #define OID_RECEIVE_FILTER_SET_FILTER 0x00010227
   1296 #define OID_RECEIVE_FILTER_CLEAR_FILTER 0x00010228
   1297 #define OID_RECEIVE_FILTER_ENUM_FILTERS 0x00010229
   1298 #define OID_RECEIVE_FILTER_PARAMETERS 0x0001022a
   1299 #define OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE 0x0001022b
   1300 #define OID_RECEIVE_FILTER_CURRENT_CAPABILITIES 0x0001022d
   1301 #define OID_NIC_SWITCH_HARDWARE_CAPABILITIES 0x0001022e
   1302 #define OID_NIC_SWITCH_CURRENT_CAPABILITIES 0x0001022f
   1303 #if NDIS_SUPPORT_NDIS630
   1304 #define OID_RECEIVE_FILTER_MOVE_FILTER 0x00010230
   1305 #endif
   1306 #define OID_VLAN_RESERVED1 0x00010231
   1307 #define OID_VLAN_RESERVED2 0x00010232
   1308 #define OID_VLAN_RESERVED3 0x00010233
   1309 #define OID_VLAN_RESERVED4 0x00010234
   1310 #if NDIS_SUPPORT_NDIS630
   1311 #define OID_PACKET_COALESCING_FILTER_MATCH_COUNT 0x00010235
   1312 #endif
   1313 #endif
   1314 
   1315 #if NTDDI_VERSION >= 0x06020000 || NDIS_SUPPORT_NDIS630
   1316 #define OID_NIC_SWITCH_CREATE_SWITCH 0x00010237
   1317 #define OID_NIC_SWITCH_PARAMETERS 0x00010238
   1318 #define OID_NIC_SWITCH_DELETE_SWITCH 0x00010239
   1319 #define OID_NIC_SWITCH_ENUM_SWITCHES 0x00010240
   1320 #define OID_NIC_SWITCH_CREATE_VPORT 0x00010241
   1321 #define OID_NIC_SWITCH_VPORT_PARAMETERS 0x00010242
   1322 #define OID_NIC_SWITCH_ENUM_VPORTS 0x00010243
   1323 #define OID_NIC_SWITCH_DELETE_VPORT 0x00010244
   1324 #define OID_NIC_SWITCH_ALLOCATE_VF 0x00010245
   1325 #define OID_NIC_SWITCH_FREE_VF 0x00010246
   1326 #define OID_NIC_SWITCH_VF_PARAMETERS 0x00010247
   1327 #define OID_NIC_SWITCH_ENUM_VFS 0x00010248
   1328 
   1329 #define OID_SRIOV_HARDWARE_CAPABILITIES 0x00010249
   1330 #define OID_SRIOV_CURRENT_CAPABILITIES 0x00010250
   1331 #define OID_SRIOV_READ_VF_CONFIG_SPACE 0x00010251
   1332 #define OID_SRIOV_WRITE_VF_CONFIG_SPACE 0x00010252
   1333 #define OID_SRIOV_READ_VF_CONFIG_BLOCK 0x00010253
   1334 #define OID_SRIOV_WRITE_VF_CONFIG_BLOCK 0x00010254
   1335 #define OID_SRIOV_RESET_VF 0x00010255
   1336 #define OID_SRIOV_SET_VF_POWER_STATE 0x00010256
   1337 #define OID_SRIOV_VF_VENDOR_DEVICE_ID 0x00010257
   1338 #define OID_SRIOV_PROBED_BARS 0x00010258
   1339 #define OID_SRIOV_BAR_RESOURCES 0x00010259
   1340 #define OID_SRIOV_PF_LUID 0x00010260
   1341 
   1342 #define OID_SRIOV_CONFIG_STATE 0x00010261
   1343 #define OID_SRIOV_VF_SERIAL_NUMBER 0x00010262
   1344 #define OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK 0x00010269
   1345 
   1346 #define OID_SWITCH_PROPERTY_ADD 0x00010263
   1347 #define OID_SWITCH_PROPERTY_UPDATE 0x00010264
   1348 #define OID_SWITCH_PROPERTY_DELETE 0x00010265
   1349 #define OID_SWITCH_PROPERTY_ENUM 0x00010266
   1350 #define OID_SWITCH_FEATURE_STATUS_QUERY 0x00010267
   1351 
   1352 #define OID_SWITCH_NIC_REQUEST 0x00010270
   1353 #define OID_SWITCH_PORT_PROPERTY_ADD 0x00010271
   1354 #define OID_SWITCH_PORT_PROPERTY_UPDATE 0x00010272
   1355 #define OID_SWITCH_PORT_PROPERTY_DELETE 0x00010273
   1356 #define OID_SWITCH_PORT_PROPERTY_ENUM 0x00010274
   1357 #define OID_SWITCH_PARAMETERS 0x00010275
   1358 #define OID_SWITCH_PORT_ARRAY 0x00010276
   1359 #define OID_SWITCH_NIC_ARRAY 0x00010277
   1360 #define OID_SWITCH_PORT_CREATE 0x00010278
   1361 #define OID_SWITCH_PORT_DELETE 0x00010279
   1362 #define OID_SWITCH_NIC_CREATE 0x0001027a
   1363 #define OID_SWITCH_NIC_CONNECT 0x0001027b
   1364 #define OID_SWITCH_NIC_DISCONNECT 0x0001027c
   1365 #define OID_SWITCH_NIC_DELETE 0x0001027d
   1366 #define OID_SWITCH_PORT_FEATURE_STATUS_QUERY 0x0001027e
   1367 #define OID_SWITCH_PORT_TEARDOWN 0x0001027f
   1368 #define OID_SWITCH_NIC_SAVE 0x00010290
   1369 #define OID_SWITCH_NIC_SAVE_COMPLETE 0x00010291
   1370 #define OID_SWITCH_NIC_RESTORE 0x00010292
   1371 #define OID_SWITCH_NIC_RESTORE_COMPLETE 0x00010293
   1372 #define OID_SWITCH_NIC_UPDATED 0x00010294
   1373 #define OID_SWITCH_PORT_UPDATED 0x00010295
   1374 #endif
   1375 
   1376 #define NDIS_PNP_WAKE_UP_MAGIC_PACKET 0x00000001
   1377 #define NDIS_PNP_WAKE_UP_PATTERN_MATCH 0x00000002
   1378 #define NDIS_PNP_WAKE_UP_LINK_CHANGE 0x00000004
   1379 
   1380 #define OID_TCP_TASK_OFFLOAD 0xfc010201
   1381 #define OID_TCP_TASK_IPSEC_ADD_SA 0xfc010202
   1382 #define OID_TCP_TASK_IPSEC_DELETE_SA 0xfc010203
   1383 #define OID_TCP_SAN_SUPPORT 0xfc010204
   1384 #define OID_TCP_TASK_IPSEC_ADD_UDPESP_SA 0xfc010205
   1385 #define OID_TCP_TASK_IPSEC_DELETE_UDPESP_SA 0xfc010206
   1386 #define OID_TCP4_OFFLOAD_STATS 0xfc010207
   1387 #define OID_TCP6_OFFLOAD_STATS 0xfc010208
   1388 #define OID_IP4_OFFLOAD_STATS 0xfc010209
   1389 #define OID_IP6_OFFLOAD_STATS 0xfc01020a
   1390 
   1391 #define OID_TCP_OFFLOAD_CURRENT_CONFIG 0xfc01020b
   1392 #define OID_TCP_OFFLOAD_PARAMETERS 0xfc01020c
   1393 #define OID_TCP_OFFLOAD_HARDWARE_CAPABILITIES 0xfc01020d
   1394 #define OID_TCP_CONNECTION_OFFLOAD_CURRENT_CONFIG 0xfc01020e
   1395 #define OID_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES 0xfc01020f
   1396 #define OID_OFFLOAD_ENCAPSULATION 0x0101010a
   1397 
   1398 #if NDIS_SUPPORT_NDIS61
   1399 #define OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA 0xfc030202
   1400 #define OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA 0xfc030203
   1401 #define OID_TCP_TASK_IPSEC_OFFLOAD_V2_UPDATE_SA 0xfc030204
   1402 #endif
   1403 #if NDIS_SUPPORT_NDIS630
   1404 #define OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA_EX 0xfc030205
   1405 #endif
   1406 
   1407 #define OID_FFP_SUPPORT 0xfc010210
   1408 #define OID_FFP_FLUSH 0xfc010211
   1409 #define OID_FFP_CONTROL 0xfc010212
   1410 #define OID_FFP_PARAMS 0xfc010213
   1411 #define OID_FFP_DATA 0xfc010214
   1412 
   1413 #define OID_FFP_DRIVER_STATS 0xfc020210
   1414 #define OID_FFP_ADAPTER_STATS 0xfc020211
   1415 
   1416 #define OID_TCP_CONNECTION_OFFLOAD_PARAMETERS 0xfc030201
   1417 
   1418 #if NTDDI_VERSION >= 0x06010000 || NDIS_SUPPORT_NDIS620
   1419 #define OID_TUNNEL_INTERFACE_SET_OID 0x0f010106
   1420 #define OID_TUNNEL_INTERFACE_RELEASE_OID 0x0f010107
   1421 #endif
   1422 
   1423 #define OID_QOS_RESERVED1 0xfb010100
   1424 #define OID_QOS_RESERVED2 0xfb010101
   1425 #define OID_QOS_RESERVED3 0xfb010102
   1426 #define OID_QOS_RESERVED4 0xfb010103
   1427 #define OID_QOS_RESERVED5 0xfb010104
   1428 #define OID_QOS_RESERVED6 0xfb010105
   1429 #define OID_QOS_RESERVED7 0xfb010106
   1430 #define OID_QOS_RESERVED8 0xfb010107
   1431 #define OID_QOS_RESERVED9 0xfb010108
   1432 #define OID_QOS_RESERVED10 0xfb010109
   1433 #define OID_QOS_RESERVED11 0xfb01010a
   1434 #define OID_QOS_RESERVED12 0xfb01010b
   1435 #define OID_QOS_RESERVED13 0xfb01010c
   1436 #define OID_QOS_RESERVED14 0xfb01010d
   1437 #define OID_QOS_RESERVED15 0xfb01010e
   1438 #define OID_QOS_RESERVED16 0xfb01010f
   1439 #define OID_QOS_RESERVED17 0xfb010110
   1440 #define OID_QOS_RESERVED18 0xfb010111
   1441 #define OID_QOS_RESERVED19 0xfb010112
   1442 #define OID_QOS_RESERVED20 0xfb010113
   1443 
   1444 #define OFFLOAD_MAX_SAS 3
   1445 
   1446 #define OFFLOAD_INBOUND_SA 0x0001
   1447 #define OFFLOAD_OUTBOUND_SA 0x0002
   1448 
   1449   typedef struct NDIS_CO_DEVICE_PROFILE {
   1450     NDIS_VAR_DATA_DESC DeviceDescription;
   1451     NDIS_VAR_DATA_DESC DevSpecificInfo;
   1452     ULONG ulTAPISupplementaryPassThru;
   1453     ULONG ulAddressModes;
   1454     ULONG ulNumAddresses;
   1455     ULONG ulBearerModes;
   1456     ULONG ulMaxTxRate;
   1457     ULONG ulMinTxRate;
   1458     ULONG ulMaxRxRate;
   1459     ULONG ulMinRxRate;
   1460     ULONG ulMediaModes;
   1461     ULONG ulGenerateToneModes;
   1462     ULONG ulGenerateToneMaxNumFreq;
   1463     ULONG ulGenerateDigitModes;
   1464     ULONG ulMonitorToneMaxNumFreq;
   1465     ULONG ulMonitorToneMaxNumEntries;
   1466     ULONG ulMonitorDigitModes;
   1467     ULONG ulGatherDigitsMinTimeout;
   1468     ULONG ulGatherDigitsMaxTimeout;
   1469     ULONG ulDevCapFlags;
   1470     ULONG ulMaxNumActiveCalls;
   1471     ULONG ulAnswerMode;
   1472     ULONG ulUUIAcceptSize;
   1473     ULONG ulUUIAnswerSize;
   1474     ULONG ulUUIMakeCallSize;
   1475     ULONG ulUUIDropSize;
   1476     ULONG ulUUISendUserUserInfoSize;
   1477     ULONG ulUUICallInfoSize;
   1478   } NDIS_CO_DEVICE_PROFILE, *PNDIS_CO_DEVICE_PROFILE;
   1479 
   1480 #ifndef IP_EXPORT_INCLUDED
   1481   typedef ULONG IPAddr, IPMask;
   1482 #endif
   1483   typedef ULONG SPI_TYPE;
   1484 
   1485   typedef enum _OFFLOAD_OPERATION_E {
   1486     AUTHENTICATE = 1,
   1487     ENCRYPT
   1488   } OFFLOAD_OPERATION_E;
   1489 
   1490   typedef struct _OFFLOAD_ALGO_INFO {
   1491     ULONG algoIdentifier;
   1492     ULONG algoKeylen;
   1493     ULONG algoRounds;
   1494   } OFFLOAD_ALGO_INFO, *POFFLOAD_ALGO_INFO;
   1495 
   1496   typedef enum _OFFLOAD_CONF_ALGO {
   1497     OFFLOAD_IPSEC_CONF_NONE,
   1498     OFFLOAD_IPSEC_CONF_DES,
   1499     OFFLOAD_IPSEC_CONF_RESERVED,
   1500     OFFLOAD_IPSEC_CONF_3_DES,
   1501     OFFLOAD_IPSEC_CONF_MAX
   1502   } OFFLOAD_CONF_ALGO;
   1503 
   1504   typedef enum _OFFLOAD_INTEGRITY_ALGO {
   1505     OFFLOAD_IPSEC_INTEGRITY_NONE,
   1506     OFFLOAD_IPSEC_INTEGRITY_MD5,
   1507     OFFLOAD_IPSEC_INTEGRITY_SHA,
   1508     OFFLOAD_IPSEC_INTEGRITY_MAX
   1509   } OFFLOAD_INTEGRITY_ALGO;
   1510 
   1511   typedef struct _OFFLOAD_SECURITY_ASSOCIATION {
   1512     OFFLOAD_OPERATION_E Operation;
   1513     SPI_TYPE SPI;
   1514     OFFLOAD_ALGO_INFO IntegrityAlgo;
   1515     OFFLOAD_ALGO_INFO ConfAlgo;
   1516     OFFLOAD_ALGO_INFO Reserved;
   1517   } OFFLOAD_SECURITY_ASSOCIATION, *POFFLOAD_SECURITY_ASSOCIATION;
   1518 
   1519   typedef struct _OFFLOAD_IPSEC_ADD_SA {
   1520     IPAddr SrcAddr;
   1521     IPMask SrcMask;
   1522     IPAddr DestAddr;
   1523     IPMask DestMask;
   1524     ULONG Protocol;
   1525     USHORT SrcPort;
   1526     USHORT DestPort;
   1527     IPAddr SrcTunnelAddr;
   1528     IPAddr DestTunnelAddr;
   1529     USHORT Flags;
   1530     SHORT NumSAs;
   1531     OFFLOAD_SECURITY_ASSOCIATION SecAssoc[OFFLOAD_MAX_SAS];
   1532     HANDLE OffloadHandle;
   1533     ULONG KeyLen;
   1534     UCHAR KeyMat[1];
   1535   } OFFLOAD_IPSEC_ADD_SA, *POFFLOAD_IPSEC_ADD_SA;
   1536 
   1537   typedef struct _OFFLOAD_IPSEC_DELETE_SA {
   1538     HANDLE OffloadHandle;
   1539   } OFFLOAD_IPSEC_DELETE_SA, *POFFLOAD_IPSEC_DELETE_SA;
   1540 
   1541   typedef enum _UDP_ENCAP_TYPE {
   1542     OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_IKE,
   1543     OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_OTHER
   1544   } UDP_ENCAP_TYPE, *PUDP_ENCAP_TYPE;
   1545 
   1546   typedef struct _OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY {
   1547     UDP_ENCAP_TYPE UdpEncapType;
   1548     USHORT DstEncapPort;
   1549   } OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY, *POFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY;
   1550 
   1551   typedef struct _OFFLOAD_IPSEC_ADD_UDPESP_SA {
   1552     IPAddr SrcAddr;
   1553     IPMask SrcMask;
   1554     IPAddr DstAddr;
   1555     IPMask DstMask;
   1556     ULONG Protocol;
   1557     USHORT SrcPort;
   1558     USHORT DstPort;
   1559     IPAddr SrcTunnelAddr;
   1560     IPAddr DstTunnelAddr;
   1561     USHORT Flags;
   1562     SHORT NumSAs;
   1563     OFFLOAD_SECURITY_ASSOCIATION SecAssoc[OFFLOAD_MAX_SAS];
   1564     HANDLE OffloadHandle;
   1565     OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY EncapTypeEntry;
   1566     HANDLE EncapTypeEntryOffldHandle;
   1567     ULONG KeyLen;
   1568     UCHAR KeyMat[1];
   1569   } OFFLOAD_IPSEC_ADD_UDPESP_SA, *POFFLOAD_IPSEC_ADD_UDPESP_SA;
   1570 
   1571   typedef struct _OFFLOAD_IPSEC_DELETE_UDPESP_SA {
   1572     HANDLE OffloadHandle;
   1573     HANDLE EncapTypeEntryOffldHandle;
   1574   } OFFLOAD_IPSEC_DELETE_UDPESP_SA, *POFFLOAD_IPSEC_DELETE_UDPESP_SA;
   1575 
   1576   typedef ULONG NDIS_VLAN_ID;
   1577 
   1578   typedef enum _NDIS_MEDIUM {
   1579     NdisMedium802_3,
   1580     NdisMedium802_5,
   1581     NdisMediumFddi,
   1582     NdisMediumWan,
   1583     NdisMediumLocalTalk,
   1584     NdisMediumDix,
   1585     NdisMediumArcnetRaw,
   1586     NdisMediumArcnet878_2,
   1587     NdisMediumAtm,
   1588     NdisMediumWirelessWan,
   1589     NdisMediumIrda,
   1590     NdisMediumBpc,
   1591     NdisMediumCoWan,
   1592     NdisMedium1394,
   1593     NdisMediumInfiniBand,
   1594 #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
   1595     NdisMediumTunnel,
   1596     NdisMediumNative802_11,
   1597     NdisMediumLoopback,
   1598 #endif
   1599 #if NTDDI_VERSION >= 0x06010000
   1600     NdisMediumWiMAX,
   1601     NdisMediumIP,
   1602 #endif
   1603     NdisMediumMax
   1604   } NDIS_MEDIUM, *PNDIS_MEDIUM;
   1605 
   1606   typedef enum _NDIS_PHYSICAL_MEDIUM {
   1607     NdisPhysicalMediumUnspecified,
   1608     NdisPhysicalMediumWirelessLan,
   1609     NdisPhysicalMediumCableModem,
   1610     NdisPhysicalMediumPhoneLine,
   1611     NdisPhysicalMediumPowerLine,
   1612     NdisPhysicalMediumDSL,
   1613     NdisPhysicalMediumFibreChannel,
   1614     NdisPhysicalMedium1394,
   1615     NdisPhysicalMediumWirelessWan,
   1616     NdisPhysicalMediumNative802_11,
   1617     NdisPhysicalMediumBluetooth,
   1618     NdisPhysicalMediumInfiniband,
   1619     NdisPhysicalMediumWiMax,
   1620     NdisPhysicalMediumUWB,
   1621     NdisPhysicalMedium802_3,
   1622     NdisPhysicalMedium802_5,
   1623     NdisPhysicalMediumIrda,
   1624     NdisPhysicalMediumWiredWAN,
   1625     NdisPhysicalMediumWiredCoWan,
   1626     NdisPhysicalMediumOther,
   1627     NdisPhysicalMediumMax
   1628   } NDIS_PHYSICAL_MEDIUM, *PNDIS_PHYSICAL_MEDIUM;
   1629 
   1630   typedef struct _TRANSPORT_HEADER_OFFSET {
   1631     USHORT ProtocolType;
   1632     USHORT HeaderOffset;
   1633   } TRANSPORT_HEADER_OFFSET, *PTRANSPORT_HEADER_OFFSET;
   1634 
   1635   typedef struct _NETWORK_ADDRESS {
   1636     USHORT AddressLength;
   1637     USHORT AddressType;
   1638     UCHAR Address[1];
   1639   } NETWORK_ADDRESS, *PNETWORK_ADDRESS;
   1640 
   1641   typedef struct _NETWORK_ADDRESS_LIST {
   1642     LONG AddressCount;
   1643     USHORT AddressType;
   1644     NETWORK_ADDRESS Address[1];
   1645   } NETWORK_ADDRESS_LIST, *PNETWORK_ADDRESS_LIST;
   1646 
   1647   typedef struct _NETWORK_ADDRESS_IP {
   1648     USHORT sin_port;
   1649     ULONG in_addr;
   1650     UCHAR sin_zero[8];
   1651   } NETWORK_ADDRESS_IP, *PNETWORK_ADDRESS_IP;
   1652 
   1653 #define NDIS_PROTOCOL_ID_DEFAULT 0x00
   1654 #define NDIS_PROTOCOL_ID_TCP_IP 0x02
   1655 #define NDIS_PROTOCOL_ID_IPX 0x06
   1656 #define NDIS_PROTOCOL_ID_NBF 0x07
   1657 #define NDIS_PROTOCOL_ID_MAX 0x0f
   1658 #define NDIS_PROTOCOL_ID_MASK 0x0f
   1659 
   1660 #define READABLE_LOCAL_CLOCK 0x00000001
   1661 #define CLOCK_NETWORK_DERIVED 0x00000002
   1662 #define CLOCK_PRECISION 0x00000004
   1663 #define RECEIVE_TIME_INDICATION_CAPABLE 0x00000008
   1664 #define TIMED_SEND_CAPABLE 0x00000010
   1665 #define TIME_STAMP_CAPABLE 0x00000020
   1666 
   1667 #define NDIS_DEVICE_WAKE_UP_ENABLE 0x00000001
   1668 #define NDIS_DEVICE_WAKE_ON_PATTERN_MATCH_ENABLE 0x00000002
   1669 #define NDIS_DEVICE_WAKE_ON_MAGIC_PACKET_ENABLE 0x00000004
   1670 
   1671 #define WAN_PROTOCOL_KEEPS_STATS 0x00000001
   1672 
   1673 #define NETWORK_ADDRESS_LENGTH_IP sizeof (NETWORK_ADDRESS_IP)
   1674 #define NETWORK_ADDRESS_LENGTH_IPX sizeof (NETWORK_ADDRESS_IPX)
   1675 
   1676   typedef struct _NETWORK_ADDRESS_IPX {
   1677     ULONG NetworkAddress;
   1678     UCHAR NodeAddress[6];
   1679     USHORT Socket;
   1680   } NETWORK_ADDRESS_IPX, *PNETWORK_ADDRESS_IPX;
   1681 
   1682   typedef enum _NDIS_HARDWARE_STATUS {
   1683     NdisHardwareStatusReady,
   1684     NdisHardwareStatusInitializing,
   1685     NdisHardwareStatusReset,
   1686     NdisHardwareStatusClosing,
   1687     NdisHardwareStatusNotReady
   1688   } NDIS_HARDWARE_STATUS, *PNDIS_HARDWARE_STATUS;
   1689 
   1690   typedef struct _GEN_GET_TIME_CAPS {
   1691     ULONG Flags;
   1692     ULONG ClockPrecision;
   1693   } GEN_GET_TIME_CAPS, *PGEN_GET_TIME_CAPS;
   1694 
   1695   typedef struct _GEN_GET_NETCARD_TIME {
   1696     ULONGLONG ReadTime;
   1697   } GEN_GET_NETCARD_TIME, *PGEN_GET_NETCARD_TIME;
   1698 
   1699   typedef struct _NDIS_PM_PACKET_PATTERN {
   1700     ULONG Priority;
   1701     ULONG Reserved;
   1702     ULONG MaskSize;
   1703     ULONG PatternOffset;
   1704     ULONG PatternSize;
   1705     ULONG PatternFlags;
   1706   } NDIS_PM_PACKET_PATTERN, *PNDIS_PM_PACKET_PATTERN;
   1707 
   1708   typedef enum _NDIS_DEVICE_POWER_STATE {
   1709     NdisDeviceStateUnspecified = 0,
   1710     NdisDeviceStateD0,
   1711     NdisDeviceStateD1,
   1712     NdisDeviceStateD2,
   1713     NdisDeviceStateD3,
   1714     NdisDeviceStateMaximum
   1715   } NDIS_DEVICE_POWER_STATE, *PNDIS_DEVICE_POWER_STATE;
   1716 
   1717   typedef struct _NDIS_PM_WAKE_UP_CAPABILITIES {
   1718     NDIS_DEVICE_POWER_STATE MinMagicPacketWakeUp;
   1719     NDIS_DEVICE_POWER_STATE MinPatternWakeUp;
   1720     NDIS_DEVICE_POWER_STATE MinLinkChangeWakeUp;
   1721   } NDIS_PM_WAKE_UP_CAPABILITIES, *PNDIS_PM_WAKE_UP_CAPABILITIES;
   1722 
   1723   typedef struct _NDIS_PNP_CAPABILITIES {
   1724     ULONG Flags;
   1725     NDIS_PM_WAKE_UP_CAPABILITIES WakeUpCapabilities;
   1726   } NDIS_PNP_CAPABILITIES, *PNDIS_PNP_CAPABILITIES;
   1727 
   1728   typedef enum _NDIS_FDDI_ATTACHMENT_TYPE {
   1729     NdisFddiTypeIsolated = 1,
   1730     NdisFddiTypeLocalA,
   1731     NdisFddiTypeLocalB,
   1732     NdisFddiTypeLocalAB,
   1733     NdisFddiTypeLocalS,
   1734     NdisFddiTypeWrapA,
   1735     NdisFddiTypeWrapB,
   1736     NdisFddiTypeWrapAB,
   1737     NdisFddiTypeWrapS,
   1738     NdisFddiTypeCWrapA,
   1739     NdisFddiTypeCWrapB,
   1740     NdisFddiTypeCWrapS,
   1741     NdisFddiTypeThrough
   1742   } NDIS_FDDI_ATTACHMENT_TYPE, *PNDIS_FDDI_ATTACHMENT_TYPE;
   1743 
   1744   typedef enum _NDIS_FDDI_RING_MGT_STATE {
   1745     NdisFddiRingIsolated = 1,
   1746     NdisFddiRingNonOperational,
   1747     NdisFddiRingOperational,
   1748     NdisFddiRingDetect,
   1749     NdisFddiRingNonOperationalDup,
   1750     NdisFddiRingOperationalDup,
   1751     NdisFddiRingDirected,
   1752     NdisFddiRingTrace
   1753   } NDIS_FDDI_RING_MGT_STATE, *PNDIS_FDDI_RING_MGT_STATE;
   1754 
   1755   typedef enum _NDIS_FDDI_LCONNECTION_STATE {
   1756     NdisFddiStateOff = 1,
   1757     NdisFddiStateBreak,
   1758     NdisFddiStateTrace,
   1759     NdisFddiStateConnect,
   1760     NdisFddiStateNext,
   1761     NdisFddiStateSignal,
   1762     NdisFddiStateJoin,
   1763     NdisFddiStateVerify,
   1764     NdisFddiStateActive,
   1765     NdisFddiStateMaintenance
   1766   } NDIS_FDDI_LCONNECTION_STATE, *PNDIS_FDDI_LCONNECTION_STATE;
   1767 
   1768   typedef enum _NDIS_WAN_MEDIUM_SUBTYPE {
   1769     NdisWanMediumHub,
   1770     NdisWanMediumX_25,
   1771     NdisWanMediumIsdn,
   1772     NdisWanMediumSerial,
   1773     NdisWanMediumFrameRelay,
   1774     NdisWanMediumAtm,
   1775     NdisWanMediumSonet,
   1776     NdisWanMediumSW56K,
   1777     NdisWanMediumPPTP,
   1778     NdisWanMediumL2TP,
   1779     NdisWanMediumIrda,
   1780     NdisWanMediumParallel,
   1781     NdisWanMediumPppoe,
   1782 #if NTDDI_VERSION >= 0x06000000
   1783     NdisWanMediumSSTP,
   1784     NdisWanMediumAgileVPN,
   1785 #endif
   1786   } NDIS_WAN_MEDIUM_SUBTYPE, *PNDIS_WAN_MEDIUM_SUBTYPE;
   1787 
   1788   typedef enum _NDIS_WAN_HEADER_FORMAT {
   1789     NdisWanHeaderNative,
   1790     NdisWanHeaderEthernet
   1791   } NDIS_WAN_HEADER_FORMAT, *PNDIS_WAN_HEADER_FORMAT;
   1792 
   1793   typedef enum _NDIS_WAN_QUALITY {
   1794     NdisWanRaw,
   1795     NdisWanErrorControl,
   1796     NdisWanReliable
   1797   } NDIS_WAN_QUALITY, *PNDIS_WAN_QUALITY;
   1798 
   1799   typedef struct _NDIS_WAN_PROTOCOL_CAPS {
   1800     ULONG Flags;
   1801     ULONG Reserved;
   1802   } NDIS_WAN_PROTOCOL_CAPS, *PNDIS_WAN_PROTOCOL_CAPS;
   1803 
   1804   typedef enum _NDIS_802_5_RING_STATE {
   1805     NdisRingStateOpened = 1,
   1806     NdisRingStateClosed,
   1807     NdisRingStateOpening,
   1808     NdisRingStateClosing,
   1809     NdisRingStateOpenFailure,
   1810     NdisRingStateRingFailure
   1811   } NDIS_802_5_RING_STATE, *PNDIS_802_5_RING_STATE;
   1812 
   1813   typedef enum _NDIS_MEDIA_STATE {
   1814     NdisMediaStateConnected,
   1815     NdisMediaStateDisconnected
   1816   } NDIS_MEDIA_STATE, *PNDIS_MEDIA_STATE;
   1817 
   1818   typedef ULONG Priority_802_3;
   1819 
   1820   typedef struct _NDIS_CO_LINK_SPEED {
   1821     ULONG Outbound;
   1822     ULONG Inbound;
   1823   } NDIS_CO_LINK_SPEED, *PNDIS_CO_LINK_SPEED;
   1824 
   1825 #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
   1826 #define NDIS_LINK_SPEED_UNKNOWN NET_IF_LINK_SPEED_UNKNOWN
   1827 
   1828   typedef struct _NDIS_LINK_SPEED {
   1829     ULONG64 XmitLinkSpeed;
   1830     ULONG64 RcvLinkSpeed;
   1831   } NDIS_LINK_SPEED, *PNDIS_LINK_SPEED;
   1832 #endif
   1833 
   1834 #ifndef _NDIS_
   1835   typedef int NDIS_STATUS, *PNDIS_STATUS;
   1836 #endif
   1837 
   1838 #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
   1839 #ifndef __WINDOT11_H__
   1840 #include <windot11.h>
   1841 #endif
   1842 #endif
   1843 
   1844 #define fNDIS_GUID_TO_OID 0x00000001
   1845 #define fNDIS_GUID_TO_STATUS 0x00000002
   1846 #define fNDIS_GUID_ANSI_STRING 0x00000004
   1847 #define fNDIS_GUID_UNICODE_STRING 0x00000008
   1848 #define fNDIS_GUID_ARRAY 0x00000010
   1849 #define fNDIS_GUID_ALLOW_READ 0x00000020
   1850 #define fNDIS_GUID_ALLOW_WRITE 0x00000040
   1851 #define fNDIS_GUID_METHOD 0x00000080
   1852 #define fNDIS_GUID_NDIS_RESERVED 0x00000100
   1853 #define fNDIS_GUID_SUPPORT_COMMON_HEADER 0x00000200
   1854 
   1855 #define NDIS_PACKET_TYPE_DIRECTED 0x00000001
   1856 #define NDIS_PACKET_TYPE_MULTICAST 0x00000002
   1857 #define NDIS_PACKET_TYPE_ALL_MULTICAST 0x00000004
   1858 #define NDIS_PACKET_TYPE_BROADCAST 0x00000008
   1859 #define NDIS_PACKET_TYPE_SOURCE_ROUTING 0x00000010
   1860 #define NDIS_PACKET_TYPE_PROMISCUOUS 0x00000020
   1861 #define NDIS_PACKET_TYPE_SMT 0x00000040
   1862 #define NDIS_PACKET_TYPE_ALL_LOCAL 0x00000080
   1863 #define NDIS_PACKET_TYPE_GROUP 0x00001000
   1864 #define NDIS_PACKET_TYPE_ALL_FUNCTIONAL 0x00002000
   1865 #define NDIS_PACKET_TYPE_FUNCTIONAL 0x00004000
   1866 #define NDIS_PACKET_TYPE_MAC_FRAME 0x00008000
   1867 #define NDIS_PACKET_TYPE_NO_LOCAL 0x00010000
   1868 
   1869 #define NDIS_RING_SIGNAL_LOSS 0x00008000
   1870 #define NDIS_RING_HARD_ERROR 0x00004000
   1871 #define NDIS_RING_SOFT_ERROR 0x00002000
   1872 #define NDIS_RING_TRANSMIT_BEACON 0x00001000
   1873 #define NDIS_RING_LOBE_WIRE_FAULT 0x00000800
   1874 #define NDIS_RING_AUTO_REMOVAL_ERROR 0x00000400
   1875 #define NDIS_RING_REMOVE_RECEIVED 0x00000200
   1876 #define NDIS_RING_COUNTER_OVERFLOW 0x00000100
   1877 #define NDIS_RING_SINGLE_STATION 0x00000080
   1878 #define NDIS_RING_RING_RECOVERY 0x00000040
   1879 
   1880 #define NDIS_PROT_OPTION_ESTIMATED_LENGTH 0x00000001
   1881 #define NDIS_PROT_OPTION_NO_LOOPBACK 0x00000002
   1882 #define NDIS_PROT_OPTION_NO_RSVD_ON_RCVPKT 0x00000004
   1883 #define NDIS_PROT_OPTION_SEND_RESTRICTED 0x00000008
   1884 
   1885 #define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA 0x00000001
   1886 #define NDIS_MAC_OPTION_RECEIVE_SERIALIZED 0x00000002
   1887 #define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND 0x00000004
   1888 #define NDIS_MAC_OPTION_NO_LOOPBACK 0x00000008
   1889 
   1890 #define NDIS_MAC_OPTION_FULL_DUPLEX 0x00000010
   1891 
   1892 #define NDIS_MAC_OPTION_EOTX_INDICATION 0x00000020
   1893 #define NDIS_MAC_OPTION_8021P_PRIORITY 0x00000040
   1894 #define NDIS_MAC_OPTION_SUPPORTS_MAC_ADDRESS_OVERWRITE 0x00000080
   1895 #define NDIS_MAC_OPTION_RECEIVE_AT_DPC 0x00000100
   1896 #define NDIS_MAC_OPTION_8021Q_VLAN 0x00000200
   1897 #define NDIS_MAC_OPTION_RESERVED 0x80000000
   1898 
   1899 #define NDIS_MEDIA_CAP_TRANSMIT 0x00000001
   1900 #define NDIS_MEDIA_CAP_RECEIVE 0x00000002
   1901 
   1902 #define NDIS_CO_MAC_OPTION_DYNAMIC_LINK_SPEED 0x00000001
   1903 
   1904   typedef struct _NDIS_GUID {
   1905     GUID Guid;
   1906     __C89_NAMELESS union {
   1907       NDIS_OID Oid;
   1908       NDIS_STATUS Status;
   1909     };
   1910     ULONG Size;
   1911     ULONG Flags;
   1912   } NDIS_GUID, *PNDIS_GUID;
   1913 
   1914   typedef struct _NDIS_IRDA_PACKET_INFO {
   1915     ULONG ExtraBOFs;
   1916     ULONG MinTurnAroundTime;
   1917   } NDIS_IRDA_PACKET_INFO, *PNDIS_IRDA_PACKET_INFO;
   1918 
   1919 #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
   1920 #define NDIS_MAKE_NET_LUID(PNLUID, IFTYPE, NLUIDIDX) { (PNLUID)->Info.IfType = IFTYPE; (PNLUID)->Info.NetLuidIndex = NLUIDIDX; (PNLUID)->Info.Reserved = 0; }
   1921 
   1922 #define MAXIMUM_IP_OPER_STATUS_ADDRESS_FAMILIES_SUPPORTED 32
   1923 
   1924 #define NDIS_IF_MAX_STRING_SIZE IF_MAX_STRING_SIZE
   1925 #define NDIS_MAX_PHYS_ADDRESS_LENGTH IF_MAX_PHYS_ADDRESS_LENGTH
   1926 
   1927 #define NDIS_LINK_STATE_XMIT_LINK_SPEED_AUTO_NEGOTIATED 0x00000001
   1928 #define NDIS_LINK_STATE_RCV_LINK_SPEED_AUTO_NEGOTIATED 0x00000002
   1929 #define NDIS_LINK_STATE_DUPLEX_AUTO_NEGOTIATED 0x00000004
   1930 #define NDIS_LINK_STATE_PAUSE_FUNCTIONS_AUTO_NEGOTIATED 0x00000008
   1931 
   1932 #define NDIS_LINK_STATE_REVISION_1 1
   1933 #define NDIS_LINK_PARAMETERS_REVISION_1 1
   1934 #define NDIS_OPER_STATE_REVISION_1 1
   1935 #define NDIS_IP_OPER_STATUS_INFO_REVISION_1 1
   1936 #define NDIS_IP_OPER_STATE_REVISION_1 1
   1937 
   1938 #define NDIS_SIZEOF_LINK_STATE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_LINK_STATE, AutoNegotiationFlags)
   1939 #define NDIS_SIZEOF_LINK_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_LINK_PARAMETERS, AutoNegotiationFlags)
   1940 #define NDIS_SIZEOF_OPER_STATE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_OPER_STATE, OperationalStatusFlags)
   1941 #define NDIS_SIZEOF_IP_OPER_STATUS_INFO_REVISION_1 FIELD_OFFSET (NDIS_IP_OPER_STATUS_INFO, IpOperationalStatus) + MAXIMUM_IP_OPER_STATUS_ADDRESS_FAMILIES_SUPPORTED *sizeof (NDIS_IP_OPER_STATUS)
   1942 #define NDIS_SIZEOF_IP_OPER_STATE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_IP_OPER_STATE, IpOperationalStatus)
   1943 
   1944   typedef IF_COUNTED_STRING NDIS_IF_COUNTED_STRING, *PNDIS_IF_COUNTED_STRING;
   1945   typedef IF_PHYSICAL_ADDRESS NDIS_IF_PHYSICAL_ADDRESS, *PNDIS_IF_PHYSICAL_ADDRESS;
   1946   typedef NET_IF_MEDIA_CONNECT_STATE NDIS_MEDIA_CONNECT_STATE, *PNDIS_MEDIA_CONNECT_STATE;
   1947   typedef NET_IF_MEDIA_DUPLEX_STATE NDIS_MEDIA_DUPLEX_STATE, *PNDIS_MEDIA_DUPLEX_STATE;
   1948 
   1949   typedef enum _NDIS_SUPPORTED_PAUSE_FUNCTIONS {
   1950     NdisPauseFunctionsUnsupported,
   1951     NdisPauseFunctionsSendOnly,
   1952     NdisPauseFunctionsReceiveOnly,
   1953     NdisPauseFunctionsSendAndReceive,
   1954     NdisPauseFunctionsUnknown
   1955   } NDIS_SUPPORTED_PAUSE_FUNCTIONS, *PNDIS_SUPPORTED_PAUSE_FUNCTIONS;
   1956 
   1957   typedef struct _NDIS_LINK_STATE {
   1958     NDIS_OBJECT_HEADER Header;
   1959     NDIS_MEDIA_CONNECT_STATE MediaConnectState;
   1960     NDIS_MEDIA_DUPLEX_STATE MediaDuplexState;
   1961     ULONG64 XmitLinkSpeed;
   1962     ULONG64 RcvLinkSpeed;
   1963     NDIS_SUPPORTED_PAUSE_FUNCTIONS PauseFunctions;
   1964     ULONG AutoNegotiationFlags;
   1965   } NDIS_LINK_STATE, *PNDIS_LINK_STATE;
   1966 
   1967   typedef struct _NDIS_LINK_PARAMETERS {
   1968     NDIS_OBJECT_HEADER Header;
   1969     NDIS_MEDIA_DUPLEX_STATE MediaDuplexState;
   1970     ULONG64 XmitLinkSpeed;
   1971     ULONG64 RcvLinkSpeed;
   1972     NDIS_SUPPORTED_PAUSE_FUNCTIONS PauseFunctions;
   1973     ULONG AutoNegotiationFlags;
   1974   } NDIS_LINK_PARAMETERS, *PNDIS_LINK_PARAMETERS;
   1975 
   1976   typedef struct _NDIS_OPER_STATE {
   1977     NDIS_OBJECT_HEADER Header;
   1978     NET_IF_OPER_STATUS OperationalStatus;
   1979     ULONG OperationalStatusFlags;
   1980   } NDIS_OPER_STATE, *PNDIS_OPER_STATE;
   1981 
   1982   typedef struct _NDIS_IP_OPER_STATUS {
   1983     ULONG AddressFamily;
   1984     NET_IF_OPER_STATUS OperationalStatus;
   1985     ULONG OperationalStatusFlags;
   1986   } NDIS_IP_OPER_STATUS, *PNDIS_IP_OPER_STATUS;
   1987 
   1988   typedef struct _NDIS_IP_OPER_STATUS_INFO {
   1989     NDIS_OBJECT_HEADER Header;
   1990     ULONG Flags;
   1991     ULONG NumberofAddressFamiliesReturned;
   1992     NDIS_IP_OPER_STATUS IpOperationalStatus[MAXIMUM_IP_OPER_STATUS_ADDRESS_FAMILIES_SUPPORTED];
   1993   } NDIS_IP_OPER_STATUS_INFO, *PNDIS_IP_OPER_STATUS_INFO;
   1994 
   1995   typedef struct _NDIS_IP_OPER_STATE {
   1996     NDIS_OBJECT_HEADER Header;
   1997     ULONG Flags;
   1998     NDIS_IP_OPER_STATUS IpOperationalStatus;
   1999   } NDIS_IP_OPER_STATE, *PNDIS_IP_OPER_STATE;
   2000 
   2001 #define NDIS_OFFLOAD_PARAMETERS_NO_CHANGE 0
   2002 #define NDIS_OFFLOAD_PARAMETERS_TX_RX_DISABLED 1
   2003 #define NDIS_OFFLOAD_PARAMETERS_TX_ENABLED_RX_DISABLED 2
   2004 #define NDIS_OFFLOAD_PARAMETERS_RX_ENABLED_TX_DISABLED 3
   2005 #define NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED 4
   2006 
   2007 #define NDIS_OFFLOAD_PARAMETERS_LSOV1_DISABLED 1
   2008 #define NDIS_OFFLOAD_PARAMETERS_LSOV1_ENABLED 2
   2009 
   2010 #define NDIS_OFFLOAD_PARAMETERS_IPSECV1_DISABLED 1
   2011 #define NDIS_OFFLOAD_PARAMETERS_IPSECV1_AH_ENABLED 2
   2012 #define NDIS_OFFLOAD_PARAMETERS_IPSECV1_ESP_ENABLED 3
   2013 #define NDIS_OFFLOAD_PARAMETERS_IPSECV1_AH_AND_ESP_ENABLED 4
   2014 
   2015 #define NDIS_OFFLOAD_PARAMETERS_LSOV2_DISABLED 1
   2016 #define NDIS_OFFLOAD_PARAMETERS_LSOV2_ENABLED 2
   2017 
   2018 #if NDIS_SUPPORT_NDIS61
   2019 #define NDIS_OFFLOAD_PARAMETERS_IPSECV2_DISABLED 1
   2020 #define NDIS_OFFLOAD_PARAMETERS_IPSECV2_AH_ENABLED 2
   2021 #define NDIS_OFFLOAD_PARAMETERS_IPSECV2_ESP_ENABLED 3
   2022 #define NDIS_OFFLOAD_PARAMETERS_IPSECV2_AH_AND_ESP_ENABLED 4
   2023 #endif
   2024 
   2025 #if NDIS_SUPPORT_NDIS630
   2026 #define NDIS_OFFLOAD_PARAMETERS_RSC_DISABLED 1
   2027 #define NDIS_OFFLOAD_PARAMETERS_RSC_ENABLED 2
   2028 
   2029 #define NDIS_ENCAPSULATION_TYPE_GRE_MAC 0x00000001
   2030 #define NDIS_ENCAPSULATION_TYPE_MAX NDIS_ENCAPSULATION_TYPE_GRE_MAC
   2031 #endif
   2032 
   2033 #define NDIS_OFFLOAD_PARAMETERS_CONNECTION_OFFLOAD_DISABLED 1
   2034 #define NDIS_OFFLOAD_PARAMETERS_CONNECTION_OFFLOAD_ENABLED 2
   2035 
   2036 #define NDIS_OFFLOAD_PARAMETERS_REVISION_1 1
   2037 #if NDIS_SUPPORT_NDIS61
   2038 #define NDIS_OFFLOAD_PARAMETERS_REVISION_2 2
   2039 #endif
   2040 #if NDIS_SUPPORT_NDIS630
   2041 #define NDIS_OFFLOAD_PARAMETERS_REVISION_3 3
   2042 #define NDIS_OFFLOAD_PARAMETERS_SKIP_REGISTRY_UPDATE 0x00000001
   2043 #endif
   2044 
   2045   typedef struct _NDIS_OFFLOAD_PARAMETERS {
   2046     NDIS_OBJECT_HEADER Header;
   2047     UCHAR IPv4Checksum;
   2048     UCHAR TCPIPv4Checksum;
   2049     UCHAR UDPIPv4Checksum;
   2050     UCHAR TCPIPv6Checksum;
   2051     UCHAR UDPIPv6Checksum;
   2052     UCHAR LsoV1;
   2053     UCHAR IPsecV1;
   2054     UCHAR LsoV2IPv4;
   2055     UCHAR LsoV2IPv6;
   2056     UCHAR TcpConnectionIPv4;
   2057     UCHAR TcpConnectionIPv6;
   2058     ULONG Flags;
   2059 #if NDIS_SUPPORT_NDIS61
   2060     UCHAR IPsecV2;
   2061     UCHAR IPsecV2IPv4;
   2062 #endif
   2063 #if NDIS_SUPPORT_NDIS630
   2064     __C89_NAMELESS struct {
   2065       UCHAR RscIPv4;
   2066       UCHAR RscIPv6;
   2067     };
   2068 #endif
   2069 #if NDIS_SUPPORT_NDIS630
   2070     __C89_NAMELESS struct {
   2071       UCHAR EncapsulatedPacketTaskOffload;
   2072       UCHAR EncapsulationTypes;
   2073     };
   2074 #endif
   2075   } NDIS_OFFLOAD_PARAMETERS, *PNDIS_OFFLOAD_PARAMETERS;
   2076 
   2077 #define NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_OFFLOAD_PARAMETERS, Flags)
   2078 #if NDIS_SUPPORT_NDIS61
   2079 #define NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_OFFLOAD_PARAMETERS, IPsecV2IPv4)
   2080 #endif
   2081 #if NDIS_SUPPORT_NDIS630
   2082 #define NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_3 RTL_SIZEOF_THROUGH_FIELD (NDIS_OFFLOAD_PARAMETERS, EncapsulationTypes)
   2083 #endif
   2084 
   2085 #define NDIS_OFFLOAD_NOT_SUPPORTED 0
   2086 #define NDIS_OFFLOAD_SUPPORTED 1
   2087 
   2088 #define NDIS_OFFLOAD_SET_NO_CHANGE 0
   2089 #define NDIS_OFFLOAD_SET_ON 1
   2090 #define NDIS_OFFLOAD_SET_OFF 2
   2091 
   2092 #define NDIS_ENCAPSULATION_NOT_SUPPORTED 0x00000000
   2093 #define NDIS_ENCAPSULATION_NULL 0x00000001
   2094 #define NDIS_ENCAPSULATION_IEEE_802_3 0x00000002
   2095 #define NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q 0x00000004
   2096 #define NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB 0x00000008
   2097 #define NDIS_ENCAPSULATION_IEEE_LLC_SNAP_ROUTED 0x00000010
   2098 
   2099   typedef struct _NDIS_TCP_LARGE_SEND_OFFLOAD_V1 {
   2100     struct {
   2101       ULONG Encapsulation;
   2102       ULONG MaxOffLoadSize;
   2103       ULONG MinSegmentCount;
   2104       ULONG TcpOptions:2;
   2105       ULONG IpOptions:2;
   2106     } IPv4;
   2107   } NDIS_TCP_LARGE_SEND_OFFLOAD_V1, *PNDIS_TCP_LARGE_SEND_OFFLOAD_V1;
   2108 
   2109   typedef struct _NDIS_TCP_IP_CHECKSUM_OFFLOAD {
   2110     struct {
   2111       ULONG Encapsulation;
   2112       ULONG IpOptionsSupported:2;
   2113       ULONG TcpOptionsSupported:2;
   2114       ULONG TcpChecksum:2;
   2115       ULONG UdpChecksum:2;
   2116       ULONG IpChecksum:2;
   2117     } IPv4Transmit;
   2118     struct {
   2119       ULONG Encapsulation;
   2120       ULONG IpOptionsSupported:2;
   2121       ULONG TcpOptionsSupported:2;
   2122       ULONG TcpChecksum:2;
   2123       ULONG UdpChecksum:2;
   2124       ULONG IpChecksum:2;
   2125     } IPv4Receive;
   2126     struct {
   2127       ULONG Encapsulation;
   2128       ULONG IpExtensionHeadersSupported:2;
   2129       ULONG TcpOptionsSupported:2;
   2130       ULONG TcpChecksum:2;
   2131       ULONG UdpChecksum:2;
   2132     } IPv6Transmit;
   2133     struct {
   2134       ULONG Encapsulation;
   2135       ULONG IpExtensionHeadersSupported:2;
   2136       ULONG TcpOptionsSupported:2;
   2137       ULONG TcpChecksum:2;
   2138       ULONG UdpChecksum:2;
   2139     } IPv6Receive;
   2140   } NDIS_TCP_IP_CHECKSUM_OFFLOAD, *PNDIS_TCP_IP_CHECKSUM_OFFLOAD;
   2141   typedef struct _NDIS_IPSEC_OFFLOAD_V1 {
   2142     struct {
   2143       ULONG Encapsulation;
   2144       ULONG AhEspCombined;
   2145       ULONG TransportTunnelCombined;
   2146       ULONG IPv4Options;
   2147       ULONG Flags;
   2148     } Supported;
   2149     struct {
   2150       ULONG Md5 : 2;
   2151       ULONG Sha_1 : 2;
   2152       ULONG Transport : 2;
   2153       ULONG Tunnel : 2;
   2154       ULONG Send : 2;
   2155       ULONG Receive : 2;
   2156     } IPv4AH;
   2157     struct {
   2158       ULONG Des : 2;
   2159       ULONG Reserved : 2;
   2160       ULONG TripleDes : 2;
   2161       ULONG NullEsp : 2;
   2162       ULONG Transport : 2;
   2163       ULONG Tunnel : 2;
   2164       ULONG Send : 2;
   2165       ULONG Receive : 2;
   2166     } IPv4ESP;
   2167   } NDIS_IPSEC_OFFLOAD_V1, *PNDIS_IPSEC_OFFLOAD_V1;
   2168 
   2169   typedef struct _NDIS_TCP_LARGE_SEND_OFFLOAD_V2 {
   2170     struct {
   2171       ULONG Encapsulation;
   2172       ULONG MaxOffLoadSize;
   2173       ULONG MinSegmentCount;
   2174     }IPv4;
   2175     struct {
   2176       ULONG Encapsulation;
   2177       ULONG MaxOffLoadSize;
   2178       ULONG MinSegmentCount;
   2179       ULONG IpExtensionHeadersSupported:2;
   2180       ULONG TcpOptionsSupported:2;
   2181     } IPv6;
   2182   } NDIS_TCP_LARGE_SEND_OFFLOAD_V2, *PNDIS_TCP_LARGE_SEND_OFFLOAD_V2;
   2183 
   2184 #if NDIS_SUPPORT_NDIS61
   2185 #define IPSEC_OFFLOAD_V2_AUTHENTICATION_MD5 0x00000001
   2186 #define IPSEC_OFFLOAD_V2_AUTHENTICATION_SHA_1 0x00000002
   2187 #define IPSEC_OFFLOAD_V2_AUTHENTICATION_SHA_256 0x00000004
   2188 #define IPSEC_OFFLOAD_V2_AUTHENTICATION_AES_GCM_128 0x00000008
   2189 #define IPSEC_OFFLOAD_V2_AUTHENTICATION_AES_GCM_192 0x00000010
   2190 #define IPSEC_OFFLOAD_V2_AUTHENTICATION_AES_GCM_256 0x00000020
   2191 
   2192 #define IPSEC_OFFLOAD_V2_ENCRYPTION_NONE 0x00000001
   2193 #define IPSEC_OFFLOAD_V2_ENCRYPTION_DES_CBC 0x00000002
   2194 #define IPSEC_OFFLOAD_V2_ENCRYPTION_3_DES_CBC 0x00000004
   2195 #define IPSEC_OFFLOAD_V2_ENCRYPTION_AES_GCM_128 0x00000008
   2196 #define IPSEC_OFFLOAD_V2_ENCRYPTION_AES_GCM_192 0x00000010
   2197 #define IPSEC_OFFLOAD_V2_ENCRYPTION_AES_GCM_256 0x00000020
   2198 #define IPSEC_OFFLOAD_V2_ENCRYPTION_AES_CBC_128 0x00000040
   2199 #define IPSEC_OFFLOAD_V2_ENCRYPTION_AES_CBC_192 0x00000080
   2200 #define IPSEC_OFFLOAD_V2_ENCRYPTION_AES_CBC_256 0x00000100
   2201 
   2202   typedef struct _NDIS_IPSEC_OFFLOAD_V2 {
   2203     ULONG Encapsulation;
   2204     BOOLEAN IPv6Supported;
   2205     BOOLEAN IPv4Options;
   2206     BOOLEAN IPv6NonIPsecExtensionHeaders;
   2207     BOOLEAN Ah;
   2208     BOOLEAN Esp;
   2209     BOOLEAN AhEspCombined;
   2210     BOOLEAN Transport;
   2211     BOOLEAN Tunnel;
   2212     BOOLEAN TransportTunnelCombined;
   2213     BOOLEAN LsoSupported;
   2214     BOOLEAN ExtendedSequenceNumbers;
   2215     ULONG UdpEsp;
   2216     ULONG AuthenticationAlgorithms;
   2217     ULONG EncryptionAlgorithms;
   2218     ULONG SaOffloadCapacity;
   2219   } NDIS_IPSEC_OFFLOAD_V2, *PNDIS_IPSEC_OFFLOAD_V2;
   2220 #endif
   2221 
   2222 #if NDIS_SUPPORT_NDIS630
   2223 #define NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_NOT_SUPPORTED 0x00000000
   2224 #define NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_INNER_IPV4 0x00000001
   2225 #define NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_OUTER_IPV4 0x00000002
   2226 #define NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_INNER_IPV6 0x00000004
   2227 #define NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_OUTER_IPV6 0x00000008
   2228 #endif
   2229 
   2230 #define NDIS_OFFLOAD_FLAGS_GROUP_CHECKSUM_CAPABILITIES 0x1
   2231 #if NDIS_SUPPORT_NDIS630
   2232 #define IPSEC_OFFLOAD_V2_AND_TCP_CHECKSUM_COEXISTENCE 0x2
   2233 #define IPSEC_OFFLOAD_V2_AND_UDP_CHECKSUM_COEXISTENCE 0x4
   2234 #endif
   2235 
   2236 #define NDIS_MAXIMUM_PORTS 0x1000000
   2237 
   2238 #define NDIS_DEFAULT_PORT_NUMBER ((NDIS_PORT_NUMBER) 0)
   2239 
   2240 #define NDIS_WMI_DEFAULT_METHOD_ID 1
   2241 
   2242 #define NDIS_WMI_OBJECT_TYPE_SET 0x01
   2243 #define NDIS_WMI_OBJECT_TYPE_METHOD 0x02
   2244 #define NDIS_WMI_OBJECT_TYPE_EVENT 0x03
   2245 #define NDIS_WMI_OBJECT_TYPE_ENUM_ADAPTER 0x04
   2246 #define NDIS_WMI_OBJECT_TYPE_OUTPUT_INFO 0x05
   2247 
   2248 #define NDIS_DEVICE_TYPE_ENDPOINT 0x00000001
   2249 
   2250 #define NDIS_OFFLOAD_REVISION_1 1
   2251 #define NDIS_TCP_CONNECTION_OFFLOAD_REVISION_1 1
   2252 #define NDIS_PORT_AUTHENTICATION_PARAMETERS_REVISION_1 1
   2253 #define NDIS_WMI_METHOD_HEADER_REVISION_1 1
   2254 #define NDIS_WMI_SET_HEADER_REVISION_1 1
   2255 #define NDIS_WMI_EVENT_HEADER_REVISION_1 1
   2256 #define NDIS_WMI_ENUM_ADAPTER_REVISION_1 1
   2257 #if NDIS_SUPPORT_NDIS61
   2258 #define NDIS_TCP_CONNECTION_OFFLOAD_REVISION_2 2
   2259 #define NDIS_OFFLOAD_REVISION_2 2
   2260 #endif
   2261 #if NDIS_SUPPORT_NDIS630
   2262 #define NDIS_OFFLOAD_REVISION_3 3
   2263 #define NDIS_TCP_RECV_SEG_COALESC_OFFLOAD_REVISION_1 1
   2264 #endif
   2265 
   2266 #define NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_OFFLOAD, Flags)
   2267 #define NDIS_SIZEOF_NDIS_WMI_OFFLOAD_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_OFFLOAD, Flags)
   2268 #define NDIS_SIZEOF_TCP_CONNECTION_OFFLOAD_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_TCP_CONNECTION_OFFLOAD, Flags)
   2269 #define NDIS_SIZEOF_WMI_TCP_CONNECTION_OFFLOAD_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_TCP_CONNECTION_OFFLOAD, Flags)
   2270 #define NDIS_SIZEOF_PORT_AUTHENTICATION_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PORT_AUTHENTICATION_PARAMETERS, RcvAuthorizationState)
   2271 #define NDIS_SIZEOF_WMI_METHOD_HEADER_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_METHOD_HEADER, Padding)
   2272 #define NDIS_SIZEOF_WMI_SET_HEADER_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_SET_HEADER, Padding)
   2273 #define NDIS_SIZEOF_WMI_EVENT_HEADER_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_EVENT_HEADER, Padding)
   2274 #define NDIS_SIZEOF_WMI_ENUM_ADAPTER_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_ENUM_ADAPTER, DeviceName)
   2275 #if NDIS_SUPPORT_NDIS61
   2276 #define NDIS_SIZEOF_TCP_CONNECTION_OFFLOAD_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_TCP_CONNECTION_OFFLOAD, Flags)
   2277 #define NDIS_SIZEOF_NDIS_WMI_OFFLOAD_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_OFFLOAD, IPsecV2)
   2278 #define NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_OFFLOAD, IPsecV2)
   2279 #endif
   2280 #if NDIS_SUPPORT_NDIS630
   2281 #define NDIS_SIZEOF_NDIS_WMI_OFFLOAD_REVISION_3 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_OFFLOAD, EncapsulatedPacketTaskOffloadGre)
   2282 #define NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_3 RTL_SIZEOF_THROUGH_FIELD (NDIS_OFFLOAD, EncapsulatedPacketTaskOffloadGre)
   2283 #define NDIS_SIZEOF_TCP_RECV_SEG_COALESC_OFFLOAD_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_TCP_RECV_SEG_COALESCE_OFFLOAD, IPv6.Enabled)
   2284 #define NDIS_SIZEOF_ENCAPSULATED_PACKET_TASK_OFFLOAD_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD, MaxHeaderSizeSupported)
   2285 #endif
   2286 
   2287 #if NDIS_SUPPORT_NDIS630
   2288   typedef struct _NDIS_TCP_RECV_SEG_COALESCE_OFFLOAD {
   2289     struct {
   2290       BOOLEAN Enabled;
   2291     } IPv4;
   2292     struct {
   2293       BOOLEAN Enabled;
   2294     } IPv6;
   2295   } NDIS_TCP_RECV_SEG_COALESCE_OFFLOAD, *PNDIS_TCP_RECV_SEG_COALESCE_OFFLOAD;
   2296 
   2297   typedef struct _NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD {
   2298     ULONG TransmitChecksumOffloadSupported:4;
   2299     ULONG ReceiveChecksumOffloadSupported:4;
   2300     ULONG LsoV2Supported:4;
   2301     ULONG RssSupported:4;
   2302     ULONG VmqSupported:4;
   2303     ULONG MaxHeaderSizeSupported;
   2304   } NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD, *PNDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD;
   2305 #endif
   2306 
   2307   typedef struct _NDIS_OFFLOAD {
   2308     NDIS_OBJECT_HEADER Header;
   2309     NDIS_TCP_IP_CHECKSUM_OFFLOAD Checksum;
   2310     NDIS_TCP_LARGE_SEND_OFFLOAD_V1 LsoV1;
   2311     NDIS_IPSEC_OFFLOAD_V1 IPsecV1;
   2312     NDIS_TCP_LARGE_SEND_OFFLOAD_V2 LsoV2;
   2313     ULONG Flags;
   2314 #if NDIS_SUPPORT_NDIS61
   2315     NDIS_IPSEC_OFFLOAD_V2 IPsecV2;
   2316 #endif
   2317 #if NDIS_SUPPORT_NDIS630
   2318     NDIS_TCP_RECV_SEG_COALESCE_OFFLOAD Rsc;
   2319     NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD EncapsulatedPacketTaskOffloadGre;
   2320 #endif
   2321   } NDIS_OFFLOAD, *PNDIS_OFFLOAD;
   2322 
   2323   typedef struct _NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1 {
   2324     struct {
   2325       ULONG Encapsulation;
   2326       ULONG MaxOffLoadSize;
   2327       ULONG MinSegmentCount;
   2328       ULONG TcpOptions;
   2329       ULONG IpOptions;
   2330     } IPv4;
   2331   } NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1, *PNDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1;
   2332 
   2333   typedef struct _NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD {
   2334     struct {
   2335       ULONG Encapsulation;
   2336       ULONG IpOptionsSupported;
   2337       ULONG TcpOptionsSupported;
   2338       ULONG TcpChecksum;
   2339       ULONG UdpChecksum;
   2340       ULONG IpChecksum;
   2341     } IPv4Transmit;
   2342     struct {
   2343       ULONG Encapsulation;
   2344       ULONG IpOptionsSupported;
   2345       ULONG TcpOptionsSupported;
   2346       ULONG TcpChecksum;
   2347       ULONG UdpChecksum;
   2348       ULONG IpChecksum;
   2349     } IPv4Receive;
   2350     struct {
   2351       ULONG Encapsulation;
   2352       ULONG IpExtensionHeadersSupported;
   2353       ULONG TcpOptionsSupported;
   2354       ULONG TcpChecksum;
   2355       ULONG UdpChecksum;
   2356     } IPv6Transmit;
   2357     struct {
   2358       ULONG Encapsulation;
   2359       ULONG IpExtensionHeadersSupported;
   2360       ULONG TcpOptionsSupported;
   2361       ULONG TcpChecksum;
   2362       ULONG UdpChecksum;
   2363     } IPv6Receive;
   2364   } NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD, *PNDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD;
   2365 
   2366   typedef struct _NDIS_WMI_IPSEC_OFFLOAD_V1 {
   2367     struct {
   2368       ULONG Encapsulation;
   2369       ULONG AhEspCombined;
   2370       ULONG TransportTunnelCombined;
   2371       ULONG IPv4Options;
   2372       ULONG Flags;
   2373     } Supported;
   2374     struct {
   2375       ULONG Md5;
   2376       ULONG Sha_1;
   2377       ULONG Transport;
   2378       ULONG Tunnel;
   2379       ULONG Send;
   2380       ULONG Receive;
   2381     } IPv4AH;
   2382     struct {
   2383       ULONG Des;
   2384       ULONG Reserved;
   2385       ULONG TripleDes;
   2386       ULONG NullEsp;
   2387       ULONG Transport;
   2388       ULONG Tunnel;
   2389       ULONG Send;
   2390       ULONG Receive;
   2391     } IPv4ESP;
   2392   } NDIS_WMI_IPSEC_OFFLOAD_V1, *PNDIS_WMI_IPSEC_OFFLOAD_V1;
   2393 
   2394   typedef struct _NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2 {
   2395     struct {
   2396       ULONG Encapsulation;
   2397       ULONG MaxOffLoadSize;
   2398       ULONG MinSegmentCount;
   2399     } IPv4;
   2400     struct {
   2401       ULONG Encapsulation;
   2402       ULONG MaxOffLoadSize;
   2403       ULONG MinSegmentCount;
   2404       ULONG IpExtensionHeadersSupported;
   2405       ULONG TcpOptionsSupported;
   2406     } IPv6;
   2407   } NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2, *PNDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2;
   2408 
   2409   typedef struct _NDIS_WMI_OFFLOAD {
   2410     NDIS_OBJECT_HEADER Header;
   2411     NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD Checksum;
   2412     NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1 LsoV1;
   2413     NDIS_WMI_IPSEC_OFFLOAD_V1 IPsecV1;
   2414     NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2 LsoV2;
   2415     ULONG Flags;
   2416 #if NDIS_SUPPORT_NDIS61
   2417     NDIS_IPSEC_OFFLOAD_V2 IPsecV2;
   2418 #endif
   2419 #if NDIS_SUPPORT_NDIS630
   2420     NDIS_TCP_RECV_SEG_COALESCE_OFFLOAD Rsc;
   2421     NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD EncapsulatedPacketTaskOffloadGre;
   2422 #endif
   2423   } NDIS_WMI_OFFLOAD, *PNDIS_WMI_OFFLOAD;
   2424 
   2425   typedef struct _NDIS_TCP_CONNECTION_OFFLOAD {
   2426     NDIS_OBJECT_HEADER Header;
   2427     ULONG Encapsulation;
   2428     ULONG SupportIPv4:2;
   2429     ULONG SupportIPv6:2;
   2430     ULONG SupportIPv6ExtensionHeaders:2;
   2431     ULONG SupportSack:2;
   2432 #if NDIS_SUPPORT_NDIS61
   2433     ULONG CongestionAlgorithm:4;
   2434 #endif
   2435     ULONG TcpConnectionOffloadCapacity;
   2436     ULONG Flags;
   2437   } NDIS_TCP_CONNECTION_OFFLOAD, *PNDIS_TCP_CONNECTION_OFFLOAD;
   2438 
   2439   typedef struct _NDIS_WMI_TCP_CONNECTION_OFFLOAD {
   2440     NDIS_OBJECT_HEADER Header;
   2441     ULONG Encapsulation;
   2442     ULONG SupportIPv4;
   2443     ULONG SupportIPv6;
   2444     ULONG SupportIPv6ExtensionHeaders;
   2445     ULONG SupportSack;
   2446     ULONG TcpConnectionOffloadCapacity;
   2447     ULONG Flags;
   2448   } NDIS_WMI_TCP_CONNECTION_OFFLOAD, *PNDIS_WMI_TCP_CONNECTION_OFFLOAD;
   2449 
   2450   typedef ULONG NDIS_PORT_NUMBER, *PNDIS_PORT_NUMBER;
   2451 
   2452   typedef enum _NDIS_PORT_TYPE {
   2453     NdisPortTypeUndefined,
   2454     NdisPortTypeBridge,
   2455     NdisPortTypeRasConnection,
   2456     NdisPortType8021xSupplicant,
   2457 #if NDIS_SUPPORT_NDIS630
   2458     NdisPortTypeNdisImPlatform,
   2459 #endif
   2460     NdisPortTypeMax,
   2461   } NDIS_PORT_TYPE, *PNDIS_PORT_TYPE;
   2462 
   2463   typedef enum _NDIS_PORT_AUTHORIZATION_STATE {
   2464     NdisPortAuthorizationUnknown,
   2465     NdisPortAuthorized,
   2466     NdisPortUnauthorized,
   2467     NdisPortReauthorizing
   2468   } NDIS_PORT_AUTHORIZATION_STATE, *PNDIS_PORT_AUTHORIZATION_STATE;
   2469 
   2470   typedef enum _NDIS_PORT_CONTROL_STATE {
   2471     NdisPortControlStateUnknown,
   2472     NdisPortControlStateControlled,
   2473     NdisPortControlStateUncontrolled
   2474   } NDIS_PORT_CONTROL_STATE, *PNDIS_PORT_CONTROL_STATE;
   2475 
   2476   typedef NDIS_PORT_CONTROL_STATE NDIS_PORT_CONTROLL_STATE;
   2477   typedef PNDIS_PORT_CONTROL_STATE PNDIS_PORT_CONTROLL_STATE;
   2478 
   2479   typedef struct _NDIS_PORT_AUTHENTICATION_PARAMETERS {
   2480     NDIS_OBJECT_HEADER Header;
   2481     NDIS_PORT_CONTROL_STATE SendControlState;
   2482     NDIS_PORT_CONTROL_STATE RcvControlState;
   2483     NDIS_PORT_AUTHORIZATION_STATE SendAuthorizationState;
   2484     NDIS_PORT_AUTHORIZATION_STATE RcvAuthorizationState;
   2485   } NDIS_PORT_AUTHENTICATION_PARAMETERS, *PNDIS_PORT_AUTHENTICATION_PARAMETERS;
   2486 
   2487   typedef enum _NDIS_NETWORK_CHANGE_TYPE {
   2488     NdisPossibleNetworkChange = 1,
   2489     NdisDefinitelyNetworkChange,
   2490     NdisNetworkChangeFromMediaConnect,
   2491     NdisNetworkChangeMax
   2492   } NDIS_NETWORK_CHANGE_TYPE, *PNDIS_NETWORK_CHANGE_TYPE;
   2493 
   2494   typedef struct _NDIS_WMI_METHOD_HEADER {
   2495     NDIS_OBJECT_HEADER Header;
   2496     NDIS_PORT_NUMBER PortNumber;
   2497     NET_LUID NetLuid;
   2498     ULONG64 RequestId;
   2499     ULONG Timeout;
   2500     UCHAR Padding[4];
   2501   } NDIS_WMI_METHOD_HEADER, *PNDIS_WMI_METHOD_HEADER;
   2502 
   2503   typedef struct _NDIS_WMI_SET_HEADER {
   2504     NDIS_OBJECT_HEADER Header;
   2505     NDIS_PORT_NUMBER PortNumber;
   2506     NET_LUID NetLuid;
   2507     ULONG64 RequestId;
   2508     ULONG Timeout;
   2509     UCHAR Padding[4];
   2510   } NDIS_WMI_SET_HEADER, *PNDIS_WMI_SET_HEADER;
   2511 
   2512   typedef struct _NDIS_WMI_EVENT_HEADER {
   2513     NDIS_OBJECT_HEADER Header;
   2514     NET_IFINDEX IfIndex;
   2515     NET_LUID NetLuid;
   2516     ULONG64 RequestId;
   2517     NDIS_PORT_NUMBER PortNumber;
   2518     ULONG DeviceNameLength;
   2519     ULONG DeviceNameOffset;
   2520     UCHAR Padding[4];
   2521   } NDIS_WMI_EVENT_HEADER, *PNDIS_WMI_EVENT_HEADER;
   2522 
   2523   typedef struct _NDIS_WMI_ENUM_ADAPTER {
   2524     NDIS_OBJECT_HEADER Header;
   2525     NET_IFINDEX IfIndex;
   2526     NET_LUID NetLuid;
   2527     USHORT DeviceNameLength;
   2528     CHAR DeviceName[1];
   2529   } NDIS_WMI_ENUM_ADAPTER, *PNDIS_WMI_ENUM_ADAPTER;
   2530 
   2531 #if NDIS_SUPPORT_NDIS61
   2532 #define NDIS_HD_SPLIT_COMBINE_ALL_HEADERS 0x00000001
   2533 
   2534 #define NDIS_HD_SPLIT_CAPS_SUPPORTS_HEADER_DATA_SPLIT 0x00000001
   2535 #define NDIS_HD_SPLIT_CAPS_SUPPORTS_IPV4_OPTIONS 0x00000002
   2536 #define NDIS_HD_SPLIT_CAPS_SUPPORTS_IPV6_EXTENSION_HEADERS 0x00000004
   2537 #define NDIS_HD_SPLIT_CAPS_SUPPORTS_TCP_OPTIONS 0x00000008
   2538 
   2539 #define NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT 0x00000001
   2540 
   2541 #define NDIS_HD_SPLIT_PARAMETERS_REVISION_1 1
   2542 #define NDIS_HD_SPLIT_CURRENT_CONFIG_REVISION_1 1
   2543 
   2544 #define NDIS_SIZEOF_HD_SPLIT_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_HD_SPLIT_PARAMETERS, HDSplitCombineFlags)
   2545 #define NDIS_SIZEOF_HD_SPLIT_CURRENT_CONFIG_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_HD_SPLIT_CURRENT_CONFIG, MaxHeaderSize)
   2546 
   2547   typedef struct _NDIS_HD_SPLIT_PARAMETERS {
   2548     NDIS_OBJECT_HEADER Header;
   2549     ULONG HDSplitCombineFlags;
   2550   } NDIS_HD_SPLIT_PARAMETERS, *PNDIS_HD_SPLIT_PARAMETERS;
   2551 
   2552   typedef struct _NDIS_HD_SPLIT_CURRENT_CONFIG {
   2553     NDIS_OBJECT_HEADER Header;
   2554     ULONG HardwareCapabilities;
   2555     ULONG CurrentCapabilities;
   2556     ULONG HDSplitFlags;
   2557     ULONG HDSplitCombineFlags;
   2558     ULONG BackfillSize;
   2559     ULONG MaxHeaderSize;
   2560   } NDIS_HD_SPLIT_CURRENT_CONFIG, *PNDIS_HD_SPLIT_CURRENT_CONFIG;
   2561 #endif
   2562 
   2563 #define NDIS_WMI_OUTPUT_INFO_REVISION_1 1
   2564 
   2565   typedef struct NDIS_WMI_OUTPUT_INFO {
   2566     NDIS_OBJECT_HEADER Header;
   2567     ULONG Flags;
   2568     UCHAR SupportedRevision;
   2569     ULONG DataOffset;
   2570   } NDIS_WMI_OUTPUT_INFO, *PNDIS_WMI_OUTPUT_INFO;
   2571 
   2572 #if NDIS_SUPPORT_NDIS620
   2573 #define NDIS_PM_WOL_BITMAP_PATTERN_SUPPORTED 0x00000001
   2574 #define NDIS_PM_WOL_MAGIC_PACKET_SUPPORTED 0x00000002
   2575 #define NDIS_PM_WOL_IPV4_TCP_SYN_SUPPORTED 0x00000004
   2576 #define NDIS_PM_WOL_IPV6_TCP_SYN_SUPPORTED 0x00000008
   2577 #define NDIS_PM_WOL_IPV4_DEST_ADDR_WILDCARD_SUPPORTED 0x00000200
   2578 #define NDIS_PM_WOL_IPV6_DEST_ADDR_WILDCARD_SUPPORTED 0x00000800
   2579 #define NDIS_PM_WOL_EAPOL_REQUEST_ID_MESSAGE_SUPPORTED 0x00010000
   2580 
   2581 #define NDIS_PM_PROTOCOL_OFFLOAD_ARP_SUPPORTED 0x00000001
   2582 #define NDIS_PM_PROTOCOL_OFFLOAD_NS_SUPPORTED 0x00000002
   2583 #define NDIS_PM_PROTOCOL_OFFLOAD_80211_RSN_REKEY_SUPPORTED 0x00000080
   2584 
   2585 #if NDIS_SUPPORT_NDIS630
   2586 #define NDIS_PM_WAKE_ON_MEDIA_CONNECT_SUPPORTED 0x00000001
   2587 #define NDIS_PM_WAKE_ON_MEDIA_DISCONNECT_SUPPORTED 0x00000002
   2588 
   2589 #define NDIS_WLAN_WAKE_ON_NLO_DISCOVERY_SUPPORTED 0x00000001
   2590 #define NDIS_WLAN_WAKE_ON_AP_ASSOCIATION_LOST_SUPPORTED 0x00000002
   2591 #define NDIS_WLAN_WAKE_ON_GTK_HANDSHAKE_ERROR_SUPPORTED 0x00000004
   2592 #define NDIS_WLAN_WAKE_ON_4WAY_HANDSHAKE_REQUEST_SUPPORTED 0x00000008
   2593 
   2594 #define NDIS_WWAN_WAKE_ON_REGISTER_STATE_SUPPORTED 0x00000001
   2595 #define NDIS_WWAN_WAKE_ON_SMS_RECEIVE_SUPPORTED 0x00000002
   2596 #define NDIS_WWAN_WAKE_ON_USSD_RECEIVE_SUPPORTED 0x00000004
   2597 
   2598 #define NDIS_PM_WAKE_PACKET_INDICATION_SUPPORTED 0x00000001
   2599 #define NDIS_PM_SELECTIVE_SUSPEND_SUPPORTED 0x00000002
   2600 #endif
   2601 
   2602 #define NDIS_PM_WOL_BITMAP_PATTERN_ENABLED 0x00000001
   2603 #define NDIS_PM_WOL_MAGIC_PACKET_ENABLED 0x00000002
   2604 #define NDIS_PM_WOL_IPV4_TCP_SYN_ENABLED 0x00000004
   2605 #define NDIS_PM_WOL_IPV6_TCP_SYN_ENABLED 0x00000008
   2606 #define NDIS_PM_WOL_IPV4_DEST_ADDR_WILDCARD_ENABLED 0x00000200
   2607 #define NDIS_PM_WOL_IPV6_DEST_ADDR_WILDCARD_ENABLED 0x00000800
   2608 #define NDIS_PM_WOL_EAPOL_REQUEST_ID_MESSAGE_ENABLED 0x00010000
   2609 
   2610 #define NDIS_PM_PROTOCOL_OFFLOAD_ARP_ENABLED 0x00000001
   2611 #define NDIS_PM_PROTOCOL_OFFLOAD_NS_ENABLED 0x00000002
   2612 #define NDIS_PM_PROTOCOL_OFFLOAD_80211_RSN_REKEY_ENABLED 0x00000080
   2613 
   2614 #define NDIS_PM_WAKE_ON_LINK_CHANGE_ENABLED 0x1
   2615 #if NDIS_SUPPORT_NDIS630
   2616 #define NDIS_PM_WAKE_ON_MEDIA_DISCONNECT_ENABLED 0x2
   2617 #define NDIS_PM_SELECTIVE_SUSPEND_ENABLED 0x10
   2618 
   2619 #define NDIS_WLAN_WAKE_ON_NLO_DISCOVERY_ENABLED 0x1
   2620 #define NDIS_WLAN_WAKE_ON_AP_ASSOCIATION_LOST_ENABLED 0x2
   2621 #define NDIS_WLAN_WAKE_ON_GTK_HANDSHAKE_ERROR_ENABLED 0x4
   2622 #define NDIS_WLAN_WAKE_ON_4WAY_HANDSHAKE_REQUEST_ENABLED 0x8
   2623 
   2624 #define NDIS_WWAN_WAKE_ON_REGISTER_STATE_ENABLED 0x1
   2625 #define NDIS_WWAN_WAKE_ON_SMS_RECEIVE_ENABLED 0x2
   2626 #define NDIS_WWAN_WAKE_ON_USSD_RECEIVE_ENABLED 0x4
   2627 #endif
   2628 
   2629 #define NDIS_PM_WOL_PRIORITY_LOWEST 0xffffffff
   2630 #define NDIS_PM_WOL_PRIORITY_NORMAL 0x10000000
   2631 #define NDIS_PM_WOL_PRIORITY_HIGHEST 0x00000001
   2632 
   2633 #define NDIS_PM_PROTOCOL_OFFLOAD_PRIORITY_LOWEST 0xffffffff
   2634 #define NDIS_PM_PROTOCOL_OFFLOAD_PRIORITY_NORMAL 0x10000000
   2635 #define NDIS_PM_PROTOCOL_OFFLOAD_PRIORITY_HIGHEST 0x00000001
   2636 
   2637 #define NDIS_PM_MAX_STRING_SIZE 64
   2638 
   2639 #define EAPOL_REQUEST_ID_WOL_FLAG_MUST_ENCRYPT 0x00000001
   2640 
   2641 #define NDIS_PM_MAX_PATTERN_ID 0x0000ffff
   2642 
   2643 #define NDIS_PM_PRIVATE_PATTERN_ID 0x00000001
   2644 
   2645 #define DOT11_RSN_KEK_LENGTH 16
   2646 #define DOT11_RSN_KCK_LENGTH 16
   2647 
   2648 
   2649 #define NDIS_RECEIVE_FILTER_MAC_HEADER_SUPPORTED 0x00000001
   2650 #define NDIS_RECEIVE_FILTER_IPV4_HEADER_SUPPORTED 0x00000002
   2651 #define NDIS_RECEIVE_FILTER_IPV6_HEADER_SUPPORTED 0x00000004
   2652 #define NDIS_RECEIVE_FILTER_ARP_HEADER_SUPPORTED 0x00000008
   2653 #define NDIS_RECEIVE_FILTER_UDP_HEADER_SUPPORTED 0x00000010
   2654 
   2655 #define NDIS_RECEIVE_FILTER_MAC_HEADER_DEST_ADDR_SUPPORTED 0x00000001
   2656 #define NDIS_RECEIVE_FILTER_MAC_HEADER_SOURCE_ADDR_SUPPORTED 0x00000002
   2657 #define NDIS_RECEIVE_FILTER_MAC_HEADER_PROTOCOL_SUPPORTED 0x00000004
   2658 #define NDIS_RECEIVE_FILTER_MAC_HEADER_VLAN_ID_SUPPORTED 0x00000008
   2659 #define NDIS_RECEIVE_FILTER_MAC_HEADER_PRIORITY_SUPPORTED 0x00000010
   2660 #define NDIS_RECEIVE_FILTER_MAC_HEADER_PACKET_TYPE_SUPPORTED 0x00000020
   2661 
   2662 #define NDIS_RECEIVE_FILTER_ARP_HEADER_OPERATION_SUPPORTED 0x1
   2663 #define NDIS_RECEIVE_FILTER_ARP_HEADER_SPA_SUPPORTED 0x2
   2664 #define NDIS_RECEIVE_FILTER_ARP_HEADER_TPA_SUPPORTED 0x4
   2665 
   2666 #define NDIS_RECEIVE_FILTER_IPV4_HEADER_PROTOCOL_SUPPORTED 0x1
   2667 #define NDIS_RECEIVE_FILTER_IPV6_HEADER_PROTOCOL_SUPPORTED 0x1
   2668 #define NDIS_RECEIVE_FILTER_UDP_HEADER_DEST_PORT_SUPPORTED 0x1
   2669 
   2670 #define NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_EQUAL_SUPPORTED 0x00000001
   2671 #define NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_MASK_EQUAL_SUPPORTED 0x00000002
   2672 #define NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_NOT_EQUAL_SUPPORTED 0x00000004
   2673 
   2674 #define NDIS_RECEIVE_FILTER_MSI_X_SUPPORTED 0x00000001
   2675 #define NDIS_RECEIVE_FILTER_VM_QUEUE_SUPPORTED 0x00000002
   2676 #define NDIS_RECEIVE_FILTER_LOOKAHEAD_SPLIT_SUPPORTED 0x00000004
   2677 #if NDIS_SUPPORT_NDIS630
   2678 #define NDIS_RECEIVE_FILTER_DYNAMIC_PROCESSOR_AFFINITY_CHANGE_SUPPORTED 0x00000008
   2679 #define NDIS_RECEIVE_FILTER_INTERRUPT_VECTOR_COALESCING_SUPPORTED 0x00000010
   2680 #define NDIS_RECEIVE_FILTER_ANY_VLAN_SUPPORTED 0x00000020
   2681 #define NDIS_RECEIVE_FILTER_IMPLAT_MIN_OF_QUEUES_MODE 0x00000040
   2682 #define NDIS_RECEIVE_FILTER_IMPLAT_SUM_OF_QUEUES_MODE 0x00000080
   2683 #define NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE 0x00000100
   2684 #endif
   2685 
   2686 #define NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED 0x00000001
   2687 #define NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED 0x00000002
   2688 
   2689 #define NDIS_RECEIVE_FILTER_VM_QUEUES_ENABLED 0x00000001
   2690 
   2691 #if NDIS_SUPPORT_NDIS630
   2692 #define NDIS_NIC_SWITCH_CAPS_VLAN_SUPPORTED 0x00000001
   2693 #define NDIS_NIC_SWITCH_CAPS_PER_VPORT_INTERRUPT_MODERATION_SUPPORTED 0x00000002
   2694 #define NDIS_NIC_SWITCH_CAPS_ASYMMETRIC_QUEUE_PAIRS_FOR_NONDEFAULT_VPORT_SUPPORTED 0x00000004
   2695 #define NDIS_NIC_SWITCH_CAPS_VF_RSS_SUPPORTED 0x00000008
   2696 #define NDIS_NIC_SWITCH_CAPS_SINGLE_VPORT_POOL 0x00000010
   2697 #endif
   2698 
   2699 
   2700 #define NDIS_DEFAULT_RECEIVE_QUEUE_ID 0
   2701 #define NDIS_DEFAULT_RECEIVE_QUEUE_GROUP_ID 0
   2702 #define NDIS_DEFAULT_RECEIVE_FILTER_ID 0
   2703 
   2704 #define NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO 0x00000001
   2705 #define NDIS_RECEIVE_FILTER_PACKET_ENCAPSULATION_GRE 0x00000002
   2706 
   2707 #define NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION 0x00000001
   2708 #define NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED 0x00000002
   2709 #define NDIS_RECEIVE_QUEUE_PARAMETERS_FLAGS_CHANGED 0x00010000
   2710 #define NDIS_RECEIVE_QUEUE_PARAMETERS_PROCESSOR_AFFINITY_CHANGED 0x00020000
   2711 #define NDIS_RECEIVE_QUEUE_PARAMETERS_SUGGESTED_RECV_BUFFER_NUMBERS_CHANGED 0x00040000
   2712 #define NDIS_RECEIVE_QUEUE_PARAMETERS_NAME_CHANGED 0x00080000
   2713 #if NDIS_SUPPORT_NDIS630
   2714 #define NDIS_RECEIVE_QUEUE_PARAMETERS_INTERRUPT_COALESCING_DOMAIN_ID_CHANGED 0x00100000
   2715 #endif
   2716 
   2717 #define NDIS_RECEIVE_QUEUE_PARAMETERS_CHANGE_MASK 0xffff0000
   2718 
   2719 #if NDIS_SUPPORT_NDIS630
   2720 #define NDIS_RECEIVE_FILTER_INFO_ARRAY_VPORT_ID_SPECIFIED 0x00000001
   2721 #endif
   2722 
   2723 #define NDIS_PM_CAPABILITIES_REVISION_1 1
   2724 #define NDIS_PM_PARAMETERS_REVISION_1 1
   2725 #define NDIS_PM_WOL_PATTERN_REVISION_1 1
   2726 #define NDIS_PM_PROTOCOL_OFFLOAD_REVISION_1 1
   2727 #define NDIS_WMI_PM_ADMIN_CONFIG_REVISION_1 1
   2728 #define NDIS_WMI_PM_ACTIVE_CAPABILITIES_REVISION_1 1
   2729 #define NDIS_RECEIVE_FILTER_CAPABILITIES_REVISION_1 1
   2730 #define NDIS_NIC_SWITCH_CAPABILITIES_REVISION_1 1
   2731 #define NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS_REVISION_1 1
   2732 #define NDIS_RECEIVE_FILTER_FIELD_PARAMETERS_REVISION_1 1
   2733 #define NDIS_RECEIVE_FILTER_PARAMETERS_REVISION_1 1
   2734 #define NDIS_RECEIVE_FILTER_CLEAR_PARAMETERS_REVISION_1 1
   2735 #define NDIS_RECEIVE_QUEUE_PARAMETERS_REVISION_1 1
   2736 #define NDIS_RECEIVE_QUEUE_FREE_PARAMETERS_REVISION_1 1
   2737 #define NDIS_RECEIVE_QUEUE_INFO_REVISION_1 1
   2738 #define NDIS_RECEIVE_QUEUE_INFO_ARRAY_REVISION_1 1
   2739 #define NDIS_RECEIVE_FILTER_INFO_REVISION_1 1
   2740 #define NDIS_RECEIVE_FILTER_INFO_ARRAY_REVISION_1 1
   2741 #define NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_PARAMETERS_REVISION_1 1
   2742 #define NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_ARRAY_REVISION_1 1
   2743 #if NDIS_SUPPORT_NDIS630
   2744 #define NDIS_PM_CAPABILITIES_REVISION_2 2
   2745 #define NDIS_PM_PARAMETERS_REVISION_2 2
   2746 #define NDIS_PM_WOL_PATTERN_REVISION_2 2
   2747 #define NDIS_PM_WAKE_REASON_REVISION_1 1
   2748 #define NDIS_PM_WAKE_PACKET_REVISION_1 1
   2749 #define NDIS_RECEIVE_FILTER_CAPABILITIES_REVISION_2 2
   2750 #define NDIS_NIC_SWITCH_CAPABILITIES_REVISION_2 2
   2751 #define NDIS_RECEIVE_FILTER_FIELD_PARAMETERS_REVISION_2 2
   2752 #define NDIS_RECEIVE_FILTER_PARAMETERS_REVISION_2 2
   2753 #define NDIS_RECEIVE_QUEUE_PARAMETERS_REVISION_2 2
   2754 #define NDIS_RECEIVE_FILTER_INFO_ARRAY_REVISION_2 2
   2755 #define NDIS_RECEIVE_QUEUE_INFO_REVISION_2 2
   2756 #endif
   2757 
   2758 #define NDIS_SIZEOF_WMI_OUTPUT_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_OUTPUT_INFO, DataOffset)
   2759 #define NDIS_SIZEOF_NDIS_PM_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PM_CAPABILITIES, MinLinkChangeWakeUp)
   2760 #define NDIS_SIZEOF_NDIS_PM_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PM_PARAMETERS, WakeUpFlags)
   2761 #define NDIS_SIZEOF_NDIS_PM_WOL_PATTERN_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PM_WOL_PATTERN, WoLPattern)
   2762 #define NDIS_SIZEOF_NDIS_PM_PROTOCOL_OFFLOAD_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PM_PROTOCOL_OFFLOAD, ProtocolOffloadParameters)
   2763 #define NDIS_SIZEOF_WMI_PM_ADMIN_CONFIG_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_PM_ADMIN_CONFIG, PMWiFiRekeyOffload)
   2764 #define NDIS_SIZEOF_WMI_PM_ACTIVE_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_PM_ACTIVE_CAPABILITIES, PMWiFiRekeyOffload)
   2765 #define NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_CAPABILITIES, MaxLookaheadSplitSize)
   2766 #define NDIS_SIZEOF_NIC_SWITCH_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_CAPABILITIES, NdisReserved3)
   2767 #define NDIS_SIZEOF_RECEIVE_FILTER_GLOBAL_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS, EnabledQueueTypes)
   2768 #define NDIS_SIZEOF_RECEIVE_FILTER_FIELD_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_FIELD_PARAMETERS, ResultValue)
   2769 #define NDIS_SIZEOF_RECEIVE_FILTER_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_PARAMETERS, RequestedFilterIdBitCount)
   2770 #define NDIS_SIZEOF_RECEIVE_FILTER_CLEAR_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_CLEAR_PARAMETERS, FilterId)
   2771 #define NDIS_SIZEOF_RECEIVE_QUEUE_FREE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_QUEUE_FREE_PARAMETERS, QueueId)
   2772 #define NDIS_SIZEOF_RECEIVE_QUEUE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_QUEUE_PARAMETERS, QueueName)
   2773 #define NDIS_SIZEOF_RECEIVE_QUEUE_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_QUEUE_INFO, QueueName)
   2774 #define NDIS_SIZEOF_RECEIVE_QUEUE_INFO_ARRAY_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_QUEUE_INFO_ARRAY, ElementSize)
   2775 #define NDIS_SIZEOF_RECEIVE_FILTER_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_INFO, FilterId)
   2776 #define NDIS_SIZEOF_RECEIVE_QUEUE_ALLOCATION_COMPLETE_ARRAY_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_ARRAY, ElementSize)
   2777 #define NDIS_SIZEOF_RECEIVE_QUEUE_ALLOCATION_COMPLETE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_PARAMETERS, CompletionStatus)
   2778 #define NDIS_SIZEOF_RECEIVE_FILTER_INFO_ARRAY_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_INFO_ARRAY, ElementSize)
   2779 #if NDIS_SUPPORT_NDIS630
   2780 #define NDIS_SIZEOF_NDIS_PM_CAPABILITIES_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_PM_CAPABILITIES, MediaSpecificWakeUpEvents)
   2781 #define NDIS_SIZEOF_NDIS_PM_PARAMETERS_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_PM_PARAMETERS, MediaSpecificWakeUpEvents)
   2782 #define NDIS_SIZEOF_NDIS_PM_WOL_PATTERN_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_PM_WOL_PATTERN, WoLPattern)
   2783 #define NDIS_SIZEOF_PM_WAKE_REASON_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PM_WAKE_REASON, InfoBufferSize)
   2784 #define NDIS_SIZEOF_PM_WAKE_PACKET_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PM_WAKE_PACKET, SavedPacketOffset)
   2785 #define NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_CAPABILITIES, NdisReserved)
   2786 #define NDIS_SIZEOF_NIC_SWITCH_CAPABILITIES_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_CAPABILITIES, NdisReserved17)
   2787 #define NDIS_SIZEOF_RECEIVE_FILTER_FIELD_PARAMETERS_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_FIELD_PARAMETERS, ResultValue)
   2788 #define NDIS_SIZEOF_RECEIVE_FILTER_PARAMETERS_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_PARAMETERS, VPortId)
   2789 #define NDIS_SIZEOF_RECEIVE_FILTER_INFO_ARRAY_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_INFO_ARRAY, VPortId)
   2790 #define NDIS_SIZEOF_RECEIVE_QUEUE_INFO_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_QUEUE_INFO, InterruptCoalescingDomainId)
   2791 #define NDIS_SIZEOF_RECEIVE_QUEUE_PARAMETERS_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_QUEUE_PARAMETERS, InterruptCoalescingDomainId)
   2792 #endif
   2793 
   2794   typedef enum _NDIS_PM_WOL_PACKET {
   2795     NdisPMWoLPacketUnspecified,
   2796     NdisPMWoLPacketBitmapPattern,
   2797     NdisPMWoLPacketMagicPacket,
   2798     NdisPMWoLPacketIPv4TcpSyn,
   2799     NdisPMWoLPacketIPv6TcpSyn,
   2800     NdisPMWoLPacketEapolRequestIdMessage,
   2801     NdisPMWoLPacketMaximum
   2802   } NDIS_PM_WOL_PACKET, *PNDIS_PM_WOL_PACKET;
   2803 
   2804   typedef enum _NDIS_PM_PROTOCOL_OFFLOAD_TYPE {
   2805     NdisPMProtocolOffloadIdUnspecified,
   2806     NdisPMProtocolOffloadIdIPv4ARP,
   2807     NdisPMProtocolOffloadIdIPv6NS,
   2808     NdisPMProtocolOffload80211RSNRekey,
   2809     NdisPMProtocolOffloadIdMaximum
   2810   } NDIS_PM_PROTOCOL_OFFLOAD_TYPE, *PNDIS_PM_PROTOCOL_OFFLOAD_TYPE;
   2811 
   2812   typedef struct _NDIS_PM_COUNTED_STRING {
   2813     USHORT Length;
   2814     WCHAR String[NDIS_PM_MAX_STRING_SIZE + 1];
   2815   } NDIS_PM_COUNTED_STRING, *PNDIS_PM_COUNTED_STRING;
   2816 
   2817   typedef struct _NDIS_PM_CAPABILITIES {
   2818     NDIS_OBJECT_HEADER Header;
   2819     ULONG Flags;
   2820     ULONG SupportedWoLPacketPatterns;
   2821     ULONG NumTotalWoLPatterns;
   2822     ULONG MaxWoLPatternSize;
   2823     ULONG MaxWoLPatternOffset;
   2824     ULONG MaxWoLPacketSaveBuffer;
   2825     ULONG SupportedProtocolOffloads;
   2826     ULONG NumArpOffloadIPv4Addresses;
   2827     ULONG NumNSOffloadIPv6Addresses;
   2828     NDIS_DEVICE_POWER_STATE MinMagicPacketWakeUp;
   2829     NDIS_DEVICE_POWER_STATE MinPatternWakeUp;
   2830     NDIS_DEVICE_POWER_STATE MinLinkChangeWakeUp;
   2831 #if NDIS_SUPPORT_NDIS630
   2832     ULONG SupportedWakeUpEvents;
   2833     ULONG MediaSpecificWakeUpEvents;
   2834 #endif
   2835   } NDIS_PM_CAPABILITIES, *PNDIS_PM_CAPABILITIES;
   2836 
   2837   typedef struct _NDIS_PM_PARAMETERS {
   2838     NDIS_OBJECT_HEADER Header;
   2839     ULONG EnabledWoLPacketPatterns;
   2840     ULONG EnabledProtocolOffloads;
   2841     ULONG WakeUpFlags;
   2842 #if NDIS_SUPPORT_NDIS630
   2843     ULONG MediaSpecificWakeUpEvents;
   2844 #endif
   2845   } NDIS_PM_PARAMETERS, *PNDIS_PM_PARAMETERS;
   2846 
   2847   typedef struct _NDIS_PM_WOL_PATTERN {
   2848     NDIS_OBJECT_HEADER Header;
   2849     ULONG Flags;
   2850     ULONG Priority;
   2851     NDIS_PM_WOL_PACKET WoLPacketType;
   2852     NDIS_PM_COUNTED_STRING FriendlyName;
   2853     ULONG PatternId;
   2854     ULONG NextWoLPatternOffset;
   2855     union _WOL_PATTERN {
   2856       struct _IPV4_TCP_SYN_WOL_PACKET_PARAMETERS {
   2857 	ULONG Flags;
   2858 	UCHAR IPv4SourceAddress[4];
   2859 	UCHAR IPv4DestAddress[4];
   2860 	USHORT TCPSourcePortNumber;
   2861 	USHORT TCPDestPortNumber;
   2862       } IPv4TcpSynParameters;
   2863       struct _IPV6_TCP_SYN_WOL_PACKET_PARAMETERS {
   2864 	ULONG Flags;
   2865 	UCHAR IPv6SourceAddress[16];
   2866 	UCHAR IPv6DestAddress[16];
   2867 	USHORT TCPSourcePortNumber;
   2868 	USHORT TCPDestPortNumber;
   2869       } IPv6TcpSynParameters;
   2870       struct _EAPOL_REQUEST_ID_MESSAGE_WOL_PACKET_PARAMETERS {
   2871 	ULONG Flags;
   2872       } EapolRequestIdMessageParameters;
   2873       struct _WOL_BITMAP_PATTERN {
   2874 	ULONG Flags;
   2875 	ULONG MaskOffset;
   2876 	ULONG MaskSize;
   2877 	ULONG PatternOffset;
   2878 	ULONG PatternSize;
   2879       } WoLBitMapPattern;
   2880     } WoLPattern;
   2881   } NDIS_PM_WOL_PATTERN, *PNDIS_PM_WOL_PATTERN;
   2882 
   2883   typedef struct _NDIS_PM_PROTOCOL_OFFLOAD {
   2884     NDIS_OBJECT_HEADER Header;
   2885     ULONG Flags;
   2886     ULONG Priority;
   2887     NDIS_PM_PROTOCOL_OFFLOAD_TYPE ProtocolOffloadType;
   2888     NDIS_PM_COUNTED_STRING FriendlyName;
   2889     ULONG ProtocolOffloadId;
   2890     ULONG NextProtocolOffloadOffset;
   2891     union _PROTOCOL_OFFLOAD_PARAMETERS {
   2892       struct _IPV4_ARP_PARAMETERS {
   2893 	ULONG Flags;
   2894 	UCHAR RemoteIPv4Address[4];
   2895 	UCHAR HostIPv4Address[4];
   2896 	UCHAR MacAddress[6];
   2897       } IPv4ARPParameters;
   2898       struct _IPV6_NS_PARAMETERS {
   2899 	ULONG Flags;
   2900 	UCHAR RemoteIPv6Address[16];
   2901 	UCHAR SolicitedNodeIPv6Address[16];
   2902 	UCHAR MacAddress[6];
   2903 	UCHAR TargetIPv6Addresses[2][16];
   2904       } IPv6NSParameters;
   2905       struct _DOT11_RSN_REKEY_PARAMETERS {
   2906 	ULONG Flags;
   2907 	UCHAR KCK[DOT11_RSN_KCK_LENGTH];
   2908 	UCHAR KEK[DOT11_RSN_KEK_LENGTH];
   2909 	ULONGLONG KeyReplayCounter;
   2910       } Dot11RSNRekeyParameters;
   2911     } ProtocolOffloadParameters;
   2912   } NDIS_PM_PROTOCOL_OFFLOAD, *PNDIS_PM_PROTOCOL_OFFLOAD;
   2913 
   2914 #if NDIS_SUPPORT_NDIS630
   2915   typedef enum _NDIS_PM_WAKE_REASON_TYPE {
   2916     NdisWakeReasonUnspecified = 0x0000,
   2917     NdisWakeReasonPacket = 0x0001,
   2918     NdisWakeReasonMediaDisconnect = 0x0002,
   2919     NdisWakeReasonMediaConnect = 0x0003,
   2920     NdisWakeReasonWlanNLODiscovery = 0x1000,
   2921     NdisWakeReasonWlanAPAssociationLost = 0x1001,
   2922     NdisWakeReasonWlanGTKHandshakeError = 0x1002,
   2923     NdisWakeReasonWlan4WayHandshakeRequest = 0x1003,
   2924     NdisWakeReasonWwanRegisterState = 0x2000,
   2925     NdisWakeReasonWwanSMSReceive = 0x2001,
   2926     NdisWakeReasonWwanUSSDReceive = 0x2002,
   2927   } NDIS_PM_WAKE_REASON_TYPE, *PNDIS_PM_WAKE_REASON_TYPE;
   2928 
   2929   typedef struct _NDIS_PM_WAKE_REASON {
   2930     NDIS_OBJECT_HEADER Header;
   2931     ULONG Flags;
   2932     NDIS_PM_WAKE_REASON_TYPE WakeReason;
   2933     ULONG InfoBufferOffset;
   2934     ULONG InfoBufferSize;
   2935   } NDIS_PM_WAKE_REASON, *PNDIS_PM_WAKE_REASON;
   2936 
   2937   typedef struct _NDIS_PM_WAKE_PACKET {
   2938     NDIS_OBJECT_HEADER Header;
   2939     ULONG Flags;
   2940     ULONG PatternId;
   2941     NDIS_PM_COUNTED_STRING PatternFriendlyName;
   2942     ULONG OriginalPacketSize;
   2943     ULONG SavedPacketSize;
   2944     ULONG SavedPacketOffset;
   2945   } NDIS_PM_WAKE_PACKET, *PNDIS_PM_WAKE_PACKET;
   2946 #endif
   2947 
   2948   typedef enum _NDIS_PM_ADMIN_CONFIG_STATE {
   2949     NdisPMAdminConfigUnspecified = 0,
   2950     NdisPMAdminConfigDisabled = 1,
   2951     NdisPMAdminConfigEnabled = 2
   2952   } NDIS_PM_ADMIN_CONFIG_STATE, *PNDIS_PM_ADMIN_CONFIG_STATE;
   2953 
   2954   typedef struct _NDIS_WMI_PM_ADMIN_CONFIG {
   2955     NDIS_OBJECT_HEADER Header;
   2956     NDIS_PM_ADMIN_CONFIG_STATE WakeOnPattern;
   2957     NDIS_PM_ADMIN_CONFIG_STATE WakeOnMagicPacket;
   2958     NDIS_PM_ADMIN_CONFIG_STATE DeviceSleepOnDisconnect;
   2959     NDIS_PM_ADMIN_CONFIG_STATE PMARPOffload;
   2960     NDIS_PM_ADMIN_CONFIG_STATE PMNSOffload;
   2961     NDIS_PM_ADMIN_CONFIG_STATE PMWiFiRekeyOffload;
   2962   } NDIS_WMI_PM_ADMIN_CONFIG, *PNDIS_WMI_PM_ADMIN_CONFIG;
   2963 
   2964   typedef enum _NDIS_PM_CAPABILITY_STATE {
   2965     NdisPMAdminConfigUnsupported = 0,
   2966     NdisPMAdminConfigInactive = 1,
   2967     NdisPMAdminConfigActive = 2
   2968   } NDIS_PM_CAPABILITY_STATE, *PNDIS_PM_CAPABILITY_STATE;
   2969 
   2970   typedef struct _NDIS_WMI_PM_ACTIVE_CAPABILITIES {
   2971     NDIS_OBJECT_HEADER Header;
   2972     NDIS_PM_CAPABILITY_STATE WakeOnPattern;
   2973     NDIS_PM_CAPABILITY_STATE WakeOnMagicPacket;
   2974     NDIS_PM_CAPABILITY_STATE DeviceSleepOnDisconnect;
   2975     NDIS_PM_CAPABILITY_STATE PMARPOffload;
   2976     NDIS_PM_CAPABILITY_STATE PMNSOffload;
   2977     NDIS_PM_CAPABILITY_STATE PMWiFiRekeyOffload;
   2978   } NDIS_WMI_PM_ACTIVE_CAPABILITIES, *PNDIS_WMI_PM_ACTIVE_CAPABILITIES;
   2979 
   2980   typedef struct _NDIS_RECEIVE_FILTER_CAPABILITIES {
   2981     NDIS_OBJECT_HEADER Header;
   2982     ULONG Flags;
   2983     ULONG EnabledFilterTypes;
   2984     ULONG EnabledQueueTypes;
   2985     ULONG NumQueues;
   2986     ULONG SupportedQueueProperties;
   2987     ULONG SupportedFilterTests;
   2988     ULONG SupportedHeaders;
   2989     ULONG SupportedMacHeaderFields;
   2990     ULONG MaxMacHeaderFilters;
   2991     ULONG MaxQueueGroups;
   2992     ULONG MaxQueuesPerQueueGroup;
   2993     ULONG MinLookaheadSplitSize;
   2994     ULONG MaxLookaheadSplitSize;
   2995 #if NDIS_SUPPORT_NDIS630
   2996     ULONG SupportedARPHeaderFields;
   2997     ULONG SupportedIPv4HeaderFields;
   2998     ULONG SupportedIPv6HeaderFields;
   2999     ULONG SupportedUdpHeaderFields;
   3000     ULONG MaxFieldTestsPerPacketCoalescingFilter;
   3001     ULONG MaxPacketCoalescingFilters;
   3002     ULONG NdisReserved;
   3003 #endif
   3004   } NDIS_RECEIVE_FILTER_CAPABILITIES, *PNDIS_RECEIVE_FILTER_CAPABILITIES;
   3005 
   3006   typedef struct _NDIS_NIC_SWITCH_CAPABILITIES {
   3007     NDIS_OBJECT_HEADER Header;
   3008     ULONG Flags;
   3009     ULONG NdisReserved1;
   3010     ULONG NumTotalMacAddresses;
   3011     ULONG NumMacAddressesPerPort;
   3012     ULONG NumVlansPerPort;
   3013     ULONG NdisReserved2;
   3014     ULONG NdisReserved3;
   3015 #if NDIS_SUPPORT_NDIS630
   3016     ULONG NicSwitchCapabilities;
   3017     ULONG MaxNumSwitches;
   3018     ULONG MaxNumVPorts;
   3019     ULONG NdisReserved4;
   3020     ULONG MaxNumVFs;
   3021     ULONG MaxNumQueuePairs;
   3022     ULONG NdisReserved5;
   3023     ULONG NdisReserved6;
   3024     ULONG NdisReserved7;
   3025     ULONG MaxNumQueuePairsPerNonDefaultVPort;
   3026     ULONG NdisReserved8;
   3027     ULONG NdisReserved9;
   3028     ULONG NdisReserved10;
   3029     ULONG NdisReserved11;
   3030     ULONG NdisReserved12;
   3031     ULONG MaxNumMacAddresses;
   3032     ULONG NdisReserved13;
   3033     ULONG NdisReserved14;
   3034     ULONG NdisReserved15;
   3035     ULONG NdisReserved16;
   3036     ULONG NdisReserved17;
   3037 #endif
   3038   } NDIS_NIC_SWITCH_CAPABILITIES, *PNDIS_NIC_SWITCH_CAPABILITIES;
   3039 
   3040   typedef struct _NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS {
   3041     NDIS_OBJECT_HEADER Header;
   3042     ULONG Flags;
   3043     ULONG EnabledFilterTypes;
   3044     ULONG EnabledQueueTypes;
   3045   } NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS, *PNDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS;
   3046 
   3047   typedef ULONG NDIS_RECEIVE_QUEUE_ID, *PNDIS_RECEIVE_QUEUE_ID;
   3048   typedef ULONG NDIS_RECEIVE_QUEUE_GROUP_ID, *PNDIS_RECEIVE_QUEUE_GROUP_ID;
   3049   typedef ULONG NDIS_RECEIVE_FILTER_ID, *PNDIS_RECEIVE_FILTER_ID;
   3050 
   3051   typedef enum _NDIS_RECEIVE_FILTER_TYPE {
   3052     NdisReceiveFilterTypeUndefined,
   3053     NdisReceiveFilterTypeVMQueue,
   3054     NdisReceiveFilterTypePacketCoalescing,
   3055     NdisReceiveFilterTypeMaximum
   3056   } NDIS_RECEIVE_FILTER_TYPE, *PNDIS_RECEIVE_FILTER_TYPE;
   3057 
   3058   typedef enum _NDIS_FRAME_HEADER {
   3059     NdisFrameHeaderUndefined,
   3060     NdisFrameHeaderMac,
   3061     NdisFrameHeaderArp,
   3062     NdisFrameHeaderIPv4,
   3063     NdisFrameHeaderIPv6,
   3064     NdisFrameHeaderUdp,
   3065     NdisFrameHeaderMaximum
   3066   } NDIS_FRAME_HEADER, *PNDIS_FRAME_HEADER;
   3067 
   3068   typedef enum _NDIS_MAC_HEADER_FIELD {
   3069     NdisMacHeaderFieldUndefined,
   3070     NdisMacHeaderFieldDestinationAddress,
   3071     NdisMacHeaderFieldSourceAddress,
   3072     NdisMacHeaderFieldProtocol,
   3073     NdisMacHeaderFieldVlanId,
   3074     NdisMacHeaderFieldPriority,
   3075     NdisMacHeaderFieldPacketType,
   3076     NdisMacHeaderFieldMaximum
   3077   } NDIS_MAC_HEADER_FIELD, *PNDIS_MAC_HEADER_FIELD;
   3078 
   3079   typedef enum _NDIS_MAC_PACKET_TYPE {
   3080     NdisMacPacketTypeUndefined = 0,
   3081     NdisMacPacketTypeUnicast = 1,
   3082     NdisMacPacketTypeMulticast = 2,
   3083     NdisMacPacketTypeBroadcast = 3,
   3084     NdisMacPacketTypeMaximum
   3085   } NDIS_MAC_PACKET_TYPE, *PNDIS_MAC_PACKET_TYPE;
   3086 
   3087   typedef enum _NDIS_ARP_HEADER_FIELD {
   3088     NdisARPHeaderFieldUndefined,
   3089     NdisARPHeaderFieldOperation,
   3090     NdisARPHeaderFieldSPA,
   3091     NdisARPHeaderFieldTPA,
   3092     NdisARPHeaderFieldMaximum
   3093   } NDIS_ARP_HEADER_FIELD, *PNDIS_ARP_HEADER_FIELD;
   3094 
   3095   typedef enum _NDIS_IPV4_HEADER_FIELD {
   3096     NdisIPv4HeaderFieldUndefined,
   3097     NdisIPv4HeaderFieldProtocol,
   3098     NdisIPv4HeaderFieldMaximum
   3099   } NDIS_IPV4_HEADER_FIELD, *PNDIS_IPV4_HEADER_FIELD;
   3100 
   3101   typedef enum _NDIS_IPV6_HEADER_FIELD {
   3102     NdisIPv6HeaderFieldUndefined,
   3103     NdisIPv6HeaderFieldProtocol,
   3104     NdisIPv6HeaderFieldMaximum
   3105   } NDIS_IPV6_HEADER_FIELD, *PNDIS_IPV6_HEADER_FIELD;
   3106 
   3107   typedef enum _NDIS_UDP_HEADER_FIELD {
   3108     NdisUdpHeaderFieldUndefined,
   3109     NdisUdpHeaderFieldDestinationPort,
   3110     NdisUdpHeaderFieldMaximum
   3111   } NDIS_UDP_HEADER_FIELD, *PNDIS_UDP_HEADER_FIELD;
   3112 
   3113   typedef enum _NDIS_RECEIVE_FILTER_TEST {
   3114     NdisReceiveFilterTestUndefined,
   3115     NdisReceiveFilterTestEqual,
   3116     NdisReceiveFilterTestMaskEqual,
   3117     NdisReceiveFilterTestNotEqual,
   3118     NdisReceiveFilterTestMaximum
   3119   } NDIS_RECEIVE_FILTER_TEST, *PNDIS_RECEIVE_FILTER_TEST;
   3120 
   3121   typedef struct _NDIS_RECEIVE_FILTER_FIELD_PARAMETERS {
   3122     NDIS_OBJECT_HEADER Header;
   3123     ULONG Flags;
   3124     NDIS_FRAME_HEADER FrameHeader;
   3125     NDIS_RECEIVE_FILTER_TEST ReceiveFilterTest;
   3126     union _HEADER_FIELD {
   3127       NDIS_MAC_HEADER_FIELD MacHeaderField;
   3128       NDIS_ARP_HEADER_FIELD ArpHeaderField;
   3129       NDIS_IPV4_HEADER_FIELD IPv4HeaderField;
   3130       NDIS_IPV6_HEADER_FIELD IPv6HeaderField;
   3131       NDIS_UDP_HEADER_FIELD UdpHeaderField;
   3132     } HeaderField;
   3133     union _FIELD_VALUE {
   3134       UCHAR FieldByteValue;
   3135       USHORT FieldShortValue;
   3136       ULONG FieldLongValue;
   3137       ULONG64 FieldLong64Value;
   3138       UCHAR FieldByteArrayValue[16];
   3139     } FieldValue;
   3140     union _RESULT_VALUE {
   3141       UCHAR ResultByteValue;
   3142       USHORT ResultShortValue;
   3143       ULONG ResultLongValue;
   3144       ULONG64 ResultLong64Value;
   3145       UCHAR ResultByteArrayValue[16];
   3146     } ResultValue;
   3147   } NDIS_RECEIVE_FILTER_FIELD_PARAMETERS, *PNDIS_RECEIVE_FILTER_FIELD_PARAMETERS;
   3148 
   3149 #if NDIS_SUPPORT_NDIS630
   3150   typedef ULONG NDIS_NIC_SWITCH_VPORT_ID, *PNDIS_NIC_SWITCH_VPORT_ID;
   3151 #endif
   3152 
   3153   typedef struct _NDIS_RECEIVE_FILTER_PARAMETERS {
   3154     NDIS_OBJECT_HEADER Header;
   3155     ULONG Flags;
   3156     NDIS_RECEIVE_FILTER_TYPE FilterType;
   3157     NDIS_RECEIVE_QUEUE_ID QueueId;
   3158     NDIS_RECEIVE_FILTER_ID FilterId;
   3159     ULONG FieldParametersArrayOffset;
   3160     ULONG FieldParametersArrayNumElements;
   3161     ULONG FieldParametersArrayElementSize;
   3162     ULONG RequestedFilterIdBitCount;
   3163 #if NDIS_SUPPORT_NDIS630
   3164     ULONG MaxCoalescingDelay;
   3165     NDIS_NIC_SWITCH_VPORT_ID VPortId;
   3166 #endif
   3167   } NDIS_RECEIVE_FILTER_PARAMETERS, *PNDIS_RECEIVE_FILTER_PARAMETERS;
   3168 
   3169   typedef struct _NDIS_RECEIVE_FILTER_CLEAR_PARAMETERS {
   3170     NDIS_OBJECT_HEADER Header;
   3171     ULONG Flags;
   3172     NDIS_RECEIVE_QUEUE_ID QueueId;
   3173     NDIS_RECEIVE_FILTER_ID FilterId;
   3174   } NDIS_RECEIVE_FILTER_CLEAR_PARAMETERS, *PNDIS_RECEIVE_FILTER_CLEAR_PARAMETERS;
   3175 
   3176   typedef enum _NDIS_RECEIVE_QUEUE_TYPE {
   3177     NdisReceiveQueueTypeUnspecified,
   3178     NdisReceiveQueueTypeVMQueue,
   3179     NdisReceiveQueueTypeMaximum
   3180   } NDIS_RECEIVE_QUEUE_TYPE, *PNDIS_RECEIVE_QUEUE_TYPE;
   3181 
   3182   typedef NDIS_IF_COUNTED_STRING NDIS_QUEUE_NAME, *PNDIS_QUEUE_NAME;
   3183   typedef NDIS_IF_COUNTED_STRING NDIS_VM_NAME, *PNDIS_VM_NAME;
   3184   typedef NDIS_IF_COUNTED_STRING NDIS_VM_FRIENDLYNAME, *PNDIS_VM_FRIENDLYNAME;
   3185   typedef NDIS_IF_COUNTED_STRING NDIS_SWITCH_PORT_PROPERTY_PROFILE_NAME, *PNDIS_SWITCH_PORT_PROPERTY_PROFILE_NAME;
   3186   typedef NDIS_IF_COUNTED_STRING NDIS_SWITCH_PORT_PROPERTY_PROFILE_CDN_LABEL, *PNDIS_SWITCH_PORT_PROPERTY_PROFILE_CDN_LABEL;
   3187   typedef NDIS_IF_COUNTED_STRING NDIS_SWITCH_NAME, *PNDIS_SWITCH_NAME;
   3188   typedef NDIS_IF_COUNTED_STRING NDIS_SWITCH_FRIENDLYNAME, *PNDIS_SWITCH_FRIENDLYNAME;
   3189   typedef NDIS_IF_COUNTED_STRING NDIS_SWITCH_PORT_NAME, *PNDIS_SWITCH_PORT_NAME;
   3190   typedef NDIS_IF_COUNTED_STRING NDIS_SWITCH_PORT_FRIENDLYNAME, *PNDIS_SWITCH_PORT_FRIENDLYNAME;
   3191   typedef NDIS_IF_COUNTED_STRING NDIS_SWITCH_NIC_NAME, *PNDIS_SWITCH_NIC_NAME;
   3192   typedef NDIS_IF_COUNTED_STRING NDIS_SWITCH_NIC_FRIENDLYNAME, *PNDIS_SWITCH_NIC_FRIENDLYNAME;
   3193   typedef NDIS_IF_COUNTED_STRING NDIS_SWITCH_EXTENSION_FRIENDLYNAME, *PNDIS_SWITCH_EXTENSION_FRIENDLYNAME;
   3194   typedef NDIS_IF_COUNTED_STRING NDIS_VENDOR_NAME, *PNDIS_VENDOR_NAME;
   3195 
   3196   typedef struct _NDIS_RECEIVE_QUEUE_PARAMETERS {
   3197     NDIS_OBJECT_HEADER Header;
   3198     ULONG Flags;
   3199     NDIS_RECEIVE_QUEUE_TYPE QueueType;
   3200     NDIS_RECEIVE_QUEUE_ID QueueId;
   3201     NDIS_RECEIVE_QUEUE_GROUP_ID QueueGroupId;
   3202     GROUP_AFFINITY ProcessorAffinity;
   3203     ULONG NumSuggestedReceiveBuffers;
   3204     ULONG MSIXTableEntry;
   3205     ULONG LookaheadSize;
   3206     NDIS_VM_NAME VmName;
   3207     NDIS_QUEUE_NAME QueueName;
   3208 #if NDIS_SUPPORT_NDIS630
   3209     ULONG PortId;
   3210     ULONG InterruptCoalescingDomainId;
   3211 #endif
   3212   } NDIS_RECEIVE_QUEUE_PARAMETERS, *PNDIS_RECEIVE_QUEUE_PARAMETERS;
   3213 
   3214   typedef struct _NDIS_RECEIVE_QUEUE_FREE_PARAMETERS {
   3215     NDIS_OBJECT_HEADER Header;
   3216     ULONG Flags;
   3217     NDIS_RECEIVE_QUEUE_ID QueueId;
   3218   } NDIS_RECEIVE_QUEUE_FREE_PARAMETERS, *PNDIS_RECEIVE_QUEUE_FREE_PARAMETERS;
   3219 
   3220   typedef enum _NDIS_RECEIVE_QUEUE_OPERATIONAL_STATE {
   3221     NdisReceiveQueueOperationalStateUndefined,
   3222     NdisReceiveQueueOperationalStateRunning,
   3223     NdisReceiveQueueOperationalStatePaused,
   3224     NdisReceiveQueueOperationalStateDmaStopped,
   3225     NdisReceiveQueueOperationalStateMaximum
   3226   } NDIS_RECEIVE_QUEUE_OPERATIONAL_STATE, *PNDIS_RECEIVE_QUEUE_OPERATIONAL_STATE;
   3227 
   3228   typedef struct _NDIS_RECEIVE_QUEUE_INFO {
   3229     NDIS_OBJECT_HEADER Header;
   3230     ULONG Flags;
   3231     NDIS_RECEIVE_QUEUE_TYPE QueueType;
   3232     NDIS_RECEIVE_QUEUE_ID QueueId;
   3233     NDIS_RECEIVE_QUEUE_GROUP_ID QueueGroupId;
   3234     NDIS_RECEIVE_QUEUE_OPERATIONAL_STATE QueueState;
   3235     GROUP_AFFINITY ProcessorAffinity;
   3236     ULONG NumSuggestedReceiveBuffers;
   3237     ULONG MSIXTableEntry;
   3238     ULONG LookaheadSize;
   3239     NDIS_VM_NAME VmName;
   3240     NDIS_QUEUE_NAME QueueName;
   3241 #if NDIS_SUPPORT_NDIS630
   3242     ULONG NumFilters;
   3243     ULONG InterruptCoalescingDomainId;
   3244 #endif
   3245   } NDIS_RECEIVE_QUEUE_INFO, *PNDIS_RECEIVE_QUEUE_INFO;
   3246 
   3247   typedef struct _NDIS_RECEIVE_QUEUE_INFO_ARRAY {
   3248     NDIS_OBJECT_HEADER Header;
   3249     ULONG FirstElementOffset;
   3250     ULONG NumElements;
   3251     ULONG ElementSize;
   3252   } NDIS_RECEIVE_QUEUE_INFO_ARRAY, *PNDIS_RECEIVE_QUEUE_INFO_ARRAY;
   3253 
   3254   typedef struct _NDIS_RECEIVE_FILTER_INFO {
   3255     NDIS_OBJECT_HEADER Header;
   3256     ULONG Flags;
   3257     NDIS_RECEIVE_FILTER_TYPE FilterType;
   3258     NDIS_RECEIVE_FILTER_ID FilterId;
   3259   } NDIS_RECEIVE_FILTER_INFO, *PNDIS_RECEIVE_FILTER_INFO;
   3260 
   3261   typedef struct _NDIS_RECEIVE_FILTER_INFO_ARRAY {
   3262     NDIS_OBJECT_HEADER Header;
   3263     NDIS_RECEIVE_QUEUE_ID QueueId;
   3264     ULONG FirstElementOffset;
   3265     ULONG NumElements;
   3266     ULONG ElementSize;
   3267 #if NDIS_SUPPORT_NDIS630
   3268     ULONG Flags;
   3269     NDIS_NIC_SWITCH_VPORT_ID VPortId;
   3270 #endif
   3271   } NDIS_RECEIVE_FILTER_INFO_ARRAY, *PNDIS_RECEIVE_FILTER_INFO_ARRAY;
   3272 
   3273   typedef struct _NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_PARAMETERS {
   3274     NDIS_OBJECT_HEADER Header;
   3275     ULONG Flags;
   3276     NDIS_RECEIVE_QUEUE_ID QueueId;
   3277     NDIS_STATUS CompletionStatus;
   3278   } NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_PARAMETERS, *PNDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_PARAMETERS;
   3279 
   3280   typedef struct _NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_ARRAY {
   3281     NDIS_OBJECT_HEADER Header;
   3282     ULONG Flags;
   3283     ULONG FirstElementOffset;
   3284     ULONG NumElements;
   3285     ULONG ElementSize;
   3286   } NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_ARRAY, *PNDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_ARRAY;
   3287 #endif
   3288 
   3289 #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
   3290 #define NDIS_RSS_CAPS_MESSAGE_SIGNALED_INTERRUPTS 0x01000000
   3291 #define NDIS_RSS_CAPS_CLASSIFICATION_AT_ISR 0x02000000
   3292 #define NDIS_RSS_CAPS_CLASSIFICATION_AT_DPC 0x04000000
   3293 #if NDIS_SUPPORT_NDIS620
   3294 #define NDIS_RSS_CAPS_USING_MSI_X 0x08000000
   3295 #endif
   3296 #if NDIS_SUPPORT_NDIS630
   3297 #define NDIS_RSS_CAPS_RSS_AVAILABLE_ON_PORTS 0x10000000
   3298 #define NDIS_RSS_CAPS_SUPPORTS_MSI_X 0x20000000
   3299 #endif
   3300 #define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV4 0x00000100
   3301 #define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6 0x00000200
   3302 #define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6_EX 0x00000400
   3303 
   3304 #define NdisHashFunctionToeplitz 0x00000001
   3305 #define NdisHashFunctionReserved1 0x00000002
   3306 #define NdisHashFunctionReserved2 0x00000004
   3307 #define NdisHashFunctionReserved3 0x00000008
   3308 
   3309 #define NDIS_HASH_FUNCTION_MASK 0x000000ff
   3310 #define NDIS_HASH_TYPE_MASK 0x00ffff00
   3311 
   3312 #define NDIS_RSS_HASH_FUNC_FROM_HASH_INFO(HINFO) ((HINFO) & (NDIS_HASH_FUNCTION_MASK))
   3313 #define NDIS_RSS_HASH_TYPE_FROM_HASH_INFO(HINFO) ((HINFO) & (NDIS_HASH_TYPE_MASK))
   3314 #define NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC(HTYPE, HFCT) ((HTYPE) | (HFCT))
   3315 
   3316 #define NDIS_HASH_IPV4 0x00000100
   3317 #define NDIS_HASH_TCP_IPV4 0x00000200
   3318 #define NDIS_HASH_IPV6 0x00000400
   3319 #define NDIS_HASH_IPV6_EX 0x00000800
   3320 #define NDIS_HASH_TCP_IPV6 0x00001000
   3321 #define NDIS_HASH_TCP_IPV6_EX 0x00002000
   3322 
   3323 #define NDIS_RSS_PARAM_FLAG_BASE_CPU_UNCHANGED 0x0001
   3324 #define NDIS_RSS_PARAM_FLAG_HASH_INFO_UNCHANGED 0x0002
   3325 #define NDIS_RSS_PARAM_FLAG_ITABLE_UNCHANGED 0x0004
   3326 #define NDIS_RSS_PARAM_FLAG_HASH_KEY_UNCHANGED 0x0008
   3327 #define NDIS_RSS_PARAM_FLAG_DISABLE_RSS 0x0010
   3328 
   3329 #define NDIS_RSS_INDIRECTION_TABLE_SIZE_REVISION_1 128
   3330 #define NDIS_RSS_HASH_SECRET_KEY_SIZE_REVISION_1 40
   3331 
   3332 #define NDIS_RSS_INDIRECTION_TABLE_MAX_SIZE_REVISION_1 128
   3333 #define NDIS_RSS_HASH_SECRET_KEY_MAX_SIZE_REVISION_1 40
   3334 
   3335 #if NDIS_SUPPORT_NDIS620
   3336 #define NDIS_RSS_INDIRECTION_TABLE_MAX_SIZE_REVISION_2 (128 * sizeof (PROCESSOR_NUMBER))
   3337 #define NDIS_RSS_HASH_SECRET_KEY_MAX_SIZE_REVISION_2 40
   3338 #endif
   3339 
   3340 #define NDIS_RECEIVE_HASH_FLAG_ENABLE_HASH 0x00000001
   3341 #define NDIS_RECEIVE_HASH_FLAG_HASH_INFO_UNCHANGED 0x00000002
   3342 #define NDIS_RECEIVE_HASH_FLAG_HASH_KEY_UNCHANGED 0x00000004
   3343 
   3344 #define NDIS_PORT_CHAR_USE_DEFAULT_AUTH_SETTINGS 0x00000001
   3345 
   3346 #define NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_1 1
   3347 #define NDIS_RECEIVE_HASH_PARAMETERS_REVISION_1 1
   3348 #define NDIS_PORT_STATE_REVISION_1 1
   3349 #define NDIS_PORT_CHARACTERISTICS_REVISION_1 1
   3350 #define NDIS_PORT_ARRAY_REVISION_1 1
   3351 #define NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_1 1
   3352 #if NDIS_SUPPORT_NDIS620
   3353 #define NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2 2
   3354 #endif
   3355 #if NDIS_SUPPORT_NDIS630
   3356 #define NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_2 2
   3357 #endif
   3358 
   3359 #define NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_SCALE_CAPABILITIES, NumberOfReceiveQueues)
   3360 #define NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_SCALE_PARAMETERS, HashSecretKeyOffset)
   3361 #define NDIS_SIZEOF_RECEIVE_HASH_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_HASH_PARAMETERS, HashSecretKeyOffset)
   3362 #define NDIS_SIZEOF_PORT_STATE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PORT_STATE, Flags)
   3363 #define NDIS_SIZEOF_PORT_CHARACTERISTICS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PORT_CHARACTERISTICS, RcvAuthorizationState)
   3364 #define NDIS_SIZEOF_PORT_ARRAY_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PORT_ARRAY, Ports)
   3365 #if NDIS_SUPPORT_NDIS620
   3366 #define NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_SCALE_PARAMETERS, ProcessorMasksEntrySize)
   3367 #endif
   3368 #if NDIS_SUPPORT_NDIS630
   3369 #define NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_SCALE_CAPABILITIES, NumberOfIndirectionTableEntries)
   3370 #endif
   3371 
   3372   typedef struct _NDIS_RECEIVE_SCALE_CAPABILITIES {
   3373     NDIS_OBJECT_HEADER Header;
   3374     ULONG CapabilitiesFlags;
   3375     ULONG NumberOfInterruptMessages;
   3376     ULONG NumberOfReceiveQueues;
   3377 #if NDIS_SUPPORT_NDIS630
   3378     USHORT NumberOfIndirectionTableEntries;
   3379 #endif
   3380   } NDIS_RECEIVE_SCALE_CAPABILITIES, *PNDIS_RECEIVE_SCALE_CAPABILITIES;
   3381 
   3382   typedef struct _NDIS_RECEIVE_SCALE_PARAMETERS {
   3383     NDIS_OBJECT_HEADER Header;
   3384     USHORT Flags;
   3385     USHORT BaseCpuNumber;
   3386     ULONG HashInformation;
   3387     USHORT IndirectionTableSize;
   3388     ULONG IndirectionTableOffset;
   3389     USHORT HashSecretKeySize;
   3390     ULONG HashSecretKeyOffset;
   3391 #if NDIS_SUPPORT_NDIS620
   3392     ULONG ProcessorMasksOffset;
   3393     ULONG NumberOfProcessorMasks;
   3394     ULONG ProcessorMasksEntrySize;
   3395 #endif
   3396   } NDIS_RECEIVE_SCALE_PARAMETERS, *PNDIS_RECEIVE_SCALE_PARAMETERS;
   3397 
   3398   typedef struct _NDIS_RECEIVE_HASH_PARAMETERS {
   3399     NDIS_OBJECT_HEADER Header;
   3400     ULONG Flags;
   3401     ULONG HashInformation;
   3402     USHORT HashSecretKeySize;
   3403     ULONG HashSecretKeyOffset;
   3404   } NDIS_RECEIVE_HASH_PARAMETERS, *PNDIS_RECEIVE_HASH_PARAMETERS;
   3405 
   3406   typedef enum _NDIS_PROCESSOR_VENDOR {
   3407     NdisProcessorVendorUnknown,
   3408     NdisProcessorVendorGenuinIntel,
   3409     NdisProcessorVendorGenuineIntel = NdisProcessorVendorGenuinIntel,
   3410     NdisProcessorVendorAuthenticAMD
   3411   } NDIS_PROCESSOR_VENDOR, *PNDIS_PROCESSOR_VENDOR;
   3412 
   3413 #if NDIS_SUPPORT_NDIS620
   3414 #define NDIS_HYPERVISOR_INFO_FLAG_HYPERVISOR_PRESENT 0x00000001
   3415 
   3416 #define NDIS_RSS_PROCESSOR_INFO_REVISION_1 1
   3417 #define NDIS_SYSTEM_PROCESSOR_INFO_EX_REVISION_1 1
   3418 #define NDIS_HYPERVISOR_INFO_REVISION_1 1
   3419 #define NDIS_WMI_RECEIVE_QUEUE_INFO_REVISION_1 1
   3420 #define NDIS_WMI_RECEIVE_QUEUE_PARAMETERS_REVISION_1 1
   3421 #if NDIS_SUPPORT_NDIS630
   3422 #define NDIS_RSS_PROCESSOR_INFO_REVISION_2 2
   3423 #endif
   3424 
   3425 #define NDIS_SIZEOF_RSS_PROCESSOR_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RSS_PROCESSOR, PreferenceIndex)
   3426 #define NDIS_SIZEOF_RSS_PROCESSOR_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RSS_PROCESSOR_INFO, RssProcessorEntrySize)
   3427 #define NDIS_SIZEOF_SYSTEM_PROCESSOR_INFO_EX_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SYSTEM_PROCESSOR_INFO_EX, ProcessorInfoEntrySize)
   3428 #define NDIS_SIZEOF_HYPERVISOR_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_HYPERVISOR_INFO, PartitionType)
   3429 #define NDIS_SIZEOF_WMI_RECEIVE_QUEUE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_RECEIVE_QUEUE_PARAMETERS, QueueName)
   3430 #define NDIS_SIZEOF_WMI_RECEIVE_QUEUE_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_RECEIVE_QUEUE_INFO, QueueName)
   3431 #if NDIS_SUPPORT_NDIS630
   3432 #define NDIS_SIZEOF_RSS_PROCESSOR_INFO_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_RSS_PROCESSOR_INFO, RssProfile)
   3433 #endif
   3434 
   3435   typedef struct _NDIS_RSS_PROCESSOR {
   3436     PROCESSOR_NUMBER ProcNum;
   3437     USHORT PreferenceIndex;
   3438     USHORT Reserved;
   3439   } NDIS_RSS_PROCESSOR, *PNDIS_RSS_PROCESSOR;
   3440 
   3441 #if NDIS_SUPPORT_NDIS630
   3442   typedef enum _NDIS_RSS_PROFILE {
   3443     NdisRssProfileClosest = 1,
   3444     NdisRssProfileClosestStatic,
   3445     NdisRssProfileNuma,
   3446     NdisRssProfileNumaStatic,
   3447     NdisRssProfileConservative,
   3448     NdisRssProfileMaximum,
   3449   } NDIS_RSS_PROFILE, *PNDIS_RSS_PROFILE;
   3450 #endif
   3451 
   3452   typedef struct _NDIS_RSS_PROCESSOR_INFO {
   3453     NDIS_OBJECT_HEADER Header;
   3454     ULONG Flags;
   3455     PROCESSOR_NUMBER RssBaseProcessor;
   3456     ULONG MaxNumRssProcessors;
   3457     USHORT PreferredNumaNode;
   3458     ULONG RssProcessorArrayOffset;
   3459     ULONG RssProcessorCount;
   3460     ULONG RssProcessorEntrySize;
   3461 #if NDIS_SUPPORT_NDIS630
   3462     PROCESSOR_NUMBER RssMaxProcessor;
   3463     NDIS_RSS_PROFILE RssProfile;
   3464 #endif
   3465   } NDIS_RSS_PROCESSOR_INFO, *PNDIS_RSS_PROCESSOR_INFO;
   3466 
   3467   typedef struct _NDIS_PROCESSOR_INFO_EX {
   3468     PROCESSOR_NUMBER ProcNum;
   3469     ULONG SocketId;
   3470     ULONG CoreId;
   3471     ULONG HyperThreadId;
   3472     USHORT NodeId;
   3473     USHORT NodeDistance;
   3474   } NDIS_PROCESSOR_INFO_EX, *PNDIS_PROCESSOR_INFO_EX;
   3475 
   3476   typedef struct _NDIS_SYSTEM_PROCESSOR_INFO_EX {
   3477     NDIS_OBJECT_HEADER Header;
   3478     ULONG Flags;
   3479     NDIS_PROCESSOR_VENDOR ProcessorVendor;
   3480     ULONG NumSockets;
   3481     ULONG NumCores;
   3482     ULONG NumCoresPerSocket;
   3483     ULONG MaxHyperThreadingProcsPerCore;
   3484     ULONG ProcessorInfoOffset;
   3485     ULONG NumberOfProcessors;
   3486     ULONG ProcessorInfoEntrySize;
   3487   } NDIS_SYSTEM_PROCESSOR_INFO_EX, *PNDIS_SYSTEM_PROCESSOR_INFO_EX;
   3488 
   3489   typedef enum _NDIS_HYPERVISOR_PARTITION_TYPE {
   3490     NdisHypervisorPartitionTypeUnknown,
   3491     NdisHypervisorPartitionTypeMsHvParent,
   3492     NdisHypervisorPartitionMsHvChild,
   3493     NdisHypervisorPartitionTypeMax
   3494   } NDIS_HYPERVISOR_PARTITION_TYPE, *PNDIS_HYPERVISOR_PARTITION_TYPE;
   3495 
   3496   typedef struct _NDIS_HYPERVISOR_INFO {
   3497     NDIS_OBJECT_HEADER Header;
   3498     ULONG Flags;
   3499     NDIS_HYPERVISOR_PARTITION_TYPE PartitionType;
   3500   } NDIS_HYPERVISOR_INFO, *PNDIS_HYPERVISOR_INFO;
   3501 
   3502   typedef struct _NDIS_WMI_GROUP_AFFINITY {
   3503     ULONG64 Mask;
   3504     USHORT Group;
   3505     USHORT Reserved[3];
   3506   } NDIS_WMI_GROUP_AFFINITY, *PNDIS_WMI_GROUP_AFFINITY;
   3507 
   3508   typedef struct _NDIS_WMI_RECEIVE_QUEUE_PARAMETERS {
   3509     NDIS_OBJECT_HEADER Header;
   3510     ULONG Flags;
   3511     NDIS_RECEIVE_QUEUE_TYPE QueueType;
   3512     NDIS_RECEIVE_QUEUE_ID QueueId;
   3513     NDIS_RECEIVE_QUEUE_GROUP_ID QueueGroupId;
   3514     NDIS_WMI_GROUP_AFFINITY ProcessorAffinity;
   3515     ULONG NumSuggestedReceiveBuffers;
   3516     ULONG MSIXTableEntry;
   3517     ULONG LookaheadSize;
   3518     NDIS_VM_NAME VmName;
   3519     NDIS_QUEUE_NAME QueueName;
   3520   } NDIS_WMI_RECEIVE_QUEUE_PARAMETERS, *PNDIS_WMI_RECEIVE_QUEUE_PARAMETERS;
   3521 
   3522   typedef struct _NDIS_WMI_RECEIVE_QUEUE_INFO {
   3523     NDIS_OBJECT_HEADER Header;
   3524     ULONG Flags;
   3525     NDIS_RECEIVE_QUEUE_TYPE QueueType;
   3526     NDIS_RECEIVE_QUEUE_ID QueueId;
   3527     NDIS_RECEIVE_QUEUE_GROUP_ID QueueGroupId;
   3528     NDIS_RECEIVE_QUEUE_OPERATIONAL_STATE QueueState;
   3529     NDIS_WMI_GROUP_AFFINITY ProcessorAffinity;
   3530     ULONG NumSuggestedReceiveBuffers;
   3531     ULONG MSIXTableEntry;
   3532     ULONG LookaheadSize;
   3533     NDIS_VM_NAME VmName;
   3534     NDIS_QUEUE_NAME QueueName;
   3535   } NDIS_WMI_RECEIVE_QUEUE_INFO, *PNDIS_WMI_RECEIVE_QUEUE_INFO;
   3536 #endif
   3537 
   3538 #if NDIS_SUPPORT_NDIS630
   3539 
   3540 #define NDIS_NDK_PERFORMANCE_COUNTER_MASK(CNTFIELD) (((ULONG64) 1) << (FIELD_OFFSET (NDIS_NDK_PERFORMANCE_COUNTERS, CNTFIELD) / sizeof (ULONG64)))
   3541 
   3542 #define OID_NDK_SET_STATE 0xfc040201
   3543 #define OID_NDK_STATISTICS 0xfc040202
   3544 #define OID_NDK_CONNECTIONS 0xfc040203
   3545 #define OID_NDK_LOCAL_ENDPOINTS 0xfc040204
   3546 
   3547 #define OID_QOS_HARDWARE_CAPABILITIES 0xfc050001
   3548 #define OID_QOS_CURRENT_CAPABILITIES 0xfc050002
   3549 #define OID_QOS_PARAMETERS 0xfc050003
   3550 #define OID_QOS_OPERATIONAL_PARAMETERS 0xfc050004
   3551 #define OID_QOS_REMOTE_PARAMETERS 0xfc050005
   3552 
   3553 #define NDIS_QOS_MAXIMUM_PRIORITIES 8
   3554 #define NDIS_QOS_MAXIMUM_TRAFFIC_CLASSES 8
   3555 
   3556 #define NDIS_QOS_CAPABILITIES_STRICT_TSA_SUPPORTED 0x00000001
   3557 #define NDIS_QOS_CAPABILITIES_MACSEC_BYPASS_SUPPORTED 0x00000002
   3558 #define NDIS_QOS_CAPABILITIES_CEE_DCBX_SUPPORTED 0x00000004
   3559 #define NDIS_QOS_CAPABILITIES_IEEE_DCBX_SUPPORTED 0x00000008
   3560 
   3561 #define NDIS_QOS_CLASSIFICATION_SET_BY_MINIPORT_MASK 0xff000000
   3562 #define NDIS_QOS_CLASSIFICATION_ENFORCED_BY_MINIPORT 0x01000000
   3563 
   3564 #define NDIS_QOS_CONDITION_RESERVED 0x0
   3565 #define NDIS_QOS_CONDITION_DEFAULT 0x1
   3566 #define NDIS_QOS_CONDITION_TCP_PORT 0x2
   3567 #define NDIS_QOS_CONDITION_UDP_PORT 0x3
   3568 #define NDIS_QOS_CONDITION_TCP_OR_UDP_PORT 0x4
   3569 #define NDIS_QOS_CONDITION_ETHERTYPE 0x5
   3570 #define NDIS_QOS_CONDITION_NETDIRECT_PORT 0x6
   3571 #define NDIS_QOS_CONDITION_MAXIMUM 0x7
   3572 
   3573 #define NDIS_QOS_ACTION_PRIORITY 0x0
   3574 #define NDIS_QOS_ACTION_MAXIMUM 0x1
   3575 
   3576 #define NDIS_QOS_PARAMETERS_ETS_CHANGED 0x00000001
   3577 #define NDIS_QOS_PARAMETERS_ETS_CONFIGURED 0x00000002
   3578 #define NDIS_QOS_PARAMETERS_PFC_CHANGED 0x00000100
   3579 #define NDIS_QOS_PARAMETERS_PFC_CONFIGURED 0x00000200
   3580 #define NDIS_QOS_PARAMETERS_CLASSIFICATION_CHANGED 0x00010000
   3581 #define NDIS_QOS_PARAMETERS_CLASSIFICATION_CONFIGURED 0x00020000
   3582 #define NDIS_QOS_PARAMETERS_WILLING 0x80000000
   3583 
   3584 #define NDIS_QOS_TSA_STRICT 0x0
   3585 #define NDIS_QOS_TSA_CBS 0x1
   3586 #define NDIS_QOS_TSA_ETS 0x2
   3587 #define NDIS_QOS_TSA_MAXIMUM 0x3
   3588 
   3589 #define NDIS_PF_FUNCTION_ID (USHORT) -1
   3590 #define NDIS_INVALID_VF_FUNCTION_ID (USHORT) -1
   3591 #define NDIS_INVALID_RID (ULONG) -1
   3592 #define NDIS_DEFAULT_VPORT_ID 0
   3593 #define NDIS_DEFAULT_SWITCH_ID 0
   3594 #define NDIS_INVALID_SWITCH_ID (ULONG) -1
   3595 
   3596 #define NDIS_NIC_SWITCH_PARAMETERS_CHANGE_MASK 0xffff0000
   3597 #define NDIS_NIC_SWITCH_PARAMETERS_SWITCH_NAME_CHANGED 0x00010000
   3598 
   3599 #define NDIS_SRIOV_CAPS_SRIOV_SUPPORTED 0x00000001
   3600 #define NDIS_SRIOV_CAPS_PF_MINIPORT 0x00000002
   3601 #define NDIS_SRIOV_CAPS_VF_MINIPORT 0x00000004
   3602 
   3603 #define NDIS_NIC_SWITCH_VF_INFO_ARRAY_ENUM_ON_SPECIFIC_SWITCH 0x00000001
   3604 
   3605 #define NDIS_NIC_SWITCH_VPORT_PARAMS_LOOKAHEAD_SPLIT_ENABLED 0x00000001
   3606 #define NDIS_NIC_SWITCH_VPORT_PARAMS_CHANGE_MASK 0xffff0000
   3607 #define NDIS_NIC_SWITCH_VPORT_PARAMS_FLAGS_CHANGED 0x00010000
   3608 #define NDIS_NIC_SWITCH_VPORT_PARAMS_NAME_CHANGED 0x00020000
   3609 #define NDIS_NIC_SWITCH_VPORT_PARAMS_INT_MOD_CHANGED 0x00040000
   3610 #define NDIS_NIC_SWITCH_VPORT_PARAMS_STATE_CHANGED 0x00080000
   3611 #define NDIS_NIC_SWITCH_VPORT_PARAMS_PROCESSOR_AFFINITY_CHANGED 0x00100000
   3612 
   3613 #define NDIS_NIC_SWITCH_VPORT_INFO_ARRAY_ENUM_ON_SPECIFIC_FUNCTION 0x00000001
   3614 #define NDIS_NIC_SWITCH_VPORT_INFO_ARRAY_ENUM_ON_SPECIFIC_SWITCH 0x00000002
   3615 
   3616 #define NDIS_NIC_SWITCH_VPORT_INFO_LOOKAHEAD_SPLIT_ENABLED 0x00000001
   3617 
   3618   DEFINE_GUID (GUID_NDIS_NDK_CAPABILITIES, 0x7969ba4d, 0xdd80, 0x4bc7, 0xb3, 0xe6, 0x68, 0x04, 0x39, 0x97, 0xe5, 0x19);
   3619   DEFINE_GUID (GUID_NDIS_NDK_STATE, 0x530c69c9, 0x2f51, 0x49de, 0xa1, 0xaf, 0x08, 0x8d, 0x54, 0xff, 0xa4, 0x74);
   3620 
   3621 #define NDIS_NDK_CAPABILITIES_REVISION_1 1
   3622 #define NDIS_NDK_STATISTICS_INFO_REVISION_1 1
   3623 #define NDIS_NDK_CONNECTIONS_REVISION_1 1
   3624 #define NDIS_NDK_LOCAL_ENDPOINTS_REVISION_1 1
   3625 #define NDIS_QOS_CAPABILITIES_REVISION_1 1
   3626 #define NDIS_QOS_CLASSIFICATION_ELEMENT_REVISION_1 1
   3627 #define NDIS_QOS_PARAMETERS_REVISION_1 1
   3628 #define NDIS_NIC_SWITCH_PARAMETERS_REVISION_1 1
   3629 #define NDIS_NIC_SWITCH_DELETE_SWITCH_PARAMETERS_REVISION_1 1
   3630 #define NDIS_NIC_SWITCH_INFO_REVISION_1 1
   3631 #define NDIS_NIC_SWITCH_INFO_ARRAY_REVISION_1 1
   3632 #define NDIS_NIC_SWITCH_VPORT_PARAMETERS_REVISION_1 1
   3633 #define NDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS_REVISION_1 1
   3634 #define NDIS_NIC_SWITCH_VPORT_INFO_REVISION_1 1
   3635 #define NDIS_NIC_SWITCH_VPORT_INFO_ARRAY_REVISION_1 1
   3636 #define NDIS_NIC_SWITCH_VF_PARAMETERS_REVISION_1 1
   3637 #define NDIS_NIC_SWITCH_FREE_VF_PARAMETERS_REVISION_1 1
   3638 #define NDIS_NIC_SWITCH_VF_INFO_REVISION_1 1
   3639 #define NDIS_NIC_SWITCH_VF_INFO_ARRAY_REVISION_1 1
   3640 #define NDIS_SRIOV_CAPABILITIES_REVISION_1 1
   3641 #define NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS_REVISION_1 1
   3642 #define NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS_REVISION_1 1
   3643 #define NDIS_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS_REVISION_1 1
   3644 #define NDIS_SRIOV_WRITE_VF_CONFIG_BLOCK_PARAMETERS_REVISION_1 1
   3645 #define NDIS_SRIOV_RESET_VF_PARAMETERS_REVISION_1 1
   3646 #define NDIS_SRIOV_SET_VF_POWER_STATE_PARAMETERS_REVISION_1 1
   3647 #define NDIS_SRIOV_CONFIG_STATE_PARAMETERS_REVISION_1 1
   3648 #define NDIS_SRIOV_VF_VENDOR_DEVICE_ID_INFO_REVISION_1 1
   3649 #define NDIS_SRIOV_PROBED_BARS_INFO_REVISION_1 1
   3650 #define NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS_REVISION_1 1
   3651 #define NDIS_SRIOV_BAR_RESOURCES_INFO_REVISION_1 1
   3652 #define NDIS_SRIOV_PF_LUID_INFO_REVISION_1 1
   3653 #define NDIS_SRIOV_VF_SERIAL_NUMBER_INFO_REVISION_1 1
   3654 #define NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO_REVISION_1 1
   3655 #define NDIS_SWITCH_OBJECT_SERIALIZATION_VERSION_1 1
   3656 #define NDIS_SWITCH_PORT_PROPERTY_SECURITY_REVISION_1 1
   3657 #define NDIS_SWITCH_PORT_PROPERTY_VLAN_REVISION_1 1
   3658 #define NDIS_SWITCH_PORT_PROPERTY_PROFILE_REVISION_1 1
   3659 #define NDIS_SWITCH_PORT_PROPERTY_CUSTOM_REVISION_1 1
   3660 #define NDIS_SWITCH_PORT_PROPERTY_PARAMETERS_REVISION_1 1
   3661 #define NDIS_SWITCH_PORT_PROPERTY_DELETE_PARAMETERS_REVISION_1 1
   3662 #define NDIS_SWITCH_PORT_PROPERTY_ENUM_PARAMETERS_REVISION_1 1
   3663 #define NDIS_SWITCH_PORT_PROPERTY_ENUM_INFO_REVISION_1 1
   3664 #define NDIS_SWITCH_PROPERTY_PARAMETERS_REVISION_1 1
   3665 #define NDIS_SWITCH_PROPERTY_CUSTOM_REVISION_1 1
   3666 #define NDIS_SWITCH_PORT_FEATURE_STATUS_PARAMETERS_REVISION_1 1
   3667 #define NDIS_SWITCH_PORT_FEATURE_STATUS_CUSTOM_REVISION_1 1
   3668 #define NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS_REVISION_1 1
   3669 #define NDIS_SWITCH_PROPERTY_ENUM_INFO_REVISION_1 1
   3670 #define NDIS_SWITCH_PROPERTY_ENUM_PARAMETERS_REVISION_1 1
   3671 #define NDIS_SWITCH_FEATURE_STATUS_CUSTOM_REVISION_1 1
   3672 #define NDIS_SWITCH_PORT_PARAMETERS_REVISION_1 1
   3673 #define NDIS_SWITCH_PORT_ARRAY_REVISION_1 1
   3674 #define NDIS_SWITCH_PARAMETERS_REVISION_1 1
   3675 #define NDIS_SWITCH_NIC_PARAMETERS_REVISION_1 1
   3676 #define NDIS_SWITCH_NIC_ARRAY_REVISION_1 1
   3677 #define NDIS_SWITCH_NIC_OID_REQUEST_REVISION_1 1
   3678 #define NDIS_SWITCH_FEATURE_STATUS_PARAMETERS_REVISION_1 1
   3679 #define NDIS_SWITCH_NIC_SAVE_STATE_REVISION_1 1
   3680 
   3681 #define NDIS_SIZEOF_NDK_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NDK_CAPABILITIES, NdkInfo)
   3682 #define NDIS_SIZEOF_NDK_STATISTICS_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NDK_STATISTICS_INFO, CounterSet)
   3683 #define NDIS_SIZEOF_NDK_CONNECTIONS_REVISION_1(n) FIELD_OFFSET (NDIS_NDK_CONNECTIONS, Connections[n])
   3684 #define NDIS_SIZEOF_NDK_LOCAL_ENDPOINTS_REVISION_1(n) FIELD_OFFSET (NDIS_NDK_LOCAL_ENDPOINTS, LocalEndpoints[n])
   3685 #define NDIS_SIZEOF_QOS_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_QOS_CAPABILITIES, MaxNumPfcEnabledTrafficClasses)
   3686 #define NDIS_SIZEOF_QOS_CLASSIFICATION_ELEMENT_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_QOS_CLASSIFICATION_ELEMENT, ActionField)
   3687 #define NDIS_SIZEOF_QOS_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_QOS_PARAMETERS, FirstClassificationElementOffset)
   3688 #define NDIS_SIZEOF_NIC_SWITCH_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_PARAMETERS, NdisReserved3)
   3689 #define NDIS_SIZEOF_NIC_SWITCH_DELETE_SWITCH_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_DELETE_SWITCH_PARAMETERS, SwitchId)
   3690 #define NDIS_SIZEOF_NIC_SWITCH_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_INFO, NumActiveNonDefaultVPortVlanIds)
   3691 #define NDIS_SIZEOF_NIC_SWITCH_INFO_ARRAY_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_INFO_ARRAY, ElementSize)
   3692 #define NDIS_SIZEOF_NIC_SWITCH_VPORT_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_VPORT_PARAMETERS, LookaheadSize)
   3693 #define NDIS_SIZEOF_NIC_SWITCH_DELETE_VPORT_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS, VPortId)
   3694 #define NDIS_SIZEOF_NIC_SWITCH_VPORT_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_VPORT_INFO, NumFilters)
   3695 #define NDIS_SIZEOF_NIC_SWITCH_VPORT_INFO_ARRAY_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_VPORT_INFO_ARRAY, ElementSize)
   3696 #define NDIS_SIZEOF_NIC_SWITCH_VF_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_VF_PARAMETERS, RequestorId)
   3697 #define NDIS_SIZEOF_NIC_SWITCH_FREE_VF_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_FREE_VF_PARAMETERS, VFId)
   3698 #define NDIS_SIZEOF_NIC_SWITCH_VF_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_VF_INFO, RequestorId)
   3699 #define NDIS_SIZEOF_NIC_SWITCH_VF_INFO_ARRAY_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_VF_INFO_ARRAY, ElementSize)
   3700 #define NDIS_SIZEOF_SRIOV_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_CAPABILITIES, SriovCapabilities)
   3701 #define NDIS_SIZEOF_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS, BufferOffset)
   3702 #define NDIS_SIZEOF_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS, BufferOffset)
   3703 #define NDIS_SIZEOF_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS, BufferOffset)
   3704 #define NDIS_SIZEOF_SRIOV_WRITE_VF_CONFIG_BLOCK_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_WRITE_VF_CONFIG_BLOCK_PARAMETERS, BufferOffset)
   3705 #define NDIS_SIZEOF_SRIOV_RESET_VF_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_RESET_VF_PARAMETERS, VFId)
   3706 #define NDIS_SIZEOF_SRIOV_SET_VF_POWER_STATE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_SET_VF_POWER_STATE_PARAMETERS, WakeEnable)
   3707 #define NDIS_SIZEOF_SRIOV_CONFIG_STATE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_CONFIG_STATE_PARAMETERS, Length)
   3708 #define NDIS_SIZEOF_SRIOV_VF_VENDOR_DEVICE_ID_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_VF_VENDOR_DEVICE_ID_INFO, DeviceId)
   3709 #define NDIS_SIZEOF_SRIOV_PROBED_BARS_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_PROBED_BARS_INFO, BaseRegisterValuesOffset)
   3710 #define NDIS_SIZEOF_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS, DestVPortId)
   3711 #define NDIS_SIZEOF_SRIOV_BAR_RESOURCES_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_BAR_RESOURCES_INFO, BarResourcesOffset)
   3712 #define NDIS_SIZEOF_SRIOV_PF_LUID_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_PF_LUID_INFO, Luid)
   3713 #define NDIS_SIZEOF_SRIOV_VF_SERIAL_NUMBER_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_VF_SERIAL_NUMBER_INFO, SerialNumber)
   3714 #define NDIS_SIZEOF_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO, BlockMask)
   3715 #define NDIS_SIZEOF_NDIS_SWITCH_PORT_PROPERTY_SECURITY_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_PROPERTY_SECURITY, AllowTeaming)
   3716 #define NDIS_SIZEOF_NDIS_SWITCH_PORT_PROPERTY_VLAN_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_PROPERTY_VLAN, VlanProperties)
   3717 #define NDIS_SIZEOF_NDIS_SWITCH_PORT_PROPERTY_PROFILE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_PROPERTY_PROFILE, CdnLabel)
   3718 #define NDIS_SIZEOF_NDIS_SWITCH_PORT_PROPERTY_CUSTOM_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_PROPERTY_CUSTOM, PropertyBufferOffset)
   3719 #define NDIS_SIZEOF_NDIS_SWITCH_PORT_PROPERTY_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_PROPERTY_PARAMETERS, Reserved)
   3720 #define NDIS_SIZEOF_NDIS_SWITCH_PORT_PROPERTY_ENUM_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_PROPERTY_ENUM_PARAMETERS, Reserved)
   3721 #define NDIS_SIZEOF_NDIS_SWITCH_PORT_PROPERTY_ENUM_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_PROPERTY_ENUM_INFO, PropertyBufferOffset)
   3722 #define NDIS_SIZEOF_NDIS_SWITCH_PORT_FEATURE_STATUS_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_FEATURE_STATUS_PARAMETERS, Reserved)
   3723 #define NDIS_SIZEOF_NDIS_SWITCH_PORT_FEATURE_STATUS_CUSTOM_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_FEATURE_STATUS_CUSTOM, FeatureStatusBufferOffset)
   3724 #define NDIS_SIZEOF_NDIS_SWITCH_PROPERTY_CUSTOM_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PROPERTY_CUSTOM, PropertyBufferOffset)
   3725 #define NDIS_SIZEOF_NDIS_SWITCH_PORT_PROPERTY_DELETE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_PROPERTY_DELETE_PARAMETERS, PropertyInstanceId)
   3726 #define NDIS_SIZEOF_NDIS_SWITCH_PROPERTY_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PROPERTY_PARAMETERS, PropertyBufferOffset)
   3727 #define NDIS_SIZEOF_NDIS_SWITCH_PROPERTY_ENUM_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PROPERTY_ENUM_INFO, PropertyBufferOffset)
   3728 #define NDIS_SIZEOF_NDIS_SWITCH_PROPERTY_ENUM_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PROPERTY_ENUM_PARAMETERS, NumProperties)
   3729 #define NDIS_SIZEOF_NDIS_SWITCH_FEATURE_STATUS_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_FEATURE_STATUS_PARAMETERS, FeatureStatusBufferLength)
   3730 #define NDIS_SIZEOF_NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS, PropertyInstanceId)
   3731 #define NDIS_SIZEOF_NDIS_SWITCH_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PARAMETERS, IsActive)
   3732 #define NDIS_SIZEOF_NDIS_SWITCH_FEATURE_STATUS_CUSTOM_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_FEATURE_STATUS_CUSTOM, FeatureStatusCustomBufferOffset)
   3733 #define NDIS_SIZEOF_NDIS_SWITCH_PORT_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_PARAMETERS, PortState)
   3734 #define NDIS_SIZEOF_NDIS_SWITCH_PORT_ARRAY_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_ARRAY, ElementSize)
   3735 #define NDIS_SIZEOF_NDIS_SWITCH_NIC_OID_REQUEST_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_NIC_OID_REQUEST, OidRequest)
   3736 #define NDIS_SIZEOF_NDIS_SWITCH_NIC_SAVE_STATE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_NIC_SAVE_STATE, SaveDataOffset)
   3737 #define NDIS_SIZEOF_NDIS_SWITCH_NIC_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_NIC_PARAMETERS, VFAssigned)
   3738 #define NDIS_SIZEOF_NDIS_SWITCH_NIC_ARRAY_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_NIC_ARRAY, ElementSize)
   3739 
   3740 #define NDIS_SWITCH_PORT_PROPERTY_CUSTOM_GET_BUFFER(PPROPC) ((PVOID) ((PUCHAR) (PPROPC) + (PPROPC)->PropertyBufferOffset))
   3741 #define NDIS_SWITCH_PORT_PROPERTY_PARAMETERS_GET_PROPERTY(PPARM) ((PVOID) ((PUCHAR) (PPARM) + (PPARM)->PropertyBufferOffset))
   3742 #define NDIS_SWITCH_CREATE_PROPERTY_VERSION(VMAJOR, VMINOR) (((VMAJOR) << 8) + (VMINOR))
   3743 #define NDIS_SWITCH_PORT_PROPERTY_ENUM_PARAMETERS_GET_FIRST_INFO(PEPARM) ((PNDIS_SWITCH_PORT_PROPERTY_ENUM_INFO) ((PUCHAR) (PEPARM) + (PEPARM)->FirstPropertyOffset))
   3744 #define NDIS_SWITCH_PORT_PROPERTY_ENUM_INFO_GET_NEXT(PEINFO) ((PNDIS_SWITCH_PORT_PROPERTY_ENUM_INFO) ((ULONG_PTR) (PEINFO) + (PEINFO)->QwordAlignedPropertyBufferLength + sizeof (NDIS_SWITCH_PORT_PROPERTY_ENUM_INFO)))
   3745 #define NDIS_SWITCH_PORT_PROPERTY_ENUM_INFO_GET_PROPERTY(PEINFO) ((PVOID) ((PUCHAR) (PEINFO) + (PEINFO)->PropertyBufferOffset))
   3746 #define NDIS_SWITCH_CREATE_FEATURE_STATUS_VERSION(VMAJOR, VMINOR) (((VMAJOR) << 8) + (VMINOR))
   3747 #define NDIS_SWITCH_PROPERTY_CUSTOM_GET_BUFFER(SWPROPC) ((PVOID) ((PUCHAR) (SWPROPC) + (SWPROPC)->PropertyBufferOffset))
   3748 #define NDIS_SWITCH_PROPERTY_PARAMETERS_GET_PROPERTY(SWPARA) ((PVOID) ((PUCHAR) (SWPARA) + (SWPARA)->PropertyBufferOffset))
   3749 #define NDIS_SWITCH_PROPERTY_ENUM_INFO_GET_NEXT(SWEINFO) ((PNDIS_SWITCH_PROPERTY_ENUM_INFO) ((ULONG_PTR) (SWEINFO) + (SWEINFO)->QwordAlignedPropertyBufferLength + sizeof (NDIS_SWITCH_PROPERTY_ENUM_INFO)))
   3750 #define NDIS_SWITCH_PROPERTY_ENUM_INFO_GET_PROPERTY(SWEINFO) ((PVOID) ((PUCHAR) (SWEINFO) + (SWEINFO)->PropertyBufferOffset))
   3751 #define NDIS_SWITCH_PROPERTY_ENUM_PARAMETERS_GET_FIRST_INFO(SWEPARM) ((PNDIS_SWITCH_PROPERTY_ENUM_INFO) ((PUCHAR) (SWEPARM) + (SWEPARM)->FirstPropertyOffset))
   3752 #define NDIS_SWITCH_PORT_AT_ARRAY_INDEX(PA, IDX) ((PNDIS_SWITCH_PORT_PARAMETERS) ((PUCHAR) (PA) + (PA)->FirstElementOffset + ((PA)->ElementSize * (IDX))))
   3753 #define NDIS_SWITCH_NIC_AT_ARRAY_INDEX(NA, IDX) ((PNDIS_SWITCH_NIC_PARAMETERS) ((PUCHAR) (NA) + (NA)->FirstElementOffset + ((NA)->ElementSize * (IDX))))
   3754 
   3755 #include <ndkinfo.h>
   3756 #include <ws2def.h>
   3757 #ifndef __CYGWIN__
   3758 #include <ws2ipdef.h>
   3759 #endif
   3760 
   3761   typedef struct _NDIS_NDK_PERFORMANCE_COUNTERS {
   3762     ULONG64 Connect;
   3763     ULONG64 Accept;
   3764     ULONG64 ConnectFailure;
   3765     ULONG64 ConnectionError;
   3766     ULONG64 ActiveConnection;
   3767     ULONG64 Reserved01;
   3768     ULONG64 Reserved02;
   3769     ULONG64 Reserved03;
   3770     ULONG64 Reserved04;
   3771     ULONG64 Reserved05;
   3772     ULONG64 Reserved06;
   3773     ULONG64 Reserved07;
   3774     ULONG64 Reserved08;
   3775     ULONG64 Reserved09;
   3776     ULONG64 Reserved10;
   3777     ULONG64 Reserved11;
   3778     ULONG64 Reserved12;
   3779     ULONG64 Reserved13;
   3780     ULONG64 Reserved14;
   3781     ULONG64 Reserved15;
   3782     ULONG64 Reserved16;
   3783     ULONG64 Reserved17;
   3784     ULONG64 Reserved18;
   3785     ULONG64 Reserved19;
   3786     ULONG64 Reserved20;
   3787     ULONG64 CQError;
   3788     ULONG64 RDMAInOctets;
   3789     ULONG64 RDMAOutOctets;
   3790     ULONG64 RDMAInFrames;
   3791     ULONG64 RDMAOutFrames;
   3792   } NDIS_NDK_PERFORMANCE_COUNTERS, *PNDIS_NDK_PERFORMANCE_COUNTERS;
   3793 
   3794   typedef struct _NDIS_NDK_CAPABILITIES {
   3795     NDIS_OBJECT_HEADER Header;
   3796     ULONG Flags;
   3797     ULONG MaxQpCount;
   3798     ULONG MaxCqCount;
   3799     ULONG MaxMrCount;
   3800     ULONG MaxPdCount;
   3801     ULONG MaxInboundReadLimit;
   3802     ULONG MaxOutboundReadLimit;
   3803     ULONG MaxMwCount;
   3804     ULONG MaxSrqCount;
   3805     ULONG64 MissingCounterMask;
   3806     NDK_ADAPTER_INFO *NdkInfo;
   3807   } NDIS_NDK_CAPABILITIES, *PNDIS_NDK_CAPABILITIES;
   3808 
   3809   typedef struct _NDK_WMI_ADAPTER_INFO {
   3810     NDK_VERSION Version;
   3811     UINT32 VendorId;
   3812     UINT32 DeviceId;
   3813     ULONGLONG MaxRegistrationSize;
   3814     ULONGLONG MaxWindowSize;
   3815     ULONG FRMRPageCount;
   3816     ULONG MaxInitiatorRequestSge;
   3817     ULONG MaxReceiveRequestSge;
   3818     ULONG MaxReadRequestSge;
   3819     ULONG MaxTransferLength;
   3820     ULONG MaxInlineDataSize;
   3821     ULONG MaxInboundReadLimit;
   3822     ULONG MaxOutboundReadLimit;
   3823     ULONG MaxReceiveQueueDepth;
   3824     ULONG MaxInitiatorQueueDepth;
   3825     ULONG MaxSrqDepth;
   3826     ULONG MaxCqDepth;
   3827     ULONG LargeRequestThreshold;
   3828     ULONG MaxCallerData;
   3829     ULONG MaxCalleeData;
   3830     ULONG AdapterFlags;
   3831   } NDK_WMI_ADAPTER_INFO, *PNDK_WMI_ADAPTER_INFO;
   3832 
   3833   typedef struct _NDIS_WMI_NDK_CAPABILITIES {
   3834     ULONG MaxQpCount;
   3835     ULONG MaxCqCount;
   3836     ULONG MaxMrCount;
   3837     ULONG MaxPdCount;
   3838     ULONG MaxInboundReadLimit;
   3839     ULONG MaxOutboundReadLimit;
   3840     ULONG MaxMwCount;
   3841     ULONG MaxSrqCount;
   3842     ULONG64 MissingCounterMask;
   3843     NDK_WMI_ADAPTER_INFO NdkInfo;
   3844   } NDIS_WMI_NDK_CAPABILITIES, *PNDIS_WMI_NDK_CAPABILITIES;
   3845 
   3846   typedef struct _NDIS_NDK_STATISTICS_INFO {
   3847     NDIS_OBJECT_HEADER Header;
   3848     ULONG Flags;
   3849     NDIS_NDK_PERFORMANCE_COUNTERS CounterSet;
   3850   } NDIS_NDK_STATISTICS_INFO;
   3851 
   3852   typedef struct _NDIS_NDK_CONNECTION_ENTRY {
   3853     SOCKADDR_INET Local;
   3854     SOCKADDR_INET Remote;
   3855     BOOLEAN UserModeOwner;
   3856     ULONG OwnerPid;
   3857   } NDIS_NDK_CONNECTION_ENTRY;
   3858 
   3859   typedef struct _NDIS_NDK_CONNECTIONS {
   3860     NDIS_OBJECT_HEADER Header;
   3861     ULONG Flags;
   3862     ULONG Count;
   3863     BOOLEAN NDConnectionsMappedtoTCPConnections;
   3864     NDIS_NDK_CONNECTION_ENTRY Connections[1];
   3865   } NDIS_NDK_CONNECTIONS;
   3866 
   3867   typedef struct _NDIS_NDK_LOCAL_ENDPOINT_ENTRY {
   3868     SOCKADDR_INET Local;
   3869     BOOLEAN UserModeOwner;
   3870     BOOLEAN Listener;
   3871     ULONG OwnerPid;
   3872   } NDIS_NDK_LOCAL_ENDPOINT_ENTRY;
   3873 
   3874   typedef struct _NDIS_NDK_LOCAL_ENDPOINTS {
   3875     NDIS_OBJECT_HEADER Header;
   3876     ULONG Flags;
   3877     ULONG Count;
   3878     BOOLEAN NDLocalEndpointsMappedtoTCPLocalEndpoints;
   3879     NDIS_NDK_LOCAL_ENDPOINT_ENTRY LocalEndpoints[1];
   3880   } NDIS_NDK_LOCAL_ENDPOINTS;
   3881 
   3882   typedef struct _NDIS_QOS_CAPABILITIES {
   3883     NDIS_OBJECT_HEADER Header;
   3884     ULONG Flags;
   3885     ULONG MaxNumTrafficClasses;
   3886     ULONG MaxNumEtsCapableTrafficClasses;
   3887     ULONG MaxNumPfcEnabledTrafficClasses;
   3888   } NDIS_QOS_CAPABILITIES, *PNDIS_QOS_CAPABILITIES;
   3889 
   3890   typedef struct _NDIS_QOS_CLASSIFICATION_ELEMENT {
   3891     NDIS_OBJECT_HEADER Header;
   3892     ULONG Flags;
   3893     USHORT ConditionSelector;
   3894     USHORT ConditionField;
   3895     USHORT ActionSelector;
   3896     USHORT ActionField;
   3897   } NDIS_QOS_CLASSIFICATION_ELEMENT, *PNDIS_QOS_CLASSIFICATION_ELEMENT;
   3898 
   3899   typedef struct _NDIS_QOS_PARAMETERS {
   3900     NDIS_OBJECT_HEADER Header;
   3901     ULONG Flags;
   3902     ULONG NumTrafficClasses;
   3903     UCHAR PriorityAssignmentTable[NDIS_QOS_MAXIMUM_PRIORITIES];
   3904     UCHAR TcBandwidthAssignmentTable[NDIS_QOS_MAXIMUM_TRAFFIC_CLASSES];
   3905     UCHAR TsaAssignmentTable[NDIS_QOS_MAXIMUM_TRAFFIC_CLASSES];
   3906     ULONG PfcEnable;
   3907     ULONG NumClassificationElements;
   3908     ULONG ClassificationElementSize;
   3909     ULONG FirstClassificationElementOffset;
   3910   } NDIS_QOS_PARAMETERS, *PNDIS_QOS_PARAMETERS;
   3911 
   3912   typedef NDIS_IF_COUNTED_STRING NDIS_NIC_SWITCH_FRIENDLYNAME, *PNDIS_NIC_SWITCH_FRIENDLYNAME;
   3913   typedef NDIS_IF_COUNTED_STRING NDIS_VPORT_NAME, *PNDIS_VPORT_NAME;
   3914   typedef ULONG NDIS_NIC_SWITCH_ID, *PNDIS_NIC_SWITCH_ID;
   3915   typedef USHORT NDIS_SRIOV_FUNCTION_ID, *PNDIS_SRIOV_FUNCTION_ID;
   3916   typedef ULONG NDIS_VF_RID, *PNDIS_VF_RID;
   3917 
   3918   typedef enum _NDIS_NIC_SWITCH_TYPE {
   3919     NdisNicSwitchTypeUnspecified,
   3920     NdisNicSwitchTypeExternal,
   3921     NdisNicSwitchTypeMax
   3922   } NDIS_NIC_SWITCH_TYPE, *PNDIS_NIC_SWITCH_TYPE;
   3923 
   3924   typedef struct _NDIS_NIC_SWITCH_PARAMETERS {
   3925     NDIS_OBJECT_HEADER Header;
   3926     ULONG Flags;
   3927     NDIS_NIC_SWITCH_TYPE SwitchType;
   3928     NDIS_NIC_SWITCH_ID SwitchId;
   3929     NDIS_NIC_SWITCH_FRIENDLYNAME SwitchFriendlyName;
   3930     ULONG NumVFs;
   3931     ULONG NdisReserved1;
   3932     ULONG NdisReserved2;
   3933     ULONG NdisReserved3;
   3934   } NDIS_NIC_SWITCH_PARAMETERS, *PNDIS_NIC_SWITCH_PARAMETERS;
   3935 
   3936   typedef struct _NDIS_NIC_SWITCH_DELETE_SWITCH_PARAMETERS {
   3937     NDIS_OBJECT_HEADER Header;
   3938     ULONG Flags;
   3939     NDIS_NIC_SWITCH_ID SwitchId;
   3940   } NDIS_NIC_SWITCH_DELETE_SWITCH_PARAMETERS, *PNDIS_NIC_SWITCH_DELETE_SWITCH_PARAMETERS;
   3941 
   3942   typedef struct _NDIS_NIC_SWITCH_INFO {
   3943     NDIS_OBJECT_HEADER Header;
   3944     ULONG Flags;
   3945     NDIS_NIC_SWITCH_TYPE SwitchType;
   3946     NDIS_NIC_SWITCH_ID SwitchId;
   3947     NDIS_NIC_SWITCH_FRIENDLYNAME SwitchFriendlyName;
   3948     ULONG NumVFs;
   3949     ULONG NumAllocatedVFs;
   3950     ULONG NumVPorts;
   3951     ULONG NumActiveVPorts;
   3952     ULONG NumQueuePairsForDefaultVPort;
   3953     ULONG NumQueuePairsForNonDefaultVPorts;
   3954     ULONG NumActiveDefaultVPortMacAddresses;
   3955     ULONG NumActiveNonDefaultVPortMacAddresses;
   3956     ULONG NumActiveDefaultVPortVlanIds;
   3957     ULONG NumActiveNonDefaultVPortVlanIds;
   3958   } NDIS_NIC_SWITCH_INFO, *PNDIS_NIC_SWITCH_INFO;
   3959 
   3960   typedef struct _NDIS_NIC_SWITCH_INFO_ARRAY {
   3961     NDIS_OBJECT_HEADER Header;
   3962     ULONG FirstElementOffset;
   3963     ULONG NumElements;
   3964     ULONG ElementSize;
   3965   } NDIS_NIC_SWITCH_INFO_ARRAY, *PNDIS_NIC_SWITCH_INFO_ARRAY;
   3966 
   3967   typedef enum _NDIS_NIC_SWITCH_VPORT_STATE {
   3968     NdisNicSwitchVPortStateUndefined,
   3969     NdisNicSwitchVPortStateActivated,
   3970     NdisNicSwitchVPortStateDeactivated,
   3971     NdisNicSwitchVPortStateMaximum
   3972   } NDIS_NIC_SWITCH_VPORT_STATE, *PNDIS_NIC_SWITCH_VPORT_STATE;
   3973 
   3974   typedef enum _NDIS_NIC_SWITCH_VPORT_INTERRUPT_MODERATION {
   3975     NdisNicSwitchVPortInterruptModerationUndefined = 0,
   3976     NdisNicSwitchVPortInterruptModerationAdaptive = 1,
   3977     NdisNicSwitchVPortInterruptModerationOff = 2,
   3978     NdisNicSwitchVPortInterruptModerationLow = 100,
   3979     NdisNicSwitchVPortInterruptModerationMedium = 200,
   3980     NdisNicSwitchVPortInterruptModerationHigh = 300,
   3981   } NDIS_NIC_SWITCH_VPORT_INTERRUPT_MODERATION, *PNDIS_NIC_SWITCH_VPORT_INTERRUPT_MODERATION;
   3982 
   3983   typedef struct _NDIS_NIC_SWITCH_VPORT_PARAMETERS {
   3984     NDIS_OBJECT_HEADER Header;
   3985     ULONG Flags;
   3986     NDIS_NIC_SWITCH_ID SwitchId;
   3987     NDIS_NIC_SWITCH_VPORT_ID VPortId;
   3988     NDIS_VPORT_NAME VPortName;
   3989     NDIS_SRIOV_FUNCTION_ID AttachedFunctionId;
   3990     ULONG NumQueuePairs;
   3991     NDIS_NIC_SWITCH_VPORT_INTERRUPT_MODERATION InterruptModeration;
   3992     NDIS_NIC_SWITCH_VPORT_STATE VPortState;
   3993     GROUP_AFFINITY ProcessorAffinity;
   3994     ULONG LookaheadSize;
   3995   } NDIS_NIC_SWITCH_VPORT_PARAMETERS, *PNDIS_NIC_SWITCH_VPORT_PARAMETERS;
   3996 
   3997   typedef struct _NDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS {
   3998     NDIS_OBJECT_HEADER Header;
   3999     ULONG Flags;
   4000     NDIS_NIC_SWITCH_VPORT_ID VPortId;
   4001   } NDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS, *PNDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS;
   4002 
   4003   typedef struct _NDIS_NIC_SWITCH_VPORT_INFO {
   4004     NDIS_OBJECT_HEADER Header;
   4005     NDIS_NIC_SWITCH_VPORT_ID VPortId;
   4006     ULONG Flags;
   4007     NDIS_NIC_SWITCH_ID SwitchId;
   4008     NDIS_VPORT_NAME VPortName;
   4009     NDIS_SRIOV_FUNCTION_ID AttachedFunctionId;
   4010     ULONG NumQueuePairs;
   4011     NDIS_NIC_SWITCH_VPORT_INTERRUPT_MODERATION InterruptModeration;
   4012     NDIS_NIC_SWITCH_VPORT_STATE VPortState;
   4013     GROUP_AFFINITY ProcessorAffinity;
   4014     ULONG LookaheadSize;
   4015     ULONG NumFilters;
   4016   } NDIS_NIC_SWITCH_VPORT_INFO, *PNDIS_NIC_SWITCH_VPORT_INFO;
   4017 
   4018   typedef struct _NDIS_NIC_SWITCH_VPORT_INFO_ARRAY {
   4019     NDIS_OBJECT_HEADER Header;
   4020     ULONG Flags;
   4021     NDIS_NIC_SWITCH_ID SwitchId;
   4022     NDIS_SRIOV_FUNCTION_ID AttachedFunctionId;
   4023     ULONG FirstElementOffset;
   4024     ULONG NumElements;
   4025     ULONG ElementSize;
   4026   } NDIS_NIC_SWITCH_VPORT_INFO_ARRAY, *PNDIS_NIC_SWITCH_VPORT_INFO_ARRAY;
   4027 
   4028   typedef struct _NDIS_NIC_SWITCH_VF_PARAMETERS {
   4029     NDIS_OBJECT_HEADER Header;
   4030     ULONG Flags;
   4031     NDIS_NIC_SWITCH_ID SwitchId;
   4032     NDIS_VM_NAME VMName;
   4033     NDIS_VM_FRIENDLYNAME VMFriendlyName;
   4034     NDIS_SWITCH_NIC_NAME NicName;
   4035     USHORT MacAddressLength;
   4036     UCHAR PermanentMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH];
   4037     UCHAR CurrentMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH];
   4038     NDIS_SRIOV_FUNCTION_ID VFId;
   4039     NDIS_VF_RID RequestorId;
   4040   } NDIS_NIC_SWITCH_VF_PARAMETERS, *PNDIS_NIC_SWITCH_VF_PARAMETERS;
   4041 
   4042   typedef struct _NDIS_NIC_SWITCH_FREE_VF_PARAMETERS {
   4043     NDIS_OBJECT_HEADER Header;
   4044     ULONG Flags;
   4045     NDIS_SRIOV_FUNCTION_ID VFId;
   4046   } NDIS_NIC_SWITCH_FREE_VF_PARAMETERS, *PNDIS_NIC_SWITCH_FREE_VF_PARAMETERS;
   4047 
   4048   typedef struct _NDIS_NIC_SWITCH_VF_INFO {
   4049     NDIS_OBJECT_HEADER Header;
   4050     ULONG Flags;
   4051     NDIS_NIC_SWITCH_ID SwitchId;
   4052     NDIS_VM_NAME VMName;
   4053     NDIS_VM_FRIENDLYNAME VMFriendlyName;
   4054     NDIS_SWITCH_NIC_NAME NicName;
   4055     USHORT MacAddressLength;
   4056     UCHAR PermanentMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH];
   4057     UCHAR CurrentMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH];
   4058     NDIS_SRIOV_FUNCTION_ID VFId;
   4059     NDIS_VF_RID RequestorId;
   4060   } NDIS_NIC_SWITCH_VF_INFO, *PNDIS_NIC_SWITCH_VF_INFO;
   4061 
   4062   typedef struct _NDIS_NIC_SWITCH_VF_INFO_ARRAY {
   4063     NDIS_OBJECT_HEADER Header;
   4064     ULONG Flags;
   4065     NDIS_NIC_SWITCH_ID SwitchId;
   4066     ULONG FirstElementOffset;
   4067     ULONG NumElements;
   4068     ULONG ElementSize;
   4069   } NDIS_NIC_SWITCH_VF_INFO_ARRAY, *PNDIS_NIC_SWITCH_VF_INFO_ARRAY;
   4070 
   4071   typedef struct _NDIS_SRIOV_CAPABILITIES {
   4072     NDIS_OBJECT_HEADER Header;
   4073     ULONG Flags;
   4074     ULONG SriovCapabilities;
   4075   } NDIS_SRIOV_CAPABILITIES, *PNDIS_SRIOV_CAPABILITIES;
   4076 
   4077   typedef struct _NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS {
   4078     NDIS_OBJECT_HEADER Header;
   4079     NDIS_SRIOV_FUNCTION_ID VFId;
   4080     ULONG Offset;
   4081     ULONG Length;
   4082     ULONG BufferOffset;
   4083   } NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS, *PNDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS;
   4084 
   4085   typedef struct _NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS {
   4086     NDIS_OBJECT_HEADER Header;
   4087     NDIS_SRIOV_FUNCTION_ID VFId;
   4088     ULONG Offset;
   4089     ULONG Length;
   4090     ULONG BufferOffset;
   4091   } NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS, *PNDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS;
   4092 
   4093   typedef struct _NDIS_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS {
   4094     NDIS_OBJECT_HEADER Header;
   4095     NDIS_SRIOV_FUNCTION_ID VFId;
   4096     ULONG BlockId;
   4097     ULONG Length;
   4098     ULONG BufferOffset;
   4099   } NDIS_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS, *PNDIS_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS;
   4100 
   4101   typedef struct _NDIS_SRIOV_WRITE_VF_CONFIG_BLOCK_PARAMETERS {
   4102     NDIS_OBJECT_HEADER Header;
   4103     NDIS_SRIOV_FUNCTION_ID VFId;
   4104     ULONG BlockId;
   4105     ULONG Length;
   4106     ULONG BufferOffset;
   4107   } NDIS_SRIOV_WRITE_VF_CONFIG_BLOCK_PARAMETERS, *PNDIS_SRIOV_WRITE_VF_CONFIG_BLOCK_PARAMETERS;
   4108 
   4109   typedef struct _NDIS_SRIOV_RESET_VF_PARAMETERS {
   4110     NDIS_OBJECT_HEADER Header;
   4111     NDIS_SRIOV_FUNCTION_ID VFId;
   4112   } NDIS_SRIOV_RESET_VF_PARAMETERS, *PNDIS_SRIOV_RESET_VF_PARAMETERS;
   4113 
   4114   typedef struct _NDIS_SRIOV_SET_VF_POWER_STATE_PARAMETERS {
   4115     NDIS_OBJECT_HEADER Header;
   4116     NDIS_SRIOV_FUNCTION_ID VFId;
   4117     NDIS_DEVICE_POWER_STATE PowerState;
   4118     BOOLEAN WakeEnable;
   4119   } NDIS_SRIOV_SET_VF_POWER_STATE_PARAMETERS, *PNDIS_SRIOV_SET_VF_POWER_STATE_PARAMETERS;
   4120 
   4121   typedef struct _NDIS_SRIOV_CONFIG_STATE_PARAMETERS {
   4122     NDIS_OBJECT_HEADER Header;
   4123     ULONG BlockId;
   4124     ULONG Length;
   4125   } NDIS_SRIOV_CONFIG_STATE_PARAMETERS, *PNDIS_SRIOV_CONFIG_STATE_PARAMETERS;
   4126 
   4127   typedef struct _NDIS_SRIOV_VF_VENDOR_DEVICE_ID_INFO {
   4128     NDIS_OBJECT_HEADER Header;
   4129     NDIS_SRIOV_FUNCTION_ID VFId;
   4130     USHORT VendorId;
   4131     USHORT DeviceId;
   4132   } NDIS_SRIOV_VF_VENDOR_DEVICE_ID_INFO, *PNDIS_SRIOV_VF_VENDOR_DEVICE_ID_INFO;
   4133 
   4134   typedef struct _NDIS_SRIOV_PROBED_BARS_INFO {
   4135     NDIS_OBJECT_HEADER Header;
   4136     ULONG BaseRegisterValuesOffset;
   4137   } NDIS_SRIOV_PROBED_BARS_INFO, *PNDIS_SRIOV_PROBED_BARS_INFO;
   4138 
   4139   typedef struct _NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS {
   4140     NDIS_OBJECT_HEADER Header;
   4141     NDIS_RECEIVE_FILTER_ID FilterId;
   4142     NDIS_RECEIVE_QUEUE_ID SourceQueueId;
   4143     NDIS_NIC_SWITCH_VPORT_ID SourceVPortId;
   4144     NDIS_RECEIVE_QUEUE_ID DestQueueId;
   4145     NDIS_NIC_SWITCH_VPORT_ID DestVPortId;
   4146   } NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS, *PNDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS;
   4147 
   4148   typedef struct _NDIS_SRIOV_BAR_RESOURCES_INFO {
   4149     NDIS_OBJECT_HEADER Header;
   4150     NDIS_SRIOV_FUNCTION_ID VFId;
   4151     USHORT BarIndex;
   4152     ULONG BarResourcesOffset;
   4153   } NDIS_SRIOV_BAR_RESOURCES_INFO, *PNDIS_SRIOV_BAR_RESOURCES_INFO;
   4154 
   4155   typedef struct _NDIS_SRIOV_PF_LUID_INFO {
   4156     NDIS_OBJECT_HEADER Header;
   4157     LUID Luid;
   4158   } NDIS_SRIOV_PF_LUID_INFO, *PNDIS_SRIOV_PF_LUID_INFO;
   4159 
   4160   typedef struct _NDIS_SRIOV_VF_SERIAL_NUMBER_INFO {
   4161     NDIS_OBJECT_HEADER Header;
   4162     ULONG SerialNumber;
   4163   } NDIS_SRIOV_VF_SERIAL_NUMBER_INFO, *PNDIS_SRIOV_VF_SERIAL_NUMBER_INFO;
   4164 
   4165   typedef struct _NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO {
   4166     NDIS_OBJECT_HEADER Header;
   4167     ULONG64 BlockMask;
   4168   } NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO, *PNDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO;
   4169 
   4170   typedef GUID NDIS_SWITCH_OBJECT_INSTANCE_ID, *PNDIS_SWITCH_OBJECT_INSTANCE_ID;
   4171   typedef GUID NDIS_SWITCH_OBJECT_ID, *PNDIS_SWITCH_OBJECT_ID;
   4172   typedef USHORT NDIS_SWITCH_OBJECT_VERSION, *PNDIS_SWITCH_OBJECT_VERSION;
   4173   typedef USHORT NDIS_SWITCH_OBJECT_SERIALIZATION_VERSION, *PNDIS_SWITCH_OBJECT_SERIALIZATION_VERSION;
   4174 #ifndef _NDIS_SWITCH_PORT_ID
   4175 #define _NDIS_SWITCH_PORT_ID NDIS_SWITCH_PORT_ID
   4176   typedef UINT32 NDIS_SWITCH_PORT_ID, *PNDIS_SWITCH_PORT_ID;
   4177   typedef USHORT NDIS_SWITCH_NIC_INDEX, *PNDIS_SWITCH_NIC_INDEX;
   4178 #endif
   4179 
   4180   typedef enum _NDIS_SWITCH_PORT_PROPERTY_TYPE {
   4181     NdisSwitchPortPropertyTypeUndefined,
   4182     NdisSwitchPortPropertyTypeCustom,
   4183     NdisSwitchPortPropertyTypeSecurity,
   4184     NdisSwitchPortPropertyTypeVlan,
   4185     NdisSwitchPortPropertyTypeProfile,
   4186     NdisSwitchPortPropertyTypeMaximum
   4187   } NDIS_SWITCH_PORT_PROPERTY_TYPE, *PNDIS_SWITCH_PORT_PROPERTY_TYPE;
   4188 
   4189   typedef struct _NDIS_SWITCH_PORT_PROPERTY_SECURITY {
   4190     NDIS_OBJECT_HEADER Header;
   4191     ULONG Flags;
   4192     BOOLEAN AllowMacSpoofing;
   4193     BOOLEAN AllowIeeePriorityTag;
   4194     UINT32 VirtualSubnetId;
   4195     BOOLEAN AllowTeaming;
   4196   } NDIS_SWITCH_PORT_PROPERTY_SECURITY, *PNDIS_SWITCH_PORT_PROPERTY_SECURITY;
   4197 
   4198   typedef enum _NDIS_SWITCH_PORT_VLAN_MODE {
   4199     NdisSwitchPortVlanModeUnknown = 0,
   4200     NdisSwitchPortVlanModeAccess = 1,
   4201     NdisSwitchPortVlanModeTrunk = 2,
   4202     NdisSwitchPortVlanModePrivate = 3,
   4203     NdisSwitchPortVlanModeMax = 4
   4204   } NDIS_SWITCH_PORT_VLAN_MODE, *PNDIS_SWITCH_PORT_VLAN_MODE;
   4205 
   4206   typedef enum _NDIS_SWITCH_PORT_PVLAN_MODE {
   4207     NdisSwitchPortPvlanModeUndefined = 0,
   4208     NdisSwitchPortPvlanModeIsolated,
   4209     NdisSwitchPortPvlanModeCommunity,
   4210     NdisSwitchPortPvlanModePromiscuous
   4211   } NDIS_SWITCH_PORT_PVLAN_MODE, *PNDIS_SWITCH_PORT_PVLAN_MODE;
   4212 
   4213   typedef struct _NDIS_SWITCH_PORT_PROPERTY_VLAN {
   4214     NDIS_OBJECT_HEADER Header;
   4215     ULONG Flags;
   4216     NDIS_SWITCH_PORT_VLAN_MODE OperationMode;
   4217     __C89_NAMELESS union {
   4218       struct {
   4219 	UINT16 AccessVlanId;
   4220 	UINT16 NativeVlanId;
   4221 	UINT64 PruneVlanIdArray[64];
   4222 	UINT64 TrunkVlanIdArray[64];
   4223       } VlanProperties;
   4224       struct {
   4225 	NDIS_SWITCH_PORT_PVLAN_MODE PvlanMode;
   4226 	UINT16 PrimaryVlanId;
   4227 	__C89_NAMELESS union {
   4228 	  UINT16 SecondaryVlanId;
   4229 	  UINT64 SecondaryVlanIdArray[64];
   4230 	};
   4231       } PvlanProperties;
   4232     };
   4233   } NDIS_SWITCH_PORT_PROPERTY_VLAN, *PNDIS_SWITCH_PORT_PROPERTY_VLAN;
   4234 
   4235   typedef struct _NDIS_SWITCH_PORT_PROPERTY_PROFILE {
   4236     NDIS_OBJECT_HEADER Header;
   4237     ULONG Flags;
   4238     NDIS_SWITCH_PORT_PROPERTY_PROFILE_NAME ProfileName;
   4239     GUID ProfileId;
   4240     NDIS_VENDOR_NAME VendorName;
   4241     GUID VendorId;
   4242     UINT32 ProfileData;
   4243     GUID NetCfgInstanceId;
   4244     struct {
   4245       UINT32 PciSegmentNumber:16;
   4246       UINT32 PciBusNumber:8;
   4247       UINT32 PciDeviceNumber:5;
   4248       UINT32 PciFunctionNumber:3;
   4249     } PciLocation;
   4250     UINT32 CdnLabelId;
   4251     NDIS_SWITCH_PORT_PROPERTY_PROFILE_CDN_LABEL CdnLabel;
   4252   } NDIS_SWITCH_PORT_PROPERTY_PROFILE, *PNDIS_SWITCH_PORT_PROPERTY_PROFILE;
   4253 
   4254   typedef struct _NDIS_SWITCH_PORT_PROPERTY_CUSTOM {
   4255     NDIS_OBJECT_HEADER Header;
   4256     ULONG Flags;
   4257     ULONG PropertyBufferLength;
   4258     ULONG PropertyBufferOffset;
   4259   } NDIS_SWITCH_PORT_PROPERTY_CUSTOM, *PNDIS_SWITCH_PORT_PROPERTY_CUSTOM;
   4260 
   4261   typedef struct _NDIS_SWITCH_PORT_PROPERTY_PARAMETERS {
   4262     NDIS_OBJECT_HEADER Header;
   4263     ULONG Flags;
   4264     NDIS_SWITCH_PORT_ID PortId;
   4265     NDIS_SWITCH_PORT_PROPERTY_TYPE PropertyType;
   4266     NDIS_SWITCH_OBJECT_ID PropertyId;
   4267     NDIS_SWITCH_OBJECT_VERSION PropertyVersion;
   4268     NDIS_SWITCH_OBJECT_SERIALIZATION_VERSION SerializationVersion;
   4269     NDIS_SWITCH_OBJECT_INSTANCE_ID PropertyInstanceId;
   4270     ULONG PropertyBufferLength;
   4271     ULONG PropertyBufferOffset;
   4272     ULONG Reserved;
   4273   } NDIS_SWITCH_PORT_PROPERTY_PARAMETERS, *PNDIS_SWITCH_PORT_PROPERTY_PARAMETERS;
   4274 
   4275   typedef struct _NDIS_SWITCH_PORT_PROPERTY_DELETE_PARAMETERS {
   4276     NDIS_OBJECT_HEADER Header;
   4277     ULONG Flags;
   4278     NDIS_SWITCH_PORT_ID PortId;
   4279     NDIS_SWITCH_PORT_PROPERTY_TYPE PropertyType;
   4280     NDIS_SWITCH_OBJECT_ID PropertyId;
   4281     NDIS_SWITCH_OBJECT_INSTANCE_ID PropertyInstanceId;
   4282   } NDIS_SWITCH_PORT_PROPERTY_DELETE_PARAMETERS, *PNDIS_SWITCH_PORT_PROPERTY_DELETE_PARAMETERS;
   4283 
   4284   typedef struct _NDIS_SWITCH_PORT_PROPERTY_ENUM_PARAMETERS {
   4285     NDIS_OBJECT_HEADER Header;
   4286     ULONG Flags;
   4287     NDIS_SWITCH_PORT_ID PortId;
   4288     NDIS_SWITCH_PORT_PROPERTY_TYPE PropertyType;
   4289     NDIS_SWITCH_OBJECT_ID PropertyId;
   4290     NDIS_SWITCH_OBJECT_SERIALIZATION_VERSION SerializationVersion;
   4291     ULONG FirstPropertyOffset;
   4292     ULONG NumProperties;
   4293     USHORT Reserved;
   4294   } NDIS_SWITCH_PORT_PROPERTY_ENUM_PARAMETERS, *PNDIS_SWITCH_PORT_PROPERTY_ENUM_PARAMETERS;
   4295 
   4296   typedef struct _NDIS_SWITCH_PORT_PROPERTY_ENUM_INFO {
   4297     NDIS_OBJECT_HEADER Header;
   4298     ULONG Flags;
   4299     NDIS_SWITCH_OBJECT_VERSION PropertyVersion;
   4300     NDIS_SWITCH_OBJECT_INSTANCE_ID PropertyInstanceId;
   4301     ULONG QwordAlignedPropertyBufferLength;
   4302     ULONG PropertyBufferLength;
   4303     ULONG PropertyBufferOffset;
   4304   } NDIS_SWITCH_PORT_PROPERTY_ENUM_INFO, *PNDIS_SWITCH_PORT_PROPERTY_ENUM_INFO;
   4305 
   4306   typedef enum _NDIS_SWITCH_PORT_FEATURE_STATUS_TYPE {
   4307     NdisSwitchPortFeatureStatusTypeUndefined,
   4308     NdisSwitchPortFeatureStatusTypeCustom,
   4309     NdisSwitchPortFeatureStatusTypeMaximum
   4310   } NDIS_SWITCH_PORT_FEATURE_STATUS_TYPE, *PNDIS_SWITCH_PORT_FEATURE_STATUS_TYPE;
   4311 
   4312   typedef struct _NDIS_SWITCH_PORT_FEATURE_STATUS_PARAMETERS {
   4313     NDIS_OBJECT_HEADER Header;
   4314     ULONG Flags;
   4315     NDIS_SWITCH_PORT_ID PortId;
   4316     NDIS_SWITCH_PORT_FEATURE_STATUS_TYPE FeatureStatusType;
   4317     NDIS_SWITCH_OBJECT_ID FeatureStatusId;
   4318     NDIS_SWITCH_OBJECT_VERSION FeatureStatusVersion;
   4319     NDIS_SWITCH_OBJECT_SERIALIZATION_VERSION SerializationVersion;
   4320     NDIS_SWITCH_OBJECT_INSTANCE_ID FeatureStatusInstanceId;
   4321     ULONG FeatureStatusBufferLength;
   4322     ULONG FeatureStatusBufferOffset;
   4323     ULONG Reserved;
   4324   } NDIS_SWITCH_PORT_FEATURE_STATUS_PARAMETERS, *PNDIS_SWITCH_PORT_FEATURE_STATUS_PARAMETERS;
   4325 
   4326   typedef struct _NDIS_SWITCH_PORT_FEATURE_STATUS_CUSTOM {
   4327     NDIS_OBJECT_HEADER Header;
   4328     ULONG Flags;
   4329     ULONG FeatureStatusBufferLength;
   4330     ULONG FeatureStatusBufferOffset;
   4331   } NDIS_SWITCH_PORT_FEATURE_STATUS_CUSTOM, *PNDIS_SWITCH_PORT_FEATURE_STATUS_CUSTOM;
   4332 
   4333   typedef enum _NDIS_SWITCH_PROPERTY_TYPE {
   4334     NdisSwitchPropertyTypeUndefined,
   4335     NdisSwitchPropertyTypeCustom,
   4336     NdisSwitchPropertyTypeMaximum
   4337   } NDIS_SWITCH_PROPERTY_TYPE, *PNDIS_SWITCH_PROPERTY_TYPE;
   4338 
   4339   typedef struct _NDIS_SWITCH_PROPERTY_CUSTOM {
   4340     NDIS_OBJECT_HEADER Header;
   4341     ULONG Flags;
   4342     ULONG PropertyBufferLength;
   4343     ULONG PropertyBufferOffset;
   4344   } NDIS_SWITCH_PROPERTY_CUSTOM, *PNDIS_SWITCH_PROPERTY_CUSTOM;
   4345 
   4346   typedef struct _NDIS_SWITCH_PROPERTY_PARAMETERS {
   4347     NDIS_OBJECT_HEADER Header;
   4348     ULONG Flags;
   4349     NDIS_SWITCH_PROPERTY_TYPE PropertyType;
   4350     NDIS_SWITCH_OBJECT_ID PropertyId;
   4351     NDIS_SWITCH_OBJECT_VERSION PropertyVersion;
   4352     NDIS_SWITCH_OBJECT_SERIALIZATION_VERSION SerializationVersion;
   4353     NDIS_SWITCH_OBJECT_INSTANCE_ID PropertyInstanceId;
   4354     ULONG PropertyBufferLength;
   4355     ULONG PropertyBufferOffset;
   4356   } NDIS_SWITCH_PROPERTY_PARAMETERS, *PNDIS_SWITCH_PROPERTY_PARAMETERS;
   4357 
   4358   typedef struct _NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS {
   4359     NDIS_OBJECT_HEADER Header;
   4360     ULONG Flags;
   4361     NDIS_SWITCH_PROPERTY_TYPE PropertyType;
   4362     NDIS_SWITCH_OBJECT_ID PropertyId;
   4363     NDIS_SWITCH_OBJECT_INSTANCE_ID PropertyInstanceId;
   4364   } NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS, *PNDIS_SWITCH_PROPERTY_DELETE_PARAMETERS;
   4365 
   4366   typedef struct _NDIS_SWITCH_PROPERTY_ENUM_INFO {
   4367     NDIS_OBJECT_HEADER Header;
   4368     ULONG Flags;
   4369     NDIS_SWITCH_OBJECT_INSTANCE_ID PropertyInstanceId;
   4370     NDIS_SWITCH_OBJECT_VERSION PropertyVersion;
   4371     ULONG QwordAlignedPropertyBufferLength;
   4372     ULONG PropertyBufferLength;
   4373     ULONG PropertyBufferOffset;
   4374   } NDIS_SWITCH_PROPERTY_ENUM_INFO, *PNDIS_SWITCH_PROPERTY_ENUM_INFO;
   4375 
   4376   typedef struct _NDIS_SWITCH_PROPERTY_ENUM_PARAMETERS {
   4377     NDIS_OBJECT_HEADER Header;
   4378     ULONG Flags;
   4379     NDIS_SWITCH_PROPERTY_TYPE PropertyType;
   4380     NDIS_SWITCH_OBJECT_ID PropertyId;
   4381     NDIS_SWITCH_OBJECT_SERIALIZATION_VERSION SerializationVersion;
   4382     ULONG FirstPropertyOffset;
   4383     ULONG NumProperties;
   4384   } NDIS_SWITCH_PROPERTY_ENUM_PARAMETERS, *PNDIS_SWITCH_PROPERTY_ENUM_PARAMETERS;
   4385 
   4386   typedef enum _NDIS_SWITCH_FEATURE_STATUS_TYPE {
   4387     NdisSwitchFeatureStatusTypeUndefined,
   4388     NdisSwitchFeatureStatusTypeCustom,
   4389     NdisSwitchFeatureStatusTypeMaximum
   4390   } NDIS_SWITCH_FEATURE_STATUS_TYPE, *PNDIS_SWITCH_FEATURE_STATUS_TYPE;
   4391 
   4392   typedef struct _NDIS_SWITCH_FEATURE_STATUS_PARAMETERS {
   4393     NDIS_OBJECT_HEADER Header;
   4394     ULONG Flags;
   4395     NDIS_SWITCH_FEATURE_STATUS_TYPE FeatureStatusType;
   4396     NDIS_SWITCH_OBJECT_ID FeatureStatusId;
   4397     NDIS_SWITCH_OBJECT_INSTANCE_ID FeatureStatusInstanceId;
   4398     NDIS_SWITCH_OBJECT_VERSION FeatureStatusVersion;
   4399     NDIS_SWITCH_OBJECT_SERIALIZATION_VERSION SerializationVersion;
   4400     ULONG FeatureStatusBufferOffset;
   4401     ULONG FeatureStatusBufferLength;
   4402   } NDIS_SWITCH_FEATURE_STATUS_PARAMETERS, *PNDIS_SWITCH_FEATURE_STATUS_PARAMETERS;
   4403 
   4404   typedef struct _NDIS_SWITCH_FEATURE_STATUS_CUSTOM {
   4405     NDIS_OBJECT_HEADER Header;
   4406     ULONG Flags;
   4407     ULONG FeatureStatusCustomBufferLength;
   4408     ULONG FeatureStatusCustomBufferOffset;
   4409   } NDIS_SWITCH_FEATURE_STATUS_CUSTOM, *PNDIS_SWITCH_FEATURE_STATUS_CUSTOM;
   4410 
   4411   typedef struct _NDIS_SWITCH_PARAMETERS {
   4412     NDIS_OBJECT_HEADER Header;
   4413     ULONG Flags;
   4414     NDIS_SWITCH_NAME SwitchName;
   4415     NDIS_SWITCH_FRIENDLYNAME SwitchFriendlyName;
   4416     UINT32 NumSwitchPorts;
   4417     BOOLEAN IsActive;
   4418   } NDIS_SWITCH_PARAMETERS, *PNDIS_SWITCH_PARAMETERS;
   4419 
   4420   typedef enum _NDIS_SWITCH_PORT_TYPE {
   4421     NdisSwitchPortTypeGeneric = 0,
   4422     NdisSwitchPortTypeExternal = 1,
   4423     NdisSwitchPortTypeSynthetic = 2,
   4424     NdisSwitchPortTypeEmulated = 3,
   4425     NdisSwitchPortTypeInternal = 4
   4426   } NDIS_SWITCH_PORT_TYPE;
   4427 
   4428   typedef enum _NDIS_SWITCH_PORT_STATE {
   4429     NdisSwitchPortStateUnknown = 0,
   4430     NdisSwitchPortStateCreated = 1,
   4431     NdisSwitchPortStateTeardown = 2,
   4432     NdisSwitchPortStateDeleted = 3
   4433   } NDIS_SWITCH_PORT_STATE;
   4434 
   4435   typedef struct _NDIS_SWITCH_PORT_PARAMETERS {
   4436     NDIS_OBJECT_HEADER Header;
   4437     ULONG Flags;
   4438     NDIS_SWITCH_PORT_ID PortId;
   4439     NDIS_SWITCH_PORT_NAME PortName;
   4440     NDIS_SWITCH_PORT_FRIENDLYNAME PortFriendlyName;
   4441     NDIS_SWITCH_PORT_TYPE PortType;
   4442     BOOLEAN IsValidationPort;
   4443     NDIS_SWITCH_PORT_STATE PortState;
   4444   } NDIS_SWITCH_PORT_PARAMETERS, *PNDIS_SWITCH_PORT_PARAMETERS;
   4445 
   4446   typedef struct _NDIS_SWITCH_PORT_ARRAY {
   4447     NDIS_OBJECT_HEADER Header;
   4448     ULONG Flags;
   4449     USHORT FirstElementOffset;
   4450     ULONG NumElements;
   4451     ULONG ElementSize;
   4452   } NDIS_SWITCH_PORT_ARRAY, *PNDIS_SWITCH_PORT_ARRAY;
   4453 
   4454   typedef enum _NDIS_SWITCH_NIC_TYPE {
   4455     NdisSwitchNicTypeExternal = 0,
   4456     NdisSwitchNicTypeSynthetic = 1,
   4457     NdisSwitchNicTypeEmulated = 2,
   4458     NdisSwitchNicTypeInternal = 3
   4459   } NDIS_SWITCH_NIC_TYPE;
   4460 
   4461   typedef enum _NDIS_SWITCH_NIC_STATE {
   4462     NdisSwitchNicStateUnknown = 0,
   4463     NdisSwitchNicStateCreated = 1,
   4464     NdisSwitchNicStateConnected = 2,
   4465     NdisSwitchNicStateDisconnected = 3,
   4466     NdisSwitchNicStateDeleted = 4
   4467   } NDIS_SWITCH_NIC_STATE;
   4468 
   4469   typedef struct _NDIS_SWITCH_NIC_PARAMETERS {
   4470     NDIS_OBJECT_HEADER Header;
   4471     ULONG Flags;
   4472     NDIS_SWITCH_NIC_NAME NicName;
   4473     NDIS_SWITCH_NIC_FRIENDLYNAME NicFriendlyName;
   4474     NDIS_SWITCH_PORT_ID PortId;
   4475     NDIS_SWITCH_NIC_INDEX NicIndex;
   4476     NDIS_SWITCH_NIC_TYPE NicType;
   4477     NDIS_SWITCH_NIC_STATE NicState;
   4478     NDIS_VM_NAME VmName;
   4479     NDIS_VM_FRIENDLYNAME VmFriendlyName;
   4480     GUID NetCfgInstanceId;
   4481     ULONG MTU;
   4482     USHORT NumaNodeId;
   4483     UCHAR PermanentMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH];
   4484     UCHAR VMMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH];
   4485     UCHAR CurrentMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH];
   4486     BOOLEAN VFAssigned;
   4487   } NDIS_SWITCH_NIC_PARAMETERS, *PNDIS_SWITCH_NIC_PARAMETERS;
   4488 
   4489   typedef struct _NDIS_SWITCH_NIC_ARRAY {
   4490     NDIS_OBJECT_HEADER Header;
   4491     ULONG Flags;
   4492     USHORT FirstElementOffset;
   4493     ULONG NumElements;
   4494     ULONG ElementSize;
   4495   } NDIS_SWITCH_NIC_ARRAY, *PNDIS_SWITCH_NIC_ARRAY;
   4496 
   4497   typedef struct _NDIS_OID_REQUEST NDIS_OID_REQUEST, *PNDIS_OID_REQUEST;
   4498 
   4499   typedef struct _NDIS_SWITCH_NIC_OID_REQUEST {
   4500     NDIS_OBJECT_HEADER Header;
   4501     ULONG Flags;
   4502     NDIS_SWITCH_PORT_ID SourcePortId;
   4503     NDIS_SWITCH_NIC_INDEX SourceNicIndex;
   4504     NDIS_SWITCH_PORT_ID DestinationPortId;
   4505     NDIS_SWITCH_NIC_INDEX DestinationNicIndex;
   4506     PNDIS_OID_REQUEST OidRequest;
   4507   } NDIS_SWITCH_NIC_OID_REQUEST, *PNDIS_SWITCH_NIC_OID_REQUEST;
   4508 
   4509   typedef struct _NDIS_SWITCH_NIC_SAVE_STATE {
   4510     NDIS_OBJECT_HEADER Header;
   4511     ULONG Flags;
   4512     NDIS_SWITCH_PORT_ID PortId;
   4513     NDIS_SWITCH_NIC_INDEX NicIndex;
   4514     GUID ExtensionId;
   4515     NDIS_SWITCH_EXTENSION_FRIENDLYNAME ExtensionFriendlyName;
   4516     GUID FeatureClassId;
   4517     USHORT SaveDataSize;
   4518     USHORT SaveDataOffset;
   4519   } NDIS_SWITCH_NIC_SAVE_STATE, *PNDIS_SWITCH_NIC_SAVE_STATE;
   4520 #endif
   4521 
   4522   typedef struct _NDIS_PORT_STATE {
   4523     NDIS_OBJECT_HEADER Header;
   4524     NDIS_MEDIA_CONNECT_STATE MediaConnectState;
   4525     ULONG64 XmitLinkSpeed;
   4526     ULONG64 RcvLinkSpeed;
   4527     NET_IF_DIRECTION_TYPE Direction;
   4528     NDIS_PORT_CONTROL_STATE SendControlState;
   4529     NDIS_PORT_CONTROL_STATE RcvControlState;
   4530     NDIS_PORT_AUTHORIZATION_STATE SendAuthorizationState;
   4531     NDIS_PORT_AUTHORIZATION_STATE RcvAuthorizationState;
   4532     ULONG Flags;
   4533   } NDIS_PORT_STATE, *PNDIS_PORT_STATE;
   4534 
   4535   typedef struct _NDIS_PORT_CHARACTERISTICS {
   4536     NDIS_OBJECT_HEADER Header;
   4537     NDIS_PORT_NUMBER PortNumber;
   4538     ULONG Flags;
   4539     NDIS_PORT_TYPE Type;
   4540     NDIS_MEDIA_CONNECT_STATE MediaConnectState;
   4541     ULONG64 XmitLinkSpeed;
   4542     ULONG64 RcvLinkSpeed;
   4543     NET_IF_DIRECTION_TYPE Direction;
   4544     NDIS_PORT_CONTROL_STATE SendControlState;
   4545     NDIS_PORT_CONTROL_STATE RcvControlState;
   4546     NDIS_PORT_AUTHORIZATION_STATE SendAuthorizationState;
   4547     NDIS_PORT_AUTHORIZATION_STATE RcvAuthorizationState;
   4548   } NDIS_PORT_CHARACTERISTICS, *PNDIS_PORT_CHARACTERISTICS;
   4549 
   4550   typedef struct _NDIS_PORT NDIS_PORT, *PNDIS_PORT;
   4551 
   4552   struct _NDIS_PORT {
   4553     PNDIS_PORT Next;
   4554     PVOID NdisReserved;
   4555     PVOID MiniportReserved;
   4556     PVOID ProtocolReserved;
   4557     NDIS_PORT_CHARACTERISTICS PortCharacteristics;
   4558   };
   4559 
   4560   typedef struct _NDIS_PORT_ARRAY {
   4561     NDIS_OBJECT_HEADER Header;
   4562     ULONG NumberOfPorts;
   4563     ULONG OffsetFirstPort;
   4564     ULONG ElementSize;
   4565     NDIS_PORT_CHARACTERISTICS Ports[1];
   4566   } NDIS_PORT_ARRAY, *PNDIS_PORT_ARRAY;
   4567 #endif
   4568 #endif
   4569 
   4570 #ifdef __cplusplus
   4571 }
   4572 #endif
   4573 
   4574 #endif
   4575 #endif
   4576