master
   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
  14extern "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