text: /**
  * This file is part of the mingw-w64 runtime package.
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
  
  #ifndef _NTDDNDIS_
  #define _NTDDNDIS_
  
  #include <winapifamily.h>
  
  #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  #ifndef NDIS_SUPPORT_NDIS6
  #if defined (UM_NDIS60) || defined (UM_NDIS61) || defined (UM_NDIS620) || defined (UM_NDIS630)
  #define NDIS_SUPPORT_NDIS6 1
  #else
  #define NDIS_SUPPORT_NDIS6 0
  #endif
  #endif
  
  #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
  #include <ifdef.h>
  #include <devpkey.h>
  #include <pciprop.h>
  #endif
  
  #ifndef NDIS_SUPPORT_NDIS61
  #if defined (UM_NDIS61) || defined (UM_NDIS620) || defined (UM_NDIS630)
  #define NDIS_SUPPORT_NDIS61 1
  #else
  #define NDIS_SUPPORT_NDIS61 0
  #endif
  #endif
  
  #ifndef NDIS_SUPPORT_NDIS620
  #if defined (UM_NDIS620) || defined (UM_NDIS630)
  #define NDIS_SUPPORT_NDIS620 1
  #else
  #define NDIS_SUPPORT_NDIS620 0
  #endif
  #endif
  
  #ifndef NDIS_SUPPORT_NDIS630
  #ifdef UM_NDIS630
  #define NDIS_SUPPORT_NDIS630 1
  #else
  #define NDIS_SUPPORT_NDIS630 0
  #endif
  #endif
  
  #define DD_NDIS_DEVICE_NAME "\\Device\\UNKNOWN"
  
  #define _NDIS_CONTROL_CODE(request, method) CTL_CODE (FILE_DEVICE_PHYSICAL_NETCARD, request, method, FILE_ANY_ACCESS)
  
  #define IOCTL_NDIS_QUERY_GLOBAL_STATS _NDIS_CONTROL_CODE (0, METHOD_OUT_DIRECT)
  #define IOCTL_NDIS_QUERY_ALL_STATS _NDIS_CONTROL_CODE (1, METHOD_OUT_DIRECT)
  #define IOCTL_NDIS_DO_PNP_OPERATION _NDIS_CONTROL_CODE (2, METHOD_BUFFERED)
  #define IOCTL_NDIS_QUERY_SELECTED_STATS _NDIS_CONTROL_CODE (3, METHOD_OUT_DIRECT)
  #define IOCTL_NDIS_ENUMERATE_INTERFACES _NDIS_CONTROL_CODE (4, METHOD_BUFFERED)
  #define IOCTL_NDIS_ADD_TDI_DEVICE _NDIS_CONTROL_CODE (5, METHOD_BUFFERED)
  #define IOCTL_NDIS_GET_LOG_DATA _NDIS_CONTROL_CODE (7, METHOD_OUT_DIRECT)
  #define IOCTL_NDIS_GET_VERSION _NDIS_CONTROL_CODE (8, METHOD_BUFFERED)
  
  #define IOCTL_NDIS_RESERVED1 _NDIS_CONTROL_CODE (9, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED2 _NDIS_CONTROL_CODE (0xa, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED3 _NDIS_CONTROL_CODE (0xb, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED4 _NDIS_CONTROL_CODE (0xc, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED5 CTL_CODE (FILE_DEVICE_PHYSICAL_NETCARD, 0xd, METHOD_BUFFERED, FILE_ANY_ACCESS)
  #define IOCTL_NDIS_RESERVED6 CTL_CODE (FILE_DEVICE_PHYSICAL_NETCARD, 0xe, METHOD_BUFFERED, FILE_WRITE_ACCESS)
  #define IOCTL_NDIS_RESERVED7 _NDIS_CONTROL_CODE (0xf, METHOD_OUT_DIRECT)
  #define IOCTL_NDIS_RESERVED8 _NDIS_CONTROL_CODE (0x10, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED9 _NDIS_CONTROL_CODE (0x11, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED10 _NDIS_CONTROL_CODE (0x12, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED11 _NDIS_CONTROL_CODE (0x13, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED12 _NDIS_CONTROL_CODE (0x14, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED13 _NDIS_CONTROL_CODE (0x15, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED14 _NDIS_CONTROL_CODE (0x16, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED15 _NDIS_CONTROL_CODE (0x17, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED16 _NDIS_CONTROL_CODE (0x18, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED17 _NDIS_CONTROL_CODE (0x19, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED18 _NDIS_CONTROL_CODE (0x1a, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED19 _NDIS_CONTROL_CODE (0x1b, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED20 _NDIS_CONTROL_CODE (0x1c, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED21 _NDIS_CONTROL_CODE (0x1d, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED22 _NDIS_CONTROL_CODE (0x1e, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED23 _NDIS_CONTROL_CODE (0x1f, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED24 _NDIS_CONTROL_CODE (0x20, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED25 _NDIS_CONTROL_CODE (0x21, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED26 _NDIS_CONTROL_CODE (0x22, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED27 _NDIS_CONTROL_CODE (0x23, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED28 _NDIS_CONTROL_CODE (0x24, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED29 _NDIS_CONTROL_CODE (0x25, METHOD_BUFFERED)
  #define IOCTL_NDIS_RESERVED30 _NDIS_CONTROL_CODE (0x26, METHOD_BUFFERED)
  
    typedef ULONG NDIS_OID, *PNDIS_OID;
    typedef struct _NDIS_STATISTICS_VALUE {
      NDIS_OID Oid;
      ULONG DataLength;
      UCHAR Data[1];
    } NDIS_STATISTICS_VALUE;
  
    typedef NDIS_STATISTICS_VALUE UNALIGNED *PNDIS_STATISTICS_VALUE;
  
  #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
    typedef struct _NDIS_STATISTICS_VALUE_EX {
      NDIS_OID Oid;
      ULONG DataLength;
      ULONG Length;
      UCHAR Data[1];
    } NDIS_STATISTICS_VALUE_EX;
  
    typedef NDIS_STATISTICS_VALUE_EX UNALIGNED *PNDIS_STATISTICS_VALUE_EX;
  #endif
  
    typedef struct _NDIS_VAR_DATA_DESC {
      USHORT Length;
      USHORT MaximumLength;
      ULONG_PTR Offset;
    } NDIS_VAR_DATA_DESC, *PNDIS_VAR_DATA_DESC;
  
  #ifndef GUID_DEFINED
  #include <guiddef.h>
  #endif
  
  #define NDIS_OBJECT_TYPE_DEFAULT 0x80
  #define NDIS_OBJECT_TYPE_MINIPORT_INIT_PARAMETERS 0x81
  #define NDIS_OBJECT_TYPE_SG_DMA_DESCRIPTION 0x83
  #define NDIS_OBJECT_TYPE_MINIPORT_INTERRUPT 0x84
  #define NDIS_OBJECT_TYPE_DEVICE_OBJECT_ATTRIBUTES 0x85
  #define NDIS_OBJECT_TYPE_BIND_PARAMETERS 0x86
  #define NDIS_OBJECT_TYPE_OPEN_PARAMETERS 0x87
  #define NDIS_OBJECT_TYPE_RSS_CAPABILITIES 0x88
  #define NDIS_OBJECT_TYPE_RSS_PARAMETERS 0x89
  #define NDIS_OBJECT_TYPE_MINIPORT_DRIVER_CHARACTERISTICS 0x8a
  #define NDIS_OBJECT_TYPE_FILTER_DRIVER_CHARACTERISTICS 0x8b
  #define NDIS_OBJECT_TYPE_FILTER_PARTIAL_CHARACTERISTICS 0x8c
  #define NDIS_OBJECT_TYPE_FILTER_ATTRIBUTES 0x8d
  #define NDIS_OBJECT_TYPE_CLIENT_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS 0x8e
  #define NDIS_OBJECT_TYPE_PROVIDER_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS 0x8f
  #define NDIS_OBJECT_TYPE_CO_PROTOCOL_CHARACTERISTICS 0x90
  #define NDIS_OBJECT_TYPE_CO_MINIPORT_CHARACTERISTICS 0x91
  #define NDIS_OBJECT_TYPE_MINIPORT_PNP_CHARACTERISTICS 0x92
  #define NDIS_OBJECT_TYPE_CLIENT_CHIMNEY_OFFLOAD_CHARACTERISTICS 0x93
  #define NDIS_OBJECT_TYPE_PROVIDER_CHIMNEY_OFFLOAD_CHARACTERISTICS 0x94
  #define NDIS_OBJECT_TYPE_PROTOCOL_DRIVER_CHARACTERISTICS 0x95
  #define NDIS_OBJECT_TYPE_REQUEST_EX 0x96
  #define NDIS_OBJECT_TYPE_OID_REQUEST 0x96
  #define NDIS_OBJECT_TYPE_TIMER_CHARACTERISTICS 0x97
  #define NDIS_OBJECT_TYPE_STATUS_INDICATION 0x98
  #define NDIS_OBJECT_TYPE_FILTER_ATTACH_PARAMETERS 0x99
  #define NDIS_OBJECT_TYPE_FILTER_PAUSE_PARAMETERS 0x9a
  #define NDIS_OBJECT_TYPE_FILTER_RESTART_PARAMETERS 0x9b
  #define NDIS_OBJECT_TYPE_PORT_CHARACTERISTICS 0x9c
  #define NDIS_OBJECT_TYPE_PORT_STATE 0x9d
  #define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES 0x9e
  #define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES 0x9f
  #define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES 0xa0
  #define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_NATIVE_802_11_ATTRIBUTES 0xa1
  #define NDIS_OBJECT_TYPE_RESTART_GENERAL_ATTRIBUTES 0xa2
  #define NDIS_OBJECT_TYPE_PROTOCOL_RESTART_PARAMETERS 0xa3
  #define NDIS_OBJECT_TYPE_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES 0xa4
  #define NDIS_OBJECT_TYPE_CO_CALL_MANAGER_OPTIONAL_HANDLERS 0xa5
  #define NDIS_OBJECT_TYPE_CO_CLIENT_OPTIONAL_HANDLERS 0xa6
  #define NDIS_OBJECT_TYPE_OFFLOAD 0xa7
  #define NDIS_OBJECT_TYPE_OFFLOAD_ENCAPSULATION 0xa8
  #define NDIS_OBJECT_TYPE_CONFIGURATION_OBJECT 0xa9
  #define NDIS_OBJECT_TYPE_DRIVER_WRAPPER_OBJECT 0xaa
  #if NDIS_SUPPORT_NDIS61
  #define NDIS_OBJECT_TYPE_HD_SPLIT_ATTRIBUTES 0xab
  #endif
  #define NDIS_OBJECT_TYPE_NSI_NETWORK_RW_STRUCT 0xac
  #define NDIS_OBJECT_TYPE_NSI_COMPARTMENT_RW_STRUCT 0xad
  #define NDIS_OBJECT_TYPE_NSI_INTERFACE_PERSIST_RW_STRUCT 0xae
  #if NDIS_SUPPORT_NDIS61
  #define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 0xaf
  #endif
  #if NDIS_SUPPORT_NDIS620
  #define NDIS_OBJECT_TYPE_SHARED_MEMORY_PROVIDER_CHARACTERISTICS 0xb0
  #define NDIS_OBJECT_TYPE_RSS_PROCESSOR_INFO 0xb1
  #endif
  #if NDIS_SUPPORT_NDIS630
  #define NDIS_OBJECT_TYPE_NDK_PROVIDER_CHARACTERISTICS 0xb2
  #define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_NDK_ATTRIBUTES 0xb3
  #define NDIS_OBJECT_TYPE_MINIPORT_SS_CHARACTERISTICS 0xb4
  #define NDIS_OBJECT_TYPE_QOS_CAPABILITIES 0xb5
  #define NDIS_OBJECT_TYPE_QOS_PARAMETERS 0xb6
  #define NDIS_OBJECT_TYPE_QOS_CLASSIFICATION_ELEMENT 0xb7
  #define NDIS_OBJECT_TYPE_SWITCH_OPTIONAL_HANDLERS 0xb8
  #define NDIS_OBJECT_TYPE_IOCTL_OID_INFO 0xb9
  #define NDIS_OBJECT_TYPE_LBFO_DIAGNOSTIC_OID 0xba
  #endif
  
    typedef struct _NDIS_OBJECT_HEADER {
      UCHAR Type;
      UCHAR Revision;
      USHORT Size;
    } NDIS_OBJECT_HEADER, *PNDIS_OBJECT_HEADER;
  
    typedef enum _NDIS_REQUEST_TYPE {
      NdisRequestQueryInformation,
      NdisRequestSetInformation,
      NdisRequestQueryStatistics,
      NdisRequestOpen,
      NdisRequestClose,
      NdisRequestSend,
      NdisRequestTransferData,
      NdisRequestReset,
      NdisRequestGeneric1,
      NdisRequestGeneric2,
      NdisRequestGeneric3,
      NdisRequestGeneric4
  #if NDIS_SUPPORT_NDIS6
      , NdisRequestMethod
  #endif
    } NDIS_REQUEST_TYPE, *PNDIS_REQUEST_TYPE;
  
  #define NDIS_OBJECT_REVISION_1 1
  
  #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
  #define NDIS_STATISTICS_FLAGS_VALID_DIRECTED_FRAMES_RCV 0x00000001
  #define NDIS_STATISTICS_FLAGS_VALID_MULTICAST_FRAMES_RCV 0x00000002
  #define NDIS_STATISTICS_FLAGS_VALID_BROADCAST_FRAMES_RCV 0x00000004
  #define NDIS_STATISTICS_FLAGS_VALID_BYTES_RCV 0x00000008
  #define NDIS_STATISTICS_FLAGS_VALID_RCV_DISCARDS 0x00000010
  #define NDIS_STATISTICS_FLAGS_VALID_RCV_ERROR 0x00000020
  #define NDIS_STATISTICS_FLAGS_VALID_DIRECTED_FRAMES_XMIT 0x00000040
  #define NDIS_STATISTICS_FLAGS_VALID_MULTICAST_FRAMES_XMIT 0x00000080
  #define NDIS_STATISTICS_FLAGS_VALID_BROADCAST_FRAMES_XMIT 0x00000100
  #define NDIS_STATISTICS_FLAGS_VALID_BYTES_XMIT 0x00000200
  #define NDIS_STATISTICS_FLAGS_VALID_XMIT_ERROR 0x00000400
  #define NDIS_STATISTICS_FLAGS_VALID_XMIT_DISCARDS 0x00008000
  #define NDIS_STATISTICS_FLAGS_VALID_DIRECTED_BYTES_RCV 0x00010000
  #define NDIS_STATISTICS_FLAGS_VALID_MULTICAST_BYTES_RCV 0x00020000
  #define NDIS_STATISTICS_FLAGS_VALID_BROADCAST_BYTES_RCV 0x00040000
  #define NDIS_STATISTICS_FLAGS_VALID_DIRECTED_BYTES_XMIT 0x00080000
  #define NDIS_STATISTICS_FLAGS_VALID_MULTICAST_BYTES_XMIT 0x00100000
  #define NDIS_STATISTICS_FLAGS_VALID_BROADCAST_BYTES_XMIT 0x00200000
  
  #define NDIS_INTERRUPT_MODERATION_CHANGE_NEEDS_RESET 0x00000001
  #define NDIS_INTERRUPT_MODERATION_CHANGE_NEEDS_REINITIALIZE 0x00000002
  
  #define NDIS_STATISTICS_INFO_REVISION_1 1
  #define NDIS_INTERRUPT_MODERATION_PARAMETERS_REVISION_1 1
  #define NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES_REVISION_1 1
  #define NDIS_OBJECT_TYPE_PCI_DEVICE_CUSTOM_PROPERTIES_REVISION_1 1
  #if NTDDI_VERSION >= 0x06010000 || NDIS_SUPPORT_NDIS620
  #define NDIS_OBJECT_TYPE_PCI_DEVICE_CUSTOM_PROPERTIES_REVISION_2 2
  #endif
  #if NDIS_SUPPORT_NDIS630
  #define NDIS_RSC_STATISTICS_REVISION_1 1
  #endif
  
  #define NDIS_SIZEOF_STATISTICS_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_STATISTICS_INFO, ifHCOutBroadcastOctets)
  #define NDIS_SIZEOF_INTERRUPT_MODERATION_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_INTERRUPT_MODERATION_PARAMETERS, InterruptModeration)
  #define NDIS_SIZEOF_TIMEOUT_DPC_REQUEST_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES, TimeoutArray)
  #define NDIS_SIZEOF_PCI_DEVICE_CUSTOM_PROPERTIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PCI_DEVICE_CUSTOM_PROPERTIES, MaxLinkWidth)
  #if NTDDI_VERSION >= 0x06010000 || NDIS_SUPPORT_NDIS620
  #define NDIS_SIZEOF_PCI_DEVICE_CUSTOM_PROPERTIES_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_PCI_DEVICE_CUSTOM_PROPERTIES, MaxInterruptMessages)
  #endif
  #if NDIS_SUPPORT_NDIS630
  #define NDIS_SIZEOF_RSC_STATISTICS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RSC_STATISTICS_INFO, Aborts)
  #endif
  
    typedef struct _NDIS_STATISTICS_INFO {
      NDIS_OBJECT_HEADER Header;
      ULONG SupportedStatistics;
      ULONG64 ifInDiscards;
      ULONG64 ifInErrors;
      ULONG64 ifHCInOctets;
      ULONG64 ifHCInUcastPkts;
      ULONG64 ifHCInMulticastPkts;
      ULONG64 ifHCInBroadcastPkts;
      ULONG64 ifHCOutOctets;
      ULONG64 ifHCOutUcastPkts;
      ULONG64 ifHCOutMulticastPkts;
      ULONG64 ifHCOutBroadcastPkts;
      ULONG64 ifOutErrors;
      ULONG64 ifOutDiscards;
      ULONG64 ifHCInUcastOctets;
      ULONG64 ifHCInMulticastOctets;
      ULONG64 ifHCInBroadcastOctets;
      ULONG64 ifHCOutUcastOctets;
      ULONG64 ifHCOutMulticastOctets;
      ULONG64 ifHCOutBroadcastOctets;
    } NDIS_STATISTICS_INFO, *PNDIS_STATISTICS_INFO;
  
  #if NDIS_SUPPORT_NDIS630
    typedef struct _NDIS_RSC_STATISTICS_INFO {
      NDIS_OBJECT_HEADER Header;
      ULONG64 CoalescedPkts;
      ULONG64 CoalescedOctets;
      ULONG64 CoalesceEvents;
      ULONG64 Aborts;
    } NDIS_RSC_STATISTICS_INFO, *PNDIS_RSC_STATISTICS_INFO;
  #endif
  
    typedef enum _NDIS_INTERRUPT_MODERATION {
      NdisInterruptModerationUnknown,
      NdisInterruptModerationNotSupported,
      NdisInterruptModerationEnabled,
      NdisInterruptModerationDisabled
    } NDIS_INTERRUPT_MODERATION, *PNDIS_INTERRUPT_MODERATION;
  
    typedef struct _NDIS_INTERRUPT_MODERATION_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_INTERRUPT_MODERATION InterruptModeration;
    } NDIS_INTERRUPT_MODERATION_PARAMETERS, *PNDIS_INTERRUPT_MODERATION_PARAMETERS;
  
    typedef struct _NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      ULONG TimeoutArrayLength;
      ULONG TimeoutArray[1];
    } NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES, *PNDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES;
  
    typedef struct _NDIS_PCI_DEVICE_CUSTOM_PROPERTIES {
      NDIS_OBJECT_HEADER Header;
      UINT32 DeviceType;
      UINT32 CurrentSpeedAndMode;
      UINT32 CurrentPayloadSize;
      UINT32 MaxPayloadSize;
      UINT32 MaxReadRequestSize;
      UINT32 CurrentLinkSpeed;
      UINT32 CurrentLinkWidth;
      UINT32 MaxLinkSpeed;
      UINT32 MaxLinkWidth;
  #if (NTDDI_VERSION >= 0x06010000 || NDIS_SUPPORT_NDIS620)
      UINT32 PciExpressVersion;
      UINT32 InterruptType;
      UINT32 MaxInterruptMessages;
  #endif
    } NDIS_PCI_DEVICE_CUSTOM_PROPERTIES, *PNDIS_PCI_DEVICE_CUSTOM_PROPERTIES;
  #endif
  
  #define OID_GEN_SUPPORTED_LIST 0x00010101
  #define OID_GEN_HARDWARE_STATUS 0x00010102
  #define OID_GEN_MEDIA_SUPPORTED 0x00010103
  #define OID_GEN_MEDIA_IN_USE 0x00010104
  #define OID_GEN_MAXIMUM_LOOKAHEAD 0x00010105
  #define OID_GEN_MAXIMUM_FRAME_SIZE 0x00010106
  #define OID_GEN_LINK_SPEED 0x00010107
  #define OID_GEN_TRANSMIT_BUFFER_SPACE 0x00010108
  #define OID_GEN_RECEIVE_BUFFER_SPACE 0x00010109
  #define OID_GEN_TRANSMIT_BLOCK_SIZE 0x0001010a
  #define OID_GEN_RECEIVE_BLOCK_SIZE 0x0001010b
  #define OID_GEN_VENDOR_ID 0x0001010c
  #define OID_GEN_VENDOR_DESCRIPTION 0x0001010d
  #define OID_GEN_CURRENT_PACKET_FILTER 0x0001010e
  #define OID_GEN_CURRENT_LOOKAHEAD 0x0001010f
  #define OID_GEN_DRIVER_VERSION 0x00010110
  #define OID_GEN_MAXIMUM_TOTAL_SIZE 0x00010111
  #define OID_GEN_PROTOCOL_OPTIONS 0x00010112
  #define OID_GEN_MAC_OPTIONS 0x00010113
  #define OID_GEN_MEDIA_CONNECT_STATUS 0x00010114
  #define OID_GEN_MAXIMUM_SEND_PACKETS 0x00010115
  
  #define OID_GEN_VENDOR_DRIVER_VERSION 0x00010116
  #define OID_GEN_SUPPORTED_GUIDS 0x00010117
  #define OID_GEN_NETWORK_LAYER_ADDRESSES 0x00010118
  #define OID_GEN_TRANSPORT_HEADER_OFFSET 0x00010119
  #define OID_GEN_MEDIA_CAPABILITIES 0x00010201
  #define OID_GEN_PHYSICAL_MEDIUM 0x00010202
  #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
  #define OID_GEN_RECEIVE_SCALE_CAPABILITIES 0x00010203
  #define OID_GEN_RECEIVE_SCALE_PARAMETERS 0x00010204
  #define OID_GEN_MAC_ADDRESS 0x00010205
  #define OID_GEN_MAX_LINK_SPEED 0x00010206
  #define OID_GEN_LINK_STATE 0x00010207
  #define OID_GEN_LINK_PARAMETERS 0x00010208
  #define OID_GEN_INTERRUPT_MODERATION 0x00010209
  #define OID_GEN_NDIS_RESERVED_3 0x0001020a
  #define OID_GEN_NDIS_RESERVED_4 0x0001020b
  #define OID_GEN_NDIS_RESERVED_5 0x0001020c
  #define OID_GEN_ENUMERATE_PORTS 0x0001020d
  #define OID_GEN_PORT_STATE 0x0001020e
  #define OID_GEN_PORT_AUTHENTICATION_PARAMETERS 0x0001020f
  #define OID_GEN_TIMEOUT_DPC_REQUEST_CAPABILITIES 0x00010210
  #define OID_GEN_PCI_DEVICE_CUSTOM_PROPERTIES 0x00010211
  #define OID_GEN_NDIS_RESERVED_6 0x00010212
  #define OID_GEN_PHYSICAL_MEDIUM_EX 0x00010213
  #endif
  
  #define OID_GEN_MACHINE_NAME 0x0001021a
  #define OID_GEN_RNDIS_CONFIG_PARAMETER 0x0001021b
  #define OID_GEN_VLAN_ID 0x0001021c
  #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
  #define OID_GEN_RECEIVE_HASH 0x0001021f
  #define OID_GEN_MINIPORT_RESTART_ATTRIBUTES 0x0001021d
  
  #if NDIS_SUPPORT_NDIS61
  #define OID_GEN_HD_SPLIT_PARAMETERS 0x0001021e
  #define OID_GEN_HD_SPLIT_CURRENT_CONFIG 0x00010220
  #endif
  
  #define OID_GEN_PROMISCUOUS_MODE 0x00010280
  #define OID_GEN_LAST_CHANGE 0x00010281
  #define OID_GEN_DISCONTINUITY_TIME 0x00010282
  #define OID_GEN_OPERATIONAL_STATUS 0x00010283
  #define OID_GEN_XMIT_LINK_SPEED 0x00010284
  #define OID_GEN_RCV_LINK_SPEED 0x00010285
  #define OID_GEN_UNKNOWN_PROTOS 0x00010286
  #define OID_GEN_INTERFACE_INFO 0x00010287
  #define OID_GEN_ADMIN_STATUS 0x00010288
  #define OID_GEN_ALIAS 0x00010289
  #define OID_GEN_MEDIA_CONNECT_STATUS_EX 0x0001028a
  #define OID_GEN_LINK_SPEED_EX 0x0001028b
  #define OID_GEN_MEDIA_DUPLEX_STATE 0x0001028c
  #define OID_GEN_IP_OPER_STATUS 0x0001028d
  
  #define OID_WWAN_DRIVER_CAPS 0x0e010100
  #define OID_WWAN_DEVICE_CAPS 0x0e010101
  #define OID_WWAN_READY_INFO 0x0e010102
  #define OID_WWAN_RADIO_STATE 0x0e010103
  #define OID_WWAN_PIN 0x0e010104
  #define OID_WWAN_PIN_LIST 0x0e010105
  #define OID_WWAN_HOME_PROVIDER 0x0e010106
  #define OID_WWAN_PREFERRED_PROVIDERS 0x0e010107
  #define OID_WWAN_VISIBLE_PROVIDERS 0x0e010108
  #define OID_WWAN_REGISTER_STATE 0x0e010109
  #define OID_WWAN_PACKET_SERVICE 0x0e01010a
  #define OID_WWAN_SIGNAL_STATE 0x0e01010b
  #define OID_WWAN_CONNECT 0x0e01010c
  #define OID_WWAN_PROVISIONED_CONTEXTS 0x0e01010d
  #define OID_WWAN_SERVICE_ACTIVATION 0x0e01010e
  #define OID_WWAN_SMS_CONFIGURATION 0x0e01010f
  #define OID_WWAN_SMS_READ 0x0e010110
  #define OID_WWAN_SMS_SEND 0x0e010111
  #define OID_WWAN_SMS_DELETE 0x0e010112
  #define OID_WWAN_SMS_STATUS 0x0e010113
  #define OID_WWAN_VENDOR_SPECIFIC 0x0e010114
  #endif
  
  #if NTDDI_VERSION >= 0x06020000 || NDIS_SUPPORT_NDIS630
  #define OID_WWAN_AUTH_CHALLENGE 0x0e010115
  #define OID_WWAN_ENUMERATE_DEVICE_SERVICES 0x0e010116
  #define OID_WWAN_SUBSCRIBE_DEVICE_SERVICE_EVENTS 0x0e010117
  #define OID_WWAN_DEVICE_SERVICE_COMMAND 0x0e010118
  #define OID_WWAN_USSD 0x0e010119
  #define OID_WWAN_PIN_EX 0x0e010121
  #define OID_WWAN_ENUMERATE_DEVICE_SERVICE_COMMANDS 0x0e010122
  #define OID_WWAN_DEVICE_SERVICE_SESSION 0x0e010123
  #define OID_WWAN_DEVICE_SERVICE_SESSION_WRITE 0x0e010124
  #define OID_WWAN_PREFERRED_MULTICARRIER_PROVIDERS 0x0e010125
  #endif
  
  #define OID_GEN_XMIT_OK 0x00020101
  #define OID_GEN_RCV_OK 0x00020102
  #define OID_GEN_XMIT_ERROR 0x00020103
  #define OID_GEN_RCV_ERROR 0x00020104
  #define OID_GEN_RCV_NO_BUFFER 0x00020105
  #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
  #define OID_GEN_STATISTICS 0x00020106
  #endif
  
  #define OID_GEN_DIRECTED_BYTES_XMIT 0x00020201
  #define OID_GEN_DIRECTED_FRAMES_XMIT 0x00020202
  #define OID_GEN_MULTICAST_BYTES_XMIT 0x00020203
  #define OID_GEN_MULTICAST_FRAMES_XMIT 0x00020204
  #define OID_GEN_BROADCAST_BYTES_XMIT 0x00020205
  #define OID_GEN_BROADCAST_FRAMES_XMIT 0x00020206
  #define OID_GEN_DIRECTED_BYTES_RCV 0x00020207
  #define OID_GEN_DIRECTED_FRAMES_RCV 0x00020208
  #define OID_GEN_MULTICAST_BYTES_RCV 0x00020209
  #define OID_GEN_MULTICAST_FRAMES_RCV 0x0002020a
  #define OID_GEN_BROADCAST_BYTES_RCV 0x0002020b
  #define OID_GEN_BROADCAST_FRAMES_RCV 0x0002020c
  #define OID_GEN_RCV_CRC_ERROR 0x0002020d
  #define OID_GEN_TRANSMIT_QUEUE_LENGTH 0x0002020e
  #define OID_GEN_GET_TIME_CAPS 0x0002020f
  #define OID_GEN_GET_NETCARD_TIME 0x00020210
  #define OID_GEN_NETCARD_LOAD 0x00020211
  #define OID_GEN_DEVICE_PROFILE 0x00020212
  #define OID_GEN_INIT_TIME_MS 0x00020213
  #define OID_GEN_RESET_COUNTS 0x00020214
  #define OID_GEN_MEDIA_SENSE_COUNTS 0x00020215
  #define OID_GEN_FRIENDLY_NAME 0x00020216
  #define OID_GEN_NDIS_RESERVED_1 0x00020217
  #define OID_GEN_NDIS_RESERVED_2 0x00020218
  #define OID_GEN_NDIS_RESERVED_5 0x0001020c
  #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
  #define OID_GEN_BYTES_RCV 0x00020219
  #define OID_GEN_BYTES_XMIT 0x0002021a
  #define OID_GEN_RCV_DISCARDS 0x0002021b
  #define OID_GEN_XMIT_DISCARDS 0x0002021c
  #endif
  #if NTDDI_VERSION >= 0x06020000 || NDIS_SUPPORT_NDIS630
  #define OID_TCP_RSC_STATISTICS 0x0002021d
  #define OID_GEN_NDIS_RESERVED_7 0x0002021e
  #endif
  
  #define OID_GEN_CO_SUPPORTED_LIST OID_GEN_SUPPORTED_LIST
  #define OID_GEN_CO_HARDWARE_STATUS OID_GEN_HARDWARE_STATUS
  #define OID_GEN_CO_MEDIA_SUPPORTED OID_GEN_MEDIA_SUPPORTED
  #define OID_GEN_CO_MEDIA_IN_USE OID_GEN_MEDIA_IN_USE
  #define OID_GEN_CO_LINK_SPEED OID_GEN_LINK_SPEED
  #define OID_GEN_CO_VENDOR_ID OID_GEN_VENDOR_ID
  #define OID_GEN_CO_VENDOR_DESCRIPTION OID_GEN_VENDOR_DESCRIPTION
  #define OID_GEN_CO_DRIVER_VERSION OID_GEN_DRIVER_VERSION
  #define OID_GEN_CO_PROTOCOL_OPTIONS OID_GEN_PROTOCOL_OPTIONS
  #define OID_GEN_CO_MAC_OPTIONS OID_GEN_MAC_OPTIONS
  #define OID_GEN_CO_MEDIA_CONNECT_STATUS OID_GEN_MEDIA_CONNECT_STATUS
  #define OID_GEN_CO_VENDOR_DRIVER_VERSION OID_GEN_VENDOR_DRIVER_VERSION
  #define OID_GEN_CO_SUPPORTED_GUIDS OID_GEN_SUPPORTED_GUIDS
  #define OID_GEN_CO_GET_TIME_CAPS OID_GEN_GET_TIME_CAPS
  #define OID_GEN_CO_GET_NETCARD_TIME OID_GEN_GET_NETCARD_TIME
  #define OID_GEN_CO_MINIMUM_LINK_SPEED 0x00020120
  
  #define OID_GEN_CO_XMIT_PDUS_OK OID_GEN_XMIT_OK
  #define OID_GEN_CO_RCV_PDUS_OK OID_GEN_RCV_OK
  #define OID_GEN_CO_XMIT_PDUS_ERROR OID_GEN_XMIT_ERROR
  #define OID_GEN_CO_RCV_PDUS_ERROR OID_GEN_RCV_ERROR
  #define OID_GEN_CO_RCV_PDUS_NO_BUFFER OID_GEN_RCV_NO_BUFFER
  
  #define OID_GEN_CO_RCV_CRC_ERROR OID_GEN_RCV_CRC_ERROR
  #define OID_GEN_CO_TRANSMIT_QUEUE_LENGTH OID_GEN_TRANSMIT_QUEUE_LENGTH
  #define OID_GEN_CO_BYTES_XMIT OID_GEN_DIRECTED_BYTES_XMIT
  #define OID_GEN_CO_BYTES_RCV OID_GEN_DIRECTED_BYTES_RCV
  #define OID_GEN_CO_NETCARD_LOAD OID_GEN_NETCARD_LOAD
  #define OID_GEN_CO_DEVICE_PROFILE OID_GEN_DEVICE_PROFILE
  #define OID_GEN_CO_BYTES_XMIT_OUTSTANDING 0x00020221
  
  #define OID_802_3_PERMANENT_ADDRESS 0x01010101
  #define OID_802_3_CURRENT_ADDRESS 0x01010102
  #define OID_802_3_MULTICAST_LIST 0x01010103
  #define OID_802_3_MAXIMUM_LIST_SIZE 0x01010104
  
  #define OID_802_3_MAC_OPTIONS 0x01010105
  
  #define NDIS_802_3_MAC_OPTION_PRIORITY 0x00000001
  
  #define OID_802_3_RCV_ERROR_ALIGNMENT 0x01020101
  #define OID_802_3_XMIT_ONE_COLLISION 0x01020102
  #define OID_802_3_XMIT_MORE_COLLISIONS 0x01020103
  
  #define OID_802_3_XMIT_DEFERRED 0x01020201
  #define OID_802_3_XMIT_MAX_COLLISIONS 0x01020202
  #define OID_802_3_RCV_OVERRUN 0x01020203
  #define OID_802_3_XMIT_UNDERRUN 0x01020204
  #define OID_802_3_XMIT_HEARTBEAT_FAILURE 0x01020205
  #define OID_802_3_XMIT_TIMES_CRS_LOST 0x01020206
  #define OID_802_3_XMIT_LATE_COLLISIONS 0x01020207
  
  #if (NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6)
  #define OID_802_3_ADD_MULTICAST_ADDRESS 0x01010208
  #define OID_802_3_DELETE_MULTICAST_ADDRESS 0x01010209
  #endif
  
  #define OID_802_5_PERMANENT_ADDRESS 0x02010101
  #define OID_802_5_CURRENT_ADDRESS 0x02010102
  #define OID_802_5_CURRENT_FUNCTIONAL 0x02010103
  #define OID_802_5_CURRENT_GROUP 0x02010104
  #define OID_802_5_LAST_OPEN_STATUS 0x02010105
  #define OID_802_5_CURRENT_RING_STATUS 0x02010106
  #define OID_802_5_CURRENT_RING_STATE 0x02010107
  
  #define OID_802_5_LINE_ERRORS 0x02020101
  #define OID_802_5_LOST_FRAMES 0x02020102
  
  #define OID_802_5_BURST_ERRORS 0x02020201
  #define OID_802_5_AC_ERRORS 0x02020202
  #define OID_802_5_ABORT_DELIMETERS 0x02020203
  #define OID_802_5_FRAME_COPIED_ERRORS 0x02020204
  #define OID_802_5_FREQUENCY_ERRORS 0x02020205
  #define OID_802_5_TOKEN_ERRORS 0x02020206
  #define OID_802_5_INTERNAL_ERRORS 0x02020207
  
  #define OID_FDDI_LONG_PERMANENT_ADDR 0x03010101
  #define OID_FDDI_LONG_CURRENT_ADDR 0x03010102
  #define OID_FDDI_LONG_MULTICAST_LIST 0x03010103
  #define OID_FDDI_LONG_MAX_LIST_SIZE 0x03010104
  #define OID_FDDI_SHORT_PERMANENT_ADDR 0x03010105
  #define OID_FDDI_SHORT_CURRENT_ADDR 0x03010106
  #define OID_FDDI_SHORT_MULTICAST_LIST 0x03010107
  #define OID_FDDI_SHORT_MAX_LIST_SIZE 0x03010108
  
  #define OID_FDDI_ATTACHMENT_TYPE 0x03020101
  #define OID_FDDI_UPSTREAM_NODE_LONG 0x03020102
  #define OID_FDDI_DOWNSTREAM_NODE_LONG 0x03020103
  #define OID_FDDI_FRAME_ERRORS 0x03020104
  #define OID_FDDI_FRAMES_LOST 0x03020105
  #define OID_FDDI_RING_MGT_STATE 0x03020106
  #define OID_FDDI_LCT_FAILURES 0x03020107
  #define OID_FDDI_LEM_REJECTS 0x03020108
  #define OID_FDDI_LCONNECTION_STATE 0x03020109
  
  #define OID_FDDI_SMT_STATION_ID 0x03030201
  #define OID_FDDI_SMT_OP_VERSION_ID 0x03030202
  #define OID_FDDI_SMT_HI_VERSION_ID 0x03030203
  #define OID_FDDI_SMT_LO_VERSION_ID 0x03030204
  #define OID_FDDI_SMT_MANUFACTURER_DATA 0x03030205
  #define OID_FDDI_SMT_USER_DATA 0x03030206
  #define OID_FDDI_SMT_MIB_VERSION_ID 0x03030207
  #define OID_FDDI_SMT_MAC_CT 0x03030208
  #define OID_FDDI_SMT_NON_MASTER_CT 0x03030209
  #define OID_FDDI_SMT_MASTER_CT 0x0303020a
  #define OID_FDDI_SMT_AVAILABLE_PATHS 0x0303020b
  #define OID_FDDI_SMT_CONFIG_CAPABILITIES 0x0303020c
  #define OID_FDDI_SMT_CONFIG_POLICY 0x0303020d
  #define OID_FDDI_SMT_CONNECTION_POLICY 0x0303020e
  #define OID_FDDI_SMT_T_NOTIFY 0x0303020f
  #define OID_FDDI_SMT_STAT_RPT_POLICY 0x03030210
  #define OID_FDDI_SMT_TRACE_MAX_EXPIRATION 0x03030211
  #define OID_FDDI_SMT_PORT_INDEXES 0x03030212
  #define OID_FDDI_SMT_MAC_INDEXES 0x03030213
  #define OID_FDDI_SMT_BYPASS_PRESENT 0x03030214
  #define OID_FDDI_SMT_ECM_STATE 0x03030215
  #define OID_FDDI_SMT_CF_STATE 0x03030216
  #define OID_FDDI_SMT_HOLD_STATE 0x03030217
  #define OID_FDDI_SMT_REMOTE_DISCONNECT_FLAG 0x03030218
  #define OID_FDDI_SMT_STATION_STATUS 0x03030219
  #define OID_FDDI_SMT_PEER_WRAP_FLAG 0x0303021a
  #define OID_FDDI_SMT_MSG_TIME_STAMP 0x0303021b
  #define OID_FDDI_SMT_TRANSITION_TIME_STAMP 0x0303021c
  #define OID_FDDI_SMT_SET_COUNT 0x0303021d
  #define OID_FDDI_SMT_LAST_SET_STATION_ID 0x0303021e
  #define OID_FDDI_MAC_FRAME_STATUS_FUNCTIONS 0x0303021f
  #define OID_FDDI_MAC_BRIDGE_FUNCTIONS 0x03030220
  #define OID_FDDI_MAC_T_MAX_CAPABILITY 0x03030221
  #define OID_FDDI_MAC_TVX_CAPABILITY 0x03030222
  #define OID_FDDI_MAC_AVAILABLE_PATHS 0x03030223
  #define OID_FDDI_MAC_CURRENT_PATH 0x03030224
  #define OID_FDDI_MAC_UPSTREAM_NBR 0x03030225
  #define OID_FDDI_MAC_DOWNSTREAM_NBR 0x03030226
  #define OID_FDDI_MAC_OLD_UPSTREAM_NBR 0x03030227
  #define OID_FDDI_MAC_OLD_DOWNSTREAM_NBR 0x03030228
  #define OID_FDDI_MAC_DUP_ADDRESS_TEST 0x03030229
  #define OID_FDDI_MAC_REQUESTED_PATHS 0x0303022a
  #define OID_FDDI_MAC_DOWNSTREAM_PORT_TYPE 0x0303022b
  #define OID_FDDI_MAC_INDEX 0x0303022c
  #define OID_FDDI_MAC_SMT_ADDRESS 0x0303022d
  #define OID_FDDI_MAC_LONG_GRP_ADDRESS 0x0303022e
  #define OID_FDDI_MAC_SHORT_GRP_ADDRESS 0x0303022f
  #define OID_FDDI_MAC_T_REQ 0x03030230
  #define OID_FDDI_MAC_T_NEG 0x03030231
  #define OID_FDDI_MAC_T_MAX 0x03030232
  #define OID_FDDI_MAC_TVX_VALUE 0x03030233
  #define OID_FDDI_MAC_T_PRI0 0x03030234
  #define OID_FDDI_MAC_T_PRI1 0x03030235
  #define OID_FDDI_MAC_T_PRI2 0x03030236
  #define OID_FDDI_MAC_T_PRI3 0x03030237
  #define OID_FDDI_MAC_T_PRI4 0x03030238
  #define OID_FDDI_MAC_T_PRI5 0x03030239
  #define OID_FDDI_MAC_T_PRI6 0x0303023a
  #define OID_FDDI_MAC_FRAME_CT 0x0303023b
  #define OID_FDDI_MAC_COPIED_CT 0x0303023c
  #define OID_FDDI_MAC_TRANSMIT_CT 0x0303023d
  #define OID_FDDI_MAC_TOKEN_CT 0x0303023e
  #define OID_FDDI_MAC_ERROR_CT 0x0303023f
  #define OID_FDDI_MAC_LOST_CT 0x03030240
  #define OID_FDDI_MAC_TVX_EXPIRED_CT 0x03030241
  #define OID_FDDI_MAC_NOT_COPIED_CT 0x03030242
  #define OID_FDDI_MAC_LATE_CT 0x03030243
  #define OID_FDDI_MAC_RING_OP_CT 0x03030244
  #define OID_FDDI_MAC_FRAME_ERROR_THRESHOLD 0x03030245
  #define OID_FDDI_MAC_FRAME_ERROR_RATIO 0x03030246
  #define OID_FDDI_MAC_NOT_COPIED_THRESHOLD 0x03030247
  #define OID_FDDI_MAC_NOT_COPIED_RATIO 0x03030248
  #define OID_FDDI_MAC_RMT_STATE 0x03030249
  #define OID_FDDI_MAC_DA_FLAG 0x0303024a
  #define OID_FDDI_MAC_UNDA_FLAG 0x0303024b
  #define OID_FDDI_MAC_FRAME_ERROR_FLAG 0x0303024c
  #define OID_FDDI_MAC_NOT_COPIED_FLAG 0x0303024d
  #define OID_FDDI_MAC_MA_UNITDATA_AVAILABLE 0x0303024e
  #define OID_FDDI_MAC_HARDWARE_PRESENT 0x0303024f
  #define OID_FDDI_MAC_MA_UNITDATA_ENABLE 0x03030250
  #define OID_FDDI_PATH_INDEX 0x03030251
  #define OID_FDDI_PATH_RING_LATENCY 0x03030252
  #define OID_FDDI_PATH_TRACE_STATUS 0x03030253
  #define OID_FDDI_PATH_SBA_PAYLOAD 0x03030254
  #define OID_FDDI_PATH_SBA_OVERHEAD 0x03030255
  #define OID_FDDI_PATH_CONFIGURATION 0x03030256
  #define OID_FDDI_PATH_T_R_MODE 0x03030257
  #define OID_FDDI_PATH_SBA_AVAILABLE 0x03030258
  #define OID_FDDI_PATH_TVX_LOWER_BOUND 0x03030259
  #define OID_FDDI_PATH_T_MAX_LOWER_BOUND 0x0303025a
  #define OID_FDDI_PATH_MAX_T_REQ 0x0303025b
  #define OID_FDDI_PORT_MY_TYPE 0x0303025c
  #define OID_FDDI_PORT_NEIGHBOR_TYPE 0x0303025d
  #define OID_FDDI_PORT_CONNECTION_POLICIES 0x0303025e
  #define OID_FDDI_PORT_MAC_INDICATED 0x0303025f
  #define OID_FDDI_PORT_CURRENT_PATH 0x03030260
  #define OID_FDDI_PORT_REQUESTED_PATHS 0x03030261
  #define OID_FDDI_PORT_MAC_PLACEMENT 0x03030262
  #define OID_FDDI_PORT_AVAILABLE_PATHS 0x03030263
  #define OID_FDDI_PORT_MAC_LOOP_TIME 0x03030264
  #define OID_FDDI_PORT_PMD_CLASS 0x03030265
  #define OID_FDDI_PORT_CONNECTION_CAPABILITIES 0x03030266
  #define OID_FDDI_PORT_INDEX 0x03030267
  #define OID_FDDI_PORT_MAINT_LS 0x03030268
  #define OID_FDDI_PORT_BS_FLAG 0x03030269
  #define OID_FDDI_PORT_PC_LS 0x0303026a
  #define OID_FDDI_PORT_EB_ERROR_CT 0x0303026b
  #define OID_FDDI_PORT_LCT_FAIL_CT 0x0303026c
  #define OID_FDDI_PORT_LER_ESTIMATE 0x0303026d
  #define OID_FDDI_PORT_LEM_REJECT_CT 0x0303026e
  #define OID_FDDI_PORT_LEM_CT 0x0303026f
  #define OID_FDDI_PORT_LER_CUTOFF 0x03030270
  #define OID_FDDI_PORT_LER_ALARM 0x03030271
  #define OID_FDDI_PORT_CONNNECT_STATE 0x03030272
  #define OID_FDDI_PORT_PCM_STATE 0x03030273
  #define OID_FDDI_PORT_PC_WITHHOLD 0x03030274
  #define OID_FDDI_PORT_LER_FLAG 0x03030275
  #define OID_FDDI_PORT_HARDWARE_PRESENT 0x03030276
  #define OID_FDDI_SMT_STATION_ACTION 0x03030277
  #define OID_FDDI_PORT_ACTION 0x03030278
  #define OID_FDDI_IF_DESCR 0x03030279
  #define OID_FDDI_IF_TYPE 0x0303027a
  #define OID_FDDI_IF_MTU 0x0303027b
  #define OID_FDDI_IF_SPEED 0x0303027c
  #define OID_FDDI_IF_PHYS_ADDRESS 0x0303027d
  #define OID_FDDI_IF_ADMIN_STATUS 0x0303027e
  #define OID_FDDI_IF_OPER_STATUS 0x0303027f
  #define OID_FDDI_IF_LAST_CHANGE 0x03030280
  #define OID_FDDI_IF_IN_OCTETS 0x03030281
  #define OID_FDDI_IF_IN_UCAST_PKTS 0x03030282
  #define OID_FDDI_IF_IN_NUCAST_PKTS 0x03030283
  #define OID_FDDI_IF_IN_DISCARDS 0x03030284
  #define OID_FDDI_IF_IN_ERRORS 0x03030285
  #define OID_FDDI_IF_IN_UNKNOWN_PROTOS 0x03030286
  #define OID_FDDI_IF_OUT_OCTETS 0x03030287
  #define OID_FDDI_IF_OUT_UCAST_PKTS 0x03030288
  #define OID_FDDI_IF_OUT_NUCAST_PKTS 0x03030289
  #define OID_FDDI_IF_OUT_DISCARDS 0x0303028a
  #define OID_FDDI_IF_OUT_ERRORS 0x0303028b
  #define OID_FDDI_IF_OUT_QLEN 0x0303028c
  #define OID_FDDI_IF_SPECIFIC 0x0303028d
  
  #define OID_WAN_PERMANENT_ADDRESS 0x04010101
  #define OID_WAN_CURRENT_ADDRESS 0x04010102
  #define OID_WAN_QUALITY_OF_SERVICE 0x04010103
  #define OID_WAN_PROTOCOL_TYPE 0x04010104
  #define OID_WAN_MEDIUM_SUBTYPE 0x04010105
  #define OID_WAN_HEADER_FORMAT 0x04010106
  
  #define OID_WAN_GET_INFO 0x04010107
  #define OID_WAN_SET_LINK_INFO 0x04010108
  #define OID_WAN_GET_LINK_INFO 0x04010109
  #define OID_WAN_LINE_COUNT 0x0401010a
  #define OID_WAN_PROTOCOL_CAPS 0x0401010b
  
  #define OID_WAN_GET_BRIDGE_INFO 0x0401020a
  #define OID_WAN_SET_BRIDGE_INFO 0x0401020b
  #define OID_WAN_GET_COMP_INFO 0x0401020c
  #define OID_WAN_SET_COMP_INFO 0x0401020d
  #define OID_WAN_GET_STATS_INFO 0x0401020e
  
  #define OID_WAN_CO_GET_INFO 0x04010180
  #define OID_WAN_CO_SET_LINK_INFO 0x04010181
  #define OID_WAN_CO_GET_LINK_INFO 0x04010182
  #define OID_WAN_CO_GET_COMP_INFO 0x04010280
  #define OID_WAN_CO_SET_COMP_INFO 0x04010281
  #define OID_WAN_CO_GET_STATS_INFO 0x04010282
  
  #define OID_LTALK_CURRENT_NODE_ID 0x05010102
  
  #define OID_LTALK_IN_BROADCASTS 0x05020101
  #define OID_LTALK_IN_LENGTH_ERRORS 0x05020102
  
  #define OID_LTALK_OUT_NO_HANDLERS 0x05020201
  #define OID_LTALK_COLLISIONS 0x05020202
  #define OID_LTALK_DEFERS 0x05020203
  #define OID_LTALK_NO_DATA_ERRORS 0x05020204
  #define OID_LTALK_RANDOM_CTS_ERRORS 0x05020205
  #define OID_LTALK_FCS_ERRORS 0x05020206
  
  #define OID_ARCNET_PERMANENT_ADDRESS 0x06010101
  #define OID_ARCNET_CURRENT_ADDRESS 0x06010102
  
  #define OID_ARCNET_RECONFIGURATIONS 0x06020201
  
  #define OID_TAPI_ACCEPT 0x07030101
  #define OID_TAPI_ANSWER 0x07030102
  #define OID_TAPI_CLOSE 0x07030103
  #define OID_TAPI_CLOSE_CALL 0x07030104
  #define OID_TAPI_CONDITIONAL_MEDIA_DETECTION 0x07030105
  #define OID_TAPI_CONFIG_DIALOG 0x07030106
  #define OID_TAPI_DEV_SPECIFIC 0x07030107
  #define OID_TAPI_DIAL 0x07030108
  #define OID_TAPI_DROP 0x07030109
  #define OID_TAPI_GET_ADDRESS_CAPS 0x0703010a
  #define OID_TAPI_GET_ADDRESS_ID 0x0703010b
  #define OID_TAPI_GET_ADDRESS_STATUS 0x0703010c
  #define OID_TAPI_GET_CALL_ADDRESS_ID 0x0703010d
  #define OID_TAPI_GET_CALL_INFO 0x0703010e
  #define OID_TAPI_GET_CALL_STATUS 0x0703010f
  #define OID_TAPI_GET_DEV_CAPS 0x07030110
  #define OID_TAPI_GET_DEV_CONFIG 0x07030111
  #define OID_TAPI_GET_EXTENSION_ID 0x07030112
  #define OID_TAPI_GET_ID 0x07030113
  #define OID_TAPI_GET_LINE_DEV_STATUS 0x07030114
  #define OID_TAPI_MAKE_CALL 0x07030115
  #define OID_TAPI_NEGOTIATE_EXT_VERSION 0x07030116
  #define OID_TAPI_OPEN 0x07030117
  #define OID_TAPI_PROVIDER_INITIALIZE 0x07030118
  #define OID_TAPI_PROVIDER_SHUTDOWN 0x07030119
  #define OID_TAPI_SECURE_CALL 0x0703011a
  #define OID_TAPI_SELECT_EXT_VERSION 0x0703011b
  #define OID_TAPI_SEND_USER_USER_INFO 0x0703011c
  #define OID_TAPI_SET_APP_SPECIFIC 0x0703011d
  #define OID_TAPI_SET_CALL_PARAMS 0x0703011e
  #define OID_TAPI_SET_DEFAULT_MEDIA_DETECTION 0x0703011f
  #define OID_TAPI_SET_DEV_CONFIG 0x07030120
  #define OID_TAPI_SET_MEDIA_MODE 0x07030121
  #define OID_TAPI_SET_STATUS_MESSAGES 0x07030122
  #define OID_TAPI_GATHER_DIGITS 0x07030123
  #define OID_TAPI_MONITOR_DIGITS 0x07030124
  
  #define OID_ATM_SUPPORTED_VC_RATES 0x08010101
  #define OID_ATM_SUPPORTED_SERVICE_CATEGORY 0x08010102
  #define OID_ATM_SUPPORTED_AAL_TYPES 0x08010103
  #define OID_ATM_HW_CURRENT_ADDRESS 0x08010104
  #define OID_ATM_MAX_ACTIVE_VCS 0x08010105
  #define OID_ATM_MAX_ACTIVE_VCI_BITS 0x08010106
  #define OID_ATM_MAX_ACTIVE_VPI_BITS 0x08010107
  #define OID_ATM_MAX_AAL0_PACKET_SIZE 0x08010108
  #define OID_ATM_MAX_AAL1_PACKET_SIZE 0x08010109
  #define OID_ATM_MAX_AAL34_PACKET_SIZE 0x0801010a
  #define OID_ATM_MAX_AAL5_PACKET_SIZE 0x0801010b
  
  #define OID_ATM_SIGNALING_VPIVCI 0x08010201
  #define OID_ATM_ASSIGNED_VPI 0x08010202
  #define OID_ATM_ACQUIRE_ACCESS_NET_RESOURCES 0x08010203
  #define OID_ATM_RELEASE_ACCESS_NET_RESOURCES 0x08010204
  #define OID_ATM_ILMI_VPIVCI 0x08010205
  #define OID_ATM_DIGITAL_BROADCAST_VPIVCI 0x08010206
  #define OID_ATM_GET_NEAREST_FLOW 0x08010207
  #define OID_ATM_ALIGNMENT_REQUIRED 0x08010208
  #define OID_ATM_LECS_ADDRESS 0x08010209
  #define OID_ATM_SERVICE_ADDRESS 0x0801020a
  
  #define OID_ATM_CALL_PROCEEDING 0x0801020b
  #define OID_ATM_CALL_ALERTING 0x0801020c
  #define OID_ATM_PARTY_ALERTING 0x0801020d
  #define OID_ATM_CALL_NOTIFY 0x0801020e
  
  #define OID_ATM_MY_IP_NM_ADDRESS 0x0801020f
  
  #define OID_ATM_RCV_CELLS_OK 0x08020101
  #define OID_ATM_XMIT_CELLS_OK 0x08020102
  #define OID_ATM_RCV_CELLS_DROPPED 0x08020103
  
  #define OID_ATM_RCV_INVALID_VPI_VCI 0x08020201
  #define OID_ATM_CELLS_HEC_ERROR 0x08020202
  #define OID_ATM_RCV_REASSEMBLY_ERROR 0x08020203
  
  #define OID_802_11_BSSID 0x0d010101
  #define OID_802_11_SSID 0x0d010102
  #define OID_802_11_NETWORK_TYPES_SUPPORTED 0x0d010203
  #define OID_802_11_NETWORK_TYPE_IN_USE 0x0d010204
  #define OID_802_11_TX_POWER_LEVEL 0x0d010205
  #define OID_802_11_RSSI 0x0d010206
  #define OID_802_11_RSSI_TRIGGER 0x0d010207
  #define OID_802_11_INFRASTRUCTURE_MODE 0x0d010108
  #define OID_802_11_FRAGMENTATION_THRESHOLD 0x0d010209
  #define OID_802_11_RTS_THRESHOLD 0x0d01020a
  #define OID_802_11_NUMBER_OF_ANTENNAS 0x0d01020b
  #define OID_802_11_RX_ANTENNA_SELECTED 0x0d01020c
  #define OID_802_11_TX_ANTENNA_SELECTED 0x0d01020d
  #define OID_802_11_SUPPORTED_RATES 0x0d01020e
  #define OID_802_11_DESIRED_RATES 0x0d010210
  #define OID_802_11_CONFIGURATION 0x0d010211
  #define OID_802_11_STATISTICS 0x0d020212
  #define OID_802_11_ADD_WEP 0x0d010113
  #define OID_802_11_REMOVE_WEP 0x0d010114
  #define OID_802_11_DISASSOCIATE 0x0d010115
  #define OID_802_11_POWER_MODE 0x0d010216
  #define OID_802_11_BSSID_LIST 0x0d010217
  #define OID_802_11_AUTHENTICATION_MODE 0x0d010118
  #define OID_802_11_PRIVACY_FILTER 0x0d010119
  #define OID_802_11_BSSID_LIST_SCAN 0x0d01011a
  #define OID_802_11_WEP_STATUS 0x0d01011b
  
  #define OID_802_11_ENCRYPTION_STATUS OID_802_11_WEP_STATUS
  #define OID_802_11_RELOAD_DEFAULTS 0x0d01011c
  
  #define OID_802_11_ADD_KEY 0x0d01011d
  #define OID_802_11_REMOVE_KEY 0x0d01011e
  #define OID_802_11_ASSOCIATION_INFORMATION 0x0d01011f
  #define OID_802_11_TEST 0x0d010120
  #define OID_802_11_MEDIA_STREAM_MODE 0x0d010121
  #define OID_802_11_CAPABILITY 0x0d010122
  #define OID_802_11_PMKID 0x0d010123
  #define OID_802_11_NON_BCAST_SSID_LIST 0x0d010124
  #define OID_802_11_RADIO_STATUS 0x0d010125
  
  #define NDIS_ETH_TYPE_IPV4 0x0800
  #define NDIS_ETH_TYPE_ARP 0x0806
  #define NDIS_ETH_TYPE_IPV6 0x86dd
  #define NDIS_ETH_TYPE_802_1X 0x888e
  #define NDIS_ETH_TYPE_802_1Q 0x8100
  #define NDIS_ETH_TYPE_SLOW_PROTOCOL 0x8809
  
  #define NDIS_802_11_LENGTH_SSID 32
  #define NDIS_802_11_LENGTH_RATES 8
  #define NDIS_802_11_LENGTH_RATES_EX 16
  
  #define NDIS_802_11_AUTH_REQUEST_REAUTH 0x01
  #define NDIS_802_11_AUTH_REQUEST_KEYUPDATE 0x02
  #define NDIS_802_11_AUTH_REQUEST_PAIRWISE_ERROR 0x06
  #define NDIS_802_11_AUTH_REQUEST_GROUP_ERROR 0x0e
  #define NDIS_802_11_AUTH_REQUEST_AUTH_FIELDS 0x0f
  
  #define NDIS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLED 0x01
  
  #define NDIS_802_11_AI_REQFI_CAPABILITIES 1
  #define NDIS_802_11_AI_REQFI_LISTENINTERVAL 2
  #define NDIS_802_11_AI_REQFI_CURRENTAPADDRESS 4
  
  #define NDIS_802_11_AI_RESFI_CAPABILITIES 1
  #define NDIS_802_11_AI_RESFI_STATUSCODE 2
  #define NDIS_802_11_AI_RESFI_ASSOCIATIONID 4
  
    typedef enum _NDIS_802_11_STATUS_TYPE {
      Ndis802_11StatusType_Authentication,
      Ndis802_11StatusType_MediaStreamMode,
      Ndis802_11StatusType_PMKID_CandidateList,
      Ndis802_11StatusTypeMax
    } NDIS_802_11_STATUS_TYPE, *PNDIS_802_11_STATUS_TYPE;
  
    typedef UCHAR NDIS_802_11_MAC_ADDRESS[6];
  
    typedef struct _NDIS_802_11_STATUS_INDICATION {
      NDIS_802_11_STATUS_TYPE StatusType;
    } NDIS_802_11_STATUS_INDICATION, *PNDIS_802_11_STATUS_INDICATION;
  
    typedef struct _NDIS_802_11_AUTHENTICATION_REQUEST {
      ULONG Length;
      NDIS_802_11_MAC_ADDRESS Bssid;
      ULONG Flags;
    } NDIS_802_11_AUTHENTICATION_REQUEST, *PNDIS_802_11_AUTHENTICATION_REQUEST;
  
    typedef struct _PMKID_CANDIDATE {
      NDIS_802_11_MAC_ADDRESS BSSID;
      ULONG Flags;
    } PMKID_CANDIDATE, *PPMKID_CANDIDATE;
  
    typedef struct _NDIS_802_11_PMKID_CANDIDATE_LIST {
      ULONG Version;
      ULONG NumCandidates;
      PMKID_CANDIDATE CandidateList[1];
    } NDIS_802_11_PMKID_CANDIDATE_LIST, *PNDIS_802_11_PMKID_CANDIDATE_LIST;
  
    typedef enum _NDIS_802_11_NETWORK_TYPE {
      Ndis802_11FH,
      Ndis802_11DS,
      Ndis802_11OFDM5,
      Ndis802_11OFDM24,
      Ndis802_11Automode,
      Ndis802_11NetworkTypeMax
    } NDIS_802_11_NETWORK_TYPE, *PNDIS_802_11_NETWORK_TYPE;
  
    typedef struct _NDIS_802_11_NETWORK_TYPE_LIST {
      ULONG NumberOfItems;
      NDIS_802_11_NETWORK_TYPE NetworkType [1];
    } NDIS_802_11_NETWORK_TYPE_LIST, *PNDIS_802_11_NETWORK_TYPE_LIST;
  
    typedef enum _NDIS_802_11_POWER_MODE {
      Ndis802_11PowerModeCAM,
      Ndis802_11PowerModeMAX_PSP,
      Ndis802_11PowerModeFast_PSP,
      Ndis802_11PowerModeMax
    } NDIS_802_11_POWER_MODE, *PNDIS_802_11_POWER_MODE;
  
    typedef ULONG NDIS_802_11_TX_POWER_LEVEL;
    typedef LONG NDIS_802_11_RSSI;
  
    typedef struct _NDIS_802_11_CONFIGURATION_FH {
      ULONG Length;
      ULONG HopPattern;
      ULONG HopSet;
      ULONG DwellTime;
    } NDIS_802_11_CONFIGURATION_FH, *PNDIS_802_11_CONFIGURATION_FH;
  
    typedef struct _NDIS_802_11_CONFIGURATION {
      ULONG Length;
      ULONG BeaconPeriod;
      ULONG ATIMWindow;
      ULONG DSConfig;
      NDIS_802_11_CONFIGURATION_FH FHConfig;
    } NDIS_802_11_CONFIGURATION, *PNDIS_802_11_CONFIGURATION;
  
    typedef struct _NDIS_802_11_STATISTICS {
      ULONG Length;
      LARGE_INTEGER TransmittedFragmentCount;
      LARGE_INTEGER MulticastTransmittedFrameCount;
      LARGE_INTEGER FailedCount;
      LARGE_INTEGER RetryCount;
      LARGE_INTEGER MultipleRetryCount;
      LARGE_INTEGER RTSSuccessCount;
      LARGE_INTEGER RTSFailureCount;
      LARGE_INTEGER ACKFailureCount;
      LARGE_INTEGER FrameDuplicateCount;
      LARGE_INTEGER ReceivedFragmentCount;
      LARGE_INTEGER MulticastReceivedFrameCount;
      LARGE_INTEGER FCSErrorCount;
      LARGE_INTEGER TKIPLocalMICFailures;
      LARGE_INTEGER TKIPICVErrorCount;
      LARGE_INTEGER TKIPCounterMeasuresInvoked;
      LARGE_INTEGER TKIPReplays;
      LARGE_INTEGER CCMPFormatErrors;
      LARGE_INTEGER CCMPReplays;
      LARGE_INTEGER CCMPDecryptErrors;
      LARGE_INTEGER FourWayHandshakeFailures;
      LARGE_INTEGER WEPUndecryptableCount;
      LARGE_INTEGER WEPICVErrorCount;
      LARGE_INTEGER DecryptSuccessCount;
      LARGE_INTEGER DecryptFailureCount;
    } NDIS_802_11_STATISTICS, *PNDIS_802_11_STATISTICS;
  
    typedef ULONG NDIS_802_11_KEY_INDEX;
    typedef ULONGLONG NDIS_802_11_KEY_RSC;
  
    typedef struct _NDIS_802_11_KEY {
      ULONG Length;
      ULONG KeyIndex;
      ULONG KeyLength;
      NDIS_802_11_MAC_ADDRESS BSSID;
      NDIS_802_11_KEY_RSC KeyRSC;
      UCHAR KeyMaterial[1];
    } NDIS_802_11_KEY, *PNDIS_802_11_KEY;
  
    typedef struct _NDIS_802_11_REMOVE_KEY {
      ULONG Length;
      ULONG KeyIndex;
      NDIS_802_11_MAC_ADDRESS BSSID;
    } NDIS_802_11_REMOVE_KEY, *PNDIS_802_11_REMOVE_KEY;
    typedef struct _NDIS_802_11_WEP {
      ULONG Length;
      ULONG KeyIndex;
      ULONG KeyLength;
      UCHAR KeyMaterial[1];
    } NDIS_802_11_WEP, *PNDIS_802_11_WEP;
  
    typedef enum _NDIS_802_11_NETWORK_INFRASTRUCTURE {
      Ndis802_11IBSS,
      Ndis802_11Infrastructure,
      Ndis802_11AutoUnknown,
      Ndis802_11InfrastructureMax
    } NDIS_802_11_NETWORK_INFRASTRUCTURE, *PNDIS_802_11_NETWORK_INFRASTRUCTURE;
  
    typedef enum _NDIS_802_11_AUTHENTICATION_MODE {
      Ndis802_11AuthModeOpen,
      Ndis802_11AuthModeShared,
      Ndis802_11AuthModeAutoSwitch,
      Ndis802_11AuthModeWPA,
      Ndis802_11AuthModeWPAPSK,
      Ndis802_11AuthModeWPANone,
      Ndis802_11AuthModeWPA2,
      Ndis802_11AuthModeWPA2PSK,
      Ndis802_11AuthModeMax
    } NDIS_802_11_AUTHENTICATION_MODE, *PNDIS_802_11_AUTHENTICATION_MODE;
  
    typedef UCHAR NDIS_802_11_RATES[NDIS_802_11_LENGTH_RATES];
    typedef UCHAR NDIS_802_11_RATES_EX[NDIS_802_11_LENGTH_RATES_EX];
  
    typedef struct _NDIS_802_11_SSID {
      ULONG SsidLength;
      UCHAR Ssid[NDIS_802_11_LENGTH_SSID];
    } NDIS_802_11_SSID, *PNDIS_802_11_SSID;
  
    typedef struct _NDIS_WLAN_BSSID {
      ULONG Length;
      NDIS_802_11_MAC_ADDRESS MacAddress;
      UCHAR Reserved[2];
      NDIS_802_11_SSID Ssid;
      ULONG Privacy;
      NDIS_802_11_RSSI Rssi;
      NDIS_802_11_NETWORK_TYPE NetworkTypeInUse;
      NDIS_802_11_CONFIGURATION Configuration;
      NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode;
      NDIS_802_11_RATES SupportedRates;
    } NDIS_WLAN_BSSID, *PNDIS_WLAN_BSSID;
  
    typedef struct _NDIS_802_11_BSSID_LIST {
      ULONG NumberOfItems;
      NDIS_WLAN_BSSID Bssid[1];
    } NDIS_802_11_BSSID_LIST, *PNDIS_802_11_BSSID_LIST;
  
    typedef struct _NDIS_WLAN_BSSID_EX {
      ULONG Length;
      NDIS_802_11_MAC_ADDRESS MacAddress;
      UCHAR Reserved[2];
      NDIS_802_11_SSID Ssid;
      ULONG Privacy;
      NDIS_802_11_RSSI Rssi;
      NDIS_802_11_NETWORK_TYPE NetworkTypeInUse;
      NDIS_802_11_CONFIGURATION Configuration;
      NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode;
      NDIS_802_11_RATES_EX SupportedRates;
      ULONG IELength;
      UCHAR IEs[1];
    } NDIS_WLAN_BSSID_EX, *PNDIS_WLAN_BSSID_EX;
  
    typedef struct _NDIS_802_11_BSSID_LIST_EX {
      ULONG NumberOfItems;
      NDIS_WLAN_BSSID_EX Bssid[1];
    } NDIS_802_11_BSSID_LIST_EX, *PNDIS_802_11_BSSID_LIST_EX;
  
    typedef struct _NDIS_802_11_FIXED_IEs {
      UCHAR Timestamp[8];
      USHORT BeaconInterval;
      USHORT Capabilities;
    } NDIS_802_11_FIXED_IEs, *PNDIS_802_11_FIXED_IEs;
  
    typedef struct _NDIS_802_11_VARIABLE_IEs {
      UCHAR ElementID;
      UCHAR Length;
      UCHAR data[1];
    } NDIS_802_11_VARIABLE_IEs, *PNDIS_802_11_VARIABLE_IEs;
  
    typedef ULONG NDIS_802_11_FRAGMENTATION_THRESHOLD;
    typedef ULONG NDIS_802_11_RTS_THRESHOLD;
    typedef ULONG NDIS_802_11_ANTENNA;
  
    typedef enum _NDIS_802_11_PRIVACY_FILTER {
      Ndis802_11PrivFilterAcceptAll,
      Ndis802_11PrivFilter8021xWEP
    } NDIS_802_11_PRIVACY_FILTER, *PNDIS_802_11_PRIVACY_FILTER;
  
    typedef enum _NDIS_802_11_WEP_STATUS {
      Ndis802_11WEPEnabled,
      Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled,
      Ndis802_11WEPDisabled,
      Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled,
      Ndis802_11WEPKeyAbsent,
      Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent,
      Ndis802_11WEPNotSupported,
      Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported,
      Ndis802_11Encryption2Enabled,
      Ndis802_11Encryption2KeyAbsent,
      Ndis802_11Encryption3Enabled,
      Ndis802_11Encryption3KeyAbsent
    } NDIS_802_11_WEP_STATUS, *PNDIS_802_11_WEP_STATUS, NDIS_802_11_ENCRYPTION_STATUS, *PNDIS_802_11_ENCRYPTION_STATUS;
  
    typedef enum _NDIS_802_11_RELOAD_DEFAULTS {
      Ndis802_11ReloadWEPKeys
    } NDIS_802_11_RELOAD_DEFAULTS, *PNDIS_802_11_RELOAD_DEFAULTS;
  
    typedef struct _NDIS_802_11_AI_REQFI {
      USHORT Capabilities;
      USHORT ListenInterval;
      NDIS_802_11_MAC_ADDRESS CurrentAPAddress;
    } NDIS_802_11_AI_REQFI, *PNDIS_802_11_AI_REQFI;
  
    typedef struct _NDIS_802_11_AI_RESFI {
      USHORT Capabilities;
      USHORT StatusCode;
      USHORT AssociationId;
    } NDIS_802_11_AI_RESFI, *PNDIS_802_11_AI_RESFI;
  
    typedef struct _NDIS_802_11_ASSOCIATION_INFORMATION {
      ULONG Length;
      USHORT AvailableRequestFixedIEs;
      NDIS_802_11_AI_REQFI RequestFixedIEs;
      ULONG RequestIELength;
      ULONG OffsetRequestIEs;
      USHORT AvailableResponseFixedIEs;
      NDIS_802_11_AI_RESFI ResponseFixedIEs;
      ULONG ResponseIELength;
      ULONG OffsetResponseIEs;
    } NDIS_802_11_ASSOCIATION_INFORMATION, *PNDIS_802_11_ASSOCIATION_INFORMATION;
  
    typedef struct _NDIS_802_11_AUTHENTICATION_EVENT {
      NDIS_802_11_STATUS_INDICATION Status;
      NDIS_802_11_AUTHENTICATION_REQUEST Request[1];
    } NDIS_802_11_AUTHENTICATION_EVENT, *PNDIS_802_11_AUTHENTICATION_EVENT;
  
    typedef struct _NDIS_802_11_TEST {
      ULONG Length;
      ULONG Type;
      __C89_NAMELESS union {
        NDIS_802_11_AUTHENTICATION_EVENT AuthenticationEvent;
        NDIS_802_11_RSSI RssiTrigger;
      };
    } NDIS_802_11_TEST, *PNDIS_802_11_TEST;
  
    typedef enum _NDIS_802_11_MEDIA_STREAM_MODE {
      Ndis802_11MediaStreamOff,
      Ndis802_11MediaStreamOn,
    } NDIS_802_11_MEDIA_STREAM_MODE, *PNDIS_802_11_MEDIA_STREAM_MODE;
  
    typedef UCHAR NDIS_802_11_PMKID_VALUE[16];
  
    typedef struct _BSSID_INFO {
      NDIS_802_11_MAC_ADDRESS BSSID;
      NDIS_802_11_PMKID_VALUE PMKID;
    } BSSID_INFO, *PBSSID_INFO;
  
    typedef struct _NDIS_802_11_PMKID {
      ULONG Length;
      ULONG BSSIDInfoCount;
      BSSID_INFO BSSIDInfo[1];
    } NDIS_802_11_PMKID, *PNDIS_802_11_PMKID;
  
    typedef struct _NDIS_802_11_AUTHENTICATION_ENCRYPTION {
      NDIS_802_11_AUTHENTICATION_MODE AuthModeSupported;
      NDIS_802_11_ENCRYPTION_STATUS EncryptStatusSupported;
    } NDIS_802_11_AUTHENTICATION_ENCRYPTION, *PNDIS_802_11_AUTHENTICATION_ENCRYPTION;
  
    typedef struct _NDIS_802_11_CAPABILITY {
      ULONG Length;
      ULONG Version;
      ULONG NoOfPMKIDs;
      ULONG NoOfAuthEncryptPairsSupported;
      NDIS_802_11_AUTHENTICATION_ENCRYPTION AuthenticationEncryptionSupported[1];
    } NDIS_802_11_CAPABILITY, *PNDIS_802_11_CAPABILITY;
  
    typedef struct _NDIS_802_11_NON_BCAST_SSID_LIST {
      ULONG NumberOfItems;
      NDIS_802_11_SSID Non_Bcast_Ssid[1];
    } NDIS_802_11_NON_BCAST_SSID_LIST, *PNDIS_802_11_NON_BCAST_SSID_LIST;
  
    typedef enum _NDIS_802_11_RADIO_STATUS {
      Ndis802_11RadioStatusOn,
      Ndis802_11RadioStatusHardwareOff,
      Ndis802_11RadioStatusSoftwareOff,
      Ndis802_11RadioStatusHardwareSoftwareOff,
      Ndis802_11RadioStatusMax
    } NDIS_802_11_RADIO_STATUS, *PNDIS_802_11_RADIO_STATUS;
  
  #define OID_IRDA_RECEIVING 0x0a010100
  #define OID_IRDA_TURNAROUND_TIME 0x0a010101
  #define OID_IRDA_SUPPORTED_SPEEDS 0x0a010102
  #define OID_IRDA_LINK_SPEED 0x0a010103
  #define OID_IRDA_MEDIA_BUSY 0x0a010104
  
  #define OID_IRDA_EXTRA_RCV_BOFS 0x0a010200
  #define OID_IRDA_RATE_SNIFF 0x0a010201
  #define OID_IRDA_UNICAST_LIST 0x0a010202
  #define OID_IRDA_MAX_UNICAST_LIST_SIZE 0x0a010203
  #define OID_IRDA_MAX_RECEIVE_WINDOW_SIZE 0x0a010204
  #define OID_IRDA_MAX_SEND_WINDOW_SIZE 0x0a010205
  #define OID_IRDA_RESERVED1 0x0a01020a
  #define OID_IRDA_RESERVED2 0x0a01020f
  
  #define OID_1394_LOCAL_NODE_INFO 0x0c010101
  #define OID_1394_VC_INFO 0x0c010102
  
  #define OID_CO_ADD_PVC 0xfe000001
  #define OID_CO_DELETE_PVC 0xfe000002
  #define OID_CO_GET_CALL_INFORMATION 0xfe000003
  #define OID_CO_ADD_ADDRESS 0xfe000004
  #define OID_CO_DELETE_ADDRESS 0xfe000005
  #define OID_CO_GET_ADDRESSES 0xfe000006
  #define OID_CO_ADDRESS_CHANGE 0xfe000007
  #define OID_CO_SIGNALING_ENABLED 0xfe000008
  #define OID_CO_SIGNALING_DISABLED 0xfe000009
  #define OID_CO_AF_CLOSE 0xfe00000a
  
  #define OID_CO_TAPI_CM_CAPS 0xfe001001
  #define OID_CO_TAPI_LINE_CAPS 0xfe001002
  #define OID_CO_TAPI_ADDRESS_CAPS 0xfe001003
  #define OID_CO_TAPI_TRANSLATE_TAPI_CALLPARAMS 0xfe001004
  #define OID_CO_TAPI_TRANSLATE_NDIS_CALLPARAMS 0xfe001005
  #define OID_CO_TAPI_TRANSLATE_TAPI_SAP 0xfe001006
  #define OID_CO_TAPI_GET_CALL_DIAGNOSTICS 0xfe001007
  #define OID_CO_TAPI_REPORT_DIGITS 0xfe001008
  #define OID_CO_TAPI_DONT_REPORT_DIGITS 0xfe001009
  
  #define OID_PNP_CAPABILITIES 0xfd010100
  #define OID_PNP_SET_POWER 0xfd010101
  #define OID_PNP_QUERY_POWER 0xfd010102
  #define OID_PNP_ADD_WAKE_UP_PATTERN 0xfd010103
  #define OID_PNP_REMOVE_WAKE_UP_PATTERN 0xfd010104
  #define OID_PNP_WAKE_UP_PATTERN_LIST 0xfd010105
  #define OID_PNP_ENABLE_WAKE_UP 0xfd010106
  
  #define OID_PNP_WAKE_UP_OK 0xfd020200
  #define OID_PNP_WAKE_UP_ERROR 0xfd020201
  
  #if (NTDDI_VERSION >= 0x06010000 || NDIS_SUPPORT_NDIS620)
  #define OID_PM_CURRENT_CAPABILITIES 0xfd010107
  #define OID_PM_HARDWARE_CAPABILITIES 0xfd010108
  #define OID_PM_PARAMETERS 0xfd010109
  #define OID_PM_ADD_WOL_PATTERN 0xfd01010a
  #define OID_PM_REMOVE_WOL_PATTERN 0xfd01010b
  #define OID_PM_WOL_PATTERN_LIST 0xfd01010c
  #define OID_PM_ADD_PROTOCOL_OFFLOAD 0xfd01010d
  #define OID_PM_GET_PROTOCOL_OFFLOAD 0xfd01010e
  #define OID_PM_REMOVE_PROTOCOL_OFFLOAD 0xfd01010f
  #define OID_PM_PROTOCOL_OFFLOAD_LIST 0xfd010110
  #define OID_PM_RESERVED_1 0xfd010111
  
  #define OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES 0x00010221
  #define OID_RECEIVE_FILTER_GLOBAL_PARAMETERS 0x00010222
  #define OID_RECEIVE_FILTER_ALLOCATE_QUEUE 0x00010223
  #define OID_RECEIVE_FILTER_FREE_QUEUE 0x00010224
  #define OID_RECEIVE_FILTER_ENUM_QUEUES 0x00010225
  #define OID_RECEIVE_FILTER_QUEUE_PARAMETERS 0x00010226
  #define OID_RECEIVE_FILTER_SET_FILTER 0x00010227
  #define OID_RECEIVE_FILTER_CLEAR_FILTER 0x00010228
  #define OID_RECEIVE_FILTER_ENUM_FILTERS 0x00010229
  #define OID_RECEIVE_FILTER_PARAMETERS 0x0001022a
  #define OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE 0x0001022b
  #define OID_RECEIVE_FILTER_CURRENT_CAPABILITIES 0x0001022d
  #define OID_NIC_SWITCH_HARDWARE_CAPABILITIES 0x0001022e
  #define OID_NIC_SWITCH_CURRENT_CAPABILITIES 0x0001022f
  #if NDIS_SUPPORT_NDIS630
  #define OID_RECEIVE_FILTER_MOVE_FILTER 0x00010230
  #endif
  #define OID_VLAN_RESERVED1 0x00010231
  #define OID_VLAN_RESERVED2 0x00010232
  #define OID_VLAN_RESERVED3 0x00010233
  #define OID_VLAN_RESERVED4 0x00010234
  #if NDIS_SUPPORT_NDIS630
  #define OID_PACKET_COALESCING_FILTER_MATCH_COUNT 0x00010235
  #endif
  #endif
  
  #if NTDDI_VERSION >= 0x06020000 || NDIS_SUPPORT_NDIS630
  #define OID_NIC_SWITCH_CREATE_SWITCH 0x00010237
  #define OID_NIC_SWITCH_PARAMETERS 0x00010238
  #define OID_NIC_SWITCH_DELETE_SWITCH 0x00010239
  #define OID_NIC_SWITCH_ENUM_SWITCHES 0x00010240
  #define OID_NIC_SWITCH_CREATE_VPORT 0x00010241
  #define OID_NIC_SWITCH_VPORT_PARAMETERS 0x00010242
  #define OID_NIC_SWITCH_ENUM_VPORTS 0x00010243
  #define OID_NIC_SWITCH_DELETE_VPORT 0x00010244
  #define OID_NIC_SWITCH_ALLOCATE_VF 0x00010245
  #define OID_NIC_SWITCH_FREE_VF 0x00010246
  #define OID_NIC_SWITCH_VF_PARAMETERS 0x00010247
  #define OID_NIC_SWITCH_ENUM_VFS 0x00010248
  
  #define OID_SRIOV_HARDWARE_CAPABILITIES 0x00010249
  #define OID_SRIOV_CURRENT_CAPABILITIES 0x00010250
  #define OID_SRIOV_READ_VF_CONFIG_SPACE 0x00010251
  #define OID_SRIOV_WRITE_VF_CONFIG_SPACE 0x00010252
  #define OID_SRIOV_READ_VF_CONFIG_BLOCK 0x00010253
  #define OID_SRIOV_WRITE_VF_CONFIG_BLOCK 0x00010254
  #define OID_SRIOV_RESET_VF 0x00010255
  #define OID_SRIOV_SET_VF_POWER_STATE 0x00010256
  #define OID_SRIOV_VF_VENDOR_DEVICE_ID 0x00010257
  #define OID_SRIOV_PROBED_BARS 0x00010258
  #define OID_SRIOV_BAR_RESOURCES 0x00010259
  #define OID_SRIOV_PF_LUID 0x00010260
  
  #define OID_SRIOV_CONFIG_STATE 0x00010261
  #define OID_SRIOV_VF_SERIAL_NUMBER 0x00010262
  #define OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK 0x00010269
  
  #define OID_SWITCH_PROPERTY_ADD 0x00010263
  #define OID_SWITCH_PROPERTY_UPDATE 0x00010264
  #define OID_SWITCH_PROPERTY_DELETE 0x00010265
  #define OID_SWITCH_PROPERTY_ENUM 0x00010266
  #define OID_SWITCH_FEATURE_STATUS_QUERY 0x00010267
  
  #define OID_SWITCH_NIC_REQUEST 0x00010270
  #define OID_SWITCH_PORT_PROPERTY_ADD 0x00010271
  #define OID_SWITCH_PORT_PROPERTY_UPDATE 0x00010272
  #define OID_SWITCH_PORT_PROPERTY_DELETE 0x00010273
  #define OID_SWITCH_PORT_PROPERTY_ENUM 0x00010274
  #define OID_SWITCH_PARAMETERS 0x00010275
  #define OID_SWITCH_PORT_ARRAY 0x00010276
  #define OID_SWITCH_NIC_ARRAY 0x00010277
  #define OID_SWITCH_PORT_CREATE 0x00010278
  #define OID_SWITCH_PORT_DELETE 0x00010279
  #define OID_SWITCH_NIC_CREATE 0x0001027a
  #define OID_SWITCH_NIC_CONNECT 0x0001027b
  #define OID_SWITCH_NIC_DISCONNECT 0x0001027c
  #define OID_SWITCH_NIC_DELETE 0x0001027d
  #define OID_SWITCH_PORT_FEATURE_STATUS_QUERY 0x0001027e
  #define OID_SWITCH_PORT_TEARDOWN 0x0001027f
  #define OID_SWITCH_NIC_SAVE 0x00010290
  #define OID_SWITCH_NIC_SAVE_COMPLETE 0x00010291
  #define OID_SWITCH_NIC_RESTORE 0x00010292
  #define OID_SWITCH_NIC_RESTORE_COMPLETE 0x00010293
  #define OID_SWITCH_NIC_UPDATED 0x00010294
  #define OID_SWITCH_PORT_UPDATED 0x00010295
  #endif
  
  #define NDIS_PNP_WAKE_UP_MAGIC_PACKET 0x00000001
  #define NDIS_PNP_WAKE_UP_PATTERN_MATCH 0x00000002
  #define NDIS_PNP_WAKE_UP_LINK_CHANGE 0x00000004
  
  #define OID_TCP_TASK_OFFLOAD 0xfc010201
  #define OID_TCP_TASK_IPSEC_ADD_SA 0xfc010202
  #define OID_TCP_TASK_IPSEC_DELETE_SA 0xfc010203
  #define OID_TCP_SAN_SUPPORT 0xfc010204
  #define OID_TCP_TASK_IPSEC_ADD_UDPESP_SA 0xfc010205
  #define OID_TCP_TASK_IPSEC_DELETE_UDPESP_SA 0xfc010206
  #define OID_TCP4_OFFLOAD_STATS 0xfc010207
  #define OID_TCP6_OFFLOAD_STATS 0xfc010208
  #define OID_IP4_OFFLOAD_STATS 0xfc010209
  #define OID_IP6_OFFLOAD_STATS 0xfc01020a
  
  #define OID_TCP_OFFLOAD_CURRENT_CONFIG 0xfc01020b
  #define OID_TCP_OFFLOAD_PARAMETERS 0xfc01020c
  #define OID_TCP_OFFLOAD_HARDWARE_CAPABILITIES 0xfc01020d
  #define OID_TCP_CONNECTION_OFFLOAD_CURRENT_CONFIG 0xfc01020e
  #define OID_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES 0xfc01020f
  #define OID_OFFLOAD_ENCAPSULATION 0x0101010a
  
  #if NDIS_SUPPORT_NDIS61
  #define OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA 0xfc030202
  #define OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA 0xfc030203
  #define OID_TCP_TASK_IPSEC_OFFLOAD_V2_UPDATE_SA 0xfc030204
  #endif
  #if NDIS_SUPPORT_NDIS630
  #define OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA_EX 0xfc030205
  #endif
  
  #define OID_FFP_SUPPORT 0xfc010210
  #define OID_FFP_FLUSH 0xfc010211
  #define OID_FFP_CONTROL 0xfc010212
  #define OID_FFP_PARAMS 0xfc010213
  #define OID_FFP_DATA 0xfc010214
  
  #define OID_FFP_DRIVER_STATS 0xfc020210
  #define OID_FFP_ADAPTER_STATS 0xfc020211
  
  #define OID_TCP_CONNECTION_OFFLOAD_PARAMETERS 0xfc030201
  
  #if NTDDI_VERSION >= 0x06010000 || NDIS_SUPPORT_NDIS620
  #define OID_TUNNEL_INTERFACE_SET_OID 0x0f010106
  #define OID_TUNNEL_INTERFACE_RELEASE_OID 0x0f010107
  #endif
  
  #define OID_QOS_RESERVED1 0xfb010100
  #define OID_QOS_RESERVED2 0xfb010101
  #define OID_QOS_RESERVED3 0xfb010102
  #define OID_QOS_RESERVED4 0xfb010103
  #define OID_QOS_RESERVED5 0xfb010104
  #define OID_QOS_RESERVED6 0xfb010105
  #define OID_QOS_RESERVED7 0xfb010106
  #define OID_QOS_RESERVED8 0xfb010107
  #define OID_QOS_RESERVED9 0xfb010108
  #define OID_QOS_RESERVED10 0xfb010109
  #define OID_QOS_RESERVED11 0xfb01010a
  #define OID_QOS_RESERVED12 0xfb01010b
  #define OID_QOS_RESERVED13 0xfb01010c
  #define OID_QOS_RESERVED14 0xfb01010d
  #define OID_QOS_RESERVED15 0xfb01010e
  #define OID_QOS_RESERVED16 0xfb01010f
  #define OID_QOS_RESERVED17 0xfb010110
  #define OID_QOS_RESERVED18 0xfb010111
  #define OID_QOS_RESERVED19 0xfb010112
  #define OID_QOS_RESERVED20 0xfb010113
  
  #define OFFLOAD_MAX_SAS 3
  
  #define OFFLOAD_INBOUND_SA 0x0001
  #define OFFLOAD_OUTBOUND_SA 0x0002
  
    typedef struct NDIS_CO_DEVICE_PROFILE {
      NDIS_VAR_DATA_DESC DeviceDescription;
      NDIS_VAR_DATA_DESC DevSpecificInfo;
      ULONG ulTAPISupplementaryPassThru;
      ULONG ulAddressModes;
      ULONG ulNumAddresses;
      ULONG ulBearerModes;
      ULONG ulMaxTxRate;
      ULONG ulMinTxRate;
      ULONG ulMaxRxRate;
      ULONG ulMinRxRate;
      ULONG ulMediaModes;
      ULONG ulGenerateToneModes;
      ULONG ulGenerateToneMaxNumFreq;
      ULONG ulGenerateDigitModes;
      ULONG ulMonitorToneMaxNumFreq;
      ULONG ulMonitorToneMaxNumEntries;
      ULONG ulMonitorDigitModes;
      ULONG ulGatherDigitsMinTimeout;
      ULONG ulGatherDigitsMaxTimeout;
      ULONG ulDevCapFlags;
      ULONG ulMaxNumActiveCalls;
      ULONG ulAnswerMode;
      ULONG ulUUIAcceptSize;
      ULONG ulUUIAnswerSize;
      ULONG ulUUIMakeCallSize;
      ULONG ulUUIDropSize;
      ULONG ulUUISendUserUserInfoSize;
      ULONG ulUUICallInfoSize;
    } NDIS_CO_DEVICE_PROFILE, *PNDIS_CO_DEVICE_PROFILE;
  
  #ifndef IP_EXPORT_INCLUDED
    typedef ULONG IPAddr, IPMask;
  #endif
    typedef ULONG SPI_TYPE;
  
    typedef enum _OFFLOAD_OPERATION_E {
      AUTHENTICATE = 1,
      ENCRYPT
    } OFFLOAD_OPERATION_E;
  
    typedef struct _OFFLOAD_ALGO_INFO {
      ULONG algoIdentifier;
      ULONG algoKeylen;
      ULONG algoRounds;
    } OFFLOAD_ALGO_INFO, *POFFLOAD_ALGO_INFO;
  
    typedef enum _OFFLOAD_CONF_ALGO {
      OFFLOAD_IPSEC_CONF_NONE,
      OFFLOAD_IPSEC_CONF_DES,
      OFFLOAD_IPSEC_CONF_RESERVED,
      OFFLOAD_IPSEC_CONF_3_DES,
      OFFLOAD_IPSEC_CONF_MAX
    } OFFLOAD_CONF_ALGO;
  
    typedef enum _OFFLOAD_INTEGRITY_ALGO {
      OFFLOAD_IPSEC_INTEGRITY_NONE,
      OFFLOAD_IPSEC_INTEGRITY_MD5,
      OFFLOAD_IPSEC_INTEGRITY_SHA,
      OFFLOAD_IPSEC_INTEGRITY_MAX
    } OFFLOAD_INTEGRITY_ALGO;
  
    typedef struct _OFFLOAD_SECURITY_ASSOCIATION {
      OFFLOAD_OPERATION_E Operation;
      SPI_TYPE SPI;
      OFFLOAD_ALGO_INFO IntegrityAlgo;
      OFFLOAD_ALGO_INFO ConfAlgo;
      OFFLOAD_ALGO_INFO Reserved;
    } OFFLOAD_SECURITY_ASSOCIATION, *POFFLOAD_SECURITY_ASSOCIATION;
  
    typedef struct _OFFLOAD_IPSEC_ADD_SA {
      IPAddr SrcAddr;
      IPMask SrcMask;
      IPAddr DestAddr;
      IPMask DestMask;
      ULONG Protocol;
      USHORT SrcPort;
      USHORT DestPort;
      IPAddr SrcTunnelAddr;
      IPAddr DestTunnelAddr;
      USHORT Flags;
      SHORT NumSAs;
      OFFLOAD_SECURITY_ASSOCIATION SecAssoc[OFFLOAD_MAX_SAS];
      HANDLE OffloadHandle;
      ULONG KeyLen;
      UCHAR KeyMat[1];
    } OFFLOAD_IPSEC_ADD_SA, *POFFLOAD_IPSEC_ADD_SA;
  
    typedef struct _OFFLOAD_IPSEC_DELETE_SA {
      HANDLE OffloadHandle;
    } OFFLOAD_IPSEC_DELETE_SA, *POFFLOAD_IPSEC_DELETE_SA;
  
    typedef enum _UDP_ENCAP_TYPE {
      OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_IKE,
      OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_OTHER
    } UDP_ENCAP_TYPE, *PUDP_ENCAP_TYPE;
  
    typedef struct _OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY {
      UDP_ENCAP_TYPE UdpEncapType;
      USHORT DstEncapPort;
    } OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY, *POFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY;
  
    typedef struct _OFFLOAD_IPSEC_ADD_UDPESP_SA {
      IPAddr SrcAddr;
      IPMask SrcMask;
      IPAddr DstAddr;
      IPMask DstMask;
      ULONG Protocol;
      USHORT SrcPort;
      USHORT DstPort;
      IPAddr SrcTunnelAddr;
      IPAddr DstTunnelAddr;
      USHORT Flags;
      SHORT NumSAs;
      OFFLOAD_SECURITY_ASSOCIATION SecAssoc[OFFLOAD_MAX_SAS];
      HANDLE OffloadHandle;
      OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY EncapTypeEntry;
      HANDLE EncapTypeEntryOffldHandle;
      ULONG KeyLen;
      UCHAR KeyMat[1];
    } OFFLOAD_IPSEC_ADD_UDPESP_SA, *POFFLOAD_IPSEC_ADD_UDPESP_SA;
  
    typedef struct _OFFLOAD_IPSEC_DELETE_UDPESP_SA {
      HANDLE OffloadHandle;
      HANDLE EncapTypeEntryOffldHandle;
    } OFFLOAD_IPSEC_DELETE_UDPESP_SA, *POFFLOAD_IPSEC_DELETE_UDPESP_SA;
  
    typedef ULONG NDIS_VLAN_ID;
  
    typedef enum _NDIS_MEDIUM {
      NdisMedium802_3,
      NdisMedium802_5,
      NdisMediumFddi,
      NdisMediumWan,
      NdisMediumLocalTalk,
      NdisMediumDix,
      NdisMediumArcnetRaw,
      NdisMediumArcnet878_2,
      NdisMediumAtm,
      NdisMediumWirelessWan,
      NdisMediumIrda,
      NdisMediumBpc,
      NdisMediumCoWan,
      NdisMedium1394,
      NdisMediumInfiniBand,
  #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
      NdisMediumTunnel,
      NdisMediumNative802_11,
      NdisMediumLoopback,
  #endif
  #if NTDDI_VERSION >= 0x06010000
      NdisMediumWiMAX,
      NdisMediumIP,
  #endif
      NdisMediumMax
    } NDIS_MEDIUM, *PNDIS_MEDIUM;
  
    typedef enum _NDIS_PHYSICAL_MEDIUM {
      NdisPhysicalMediumUnspecified,
      NdisPhysicalMediumWirelessLan,
      NdisPhysicalMediumCableModem,
      NdisPhysicalMediumPhoneLine,
      NdisPhysicalMediumPowerLine,
      NdisPhysicalMediumDSL,
      NdisPhysicalMediumFibreChannel,
      NdisPhysicalMedium1394,
      NdisPhysicalMediumWirelessWan,
      NdisPhysicalMediumNative802_11,
      NdisPhysicalMediumBluetooth,
      NdisPhysicalMediumInfiniband,
      NdisPhysicalMediumWiMax,
      NdisPhysicalMediumUWB,
      NdisPhysicalMedium802_3,
      NdisPhysicalMedium802_5,
      NdisPhysicalMediumIrda,
      NdisPhysicalMediumWiredWAN,
      NdisPhysicalMediumWiredCoWan,
      NdisPhysicalMediumOther,
      NdisPhysicalMediumMax
    } NDIS_PHYSICAL_MEDIUM, *PNDIS_PHYSICAL_MEDIUM;
  
    typedef struct _TRANSPORT_HEADER_OFFSET {
      USHORT ProtocolType;
      USHORT HeaderOffset;
    } TRANSPORT_HEADER_OFFSET, *PTRANSPORT_HEADER_OFFSET;
  
    typedef struct _NETWORK_ADDRESS {
      USHORT AddressLength;
      USHORT AddressType;
      UCHAR Address[1];
    } NETWORK_ADDRESS, *PNETWORK_ADDRESS;
  
    typedef struct _NETWORK_ADDRESS_LIST {
      LONG AddressCount;
      USHORT AddressType;
      NETWORK_ADDRESS Address[1];
    } NETWORK_ADDRESS_LIST, *PNETWORK_ADDRESS_LIST;
  
    typedef struct _NETWORK_ADDRESS_IP {
      USHORT sin_port;
      ULONG in_addr;
      UCHAR sin_zero[8];
    } NETWORK_ADDRESS_IP, *PNETWORK_ADDRESS_IP;
  
  #define NDIS_PROTOCOL_ID_DEFAULT 0x00
  #define NDIS_PROTOCOL_ID_TCP_IP 0x02
  #define NDIS_PROTOCOL_ID_IPX 0x06
  #define NDIS_PROTOCOL_ID_NBF 0x07
  #define NDIS_PROTOCOL_ID_MAX 0x0f
  #define NDIS_PROTOCOL_ID_MASK 0x0f
  
  #define READABLE_LOCAL_CLOCK 0x00000001
  #define CLOCK_NETWORK_DERIVED 0x00000002
  #define CLOCK_PRECISION 0x00000004
  #define RECEIVE_TIME_INDICATION_CAPABLE 0x00000008
  #define TIMED_SEND_CAPABLE 0x00000010
  #define TIME_STAMP_CAPABLE 0x00000020
  
  #define NDIS_DEVICE_WAKE_UP_ENABLE 0x00000001
  #define NDIS_DEVICE_WAKE_ON_PATTERN_MATCH_ENABLE 0x00000002
  #define NDIS_DEVICE_WAKE_ON_MAGIC_PACKET_ENABLE 0x00000004
  
  #define WAN_PROTOCOL_KEEPS_STATS 0x00000001
  
  #define NETWORK_ADDRESS_LENGTH_IP sizeof (NETWORK_ADDRESS_IP)
  #define NETWORK_ADDRESS_LENGTH_IPX sizeof (NETWORK_ADDRESS_IPX)
  
    typedef struct _NETWORK_ADDRESS_IPX {
      ULONG NetworkAddress;
      UCHAR NodeAddress[6];
      USHORT Socket;
    } NETWORK_ADDRESS_IPX, *PNETWORK_ADDRESS_IPX;
  
    typedef enum _NDIS_HARDWARE_STATUS {
      NdisHardwareStatusReady,
      NdisHardwareStatusInitializing,
      NdisHardwareStatusReset,
      NdisHardwareStatusClosing,
      NdisHardwareStatusNotReady
    } NDIS_HARDWARE_STATUS, *PNDIS_HARDWARE_STATUS;
  
    typedef struct _GEN_GET_TIME_CAPS {
      ULONG Flags;
      ULONG ClockPrecision;
    } GEN_GET_TIME_CAPS, *PGEN_GET_TIME_CAPS;
  
    typedef struct _GEN_GET_NETCARD_TIME {
      ULONGLONG ReadTime;
    } GEN_GET_NETCARD_TIME, *PGEN_GET_NETCARD_TIME;
  
    typedef struct _NDIS_PM_PACKET_PATTERN {
      ULONG Priority;
      ULONG Reserved;
      ULONG MaskSize;
      ULONG PatternOffset;
      ULONG PatternSize;
      ULONG PatternFlags;
    } NDIS_PM_PACKET_PATTERN, *PNDIS_PM_PACKET_PATTERN;
  
    typedef enum _NDIS_DEVICE_POWER_STATE {
      NdisDeviceStateUnspecified = 0,
      NdisDeviceStateD0,
      NdisDeviceStateD1,
      NdisDeviceStateD2,
      NdisDeviceStateD3,
      NdisDeviceStateMaximum
    } NDIS_DEVICE_POWER_STATE, *PNDIS_DEVICE_POWER_STATE;
  
    typedef struct _NDIS_PM_WAKE_UP_CAPABILITIES {
      NDIS_DEVICE_POWER_STATE MinMagicPacketWakeUp;
      NDIS_DEVICE_POWER_STATE MinPatternWakeUp;
      NDIS_DEVICE_POWER_STATE MinLinkChangeWakeUp;
    } NDIS_PM_WAKE_UP_CAPABILITIES, *PNDIS_PM_WAKE_UP_CAPABILITIES;
  
    typedef struct _NDIS_PNP_CAPABILITIES {
      ULONG Flags;
      NDIS_PM_WAKE_UP_CAPABILITIES WakeUpCapabilities;
    } NDIS_PNP_CAPABILITIES, *PNDIS_PNP_CAPABILITIES;
  
    typedef enum _NDIS_FDDI_ATTACHMENT_TYPE {
      NdisFddiTypeIsolated = 1,
      NdisFddiTypeLocalA,
      NdisFddiTypeLocalB,
      NdisFddiTypeLocalAB,
      NdisFddiTypeLocalS,
      NdisFddiTypeWrapA,
      NdisFddiTypeWrapB,
      NdisFddiTypeWrapAB,
      NdisFddiTypeWrapS,
      NdisFddiTypeCWrapA,
      NdisFddiTypeCWrapB,
      NdisFddiTypeCWrapS,
      NdisFddiTypeThrough
    } NDIS_FDDI_ATTACHMENT_TYPE, *PNDIS_FDDI_ATTACHMENT_TYPE;
  
    typedef enum _NDIS_FDDI_RING_MGT_STATE {
      NdisFddiRingIsolated = 1,
      NdisFddiRingNonOperational,
      NdisFddiRingOperational,
      NdisFddiRingDetect,
      NdisFddiRingNonOperationalDup,
      NdisFddiRingOperationalDup,
      NdisFddiRingDirected,
      NdisFddiRingTrace
    } NDIS_FDDI_RING_MGT_STATE, *PNDIS_FDDI_RING_MGT_STATE;
  
    typedef enum _NDIS_FDDI_LCONNECTION_STATE {
      NdisFddiStateOff = 1,
      NdisFddiStateBreak,
      NdisFddiStateTrace,
      NdisFddiStateConnect,
      NdisFddiStateNext,
      NdisFddiStateSignal,
      NdisFddiStateJoin,
      NdisFddiStateVerify,
      NdisFddiStateActive,
      NdisFddiStateMaintenance
    } NDIS_FDDI_LCONNECTION_STATE, *PNDIS_FDDI_LCONNECTION_STATE;
  
    typedef enum _NDIS_WAN_MEDIUM_SUBTYPE {
      NdisWanMediumHub,
      NdisWanMediumX_25,
      NdisWanMediumIsdn,
      NdisWanMediumSerial,
      NdisWanMediumFrameRelay,
      NdisWanMediumAtm,
      NdisWanMediumSonet,
      NdisWanMediumSW56K,
      NdisWanMediumPPTP,
      NdisWanMediumL2TP,
      NdisWanMediumIrda,
      NdisWanMediumParallel,
      NdisWanMediumPppoe,
  #if NTDDI_VERSION >= 0x06000000
      NdisWanMediumSSTP,
      NdisWanMediumAgileVPN,
  #endif
    } NDIS_WAN_MEDIUM_SUBTYPE, *PNDIS_WAN_MEDIUM_SUBTYPE;
  
    typedef enum _NDIS_WAN_HEADER_FORMAT {
      NdisWanHeaderNative,
      NdisWanHeaderEthernet
    } NDIS_WAN_HEADER_FORMAT, *PNDIS_WAN_HEADER_FORMAT;
  
    typedef enum _NDIS_WAN_QUALITY {
      NdisWanRaw,
      NdisWanErrorControl,
      NdisWanReliable
    } NDIS_WAN_QUALITY, *PNDIS_WAN_QUALITY;
  
    typedef struct _NDIS_WAN_PROTOCOL_CAPS {
      ULONG Flags;
      ULONG Reserved;
    } NDIS_WAN_PROTOCOL_CAPS, *PNDIS_WAN_PROTOCOL_CAPS;
  
    typedef enum _NDIS_802_5_RING_STATE {
      NdisRingStateOpened = 1,
      NdisRingStateClosed,
      NdisRingStateOpening,
      NdisRingStateClosing,
      NdisRingStateOpenFailure,
      NdisRingStateRingFailure
    } NDIS_802_5_RING_STATE, *PNDIS_802_5_RING_STATE;
  
    typedef enum _NDIS_MEDIA_STATE {
      NdisMediaStateConnected,
      NdisMediaStateDisconnected
    } NDIS_MEDIA_STATE, *PNDIS_MEDIA_STATE;
  
    typedef ULONG Priority_802_3;
  
    typedef struct _NDIS_CO_LINK_SPEED {
      ULONG Outbound;
      ULONG Inbound;
    } NDIS_CO_LINK_SPEED, *PNDIS_CO_LINK_SPEED;
  
  #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
  #define NDIS_LINK_SPEED_UNKNOWN NET_IF_LINK_SPEED_UNKNOWN
  
    typedef struct _NDIS_LINK_SPEED {
      ULONG64 XmitLinkSpeed;
      ULONG64 RcvLinkSpeed;
    } NDIS_LINK_SPEED, *PNDIS_LINK_SPEED;
  #endif
  
  #ifndef _NDIS_
    typedef int NDIS_STATUS, *PNDIS_STATUS;
  #endif
  
  #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
  #ifndef __WINDOT11_H__
  #include <windot11.h>
  #endif
  #endif
  
  #define fNDIS_GUID_TO_OID 0x00000001
  #define fNDIS_GUID_TO_STATUS 0x00000002
  #define fNDIS_GUID_ANSI_STRING 0x00000004
  #define fNDIS_GUID_UNICODE_STRING 0x00000008
  #define fNDIS_GUID_ARRAY 0x00000010
  #define fNDIS_GUID_ALLOW_READ 0x00000020
  #define fNDIS_GUID_ALLOW_WRITE 0x00000040
  #define fNDIS_GUID_METHOD 0x00000080
  #define fNDIS_GUID_NDIS_RESERVED 0x00000100
  #define fNDIS_GUID_SUPPORT_COMMON_HEADER 0x00000200
  
  #define NDIS_PACKET_TYPE_DIRECTED 0x00000001
  #define NDIS_PACKET_TYPE_MULTICAST 0x00000002
  #define NDIS_PACKET_TYPE_ALL_MULTICAST 0x00000004
  #define NDIS_PACKET_TYPE_BROADCAST 0x00000008
  #define NDIS_PACKET_TYPE_SOURCE_ROUTING 0x00000010
  #define NDIS_PACKET_TYPE_PROMISCUOUS 0x00000020
  #define NDIS_PACKET_TYPE_SMT 0x00000040
  #define NDIS_PACKET_TYPE_ALL_LOCAL 0x00000080
  #define NDIS_PACKET_TYPE_GROUP 0x00001000
  #define NDIS_PACKET_TYPE_ALL_FUNCTIONAL 0x00002000
  #define NDIS_PACKET_TYPE_FUNCTIONAL 0x00004000
  #define NDIS_PACKET_TYPE_MAC_FRAME 0x00008000
  #define NDIS_PACKET_TYPE_NO_LOCAL 0x00010000
  
  #define NDIS_RING_SIGNAL_LOSS 0x00008000
  #define NDIS_RING_HARD_ERROR 0x00004000
  #define NDIS_RING_SOFT_ERROR 0x00002000
  #define NDIS_RING_TRANSMIT_BEACON 0x00001000
  #define NDIS_RING_LOBE_WIRE_FAULT 0x00000800
  #define NDIS_RING_AUTO_REMOVAL_ERROR 0x00000400
  #define NDIS_RING_REMOVE_RECEIVED 0x00000200
  #define NDIS_RING_COUNTER_OVERFLOW 0x00000100
  #define NDIS_RING_SINGLE_STATION 0x00000080
  #define NDIS_RING_RING_RECOVERY 0x00000040
  
  #define NDIS_PROT_OPTION_ESTIMATED_LENGTH 0x00000001
  #define NDIS_PROT_OPTION_NO_LOOPBACK 0x00000002
  #define NDIS_PROT_OPTION_NO_RSVD_ON_RCVPKT 0x00000004
  #define NDIS_PROT_OPTION_SEND_RESTRICTED 0x00000008
  
  #define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA 0x00000001
  #define NDIS_MAC_OPTION_RECEIVE_SERIALIZED 0x00000002
  #define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND 0x00000004
  #define NDIS_MAC_OPTION_NO_LOOPBACK 0x00000008
  
  #define NDIS_MAC_OPTION_FULL_DUPLEX 0x00000010
  
  #define NDIS_MAC_OPTION_EOTX_INDICATION 0x00000020
  #define NDIS_MAC_OPTION_8021P_PRIORITY 0x00000040
  #define NDIS_MAC_OPTION_SUPPORTS_MAC_ADDRESS_OVERWRITE 0x00000080
  #define NDIS_MAC_OPTION_RECEIVE_AT_DPC 0x00000100
  #define NDIS_MAC_OPTION_8021Q_VLAN 0x00000200
  #define NDIS_MAC_OPTION_RESERVED 0x80000000
  
  #define NDIS_MEDIA_CAP_TRANSMIT 0x00000001
  #define NDIS_MEDIA_CAP_RECEIVE 0x00000002
  
  #define NDIS_CO_MAC_OPTION_DYNAMIC_LINK_SPEED 0x00000001
  
    typedef struct _NDIS_GUID {
      GUID Guid;
      __C89_NAMELESS union {
        NDIS_OID Oid;
        NDIS_STATUS Status;
      };
      ULONG Size;
      ULONG Flags;
    } NDIS_GUID, *PNDIS_GUID;
  
    typedef struct _NDIS_IRDA_PACKET_INFO {
      ULONG ExtraBOFs;
      ULONG MinTurnAroundTime;
    } NDIS_IRDA_PACKET_INFO, *PNDIS_IRDA_PACKET_INFO;
  
  #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
  #define NDIS_MAKE_NET_LUID(PNLUID, IFTYPE, NLUIDIDX) { (PNLUID)->Info.IfType = IFTYPE; (PNLUID)->Info.NetLuidIndex = NLUIDIDX; (PNLUID)->Info.Reserved = 0; }
  
  #define MAXIMUM_IP_OPER_STATUS_ADDRESS_FAMILIES_SUPPORTED 32
  
  #define NDIS_IF_MAX_STRING_SIZE IF_MAX_STRING_SIZE
  #define NDIS_MAX_PHYS_ADDRESS_LENGTH IF_MAX_PHYS_ADDRESS_LENGTH
  
  #define NDIS_LINK_STATE_XMIT_LINK_SPEED_AUTO_NEGOTIATED 0x00000001
  #define NDIS_LINK_STATE_RCV_LINK_SPEED_AUTO_NEGOTIATED 0x00000002
  #define NDIS_LINK_STATE_DUPLEX_AUTO_NEGOTIATED 0x00000004
  #define NDIS_LINK_STATE_PAUSE_FUNCTIONS_AUTO_NEGOTIATED 0x00000008
  
  #define NDIS_LINK_STATE_REVISION_1 1
  #define NDIS_LINK_PARAMETERS_REVISION_1 1
  #define NDIS_OPER_STATE_REVISION_1 1
  #define NDIS_IP_OPER_STATUS_INFO_REVISION_1 1
  #define NDIS_IP_OPER_STATE_REVISION_1 1
  
  #define NDIS_SIZEOF_LINK_STATE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_LINK_STATE, AutoNegotiationFlags)
  #define NDIS_SIZEOF_LINK_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_LINK_PARAMETERS, AutoNegotiationFlags)
  #define NDIS_SIZEOF_OPER_STATE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_OPER_STATE, OperationalStatusFlags)
  #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)
  #define NDIS_SIZEOF_IP_OPER_STATE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_IP_OPER_STATE, IpOperationalStatus)
  
    typedef IF_COUNTED_STRING NDIS_IF_COUNTED_STRING, *PNDIS_IF_COUNTED_STRING;
    typedef IF_PHYSICAL_ADDRESS NDIS_IF_PHYSICAL_ADDRESS, *PNDIS_IF_PHYSICAL_ADDRESS;
    typedef NET_IF_MEDIA_CONNECT_STATE NDIS_MEDIA_CONNECT_STATE, *PNDIS_MEDIA_CONNECT_STATE;
    typedef NET_IF_MEDIA_DUPLEX_STATE NDIS_MEDIA_DUPLEX_STATE, *PNDIS_MEDIA_DUPLEX_STATE;
  
    typedef enum _NDIS_SUPPORTED_PAUSE_FUNCTIONS {
      NdisPauseFunctionsUnsupported,
      NdisPauseFunctionsSendOnly,
      NdisPauseFunctionsReceiveOnly,
      NdisPauseFunctionsSendAndReceive,
      NdisPauseFunctionsUnknown
    } NDIS_SUPPORTED_PAUSE_FUNCTIONS, *PNDIS_SUPPORTED_PAUSE_FUNCTIONS;
  
    typedef struct _NDIS_LINK_STATE {
      NDIS_OBJECT_HEADER Header;
      NDIS_MEDIA_CONNECT_STATE MediaConnectState;
      NDIS_MEDIA_DUPLEX_STATE MediaDuplexState;
      ULONG64 XmitLinkSpeed;
      ULONG64 RcvLinkSpeed;
      NDIS_SUPPORTED_PAUSE_FUNCTIONS PauseFunctions;
      ULONG AutoNegotiationFlags;
    } NDIS_LINK_STATE, *PNDIS_LINK_STATE;
  
    typedef struct _NDIS_LINK_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      NDIS_MEDIA_DUPLEX_STATE MediaDuplexState;
      ULONG64 XmitLinkSpeed;
      ULONG64 RcvLinkSpeed;
      NDIS_SUPPORTED_PAUSE_FUNCTIONS PauseFunctions;
      ULONG AutoNegotiationFlags;
    } NDIS_LINK_PARAMETERS, *PNDIS_LINK_PARAMETERS;
  
    typedef struct _NDIS_OPER_STATE {
      NDIS_OBJECT_HEADER Header;
      NET_IF_OPER_STATUS OperationalStatus;
      ULONG OperationalStatusFlags;
    } NDIS_OPER_STATE, *PNDIS_OPER_STATE;
  
    typedef struct _NDIS_IP_OPER_STATUS {
      ULONG AddressFamily;
      NET_IF_OPER_STATUS OperationalStatus;
      ULONG OperationalStatusFlags;
    } NDIS_IP_OPER_STATUS, *PNDIS_IP_OPER_STATUS;
  
    typedef struct _NDIS_IP_OPER_STATUS_INFO {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      ULONG NumberofAddressFamiliesReturned;
      NDIS_IP_OPER_STATUS IpOperationalStatus[MAXIMUM_IP_OPER_STATUS_ADDRESS_FAMILIES_SUPPORTED];
    } NDIS_IP_OPER_STATUS_INFO, *PNDIS_IP_OPER_STATUS_INFO;
  
    typedef struct _NDIS_IP_OPER_STATE {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_IP_OPER_STATUS IpOperationalStatus;
    } NDIS_IP_OPER_STATE, *PNDIS_IP_OPER_STATE;
  
  #define NDIS_OFFLOAD_PARAMETERS_NO_CHANGE 0
  #define NDIS_OFFLOAD_PARAMETERS_TX_RX_DISABLED 1
  #define NDIS_OFFLOAD_PARAMETERS_TX_ENABLED_RX_DISABLED 2
  #define NDIS_OFFLOAD_PARAMETERS_RX_ENABLED_TX_DISABLED 3
  #define NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED 4
  
  #define NDIS_OFFLOAD_PARAMETERS_LSOV1_DISABLED 1
  #define NDIS_OFFLOAD_PARAMETERS_LSOV1_ENABLED 2
  
  #define NDIS_OFFLOAD_PARAMETERS_IPSECV1_DISABLED 1
  #define NDIS_OFFLOAD_PARAMETERS_IPSECV1_AH_ENABLED 2
  #define NDIS_OFFLOAD_PARAMETERS_IPSECV1_ESP_ENABLED 3
  #define NDIS_OFFLOAD_PARAMETERS_IPSECV1_AH_AND_ESP_ENABLED 4
  
  #define NDIS_OFFLOAD_PARAMETERS_LSOV2_DISABLED 1
  #define NDIS_OFFLOAD_PARAMETERS_LSOV2_ENABLED 2
  
  #if NDIS_SUPPORT_NDIS61
  #define NDIS_OFFLOAD_PARAMETERS_IPSECV2_DISABLED 1
  #define NDIS_OFFLOAD_PARAMETERS_IPSECV2_AH_ENABLED 2
  #define NDIS_OFFLOAD_PARAMETERS_IPSECV2_ESP_ENABLED 3
  #define NDIS_OFFLOAD_PARAMETERS_IPSECV2_AH_AND_ESP_ENABLED 4
  #endif
  
  #if NDIS_SUPPORT_NDIS630
  #define NDIS_OFFLOAD_PARAMETERS_RSC_DISABLED 1
  #define NDIS_OFFLOAD_PARAMETERS_RSC_ENABLED 2
  
  #define NDIS_ENCAPSULATION_TYPE_GRE_MAC 0x00000001
  #define NDIS_ENCAPSULATION_TYPE_MAX NDIS_ENCAPSULATION_TYPE_GRE_MAC
  #endif
  
  #define NDIS_OFFLOAD_PARAMETERS_CONNECTION_OFFLOAD_DISABLED 1
  #define NDIS_OFFLOAD_PARAMETERS_CONNECTION_OFFLOAD_ENABLED 2
  
  #define NDIS_OFFLOAD_PARAMETERS_REVISION_1 1
  #if NDIS_SUPPORT_NDIS61
  #define NDIS_OFFLOAD_PARAMETERS_REVISION_2 2
  #endif
  #if NDIS_SUPPORT_NDIS630
  #define NDIS_OFFLOAD_PARAMETERS_REVISION_3 3
  #define NDIS_OFFLOAD_PARAMETERS_SKIP_REGISTRY_UPDATE 0x00000001
  #endif
  
    typedef struct _NDIS_OFFLOAD_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      UCHAR IPv4Checksum;
      UCHAR TCPIPv4Checksum;
      UCHAR UDPIPv4Checksum;
      UCHAR TCPIPv6Checksum;
      UCHAR UDPIPv6Checksum;
      UCHAR LsoV1;
      UCHAR IPsecV1;
      UCHAR LsoV2IPv4;
      UCHAR LsoV2IPv6;
      UCHAR TcpConnectionIPv4;
      UCHAR TcpConnectionIPv6;
      ULONG Flags;
  #if NDIS_SUPPORT_NDIS61
      UCHAR IPsecV2;
      UCHAR IPsecV2IPv4;
  #endif
  #if NDIS_SUPPORT_NDIS630
      __C89_NAMELESS struct {
        UCHAR RscIPv4;
        UCHAR RscIPv6;
      };
  #endif
  #if NDIS_SUPPORT_NDIS630
      __C89_NAMELESS struct {
        UCHAR EncapsulatedPacketTaskOffload;
        UCHAR EncapsulationTypes;
      };
  #endif
    } NDIS_OFFLOAD_PARAMETERS, *PNDIS_OFFLOAD_PARAMETERS;
  
  #define NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_OFFLOAD_PARAMETERS, Flags)
  #if NDIS_SUPPORT_NDIS61
  #define NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_OFFLOAD_PARAMETERS, IPsecV2IPv4)
  #endif
  #if NDIS_SUPPORT_NDIS630
  #define NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_3 RTL_SIZEOF_THROUGH_FIELD (NDIS_OFFLOAD_PARAMETERS, EncapsulationTypes)
  #endif
  
  #define NDIS_OFFLOAD_NOT_SUPPORTED 0
  #define NDIS_OFFLOAD_SUPPORTED 1
  
  #define NDIS_OFFLOAD_SET_NO_CHANGE 0
  #define NDIS_OFFLOAD_SET_ON 1
  #define NDIS_OFFLOAD_SET_OFF 2
  
  #define NDIS_ENCAPSULATION_NOT_SUPPORTED 0x00000000
  #define NDIS_ENCAPSULATION_NULL 0x00000001
  #define NDIS_ENCAPSULATION_IEEE_802_3 0x00000002
  #define NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q 0x00000004
  #define NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB 0x00000008
  #define NDIS_ENCAPSULATION_IEEE_LLC_SNAP_ROUTED 0x00000010
  
    typedef struct _NDIS_TCP_LARGE_SEND_OFFLOAD_V1 {
      struct {
        ULONG Encapsulation;
        ULONG MaxOffLoadSize;
        ULONG MinSegmentCount;
        ULONG TcpOptions:2;
        ULONG IpOptions:2;
      } IPv4;
    } NDIS_TCP_LARGE_SEND_OFFLOAD_V1, *PNDIS_TCP_LARGE_SEND_OFFLOAD_V1;
  
    typedef struct _NDIS_TCP_IP_CHECKSUM_OFFLOAD {
      struct {
        ULONG Encapsulation;
        ULONG IpOptionsSupported:2;
        ULONG TcpOptionsSupported:2;
        ULONG TcpChecksum:2;
        ULONG UdpChecksum:2;
        ULONG IpChecksum:2;
      } IPv4Transmit;
      struct {
        ULONG Encapsulation;
        ULONG IpOptionsSupported:2;
        ULONG TcpOptionsSupported:2;
        ULONG TcpChecksum:2;
        ULONG UdpChecksum:2;
        ULONG IpChecksum:2;
      } IPv4Receive;
      struct {
        ULONG Encapsulation;
        ULONG IpExtensionHeadersSupported:2;
        ULONG TcpOptionsSupported:2;
        ULONG TcpChecksum:2;
        ULONG UdpChecksum:2;
      } IPv6Transmit;
      struct {
        ULONG Encapsulation;
        ULONG IpExtensionHeadersSupported:2;
        ULONG TcpOptionsSupported:2;
        ULONG TcpChecksum:2;
        ULONG UdpChecksum:2;
      } IPv6Receive;
    } NDIS_TCP_IP_CHECKSUM_OFFLOAD, *PNDIS_TCP_IP_CHECKSUM_OFFLOAD;
    typedef struct _NDIS_IPSEC_OFFLOAD_V1 {
      struct {
        ULONG Encapsulation;
        ULONG AhEspCombined;
        ULONG TransportTunnelCombined;
        ULONG IPv4Options;
        ULONG Flags;
      } Supported;
      struct {
        ULONG Md5 : 2;
        ULONG Sha_1 : 2;
        ULONG Transport : 2;
        ULONG Tunnel : 2;
        ULONG Send : 2;
        ULONG Receive : 2;
      } IPv4AH;
      struct {
        ULONG Des : 2;
        ULONG Reserved : 2;
        ULONG TripleDes : 2;
        ULONG NullEsp : 2;
        ULONG Transport : 2;
        ULONG Tunnel : 2;
        ULONG Send : 2;
        ULONG Receive : 2;
      } IPv4ESP;
    } NDIS_IPSEC_OFFLOAD_V1, *PNDIS_IPSEC_OFFLOAD_V1;
  
    typedef struct _NDIS_TCP_LARGE_SEND_OFFLOAD_V2 {
      struct {
        ULONG Encapsulation;
        ULONG MaxOffLoadSize;
        ULONG MinSegmentCount;
      }IPv4;
      struct {
        ULONG Encapsulation;
        ULONG MaxOffLoadSize;
        ULONG MinSegmentCount;
        ULONG IpExtensionHeadersSupported:2;
        ULONG TcpOptionsSupported:2;
      } IPv6;
    } NDIS_TCP_LARGE_SEND_OFFLOAD_V2, *PNDIS_TCP_LARGE_SEND_OFFLOAD_V2;
  
  #if NDIS_SUPPORT_NDIS61
  #define IPSEC_OFFLOAD_V2_AUTHENTICATION_MD5 0x00000001
  #define IPSEC_OFFLOAD_V2_AUTHENTICATION_SHA_1 0x00000002
  #define IPSEC_OFFLOAD_V2_AUTHENTICATION_SHA_256 0x00000004
  #define IPSEC_OFFLOAD_V2_AUTHENTICATION_AES_GCM_128 0x00000008
  #define IPSEC_OFFLOAD_V2_AUTHENTICATION_AES_GCM_192 0x00000010
  #define IPSEC_OFFLOAD_V2_AUTHENTICATION_AES_GCM_256 0x00000020
  
  #define IPSEC_OFFLOAD_V2_ENCRYPTION_NONE 0x00000001
  #define IPSEC_OFFLOAD_V2_ENCRYPTION_DES_CBC 0x00000002
  #define IPSEC_OFFLOAD_V2_ENCRYPTION_3_DES_CBC 0x00000004
  #define IPSEC_OFFLOAD_V2_ENCRYPTION_AES_GCM_128 0x00000008
  #define IPSEC_OFFLOAD_V2_ENCRYPTION_AES_GCM_192 0x00000010
  #define IPSEC_OFFLOAD_V2_ENCRYPTION_AES_GCM_256 0x00000020
  #define IPSEC_OFFLOAD_V2_ENCRYPTION_AES_CBC_128 0x00000040
  #define IPSEC_OFFLOAD_V2_ENCRYPTION_AES_CBC_192 0x00000080
  #define IPSEC_OFFLOAD_V2_ENCRYPTION_AES_CBC_256 0x00000100
  
    typedef struct _NDIS_IPSEC_OFFLOAD_V2 {
      ULONG Encapsulation;
      BOOLEAN IPv6Supported;
      BOOLEAN IPv4Options;
      BOOLEAN IPv6NonIPsecExtensionHeaders;
      BOOLEAN Ah;
      BOOLEAN Esp;
      BOOLEAN AhEspCombined;
      BOOLEAN Transport;
      BOOLEAN Tunnel;
      BOOLEAN TransportTunnelCombined;
      BOOLEAN LsoSupported;
      BOOLEAN ExtendedSequenceNumbers;
      ULONG UdpEsp;
      ULONG AuthenticationAlgorithms;
      ULONG EncryptionAlgorithms;
      ULONG SaOffloadCapacity;
    } NDIS_IPSEC_OFFLOAD_V2, *PNDIS_IPSEC_OFFLOAD_V2;
  #endif
  
  #if NDIS_SUPPORT_NDIS630
  #define NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_NOT_SUPPORTED 0x00000000
  #define NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_INNER_IPV4 0x00000001
  #define NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_OUTER_IPV4 0x00000002
  #define NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_INNER_IPV6 0x00000004
  #define NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD_OUTER_IPV6 0x00000008
  #endif
  
  #define NDIS_OFFLOAD_FLAGS_GROUP_CHECKSUM_CAPABILITIES 0x1
  #if NDIS_SUPPORT_NDIS630
  #define IPSEC_OFFLOAD_V2_AND_TCP_CHECKSUM_COEXISTENCE 0x2
  #define IPSEC_OFFLOAD_V2_AND_UDP_CHECKSUM_COEXISTENCE 0x4
  #endif
  
  #define NDIS_MAXIMUM_PORTS 0x1000000
  
  #define NDIS_DEFAULT_PORT_NUMBER ((NDIS_PORT_NUMBER) 0)
  
  #define NDIS_WMI_DEFAULT_METHOD_ID 1
  
  #define NDIS_WMI_OBJECT_TYPE_SET 0x01
  #define NDIS_WMI_OBJECT_TYPE_METHOD 0x02
  #define NDIS_WMI_OBJECT_TYPE_EVENT 0x03
  #define NDIS_WMI_OBJECT_TYPE_ENUM_ADAPTER 0x04
  #define NDIS_WMI_OBJECT_TYPE_OUTPUT_INFO 0x05
  
  #define NDIS_DEVICE_TYPE_ENDPOINT 0x00000001
  
  #define NDIS_OFFLOAD_REVISION_1 1
  #define NDIS_TCP_CONNECTION_OFFLOAD_REVISION_1 1
  #define NDIS_PORT_AUTHENTICATION_PARAMETERS_REVISION_1 1
  #define NDIS_WMI_METHOD_HEADER_REVISION_1 1
  #define NDIS_WMI_SET_HEADER_REVISION_1 1
  #define NDIS_WMI_EVENT_HEADER_REVISION_1 1
  #define NDIS_WMI_ENUM_ADAPTER_REVISION_1 1
  #if NDIS_SUPPORT_NDIS61
  #define NDIS_TCP_CONNECTION_OFFLOAD_REVISION_2 2
  #define NDIS_OFFLOAD_REVISION_2 2
  #endif
  #if NDIS_SUPPORT_NDIS630
  #define NDIS_OFFLOAD_REVISION_3 3
  #define NDIS_TCP_RECV_SEG_COALESC_OFFLOAD_REVISION_1 1
  #endif
  
  #define NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_OFFLOAD, Flags)
  #define NDIS_SIZEOF_NDIS_WMI_OFFLOAD_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_OFFLOAD, Flags)
  #define NDIS_SIZEOF_TCP_CONNECTION_OFFLOAD_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_TCP_CONNECTION_OFFLOAD, Flags)
  #define NDIS_SIZEOF_WMI_TCP_CONNECTION_OFFLOAD_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_TCP_CONNECTION_OFFLOAD, Flags)
  #define NDIS_SIZEOF_PORT_AUTHENTICATION_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PORT_AUTHENTICATION_PARAMETERS, RcvAuthorizationState)
  #define NDIS_SIZEOF_WMI_METHOD_HEADER_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_METHOD_HEADER, Padding)
  #define NDIS_SIZEOF_WMI_SET_HEADER_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_SET_HEADER, Padding)
  #define NDIS_SIZEOF_WMI_EVENT_HEADER_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_EVENT_HEADER, Padding)
  #define NDIS_SIZEOF_WMI_ENUM_ADAPTER_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_ENUM_ADAPTER, DeviceName)
  #if NDIS_SUPPORT_NDIS61
  #define NDIS_SIZEOF_TCP_CONNECTION_OFFLOAD_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_TCP_CONNECTION_OFFLOAD, Flags)
  #define NDIS_SIZEOF_NDIS_WMI_OFFLOAD_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_OFFLOAD, IPsecV2)
  #define NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_OFFLOAD, IPsecV2)
  #endif
  #if NDIS_SUPPORT_NDIS630
  #define NDIS_SIZEOF_NDIS_WMI_OFFLOAD_REVISION_3 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_OFFLOAD, EncapsulatedPacketTaskOffloadGre)
  #define NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_3 RTL_SIZEOF_THROUGH_FIELD (NDIS_OFFLOAD, EncapsulatedPacketTaskOffloadGre)
  #define NDIS_SIZEOF_TCP_RECV_SEG_COALESC_OFFLOAD_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_TCP_RECV_SEG_COALESCE_OFFLOAD, IPv6.Enabled)
  #define NDIS_SIZEOF_ENCAPSULATED_PACKET_TASK_OFFLOAD_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD, MaxHeaderSizeSupported)
  #endif
  
  #if NDIS_SUPPORT_NDIS630
    typedef struct _NDIS_TCP_RECV_SEG_COALESCE_OFFLOAD {
      struct {
        BOOLEAN Enabled;
      } IPv4;
      struct {
        BOOLEAN Enabled;
      } IPv6;
    } NDIS_TCP_RECV_SEG_COALESCE_OFFLOAD, *PNDIS_TCP_RECV_SEG_COALESCE_OFFLOAD;
  
    typedef struct _NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD {
      ULONG TransmitChecksumOffloadSupported:4;
      ULONG ReceiveChecksumOffloadSupported:4;
      ULONG LsoV2Supported:4;
      ULONG RssSupported:4;
      ULONG VmqSupported:4;
      ULONG MaxHeaderSizeSupported;
    } NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD, *PNDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD;
  #endif
  
    typedef struct _NDIS_OFFLOAD {
      NDIS_OBJECT_HEADER Header;
      NDIS_TCP_IP_CHECKSUM_OFFLOAD Checksum;
      NDIS_TCP_LARGE_SEND_OFFLOAD_V1 LsoV1;
      NDIS_IPSEC_OFFLOAD_V1 IPsecV1;
      NDIS_TCP_LARGE_SEND_OFFLOAD_V2 LsoV2;
      ULONG Flags;
  #if NDIS_SUPPORT_NDIS61
      NDIS_IPSEC_OFFLOAD_V2 IPsecV2;
  #endif
  #if NDIS_SUPPORT_NDIS630
      NDIS_TCP_RECV_SEG_COALESCE_OFFLOAD Rsc;
      NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD EncapsulatedPacketTaskOffloadGre;
  #endif
    } NDIS_OFFLOAD, *PNDIS_OFFLOAD;
  
    typedef struct _NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1 {
      struct {
        ULONG Encapsulation;
        ULONG MaxOffLoadSize;
        ULONG MinSegmentCount;
        ULONG TcpOptions;
        ULONG IpOptions;
      } IPv4;
    } NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1, *PNDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1;
  
    typedef struct _NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD {
      struct {
        ULONG Encapsulation;
        ULONG IpOptionsSupported;
        ULONG TcpOptionsSupported;
        ULONG TcpChecksum;
        ULONG UdpChecksum;
        ULONG IpChecksum;
      } IPv4Transmit;
      struct {
        ULONG Encapsulation;
        ULONG IpOptionsSupported;
        ULONG TcpOptionsSupported;
        ULONG TcpChecksum;
        ULONG UdpChecksum;
        ULONG IpChecksum;
      } IPv4Receive;
      struct {
        ULONG Encapsulation;
        ULONG IpExtensionHeadersSupported;
        ULONG TcpOptionsSupported;
        ULONG TcpChecksum;
        ULONG UdpChecksum;
      } IPv6Transmit;
      struct {
        ULONG Encapsulation;
        ULONG IpExtensionHeadersSupported;
        ULONG TcpOptionsSupported;
        ULONG TcpChecksum;
        ULONG UdpChecksum;
      } IPv6Receive;
    } NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD, *PNDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD;
  
    typedef struct _NDIS_WMI_IPSEC_OFFLOAD_V1 {
      struct {
        ULONG Encapsulation;
        ULONG AhEspCombined;
        ULONG TransportTunnelCombined;
        ULONG IPv4Options;
        ULONG Flags;
      } Supported;
      struct {
        ULONG Md5;
        ULONG Sha_1;
        ULONG Transport;
        ULONG Tunnel;
        ULONG Send;
        ULONG Receive;
      } IPv4AH;
      struct {
        ULONG Des;
        ULONG Reserved;
        ULONG TripleDes;
        ULONG NullEsp;
        ULONG Transport;
        ULONG Tunnel;
        ULONG Send;
        ULONG Receive;
      } IPv4ESP;
    } NDIS_WMI_IPSEC_OFFLOAD_V1, *PNDIS_WMI_IPSEC_OFFLOAD_V1;
  
    typedef struct _NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2 {
      struct {
        ULONG Encapsulation;
        ULONG MaxOffLoadSize;
        ULONG MinSegmentCount;
      } IPv4;
      struct {
        ULONG Encapsulation;
        ULONG MaxOffLoadSize;
        ULONG MinSegmentCount;
        ULONG IpExtensionHeadersSupported;
        ULONG TcpOptionsSupported;
      } IPv6;
    } NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2, *PNDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2;
  
    typedef struct _NDIS_WMI_OFFLOAD {
      NDIS_OBJECT_HEADER Header;
      NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD Checksum;
      NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1 LsoV1;
      NDIS_WMI_IPSEC_OFFLOAD_V1 IPsecV1;
      NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2 LsoV2;
      ULONG Flags;
  #if NDIS_SUPPORT_NDIS61
      NDIS_IPSEC_OFFLOAD_V2 IPsecV2;
  #endif
  #if NDIS_SUPPORT_NDIS630
      NDIS_TCP_RECV_SEG_COALESCE_OFFLOAD Rsc;
      NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD EncapsulatedPacketTaskOffloadGre;
  #endif
    } NDIS_WMI_OFFLOAD, *PNDIS_WMI_OFFLOAD;
  
    typedef struct _NDIS_TCP_CONNECTION_OFFLOAD {
      NDIS_OBJECT_HEADER Header;
      ULONG Encapsulation;
      ULONG SupportIPv4:2;
      ULONG SupportIPv6:2;
      ULONG SupportIPv6ExtensionHeaders:2;
      ULONG SupportSack:2;
  #if NDIS_SUPPORT_NDIS61
      ULONG CongestionAlgorithm:4;
  #endif
      ULONG TcpConnectionOffloadCapacity;
      ULONG Flags;
    } NDIS_TCP_CONNECTION_OFFLOAD, *PNDIS_TCP_CONNECTION_OFFLOAD;
  
    typedef struct _NDIS_WMI_TCP_CONNECTION_OFFLOAD {
      NDIS_OBJECT_HEADER Header;
      ULONG Encapsulation;
      ULONG SupportIPv4;
      ULONG SupportIPv6;
      ULONG SupportIPv6ExtensionHeaders;
      ULONG SupportSack;
      ULONG TcpConnectionOffloadCapacity;
      ULONG Flags;
    } NDIS_WMI_TCP_CONNECTION_OFFLOAD, *PNDIS_WMI_TCP_CONNECTION_OFFLOAD;
  
    typedef ULONG NDIS_PORT_NUMBER, *PNDIS_PORT_NUMBER;
  
    typedef enum _NDIS_PORT_TYPE {
      NdisPortTypeUndefined,
      NdisPortTypeBridge,
      NdisPortTypeRasConnection,
      NdisPortType8021xSupplicant,
  #if NDIS_SUPPORT_NDIS630
      NdisPortTypeNdisImPlatform,
  #endif
      NdisPortTypeMax,
    } NDIS_PORT_TYPE, *PNDIS_PORT_TYPE;
  
    typedef enum _NDIS_PORT_AUTHORIZATION_STATE {
      NdisPortAuthorizationUnknown,
      NdisPortAuthorized,
      NdisPortUnauthorized,
      NdisPortReauthorizing
    } NDIS_PORT_AUTHORIZATION_STATE, *PNDIS_PORT_AUTHORIZATION_STATE;
  
    typedef enum _NDIS_PORT_CONTROL_STATE {
      NdisPortControlStateUnknown,
      NdisPortControlStateControlled,
      NdisPortControlStateUncontrolled
    } NDIS_PORT_CONTROL_STATE, *PNDIS_PORT_CONTROL_STATE;
  
    typedef NDIS_PORT_CONTROL_STATE NDIS_PORT_CONTROLL_STATE;
    typedef PNDIS_PORT_CONTROL_STATE PNDIS_PORT_CONTROLL_STATE;
  
    typedef struct _NDIS_PORT_AUTHENTICATION_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      NDIS_PORT_CONTROL_STATE SendControlState;
      NDIS_PORT_CONTROL_STATE RcvControlState;
      NDIS_PORT_AUTHORIZATION_STATE SendAuthorizationState;
      NDIS_PORT_AUTHORIZATION_STATE RcvAuthorizationState;
    } NDIS_PORT_AUTHENTICATION_PARAMETERS, *PNDIS_PORT_AUTHENTICATION_PARAMETERS;
  
    typedef enum _NDIS_NETWORK_CHANGE_TYPE {
      NdisPossibleNetworkChange = 1,
      NdisDefinitelyNetworkChange,
      NdisNetworkChangeFromMediaConnect,
      NdisNetworkChangeMax
    } NDIS_NETWORK_CHANGE_TYPE, *PNDIS_NETWORK_CHANGE_TYPE;
  
    typedef struct _NDIS_WMI_METHOD_HEADER {
      NDIS_OBJECT_HEADER Header;
      NDIS_PORT_NUMBER PortNumber;
      NET_LUID NetLuid;
      ULONG64 RequestId;
      ULONG Timeout;
      UCHAR Padding[4];
    } NDIS_WMI_METHOD_HEADER, *PNDIS_WMI_METHOD_HEADER;
  
    typedef struct _NDIS_WMI_SET_HEADER {
      NDIS_OBJECT_HEADER Header;
      NDIS_PORT_NUMBER PortNumber;
      NET_LUID NetLuid;
      ULONG64 RequestId;
      ULONG Timeout;
      UCHAR Padding[4];
    } NDIS_WMI_SET_HEADER, *PNDIS_WMI_SET_HEADER;
  
    typedef struct _NDIS_WMI_EVENT_HEADER {
      NDIS_OBJECT_HEADER Header;
      NET_IFINDEX IfIndex;
      NET_LUID NetLuid;
      ULONG64 RequestId;
      NDIS_PORT_NUMBER PortNumber;
      ULONG DeviceNameLength;
      ULONG DeviceNameOffset;
      UCHAR Padding[4];
    } NDIS_WMI_EVENT_HEADER, *PNDIS_WMI_EVENT_HEADER;
  
    typedef struct _NDIS_WMI_ENUM_ADAPTER {
      NDIS_OBJECT_HEADER Header;
      NET_IFINDEX IfIndex;
      NET_LUID NetLuid;
      USHORT DeviceNameLength;
      CHAR DeviceName[1];
    } NDIS_WMI_ENUM_ADAPTER, *PNDIS_WMI_ENUM_ADAPTER;
  
  #if NDIS_SUPPORT_NDIS61
  #define NDIS_HD_SPLIT_COMBINE_ALL_HEADERS 0x00000001
  
  #define NDIS_HD_SPLIT_CAPS_SUPPORTS_HEADER_DATA_SPLIT 0x00000001
  #define NDIS_HD_SPLIT_CAPS_SUPPORTS_IPV4_OPTIONS 0x00000002
  #define NDIS_HD_SPLIT_CAPS_SUPPORTS_IPV6_EXTENSION_HEADERS 0x00000004
  #define NDIS_HD_SPLIT_CAPS_SUPPORTS_TCP_OPTIONS 0x00000008
  
  #define NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT 0x00000001
  
  #define NDIS_HD_SPLIT_PARAMETERS_REVISION_1 1
  #define NDIS_HD_SPLIT_CURRENT_CONFIG_REVISION_1 1
  
  #define NDIS_SIZEOF_HD_SPLIT_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_HD_SPLIT_PARAMETERS, HDSplitCombineFlags)
  #define NDIS_SIZEOF_HD_SPLIT_CURRENT_CONFIG_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_HD_SPLIT_CURRENT_CONFIG, MaxHeaderSize)
  
    typedef struct _NDIS_HD_SPLIT_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG HDSplitCombineFlags;
    } NDIS_HD_SPLIT_PARAMETERS, *PNDIS_HD_SPLIT_PARAMETERS;
  
    typedef struct _NDIS_HD_SPLIT_CURRENT_CONFIG {
      NDIS_OBJECT_HEADER Header;
      ULONG HardwareCapabilities;
      ULONG CurrentCapabilities;
      ULONG HDSplitFlags;
      ULONG HDSplitCombineFlags;
      ULONG BackfillSize;
      ULONG MaxHeaderSize;
    } NDIS_HD_SPLIT_CURRENT_CONFIG, *PNDIS_HD_SPLIT_CURRENT_CONFIG;
  #endif
  
  #define NDIS_WMI_OUTPUT_INFO_REVISION_1 1
  
    typedef struct NDIS_WMI_OUTPUT_INFO {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      UCHAR SupportedRevision;
      ULONG DataOffset;
    } NDIS_WMI_OUTPUT_INFO, *PNDIS_WMI_OUTPUT_INFO;
  
  #if NDIS_SUPPORT_NDIS620
  #define NDIS_PM_WOL_BITMAP_PATTERN_SUPPORTED 0x00000001
  #define NDIS_PM_WOL_MAGIC_PACKET_SUPPORTED 0x00000002
  #define NDIS_PM_WOL_IPV4_TCP_SYN_SUPPORTED 0x00000004
  #define NDIS_PM_WOL_IPV6_TCP_SYN_SUPPORTED 0x00000008
  #define NDIS_PM_WOL_IPV4_DEST_ADDR_WILDCARD_SUPPORTED 0x00000200
  #define NDIS_PM_WOL_IPV6_DEST_ADDR_WILDCARD_SUPPORTED 0x00000800
  #define NDIS_PM_WOL_EAPOL_REQUEST_ID_MESSAGE_SUPPORTED 0x00010000
  
  #define NDIS_PM_PROTOCOL_OFFLOAD_ARP_SUPPORTED 0x00000001
  #define NDIS_PM_PROTOCOL_OFFLOAD_NS_SUPPORTED 0x00000002
  #define NDIS_PM_PROTOCOL_OFFLOAD_80211_RSN_REKEY_SUPPORTED 0x00000080
  
  #if NDIS_SUPPORT_NDIS630
  #define NDIS_PM_WAKE_ON_MEDIA_CONNECT_SUPPORTED 0x00000001
  #define NDIS_PM_WAKE_ON_MEDIA_DISCONNECT_SUPPORTED 0x00000002
  
  #define NDIS_WLAN_WAKE_ON_NLO_DISCOVERY_SUPPORTED 0x00000001
  #define NDIS_WLAN_WAKE_ON_AP_ASSOCIATION_LOST_SUPPORTED 0x00000002
  #define NDIS_WLAN_WAKE_ON_GTK_HANDSHAKE_ERROR_SUPPORTED 0x00000004
  #define NDIS_WLAN_WAKE_ON_4WAY_HANDSHAKE_REQUEST_SUPPORTED 0x00000008
  
  #define NDIS_WWAN_WAKE_ON_REGISTER_STATE_SUPPORTED 0x00000001
  #define NDIS_WWAN_WAKE_ON_SMS_RECEIVE_SUPPORTED 0x00000002
  #define NDIS_WWAN_WAKE_ON_USSD_RECEIVE_SUPPORTED 0x00000004
  
  #define NDIS_PM_WAKE_PACKET_INDICATION_SUPPORTED 0x00000001
  #define NDIS_PM_SELECTIVE_SUSPEND_SUPPORTED 0x00000002
  #endif
  
  #define NDIS_PM_WOL_BITMAP_PATTERN_ENABLED 0x00000001
  #define NDIS_PM_WOL_MAGIC_PACKET_ENABLED 0x00000002
  #define NDIS_PM_WOL_IPV4_TCP_SYN_ENABLED 0x00000004
  #define NDIS_PM_WOL_IPV6_TCP_SYN_ENABLED 0x00000008
  #define NDIS_PM_WOL_IPV4_DEST_ADDR_WILDCARD_ENABLED 0x00000200
  #define NDIS_PM_WOL_IPV6_DEST_ADDR_WILDCARD_ENABLED 0x00000800
  #define NDIS_PM_WOL_EAPOL_REQUEST_ID_MESSAGE_ENABLED 0x00010000
  
  #define NDIS_PM_PROTOCOL_OFFLOAD_ARP_ENABLED 0x00000001
  #define NDIS_PM_PROTOCOL_OFFLOAD_NS_ENABLED 0x00000002
  #define NDIS_PM_PROTOCOL_OFFLOAD_80211_RSN_REKEY_ENABLED 0x00000080
  
  #define NDIS_PM_WAKE_ON_LINK_CHANGE_ENABLED 0x1
  #if NDIS_SUPPORT_NDIS630
  #define NDIS_PM_WAKE_ON_MEDIA_DISCONNECT_ENABLED 0x2
  #define NDIS_PM_SELECTIVE_SUSPEND_ENABLED 0x10
  
  #define NDIS_WLAN_WAKE_ON_NLO_DISCOVERY_ENABLED 0x1
  #define NDIS_WLAN_WAKE_ON_AP_ASSOCIATION_LOST_ENABLED 0x2
  #define NDIS_WLAN_WAKE_ON_GTK_HANDSHAKE_ERROR_ENABLED 0x4
  #define NDIS_WLAN_WAKE_ON_4WAY_HANDSHAKE_REQUEST_ENABLED 0x8
  
  #define NDIS_WWAN_WAKE_ON_REGISTER_STATE_ENABLED 0x1
  #define NDIS_WWAN_WAKE_ON_SMS_RECEIVE_ENABLED 0x2
  #define NDIS_WWAN_WAKE_ON_USSD_RECEIVE_ENABLED 0x4
  #endif
  
  #define NDIS_PM_WOL_PRIORITY_LOWEST 0xffffffff
  #define NDIS_PM_WOL_PRIORITY_NORMAL 0x10000000
  #define NDIS_PM_WOL_PRIORITY_HIGHEST 0x00000001
  
  #define NDIS_PM_PROTOCOL_OFFLOAD_PRIORITY_LOWEST 0xffffffff
  #define NDIS_PM_PROTOCOL_OFFLOAD_PRIORITY_NORMAL 0x10000000
  #define NDIS_PM_PROTOCOL_OFFLOAD_PRIORITY_HIGHEST 0x00000001
  
  #define NDIS_PM_MAX_STRING_SIZE 64
  
  #define EAPOL_REQUEST_ID_WOL_FLAG_MUST_ENCRYPT 0x00000001
  
  #define NDIS_PM_MAX_PATTERN_ID 0x0000ffff
  
  #define NDIS_PM_PRIVATE_PATTERN_ID 0x00000001
  
  #define DOT11_RSN_KEK_LENGTH 16
  #define DOT11_RSN_KCK_LENGTH 16
  
  
  #define NDIS_RECEIVE_FILTER_MAC_HEADER_SUPPORTED 0x00000001
  #define NDIS_RECEIVE_FILTER_IPV4_HEADER_SUPPORTED 0x00000002
  #define NDIS_RECEIVE_FILTER_IPV6_HEADER_SUPPORTED 0x00000004
  #define NDIS_RECEIVE_FILTER_ARP_HEADER_SUPPORTED 0x00000008
  #define NDIS_RECEIVE_FILTER_UDP_HEADER_SUPPORTED 0x00000010
  
  #define NDIS_RECEIVE_FILTER_MAC_HEADER_DEST_ADDR_SUPPORTED 0x00000001
  #define NDIS_RECEIVE_FILTER_MAC_HEADER_SOURCE_ADDR_SUPPORTED 0x00000002
  #define NDIS_RECEIVE_FILTER_MAC_HEADER_PROTOCOL_SUPPORTED 0x00000004
  #define NDIS_RECEIVE_FILTER_MAC_HEADER_VLAN_ID_SUPPORTED 0x00000008
  #define NDIS_RECEIVE_FILTER_MAC_HEADER_PRIORITY_SUPPORTED 0x00000010
  #define NDIS_RECEIVE_FILTER_MAC_HEADER_PACKET_TYPE_SUPPORTED 0x00000020
  
  #define NDIS_RECEIVE_FILTER_ARP_HEADER_OPERATION_SUPPORTED 0x1
  #define NDIS_RECEIVE_FILTER_ARP_HEADER_SPA_SUPPORTED 0x2
  #define NDIS_RECEIVE_FILTER_ARP_HEADER_TPA_SUPPORTED 0x4
  
  #define NDIS_RECEIVE_FILTER_IPV4_HEADER_PROTOCOL_SUPPORTED 0x1
  #define NDIS_RECEIVE_FILTER_IPV6_HEADER_PROTOCOL_SUPPORTED 0x1
  #define NDIS_RECEIVE_FILTER_UDP_HEADER_DEST_PORT_SUPPORTED 0x1
  
  #define NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_EQUAL_SUPPORTED 0x00000001
  #define NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_MASK_EQUAL_SUPPORTED 0x00000002
  #define NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_NOT_EQUAL_SUPPORTED 0x00000004
  
  #define NDIS_RECEIVE_FILTER_MSI_X_SUPPORTED 0x00000001
  #define NDIS_RECEIVE_FILTER_VM_QUEUE_SUPPORTED 0x00000002
  #define NDIS_RECEIVE_FILTER_LOOKAHEAD_SPLIT_SUPPORTED 0x00000004
  #if NDIS_SUPPORT_NDIS630
  #define NDIS_RECEIVE_FILTER_DYNAMIC_PROCESSOR_AFFINITY_CHANGE_SUPPORTED 0x00000008
  #define NDIS_RECEIVE_FILTER_INTERRUPT_VECTOR_COALESCING_SUPPORTED 0x00000010
  #define NDIS_RECEIVE_FILTER_ANY_VLAN_SUPPORTED 0x00000020
  #define NDIS_RECEIVE_FILTER_IMPLAT_MIN_OF_QUEUES_MODE 0x00000040
  #define NDIS_RECEIVE_FILTER_IMPLAT_SUM_OF_QUEUES_MODE 0x00000080
  #define NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE 0x00000100
  #endif
  
  #define NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED 0x00000001
  #define NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED 0x00000002
  
  #define NDIS_RECEIVE_FILTER_VM_QUEUES_ENABLED 0x00000001
  
  #if NDIS_SUPPORT_NDIS630
  #define NDIS_NIC_SWITCH_CAPS_VLAN_SUPPORTED 0x00000001
  #define NDIS_NIC_SWITCH_CAPS_PER_VPORT_INTERRUPT_MODERATION_SUPPORTED 0x00000002
  #define NDIS_NIC_SWITCH_CAPS_ASYMMETRIC_QUEUE_PAIRS_FOR_NONDEFAULT_VPORT_SUPPORTED 0x00000004
  #define NDIS_NIC_SWITCH_CAPS_VF_RSS_SUPPORTED 0x00000008
  #define NDIS_NIC_SWITCH_CAPS_SINGLE_VPORT_POOL 0x00000010
  #endif
  
  
  #define NDIS_DEFAULT_RECEIVE_QUEUE_ID 0
  #define NDIS_DEFAULT_RECEIVE_QUEUE_GROUP_ID 0
  #define NDIS_DEFAULT_RECEIVE_FILTER_ID 0
  
  #define NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO 0x00000001
  #define NDIS_RECEIVE_FILTER_PACKET_ENCAPSULATION_GRE 0x00000002
  
  #define NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION 0x00000001
  #define NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED 0x00000002
  #define NDIS_RECEIVE_QUEUE_PARAMETERS_FLAGS_CHANGED 0x00010000
  #define NDIS_RECEIVE_QUEUE_PARAMETERS_PROCESSOR_AFFINITY_CHANGED 0x00020000
  #define NDIS_RECEIVE_QUEUE_PARAMETERS_SUGGESTED_RECV_BUFFER_NUMBERS_CHANGED 0x00040000
  #define NDIS_RECEIVE_QUEUE_PARAMETERS_NAME_CHANGED 0x00080000
  #if NDIS_SUPPORT_NDIS630
  #define NDIS_RECEIVE_QUEUE_PARAMETERS_INTERRUPT_COALESCING_DOMAIN_ID_CHANGED 0x00100000
  #endif
  
  #define NDIS_RECEIVE_QUEUE_PARAMETERS_CHANGE_MASK 0xffff0000
  
  #if NDIS_SUPPORT_NDIS630
  #define NDIS_RECEIVE_FILTER_INFO_ARRAY_VPORT_ID_SPECIFIED 0x00000001
  #endif
  
  #define NDIS_PM_CAPABILITIES_REVISION_1 1
  #define NDIS_PM_PARAMETERS_REVISION_1 1
  #define NDIS_PM_WOL_PATTERN_REVISION_1 1
  #define NDIS_PM_PROTOCOL_OFFLOAD_REVISION_1 1
  #define NDIS_WMI_PM_ADMIN_CONFIG_REVISION_1 1
  #define NDIS_WMI_PM_ACTIVE_CAPABILITIES_REVISION_1 1
  #define NDIS_RECEIVE_FILTER_CAPABILITIES_REVISION_1 1
  #define NDIS_NIC_SWITCH_CAPABILITIES_REVISION_1 1
  #define NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS_REVISION_1 1
  #define NDIS_RECEIVE_FILTER_FIELD_PARAMETERS_REVISION_1 1
  #define NDIS_RECEIVE_FILTER_PARAMETERS_REVISION_1 1
  #define NDIS_RECEIVE_FILTER_CLEAR_PARAMETERS_REVISION_1 1
  #define NDIS_RECEIVE_QUEUE_PARAMETERS_REVISION_1 1
  #define NDIS_RECEIVE_QUEUE_FREE_PARAMETERS_REVISION_1 1
  #define NDIS_RECEIVE_QUEUE_INFO_REVISION_1 1
  #define NDIS_RECEIVE_QUEUE_INFO_ARRAY_REVISION_1 1
  #define NDIS_RECEIVE_FILTER_INFO_REVISION_1 1
  #define NDIS_RECEIVE_FILTER_INFO_ARRAY_REVISION_1 1
  #define NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_PARAMETERS_REVISION_1 1
  #define NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_ARRAY_REVISION_1 1
  #if NDIS_SUPPORT_NDIS630
  #define NDIS_PM_CAPABILITIES_REVISION_2 2
  #define NDIS_PM_PARAMETERS_REVISION_2 2
  #define NDIS_PM_WOL_PATTERN_REVISION_2 2
  #define NDIS_PM_WAKE_REASON_REVISION_1 1
  #define NDIS_PM_WAKE_PACKET_REVISION_1 1
  #define NDIS_RECEIVE_FILTER_CAPABILITIES_REVISION_2 2
  #define NDIS_NIC_SWITCH_CAPABILITIES_REVISION_2 2
  #define NDIS_RECEIVE_FILTER_FIELD_PARAMETERS_REVISION_2 2
  #define NDIS_RECEIVE_FILTER_PARAMETERS_REVISION_2 2
  #define NDIS_RECEIVE_QUEUE_PARAMETERS_REVISION_2 2
  #define NDIS_RECEIVE_FILTER_INFO_ARRAY_REVISION_2 2
  #define NDIS_RECEIVE_QUEUE_INFO_REVISION_2 2
  #endif
  
  #define NDIS_SIZEOF_WMI_OUTPUT_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_OUTPUT_INFO, DataOffset)
  #define NDIS_SIZEOF_NDIS_PM_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PM_CAPABILITIES, MinLinkChangeWakeUp)
  #define NDIS_SIZEOF_NDIS_PM_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PM_PARAMETERS, WakeUpFlags)
  #define NDIS_SIZEOF_NDIS_PM_WOL_PATTERN_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PM_WOL_PATTERN, WoLPattern)
  #define NDIS_SIZEOF_NDIS_PM_PROTOCOL_OFFLOAD_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PM_PROTOCOL_OFFLOAD, ProtocolOffloadParameters)
  #define NDIS_SIZEOF_WMI_PM_ADMIN_CONFIG_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_PM_ADMIN_CONFIG, PMWiFiRekeyOffload)
  #define NDIS_SIZEOF_WMI_PM_ACTIVE_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_PM_ACTIVE_CAPABILITIES, PMWiFiRekeyOffload)
  #define NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_CAPABILITIES, MaxLookaheadSplitSize)
  #define NDIS_SIZEOF_NIC_SWITCH_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_CAPABILITIES, NdisReserved3)
  #define NDIS_SIZEOF_RECEIVE_FILTER_GLOBAL_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS, EnabledQueueTypes)
  #define NDIS_SIZEOF_RECEIVE_FILTER_FIELD_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_FIELD_PARAMETERS, ResultValue)
  #define NDIS_SIZEOF_RECEIVE_FILTER_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_PARAMETERS, RequestedFilterIdBitCount)
  #define NDIS_SIZEOF_RECEIVE_FILTER_CLEAR_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_CLEAR_PARAMETERS, FilterId)
  #define NDIS_SIZEOF_RECEIVE_QUEUE_FREE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_QUEUE_FREE_PARAMETERS, QueueId)
  #define NDIS_SIZEOF_RECEIVE_QUEUE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_QUEUE_PARAMETERS, QueueName)
  #define NDIS_SIZEOF_RECEIVE_QUEUE_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_QUEUE_INFO, QueueName)
  #define NDIS_SIZEOF_RECEIVE_QUEUE_INFO_ARRAY_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_QUEUE_INFO_ARRAY, ElementSize)
  #define NDIS_SIZEOF_RECEIVE_FILTER_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_INFO, FilterId)
  #define NDIS_SIZEOF_RECEIVE_QUEUE_ALLOCATION_COMPLETE_ARRAY_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_ARRAY, ElementSize)
  #define NDIS_SIZEOF_RECEIVE_QUEUE_ALLOCATION_COMPLETE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_PARAMETERS, CompletionStatus)
  #define NDIS_SIZEOF_RECEIVE_FILTER_INFO_ARRAY_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_INFO_ARRAY, ElementSize)
  #if NDIS_SUPPORT_NDIS630
  #define NDIS_SIZEOF_NDIS_PM_CAPABILITIES_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_PM_CAPABILITIES, MediaSpecificWakeUpEvents)
  #define NDIS_SIZEOF_NDIS_PM_PARAMETERS_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_PM_PARAMETERS, MediaSpecificWakeUpEvents)
  #define NDIS_SIZEOF_NDIS_PM_WOL_PATTERN_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_PM_WOL_PATTERN, WoLPattern)
  #define NDIS_SIZEOF_PM_WAKE_REASON_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PM_WAKE_REASON, InfoBufferSize)
  #define NDIS_SIZEOF_PM_WAKE_PACKET_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PM_WAKE_PACKET, SavedPacketOffset)
  #define NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_CAPABILITIES, NdisReserved)
  #define NDIS_SIZEOF_NIC_SWITCH_CAPABILITIES_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_CAPABILITIES, NdisReserved17)
  #define NDIS_SIZEOF_RECEIVE_FILTER_FIELD_PARAMETERS_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_FIELD_PARAMETERS, ResultValue)
  #define NDIS_SIZEOF_RECEIVE_FILTER_PARAMETERS_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_PARAMETERS, VPortId)
  #define NDIS_SIZEOF_RECEIVE_FILTER_INFO_ARRAY_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_INFO_ARRAY, VPortId)
  #define NDIS_SIZEOF_RECEIVE_QUEUE_INFO_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_QUEUE_INFO, InterruptCoalescingDomainId)
  #define NDIS_SIZEOF_RECEIVE_QUEUE_PARAMETERS_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_QUEUE_PARAMETERS, InterruptCoalescingDomainId)
  #endif
  
    typedef enum _NDIS_PM_WOL_PACKET {
      NdisPMWoLPacketUnspecified,
      NdisPMWoLPacketBitmapPattern,
      NdisPMWoLPacketMagicPacket,
      NdisPMWoLPacketIPv4TcpSyn,
      NdisPMWoLPacketIPv6TcpSyn,
      NdisPMWoLPacketEapolRequestIdMessage,
      NdisPMWoLPacketMaximum
    } NDIS_PM_WOL_PACKET, *PNDIS_PM_WOL_PACKET;
  
    typedef enum _NDIS_PM_PROTOCOL_OFFLOAD_TYPE {
      NdisPMProtocolOffloadIdUnspecified,
      NdisPMProtocolOffloadIdIPv4ARP,
      NdisPMProtocolOffloadIdIPv6NS,
      NdisPMProtocolOffload80211RSNRekey,
      NdisPMProtocolOffloadIdMaximum
    } NDIS_PM_PROTOCOL_OFFLOAD_TYPE, *PNDIS_PM_PROTOCOL_OFFLOAD_TYPE;
  
    typedef struct _NDIS_PM_COUNTED_STRING {
      USHORT Length;
      WCHAR String[NDIS_PM_MAX_STRING_SIZE + 1];
    } NDIS_PM_COUNTED_STRING, *PNDIS_PM_COUNTED_STRING;
  
    typedef struct _NDIS_PM_CAPABILITIES {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      ULONG SupportedWoLPacketPatterns;
      ULONG NumTotalWoLPatterns;
      ULONG MaxWoLPatternSize;
      ULONG MaxWoLPatternOffset;
      ULONG MaxWoLPacketSaveBuffer;
      ULONG SupportedProtocolOffloads;
      ULONG NumArpOffloadIPv4Addresses;
      ULONG NumNSOffloadIPv6Addresses;
      NDIS_DEVICE_POWER_STATE MinMagicPacketWakeUp;
      NDIS_DEVICE_POWER_STATE MinPatternWakeUp;
      NDIS_DEVICE_POWER_STATE MinLinkChangeWakeUp;
  #if NDIS_SUPPORT_NDIS630
      ULONG SupportedWakeUpEvents;
      ULONG MediaSpecificWakeUpEvents;
  #endif
    } NDIS_PM_CAPABILITIES, *PNDIS_PM_CAPABILITIES;
  
    typedef struct _NDIS_PM_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG EnabledWoLPacketPatterns;
      ULONG EnabledProtocolOffloads;
      ULONG WakeUpFlags;
  #if NDIS_SUPPORT_NDIS630
      ULONG MediaSpecificWakeUpEvents;
  #endif
    } NDIS_PM_PARAMETERS, *PNDIS_PM_PARAMETERS;
  
    typedef struct _NDIS_PM_WOL_PATTERN {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      ULONG Priority;
      NDIS_PM_WOL_PACKET WoLPacketType;
      NDIS_PM_COUNTED_STRING FriendlyName;
      ULONG PatternId;
      ULONG NextWoLPatternOffset;
      union _WOL_PATTERN {
        struct _IPV4_TCP_SYN_WOL_PACKET_PARAMETERS {
  	ULONG Flags;
  	UCHAR IPv4SourceAddress[4];
  	UCHAR IPv4DestAddress[4];
  	USHORT TCPSourcePortNumber;
  	USHORT TCPDestPortNumber;
        } IPv4TcpSynParameters;
        struct _IPV6_TCP_SYN_WOL_PACKET_PARAMETERS {
  	ULONG Flags;
  	UCHAR IPv6SourceAddress[16];
  	UCHAR IPv6DestAddress[16];
  	USHORT TCPSourcePortNumber;
  	USHORT TCPDestPortNumber;
        } IPv6TcpSynParameters;
        struct _EAPOL_REQUEST_ID_MESSAGE_WOL_PACKET_PARAMETERS {
  	ULONG Flags;
        } EapolRequestIdMessageParameters;
        struct _WOL_BITMAP_PATTERN {
  	ULONG Flags;
  	ULONG MaskOffset;
  	ULONG MaskSize;
  	ULONG PatternOffset;
  	ULONG PatternSize;
        } WoLBitMapPattern;
      } WoLPattern;
    } NDIS_PM_WOL_PATTERN, *PNDIS_PM_WOL_PATTERN;
  
    typedef struct _NDIS_PM_PROTOCOL_OFFLOAD {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      ULONG Priority;
      NDIS_PM_PROTOCOL_OFFLOAD_TYPE ProtocolOffloadType;
      NDIS_PM_COUNTED_STRING FriendlyName;
      ULONG ProtocolOffloadId;
      ULONG NextProtocolOffloadOffset;
      union _PROTOCOL_OFFLOAD_PARAMETERS {
        struct _IPV4_ARP_PARAMETERS {
  	ULONG Flags;
  	UCHAR RemoteIPv4Address[4];
  	UCHAR HostIPv4Address[4];
  	UCHAR MacAddress[6];
        } IPv4ARPParameters;
        struct _IPV6_NS_PARAMETERS {
  	ULONG Flags;
  	UCHAR RemoteIPv6Address[16];
  	UCHAR SolicitedNodeIPv6Address[16];
  	UCHAR MacAddress[6];
  	UCHAR TargetIPv6Addresses[2][16];
        } IPv6NSParameters;
        struct _DOT11_RSN_REKEY_PARAMETERS {
  	ULONG Flags;
  	UCHAR KCK[DOT11_RSN_KCK_LENGTH];
  	UCHAR KEK[DOT11_RSN_KEK_LENGTH];
  	ULONGLONG KeyReplayCounter;
        } Dot11RSNRekeyParameters;
      } ProtocolOffloadParameters;
    } NDIS_PM_PROTOCOL_OFFLOAD, *PNDIS_PM_PROTOCOL_OFFLOAD;
  
  #if NDIS_SUPPORT_NDIS630
    typedef enum _NDIS_PM_WAKE_REASON_TYPE {
      NdisWakeReasonUnspecified = 0x0000,
      NdisWakeReasonPacket = 0x0001,
      NdisWakeReasonMediaDisconnect = 0x0002,
      NdisWakeReasonMediaConnect = 0x0003,
      NdisWakeReasonWlanNLODiscovery = 0x1000,
      NdisWakeReasonWlanAPAssociationLost = 0x1001,
      NdisWakeReasonWlanGTKHandshakeError = 0x1002,
      NdisWakeReasonWlan4WayHandshakeRequest = 0x1003,
      NdisWakeReasonWwanRegisterState = 0x2000,
      NdisWakeReasonWwanSMSReceive = 0x2001,
      NdisWakeReasonWwanUSSDReceive = 0x2002,
    } NDIS_PM_WAKE_REASON_TYPE, *PNDIS_PM_WAKE_REASON_TYPE;
  
    typedef struct _NDIS_PM_WAKE_REASON {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_PM_WAKE_REASON_TYPE WakeReason;
      ULONG InfoBufferOffset;
      ULONG InfoBufferSize;
    } NDIS_PM_WAKE_REASON, *PNDIS_PM_WAKE_REASON;
  
    typedef struct _NDIS_PM_WAKE_PACKET {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      ULONG PatternId;
      NDIS_PM_COUNTED_STRING PatternFriendlyName;
      ULONG OriginalPacketSize;
      ULONG SavedPacketSize;
      ULONG SavedPacketOffset;
    } NDIS_PM_WAKE_PACKET, *PNDIS_PM_WAKE_PACKET;
  #endif
  
    typedef enum _NDIS_PM_ADMIN_CONFIG_STATE {
      NdisPMAdminConfigUnspecified = 0,
      NdisPMAdminConfigDisabled = 1,
      NdisPMAdminConfigEnabled = 2
    } NDIS_PM_ADMIN_CONFIG_STATE, *PNDIS_PM_ADMIN_CONFIG_STATE;
  
    typedef struct _NDIS_WMI_PM_ADMIN_CONFIG {
      NDIS_OBJECT_HEADER Header;
      NDIS_PM_ADMIN_CONFIG_STATE WakeOnPattern;
      NDIS_PM_ADMIN_CONFIG_STATE WakeOnMagicPacket;
      NDIS_PM_ADMIN_CONFIG_STATE DeviceSleepOnDisconnect;
      NDIS_PM_ADMIN_CONFIG_STATE PMARPOffload;
      NDIS_PM_ADMIN_CONFIG_STATE PMNSOffload;
      NDIS_PM_ADMIN_CONFIG_STATE PMWiFiRekeyOffload;
    } NDIS_WMI_PM_ADMIN_CONFIG, *PNDIS_WMI_PM_ADMIN_CONFIG;
  
    typedef enum _NDIS_PM_CAPABILITY_STATE {
      NdisPMAdminConfigUnsupported = 0,
      NdisPMAdminConfigInactive = 1,
      NdisPMAdminConfigActive = 2
    } NDIS_PM_CAPABILITY_STATE, *PNDIS_PM_CAPABILITY_STATE;
  
    typedef struct _NDIS_WMI_PM_ACTIVE_CAPABILITIES {
      NDIS_OBJECT_HEADER Header;
      NDIS_PM_CAPABILITY_STATE WakeOnPattern;
      NDIS_PM_CAPABILITY_STATE WakeOnMagicPacket;
      NDIS_PM_CAPABILITY_STATE DeviceSleepOnDisconnect;
      NDIS_PM_CAPABILITY_STATE PMARPOffload;
      NDIS_PM_CAPABILITY_STATE PMNSOffload;
      NDIS_PM_CAPABILITY_STATE PMWiFiRekeyOffload;
    } NDIS_WMI_PM_ACTIVE_CAPABILITIES, *PNDIS_WMI_PM_ACTIVE_CAPABILITIES;
  
    typedef struct _NDIS_RECEIVE_FILTER_CAPABILITIES {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      ULONG EnabledFilterTypes;
      ULONG EnabledQueueTypes;
      ULONG NumQueues;
      ULONG SupportedQueueProperties;
      ULONG SupportedFilterTests;
      ULONG SupportedHeaders;
      ULONG SupportedMacHeaderFields;
      ULONG MaxMacHeaderFilters;
      ULONG MaxQueueGroups;
      ULONG MaxQueuesPerQueueGroup;
      ULONG MinLookaheadSplitSize;
      ULONG MaxLookaheadSplitSize;
  #if NDIS_SUPPORT_NDIS630
      ULONG SupportedARPHeaderFields;
      ULONG SupportedIPv4HeaderFields;
      ULONG SupportedIPv6HeaderFields;
      ULONG SupportedUdpHeaderFields;
      ULONG MaxFieldTestsPerPacketCoalescingFilter;
      ULONG MaxPacketCoalescingFilters;
      ULONG NdisReserved;
  #endif
    } NDIS_RECEIVE_FILTER_CAPABILITIES, *PNDIS_RECEIVE_FILTER_CAPABILITIES;
  
    typedef struct _NDIS_NIC_SWITCH_CAPABILITIES {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      ULONG NdisReserved1;
      ULONG NumTotalMacAddresses;
      ULONG NumMacAddressesPerPort;
      ULONG NumVlansPerPort;
      ULONG NdisReserved2;
      ULONG NdisReserved3;
  #if NDIS_SUPPORT_NDIS630
      ULONG NicSwitchCapabilities;
      ULONG MaxNumSwitches;
      ULONG MaxNumVPorts;
      ULONG NdisReserved4;
      ULONG MaxNumVFs;
      ULONG MaxNumQueuePairs;
      ULONG NdisReserved5;
      ULONG NdisReserved6;
      ULONG NdisReserved7;
      ULONG MaxNumQueuePairsPerNonDefaultVPort;
      ULONG NdisReserved8;
      ULONG NdisReserved9;
      ULONG NdisReserved10;
      ULONG NdisReserved11;
      ULONG NdisReserved12;
      ULONG MaxNumMacAddresses;
      ULONG NdisReserved13;
      ULONG NdisReserved14;
      ULONG NdisReserved15;
      ULONG NdisReserved16;
      ULONG NdisReserved17;
  #endif
    } NDIS_NIC_SWITCH_CAPABILITIES, *PNDIS_NIC_SWITCH_CAPABILITIES;
  
    typedef struct _NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      ULONG EnabledFilterTypes;
      ULONG EnabledQueueTypes;
    } NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS, *PNDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS;
  
    typedef ULONG NDIS_RECEIVE_QUEUE_ID, *PNDIS_RECEIVE_QUEUE_ID;
    typedef ULONG NDIS_RECEIVE_QUEUE_GROUP_ID, *PNDIS_RECEIVE_QUEUE_GROUP_ID;
    typedef ULONG NDIS_RECEIVE_FILTER_ID, *PNDIS_RECEIVE_FILTER_ID;
  
    typedef enum _NDIS_RECEIVE_FILTER_TYPE {
      NdisReceiveFilterTypeUndefined,
      NdisReceiveFilterTypeVMQueue,
      NdisReceiveFilterTypePacketCoalescing,
      NdisReceiveFilterTypeMaximum
    } NDIS_RECEIVE_FILTER_TYPE, *PNDIS_RECEIVE_FILTER_TYPE;
  
    typedef enum _NDIS_FRAME_HEADER {
      NdisFrameHeaderUndefined,
      NdisFrameHeaderMac,
      NdisFrameHeaderArp,
      NdisFrameHeaderIPv4,
      NdisFrameHeaderIPv6,
      NdisFrameHeaderUdp,
      NdisFrameHeaderMaximum
    } NDIS_FRAME_HEADER, *PNDIS_FRAME_HEADER;
  
    typedef enum _NDIS_MAC_HEADER_FIELD {
      NdisMacHeaderFieldUndefined,
      NdisMacHeaderFieldDestinationAddress,
      NdisMacHeaderFieldSourceAddress,
      NdisMacHeaderFieldProtocol,
      NdisMacHeaderFieldVlanId,
      NdisMacHeaderFieldPriority,
      NdisMacHeaderFieldPacketType,
      NdisMacHeaderFieldMaximum
    } NDIS_MAC_HEADER_FIELD, *PNDIS_MAC_HEADER_FIELD;
  
    typedef enum _NDIS_MAC_PACKET_TYPE {
      NdisMacPacketTypeUndefined = 0,
      NdisMacPacketTypeUnicast = 1,
      NdisMacPacketTypeMulticast = 2,
      NdisMacPacketTypeBroadcast = 3,
      NdisMacPacketTypeMaximum
    } NDIS_MAC_PACKET_TYPE, *PNDIS_MAC_PACKET_TYPE;
  
    typedef enum _NDIS_ARP_HEADER_FIELD {
      NdisARPHeaderFieldUndefined,
      NdisARPHeaderFieldOperation,
      NdisARPHeaderFieldSPA,
      NdisARPHeaderFieldTPA,
      NdisARPHeaderFieldMaximum
    } NDIS_ARP_HEADER_FIELD, *PNDIS_ARP_HEADER_FIELD;
  
    typedef enum _NDIS_IPV4_HEADER_FIELD {
      NdisIPv4HeaderFieldUndefined,
      NdisIPv4HeaderFieldProtocol,
      NdisIPv4HeaderFieldMaximum
    } NDIS_IPV4_HEADER_FIELD, *PNDIS_IPV4_HEADER_FIELD;
  
    typedef enum _NDIS_IPV6_HEADER_FIELD {
      NdisIPv6HeaderFieldUndefined,
      NdisIPv6HeaderFieldProtocol,
      NdisIPv6HeaderFieldMaximum
    } NDIS_IPV6_HEADER_FIELD, *PNDIS_IPV6_HEADER_FIELD;
  
    typedef enum _NDIS_UDP_HEADER_FIELD {
      NdisUdpHeaderFieldUndefined,
      NdisUdpHeaderFieldDestinationPort,
      NdisUdpHeaderFieldMaximum
    } NDIS_UDP_HEADER_FIELD, *PNDIS_UDP_HEADER_FIELD;
  
    typedef enum _NDIS_RECEIVE_FILTER_TEST {
      NdisReceiveFilterTestUndefined,
      NdisReceiveFilterTestEqual,
      NdisReceiveFilterTestMaskEqual,
      NdisReceiveFilterTestNotEqual,
      NdisReceiveFilterTestMaximum
    } NDIS_RECEIVE_FILTER_TEST, *PNDIS_RECEIVE_FILTER_TEST;
  
    typedef struct _NDIS_RECEIVE_FILTER_FIELD_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_FRAME_HEADER FrameHeader;
      NDIS_RECEIVE_FILTER_TEST ReceiveFilterTest;
      union _HEADER_FIELD {
        NDIS_MAC_HEADER_FIELD MacHeaderField;
        NDIS_ARP_HEADER_FIELD ArpHeaderField;
        NDIS_IPV4_HEADER_FIELD IPv4HeaderField;
        NDIS_IPV6_HEADER_FIELD IPv6HeaderField;
        NDIS_UDP_HEADER_FIELD UdpHeaderField;
      } HeaderField;
      union _FIELD_VALUE {
        UCHAR FieldByteValue;
        USHORT FieldShortValue;
        ULONG FieldLongValue;
        ULONG64 FieldLong64Value;
        UCHAR FieldByteArrayValue[16];
      } FieldValue;
      union _RESULT_VALUE {
        UCHAR ResultByteValue;
        USHORT ResultShortValue;
        ULONG ResultLongValue;
        ULONG64 ResultLong64Value;
        UCHAR ResultByteArrayValue[16];
      } ResultValue;
    } NDIS_RECEIVE_FILTER_FIELD_PARAMETERS, *PNDIS_RECEIVE_FILTER_FIELD_PARAMETERS;
  
  #if NDIS_SUPPORT_NDIS630
    typedef ULONG NDIS_NIC_SWITCH_VPORT_ID, *PNDIS_NIC_SWITCH_VPORT_ID;
  #endif
  
    typedef struct _NDIS_RECEIVE_FILTER_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_RECEIVE_FILTER_TYPE FilterType;
      NDIS_RECEIVE_QUEUE_ID QueueId;
      NDIS_RECEIVE_FILTER_ID FilterId;
      ULONG FieldParametersArrayOffset;
      ULONG FieldParametersArrayNumElements;
      ULONG FieldParametersArrayElementSize;
      ULONG RequestedFilterIdBitCount;
  #if NDIS_SUPPORT_NDIS630
      ULONG MaxCoalescingDelay;
      NDIS_NIC_SWITCH_VPORT_ID VPortId;
  #endif
    } NDIS_RECEIVE_FILTER_PARAMETERS, *PNDIS_RECEIVE_FILTER_PARAMETERS;
  
    typedef struct _NDIS_RECEIVE_FILTER_CLEAR_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_RECEIVE_QUEUE_ID QueueId;
      NDIS_RECEIVE_FILTER_ID FilterId;
    } NDIS_RECEIVE_FILTER_CLEAR_PARAMETERS, *PNDIS_RECEIVE_FILTER_CLEAR_PARAMETERS;
  
    typedef enum _NDIS_RECEIVE_QUEUE_TYPE {
      NdisReceiveQueueTypeUnspecified,
      NdisReceiveQueueTypeVMQueue,
      NdisReceiveQueueTypeMaximum
    } NDIS_RECEIVE_QUEUE_TYPE, *PNDIS_RECEIVE_QUEUE_TYPE;
  
    typedef NDIS_IF_COUNTED_STRING NDIS_QUEUE_NAME, *PNDIS_QUEUE_NAME;
    typedef NDIS_IF_COUNTED_STRING NDIS_VM_NAME, *PNDIS_VM_NAME;
    typedef NDIS_IF_COUNTED_STRING NDIS_VM_FRIENDLYNAME, *PNDIS_VM_FRIENDLYNAME;
    typedef NDIS_IF_COUNTED_STRING NDIS_SWITCH_PORT_PROPERTY_PROFILE_NAME, *PNDIS_SWITCH_PORT_PROPERTY_PROFILE_NAME;
    typedef NDIS_IF_COUNTED_STRING NDIS_SWITCH_PORT_PROPERTY_PROFILE_CDN_LABEL, *PNDIS_SWITCH_PORT_PROPERTY_PROFILE_CDN_LABEL;
    typedef NDIS_IF_COUNTED_STRING NDIS_SWITCH_NAME, *PNDIS_SWITCH_NAME;
    typedef NDIS_IF_COUNTED_STRING NDIS_SWITCH_FRIENDLYNAME, *PNDIS_SWITCH_FRIENDLYNAME;
    typedef NDIS_IF_COUNTED_STRING NDIS_SWITCH_PORT_NAME, *PNDIS_SWITCH_PORT_NAME;
    typedef NDIS_IF_COUNTED_STRING NDIS_SWITCH_PORT_FRIENDLYNAME, *PNDIS_SWITCH_PORT_FRIENDLYNAME;
    typedef NDIS_IF_COUNTED_STRING NDIS_SWITCH_NIC_NAME, *PNDIS_SWITCH_NIC_NAME;
    typedef NDIS_IF_COUNTED_STRING NDIS_SWITCH_NIC_FRIENDLYNAME, *PNDIS_SWITCH_NIC_FRIENDLYNAME;
    typedef NDIS_IF_COUNTED_STRING NDIS_SWITCH_EXTENSION_FRIENDLYNAME, *PNDIS_SWITCH_EXTENSION_FRIENDLYNAME;
    typedef NDIS_IF_COUNTED_STRING NDIS_VENDOR_NAME, *PNDIS_VENDOR_NAME;
  
    typedef struct _NDIS_RECEIVE_QUEUE_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_RECEIVE_QUEUE_TYPE QueueType;
      NDIS_RECEIVE_QUEUE_ID QueueId;
      NDIS_RECEIVE_QUEUE_GROUP_ID QueueGroupId;
      GROUP_AFFINITY ProcessorAffinity;
      ULONG NumSuggestedReceiveBuffers;
      ULONG MSIXTableEntry;
      ULONG LookaheadSize;
      NDIS_VM_NAME VmName;
      NDIS_QUEUE_NAME QueueName;
  #if NDIS_SUPPORT_NDIS630
      ULONG PortId;
      ULONG InterruptCoalescingDomainId;
  #endif
    } NDIS_RECEIVE_QUEUE_PARAMETERS, *PNDIS_RECEIVE_QUEUE_PARAMETERS;
  
    typedef struct _NDIS_RECEIVE_QUEUE_FREE_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_RECEIVE_QUEUE_ID QueueId;
    } NDIS_RECEIVE_QUEUE_FREE_PARAMETERS, *PNDIS_RECEIVE_QUEUE_FREE_PARAMETERS;
  
    typedef enum _NDIS_RECEIVE_QUEUE_OPERATIONAL_STATE {
      NdisReceiveQueueOperationalStateUndefined,
      NdisReceiveQueueOperationalStateRunning,
      NdisReceiveQueueOperationalStatePaused,
      NdisReceiveQueueOperationalStateDmaStopped,
      NdisReceiveQueueOperationalStateMaximum
    } NDIS_RECEIVE_QUEUE_OPERATIONAL_STATE, *PNDIS_RECEIVE_QUEUE_OPERATIONAL_STATE;
  
    typedef struct _NDIS_RECEIVE_QUEUE_INFO {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_RECEIVE_QUEUE_TYPE QueueType;
      NDIS_RECEIVE_QUEUE_ID QueueId;
      NDIS_RECEIVE_QUEUE_GROUP_ID QueueGroupId;
      NDIS_RECEIVE_QUEUE_OPERATIONAL_STATE QueueState;
      GROUP_AFFINITY ProcessorAffinity;
      ULONG NumSuggestedReceiveBuffers;
      ULONG MSIXTableEntry;
      ULONG LookaheadSize;
      NDIS_VM_NAME VmName;
      NDIS_QUEUE_NAME QueueName;
  #if NDIS_SUPPORT_NDIS630
      ULONG NumFilters;
      ULONG InterruptCoalescingDomainId;
  #endif
    } NDIS_RECEIVE_QUEUE_INFO, *PNDIS_RECEIVE_QUEUE_INFO;
  
    typedef struct _NDIS_RECEIVE_QUEUE_INFO_ARRAY {
      NDIS_OBJECT_HEADER Header;
      ULONG FirstElementOffset;
      ULONG NumElements;
      ULONG ElementSize;
    } NDIS_RECEIVE_QUEUE_INFO_ARRAY, *PNDIS_RECEIVE_QUEUE_INFO_ARRAY;
  
    typedef struct _NDIS_RECEIVE_FILTER_INFO {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_RECEIVE_FILTER_TYPE FilterType;
      NDIS_RECEIVE_FILTER_ID FilterId;
    } NDIS_RECEIVE_FILTER_INFO, *PNDIS_RECEIVE_FILTER_INFO;
  
    typedef struct _NDIS_RECEIVE_FILTER_INFO_ARRAY {
      NDIS_OBJECT_HEADER Header;
      NDIS_RECEIVE_QUEUE_ID QueueId;
      ULONG FirstElementOffset;
      ULONG NumElements;
      ULONG ElementSize;
  #if NDIS_SUPPORT_NDIS630
      ULONG Flags;
      NDIS_NIC_SWITCH_VPORT_ID VPortId;
  #endif
    } NDIS_RECEIVE_FILTER_INFO_ARRAY, *PNDIS_RECEIVE_FILTER_INFO_ARRAY;
  
    typedef struct _NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_RECEIVE_QUEUE_ID QueueId;
      NDIS_STATUS CompletionStatus;
    } NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_PARAMETERS, *PNDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_PARAMETERS;
  
    typedef struct _NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_ARRAY {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      ULONG FirstElementOffset;
      ULONG NumElements;
      ULONG ElementSize;
    } NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_ARRAY, *PNDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_ARRAY;
  #endif
  
  #if NTDDI_VERSION >= 0x06000000 || NDIS_SUPPORT_NDIS6
  #define NDIS_RSS_CAPS_MESSAGE_SIGNALED_INTERRUPTS 0x01000000
  #define NDIS_RSS_CAPS_CLASSIFICATION_AT_ISR 0x02000000
  #define NDIS_RSS_CAPS_CLASSIFICATION_AT_DPC 0x04000000
  #if NDIS_SUPPORT_NDIS620
  #define NDIS_RSS_CAPS_USING_MSI_X 0x08000000
  #endif
  #if NDIS_SUPPORT_NDIS630
  #define NDIS_RSS_CAPS_RSS_AVAILABLE_ON_PORTS 0x10000000
  #define NDIS_RSS_CAPS_SUPPORTS_MSI_X 0x20000000
  #endif
  #define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV4 0x00000100
  #define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6 0x00000200
  #define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6_EX 0x00000400
  
  #define NdisHashFunctionToeplitz 0x00000001
  #define NdisHashFunctionReserved1 0x00000002
  #define NdisHashFunctionReserved2 0x00000004
  #define NdisHashFunctionReserved3 0x00000008
  
  #define NDIS_HASH_FUNCTION_MASK 0x000000ff
  #define NDIS_HASH_TYPE_MASK 0x00ffff00
  
  #define NDIS_RSS_HASH_FUNC_FROM_HASH_INFO(HINFO) ((HINFO) & (NDIS_HASH_FUNCTION_MASK))
  #define NDIS_RSS_HASH_TYPE_FROM_HASH_INFO(HINFO) ((HINFO) & (NDIS_HASH_TYPE_MASK))
  #define NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC(HTYPE, HFCT) ((HTYPE) | (HFCT))
  
  #define NDIS_HASH_IPV4 0x00000100
  #define NDIS_HASH_TCP_IPV4 0x00000200
  #define NDIS_HASH_IPV6 0x00000400
  #define NDIS_HASH_IPV6_EX 0x00000800
  #define NDIS_HASH_TCP_IPV6 0x00001000
  #define NDIS_HASH_TCP_IPV6_EX 0x00002000
  
  #define NDIS_RSS_PARAM_FLAG_BASE_CPU_UNCHANGED 0x0001
  #define NDIS_RSS_PARAM_FLAG_HASH_INFO_UNCHANGED 0x0002
  #define NDIS_RSS_PARAM_FLAG_ITABLE_UNCHANGED 0x0004
  #define NDIS_RSS_PARAM_FLAG_HASH_KEY_UNCHANGED 0x0008
  #define NDIS_RSS_PARAM_FLAG_DISABLE_RSS 0x0010
  
  #define NDIS_RSS_INDIRECTION_TABLE_SIZE_REVISION_1 128
  #define NDIS_RSS_HASH_SECRET_KEY_SIZE_REVISION_1 40
  
  #define NDIS_RSS_INDIRECTION_TABLE_MAX_SIZE_REVISION_1 128
  #define NDIS_RSS_HASH_SECRET_KEY_MAX_SIZE_REVISION_1 40
  
  #if NDIS_SUPPORT_NDIS620
  #define NDIS_RSS_INDIRECTION_TABLE_MAX_SIZE_REVISION_2 (128 * sizeof (PROCESSOR_NUMBER))
  #define NDIS_RSS_HASH_SECRET_KEY_MAX_SIZE_REVISION_2 40
  #endif
  
  #define NDIS_RECEIVE_HASH_FLAG_ENABLE_HASH 0x00000001
  #define NDIS_RECEIVE_HASH_FLAG_HASH_INFO_UNCHANGED 0x00000002
  #define NDIS_RECEIVE_HASH_FLAG_HASH_KEY_UNCHANGED 0x00000004
  
  #define NDIS_PORT_CHAR_USE_DEFAULT_AUTH_SETTINGS 0x00000001
  
  #define NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_1 1
  #define NDIS_RECEIVE_HASH_PARAMETERS_REVISION_1 1
  #define NDIS_PORT_STATE_REVISION_1 1
  #define NDIS_PORT_CHARACTERISTICS_REVISION_1 1
  #define NDIS_PORT_ARRAY_REVISION_1 1
  #define NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_1 1
  #if NDIS_SUPPORT_NDIS620
  #define NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_2 2
  #endif
  #if NDIS_SUPPORT_NDIS630
  #define NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_2 2
  #endif
  
  #define NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_SCALE_CAPABILITIES, NumberOfReceiveQueues)
  #define NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_SCALE_PARAMETERS, HashSecretKeyOffset)
  #define NDIS_SIZEOF_RECEIVE_HASH_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_HASH_PARAMETERS, HashSecretKeyOffset)
  #define NDIS_SIZEOF_PORT_STATE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PORT_STATE, Flags)
  #define NDIS_SIZEOF_PORT_CHARACTERISTICS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PORT_CHARACTERISTICS, RcvAuthorizationState)
  #define NDIS_SIZEOF_PORT_ARRAY_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PORT_ARRAY, Ports)
  #if NDIS_SUPPORT_NDIS620
  #define NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_SCALE_PARAMETERS, ProcessorMasksEntrySize)
  #endif
  #if NDIS_SUPPORT_NDIS630
  #define NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_SCALE_CAPABILITIES, NumberOfIndirectionTableEntries)
  #endif
  
    typedef struct _NDIS_RECEIVE_SCALE_CAPABILITIES {
      NDIS_OBJECT_HEADER Header;
      ULONG CapabilitiesFlags;
      ULONG NumberOfInterruptMessages;
      ULONG NumberOfReceiveQueues;
  #if NDIS_SUPPORT_NDIS630
      USHORT NumberOfIndirectionTableEntries;
  #endif
    } NDIS_RECEIVE_SCALE_CAPABILITIES, *PNDIS_RECEIVE_SCALE_CAPABILITIES;
  
    typedef struct _NDIS_RECEIVE_SCALE_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      USHORT Flags;
      USHORT BaseCpuNumber;
      ULONG HashInformation;
      USHORT IndirectionTableSize;
      ULONG IndirectionTableOffset;
      USHORT HashSecretKeySize;
      ULONG HashSecretKeyOffset;
  #if NDIS_SUPPORT_NDIS620
      ULONG ProcessorMasksOffset;
      ULONG NumberOfProcessorMasks;
      ULONG ProcessorMasksEntrySize;
  #endif
    } NDIS_RECEIVE_SCALE_PARAMETERS, *PNDIS_RECEIVE_SCALE_PARAMETERS;
  
    typedef struct _NDIS_RECEIVE_HASH_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      ULONG HashInformation;
      USHORT HashSecretKeySize;
      ULONG HashSecretKeyOffset;
    } NDIS_RECEIVE_HASH_PARAMETERS, *PNDIS_RECEIVE_HASH_PARAMETERS;
  
    typedef enum _NDIS_PROCESSOR_VENDOR {
      NdisProcessorVendorUnknown,
      NdisProcessorVendorGenuinIntel,
      NdisProcessorVendorGenuineIntel = NdisProcessorVendorGenuinIntel,
      NdisProcessorVendorAuthenticAMD
    } NDIS_PROCESSOR_VENDOR, *PNDIS_PROCESSOR_VENDOR;
  
  #if NDIS_SUPPORT_NDIS620
  #define NDIS_HYPERVISOR_INFO_FLAG_HYPERVISOR_PRESENT 0x00000001
  
  #define NDIS_RSS_PROCESSOR_INFO_REVISION_1 1
  #define NDIS_SYSTEM_PROCESSOR_INFO_EX_REVISION_1 1
  #define NDIS_HYPERVISOR_INFO_REVISION_1 1
  #define NDIS_WMI_RECEIVE_QUEUE_INFO_REVISION_1 1
  #define NDIS_WMI_RECEIVE_QUEUE_PARAMETERS_REVISION_1 1
  #if NDIS_SUPPORT_NDIS630
  #define NDIS_RSS_PROCESSOR_INFO_REVISION_2 2
  #endif
  
  #define NDIS_SIZEOF_RSS_PROCESSOR_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RSS_PROCESSOR, PreferenceIndex)
  #define NDIS_SIZEOF_RSS_PROCESSOR_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RSS_PROCESSOR_INFO, RssProcessorEntrySize)
  #define NDIS_SIZEOF_SYSTEM_PROCESSOR_INFO_EX_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SYSTEM_PROCESSOR_INFO_EX, ProcessorInfoEntrySize)
  #define NDIS_SIZEOF_HYPERVISOR_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_HYPERVISOR_INFO, PartitionType)
  #define NDIS_SIZEOF_WMI_RECEIVE_QUEUE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_RECEIVE_QUEUE_PARAMETERS, QueueName)
  #define NDIS_SIZEOF_WMI_RECEIVE_QUEUE_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_RECEIVE_QUEUE_INFO, QueueName)
  #if NDIS_SUPPORT_NDIS630
  #define NDIS_SIZEOF_RSS_PROCESSOR_INFO_REVISION_2 RTL_SIZEOF_THROUGH_FIELD (NDIS_RSS_PROCESSOR_INFO, RssProfile)
  #endif
  
    typedef struct _NDIS_RSS_PROCESSOR {
      PROCESSOR_NUMBER ProcNum;
      USHORT PreferenceIndex;
      USHORT Reserved;
    } NDIS_RSS_PROCESSOR, *PNDIS_RSS_PROCESSOR;
  
  #if NDIS_SUPPORT_NDIS630
    typedef enum _NDIS_RSS_PROFILE {
      NdisRssProfileClosest = 1,
      NdisRssProfileClosestStatic,
      NdisRssProfileNuma,
      NdisRssProfileNumaStatic,
      NdisRssProfileConservative,
      NdisRssProfileMaximum,
    } NDIS_RSS_PROFILE, *PNDIS_RSS_PROFILE;
  #endif
  
    typedef struct _NDIS_RSS_PROCESSOR_INFO {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      PROCESSOR_NUMBER RssBaseProcessor;
      ULONG MaxNumRssProcessors;
      USHORT PreferredNumaNode;
      ULONG RssProcessorArrayOffset;
      ULONG RssProcessorCount;
      ULONG RssProcessorEntrySize;
  #if NDIS_SUPPORT_NDIS630
      PROCESSOR_NUMBER RssMaxProcessor;
      NDIS_RSS_PROFILE RssProfile;
  #endif
    } NDIS_RSS_PROCESSOR_INFO, *PNDIS_RSS_PROCESSOR_INFO;
  
    typedef struct _NDIS_PROCESSOR_INFO_EX {
      PROCESSOR_NUMBER ProcNum;
      ULONG SocketId;
      ULONG CoreId;
      ULONG HyperThreadId;
      USHORT NodeId;
      USHORT NodeDistance;
    } NDIS_PROCESSOR_INFO_EX, *PNDIS_PROCESSOR_INFO_EX;
  
    typedef struct _NDIS_SYSTEM_PROCESSOR_INFO_EX {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_PROCESSOR_VENDOR ProcessorVendor;
      ULONG NumSockets;
      ULONG NumCores;
      ULONG NumCoresPerSocket;
      ULONG MaxHyperThreadingProcsPerCore;
      ULONG ProcessorInfoOffset;
      ULONG NumberOfProcessors;
      ULONG ProcessorInfoEntrySize;
    } NDIS_SYSTEM_PROCESSOR_INFO_EX, *PNDIS_SYSTEM_PROCESSOR_INFO_EX;
  
    typedef enum _NDIS_HYPERVISOR_PARTITION_TYPE {
      NdisHypervisorPartitionTypeUnknown,
      NdisHypervisorPartitionTypeMsHvParent,
      NdisHypervisorPartitionMsHvChild,
      NdisHypervisorPartitionTypeMax
    } NDIS_HYPERVISOR_PARTITION_TYPE, *PNDIS_HYPERVISOR_PARTITION_TYPE;
  
    typedef struct _NDIS_HYPERVISOR_INFO {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_HYPERVISOR_PARTITION_TYPE PartitionType;
    } NDIS_HYPERVISOR_INFO, *PNDIS_HYPERVISOR_INFO;
  
    typedef struct _NDIS_WMI_GROUP_AFFINITY {
      ULONG64 Mask;
      USHORT Group;
      USHORT Reserved[3];
    } NDIS_WMI_GROUP_AFFINITY, *PNDIS_WMI_GROUP_AFFINITY;
  
    typedef struct _NDIS_WMI_RECEIVE_QUEUE_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_RECEIVE_QUEUE_TYPE QueueType;
      NDIS_RECEIVE_QUEUE_ID QueueId;
      NDIS_RECEIVE_QUEUE_GROUP_ID QueueGroupId;
      NDIS_WMI_GROUP_AFFINITY ProcessorAffinity;
      ULONG NumSuggestedReceiveBuffers;
      ULONG MSIXTableEntry;
      ULONG LookaheadSize;
      NDIS_VM_NAME VmName;
      NDIS_QUEUE_NAME QueueName;
    } NDIS_WMI_RECEIVE_QUEUE_PARAMETERS, *PNDIS_WMI_RECEIVE_QUEUE_PARAMETERS;
  
    typedef struct _NDIS_WMI_RECEIVE_QUEUE_INFO {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_RECEIVE_QUEUE_TYPE QueueType;
      NDIS_RECEIVE_QUEUE_ID QueueId;
      NDIS_RECEIVE_QUEUE_GROUP_ID QueueGroupId;
      NDIS_RECEIVE_QUEUE_OPERATIONAL_STATE QueueState;
      NDIS_WMI_GROUP_AFFINITY ProcessorAffinity;
      ULONG NumSuggestedReceiveBuffers;
      ULONG MSIXTableEntry;
      ULONG LookaheadSize;
      NDIS_VM_NAME VmName;
      NDIS_QUEUE_NAME QueueName;
    } NDIS_WMI_RECEIVE_QUEUE_INFO, *PNDIS_WMI_RECEIVE_QUEUE_INFO;
  #endif
  
  #if NDIS_SUPPORT_NDIS630
  
  #define NDIS_NDK_PERFORMANCE_COUNTER_MASK(CNTFIELD) (((ULONG64) 1) << (FIELD_OFFSET (NDIS_NDK_PERFORMANCE_COUNTERS, CNTFIELD) / sizeof (ULONG64)))
  
  #define OID_NDK_SET_STATE 0xfc040201
  #define OID_NDK_STATISTICS 0xfc040202
  #define OID_NDK_CONNECTIONS 0xfc040203
  #define OID_NDK_LOCAL_ENDPOINTS 0xfc040204
  
  #define OID_QOS_HARDWARE_CAPABILITIES 0xfc050001
  #define OID_QOS_CURRENT_CAPABILITIES 0xfc050002
  #define OID_QOS_PARAMETERS 0xfc050003
  #define OID_QOS_OPERATIONAL_PARAMETERS 0xfc050004
  #define OID_QOS_REMOTE_PARAMETERS 0xfc050005
  
  #define NDIS_QOS_MAXIMUM_PRIORITIES 8
  #define NDIS_QOS_MAXIMUM_TRAFFIC_CLASSES 8
  
  #define NDIS_QOS_CAPABILITIES_STRICT_TSA_SUPPORTED 0x00000001
  #define NDIS_QOS_CAPABILITIES_MACSEC_BYPASS_SUPPORTED 0x00000002
  #define NDIS_QOS_CAPABILITIES_CEE_DCBX_SUPPORTED 0x00000004
  #define NDIS_QOS_CAPABILITIES_IEEE_DCBX_SUPPORTED 0x00000008
  
  #define NDIS_QOS_CLASSIFICATION_SET_BY_MINIPORT_MASK 0xff000000
  #define NDIS_QOS_CLASSIFICATION_ENFORCED_BY_MINIPORT 0x01000000
  
  #define NDIS_QOS_CONDITION_RESERVED 0x0
  #define NDIS_QOS_CONDITION_DEFAULT 0x1
  #define NDIS_QOS_CONDITION_TCP_PORT 0x2
  #define NDIS_QOS_CONDITION_UDP_PORT 0x3
  #define NDIS_QOS_CONDITION_TCP_OR_UDP_PORT 0x4
  #define NDIS_QOS_CONDITION_ETHERTYPE 0x5
  #define NDIS_QOS_CONDITION_NETDIRECT_PORT 0x6
  #define NDIS_QOS_CONDITION_MAXIMUM 0x7
  
  #define NDIS_QOS_ACTION_PRIORITY 0x0
  #define NDIS_QOS_ACTION_MAXIMUM 0x1
  
  #define NDIS_QOS_PARAMETERS_ETS_CHANGED 0x00000001
  #define NDIS_QOS_PARAMETERS_ETS_CONFIGURED 0x00000002
  #define NDIS_QOS_PARAMETERS_PFC_CHANGED 0x00000100
  #define NDIS_QOS_PARAMETERS_PFC_CONFIGURED 0x00000200
  #define NDIS_QOS_PARAMETERS_CLASSIFICATION_CHANGED 0x00010000
  #define NDIS_QOS_PARAMETERS_CLASSIFICATION_CONFIGURED 0x00020000
  #define NDIS_QOS_PARAMETERS_WILLING 0x80000000
  
  #define NDIS_QOS_TSA_STRICT 0x0
  #define NDIS_QOS_TSA_CBS 0x1
  #define NDIS_QOS_TSA_ETS 0x2
  #define NDIS_QOS_TSA_MAXIMUM 0x3
  
  #define NDIS_PF_FUNCTION_ID (USHORT) -1
  #define NDIS_INVALID_VF_FUNCTION_ID (USHORT) -1
  #define NDIS_INVALID_RID (ULONG) -1
  #define NDIS_DEFAULT_VPORT_ID 0
  #define NDIS_DEFAULT_SWITCH_ID 0
  #define NDIS_INVALID_SWITCH_ID (ULONG) -1
  
  #define NDIS_NIC_SWITCH_PARAMETERS_CHANGE_MASK 0xffff0000
  #define NDIS_NIC_SWITCH_PARAMETERS_SWITCH_NAME_CHANGED 0x00010000
  
  #define NDIS_SRIOV_CAPS_SRIOV_SUPPORTED 0x00000001
  #define NDIS_SRIOV_CAPS_PF_MINIPORT 0x00000002
  #define NDIS_SRIOV_CAPS_VF_MINIPORT 0x00000004
  
  #define NDIS_NIC_SWITCH_VF_INFO_ARRAY_ENUM_ON_SPECIFIC_SWITCH 0x00000001
  
  #define NDIS_NIC_SWITCH_VPORT_PARAMS_LOOKAHEAD_SPLIT_ENABLED 0x00000001
  #define NDIS_NIC_SWITCH_VPORT_PARAMS_CHANGE_MASK 0xffff0000
  #define NDIS_NIC_SWITCH_VPORT_PARAMS_FLAGS_CHANGED 0x00010000
  #define NDIS_NIC_SWITCH_VPORT_PARAMS_NAME_CHANGED 0x00020000
  #define NDIS_NIC_SWITCH_VPORT_PARAMS_INT_MOD_CHANGED 0x00040000
  #define NDIS_NIC_SWITCH_VPORT_PARAMS_STATE_CHANGED 0x00080000
  #define NDIS_NIC_SWITCH_VPORT_PARAMS_PROCESSOR_AFFINITY_CHANGED 0x00100000
  
  #define NDIS_NIC_SWITCH_VPORT_INFO_ARRAY_ENUM_ON_SPECIFIC_FUNCTION 0x00000001
  #define NDIS_NIC_SWITCH_VPORT_INFO_ARRAY_ENUM_ON_SPECIFIC_SWITCH 0x00000002
  
  #define NDIS_NIC_SWITCH_VPORT_INFO_LOOKAHEAD_SPLIT_ENABLED 0x00000001
  
    DEFINE_GUID (GUID_NDIS_NDK_CAPABILITIES, 0x7969ba4d, 0xdd80, 0x4bc7, 0xb3, 0xe6, 0x68, 0x04, 0x39, 0x97, 0xe5, 0x19);
    DEFINE_GUID (GUID_NDIS_NDK_STATE, 0x530c69c9, 0x2f51, 0x49de, 0xa1, 0xaf, 0x08, 0x8d, 0x54, 0xff, 0xa4, 0x74);
  
  #define NDIS_NDK_CAPABILITIES_REVISION_1 1
  #define NDIS_NDK_STATISTICS_INFO_REVISION_1 1
  #define NDIS_NDK_CONNECTIONS_REVISION_1 1
  #define NDIS_NDK_LOCAL_ENDPOINTS_REVISION_1 1
  #define NDIS_QOS_CAPABILITIES_REVISION_1 1
  #define NDIS_QOS_CLASSIFICATION_ELEMENT_REVISION_1 1
  #define NDIS_QOS_PARAMETERS_REVISION_1 1
  #define NDIS_NIC_SWITCH_PARAMETERS_REVISION_1 1
  #define NDIS_NIC_SWITCH_DELETE_SWITCH_PARAMETERS_REVISION_1 1
  #define NDIS_NIC_SWITCH_INFO_REVISION_1 1
  #define NDIS_NIC_SWITCH_INFO_ARRAY_REVISION_1 1
  #define NDIS_NIC_SWITCH_VPORT_PARAMETERS_REVISION_1 1
  #define NDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS_REVISION_1 1
  #define NDIS_NIC_SWITCH_VPORT_INFO_REVISION_1 1
  #define NDIS_NIC_SWITCH_VPORT_INFO_ARRAY_REVISION_1 1
  #define NDIS_NIC_SWITCH_VF_PARAMETERS_REVISION_1 1
  #define NDIS_NIC_SWITCH_FREE_VF_PARAMETERS_REVISION_1 1
  #define NDIS_NIC_SWITCH_VF_INFO_REVISION_1 1
  #define NDIS_NIC_SWITCH_VF_INFO_ARRAY_REVISION_1 1
  #define NDIS_SRIOV_CAPABILITIES_REVISION_1 1
  #define NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS_REVISION_1 1
  #define NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS_REVISION_1 1
  #define NDIS_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS_REVISION_1 1
  #define NDIS_SRIOV_WRITE_VF_CONFIG_BLOCK_PARAMETERS_REVISION_1 1
  #define NDIS_SRIOV_RESET_VF_PARAMETERS_REVISION_1 1
  #define NDIS_SRIOV_SET_VF_POWER_STATE_PARAMETERS_REVISION_1 1
  #define NDIS_SRIOV_CONFIG_STATE_PARAMETERS_REVISION_1 1
  #define NDIS_SRIOV_VF_VENDOR_DEVICE_ID_INFO_REVISION_1 1
  #define NDIS_SRIOV_PROBED_BARS_INFO_REVISION_1 1
  #define NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS_REVISION_1 1
  #define NDIS_SRIOV_BAR_RESOURCES_INFO_REVISION_1 1
  #define NDIS_SRIOV_PF_LUID_INFO_REVISION_1 1
  #define NDIS_SRIOV_VF_SERIAL_NUMBER_INFO_REVISION_1 1
  #define NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO_REVISION_1 1
  #define NDIS_SWITCH_OBJECT_SERIALIZATION_VERSION_1 1
  #define NDIS_SWITCH_PORT_PROPERTY_SECURITY_REVISION_1 1
  #define NDIS_SWITCH_PORT_PROPERTY_VLAN_REVISION_1 1
  #define NDIS_SWITCH_PORT_PROPERTY_PROFILE_REVISION_1 1
  #define NDIS_SWITCH_PORT_PROPERTY_CUSTOM_REVISION_1 1
  #define NDIS_SWITCH_PORT_PROPERTY_PARAMETERS_REVISION_1 1
  #define NDIS_SWITCH_PORT_PROPERTY_DELETE_PARAMETERS_REVISION_1 1
  #define NDIS_SWITCH_PORT_PROPERTY_ENUM_PARAMETERS_REVISION_1 1
  #define NDIS_SWITCH_PORT_PROPERTY_ENUM_INFO_REVISION_1 1
  #define NDIS_SWITCH_PROPERTY_PARAMETERS_REVISION_1 1
  #define NDIS_SWITCH_PROPERTY_CUSTOM_REVISION_1 1
  #define NDIS_SWITCH_PORT_FEATURE_STATUS_PARAMETERS_REVISION_1 1
  #define NDIS_SWITCH_PORT_FEATURE_STATUS_CUSTOM_REVISION_1 1
  #define NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS_REVISION_1 1
  #define NDIS_SWITCH_PROPERTY_ENUM_INFO_REVISION_1 1
  #define NDIS_SWITCH_PROPERTY_ENUM_PARAMETERS_REVISION_1 1
  #define NDIS_SWITCH_FEATURE_STATUS_CUSTOM_REVISION_1 1
  #define NDIS_SWITCH_PORT_PARAMETERS_REVISION_1 1
  #define NDIS_SWITCH_PORT_ARRAY_REVISION_1 1
  #define NDIS_SWITCH_PARAMETERS_REVISION_1 1
  #define NDIS_SWITCH_NIC_PARAMETERS_REVISION_1 1
  #define NDIS_SWITCH_NIC_ARRAY_REVISION_1 1
  #define NDIS_SWITCH_NIC_OID_REQUEST_REVISION_1 1
  #define NDIS_SWITCH_FEATURE_STATUS_PARAMETERS_REVISION_1 1
  #define NDIS_SWITCH_NIC_SAVE_STATE_REVISION_1 1
  
  #define NDIS_SIZEOF_NDK_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NDK_CAPABILITIES, NdkInfo)
  #define NDIS_SIZEOF_NDK_STATISTICS_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NDK_STATISTICS_INFO, CounterSet)
  #define NDIS_SIZEOF_NDK_CONNECTIONS_REVISION_1(n) FIELD_OFFSET (NDIS_NDK_CONNECTIONS, Connections[n])
  #define NDIS_SIZEOF_NDK_LOCAL_ENDPOINTS_REVISION_1(n) FIELD_OFFSET (NDIS_NDK_LOCAL_ENDPOINTS, LocalEndpoints[n])
  #define NDIS_SIZEOF_QOS_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_QOS_CAPABILITIES, MaxNumPfcEnabledTrafficClasses)
  #define NDIS_SIZEOF_QOS_CLASSIFICATION_ELEMENT_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_QOS_CLASSIFICATION_ELEMENT, ActionField)
  #define NDIS_SIZEOF_QOS_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_QOS_PARAMETERS, FirstClassificationElementOffset)
  #define NDIS_SIZEOF_NIC_SWITCH_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_PARAMETERS, NdisReserved3)
  #define NDIS_SIZEOF_NIC_SWITCH_DELETE_SWITCH_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_DELETE_SWITCH_PARAMETERS, SwitchId)
  #define NDIS_SIZEOF_NIC_SWITCH_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_INFO, NumActiveNonDefaultVPortVlanIds)
  #define NDIS_SIZEOF_NIC_SWITCH_INFO_ARRAY_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_INFO_ARRAY, ElementSize)
  #define NDIS_SIZEOF_NIC_SWITCH_VPORT_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_VPORT_PARAMETERS, LookaheadSize)
  #define NDIS_SIZEOF_NIC_SWITCH_DELETE_VPORT_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS, VPortId)
  #define NDIS_SIZEOF_NIC_SWITCH_VPORT_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_VPORT_INFO, NumFilters)
  #define NDIS_SIZEOF_NIC_SWITCH_VPORT_INFO_ARRAY_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_VPORT_INFO_ARRAY, ElementSize)
  #define NDIS_SIZEOF_NIC_SWITCH_VF_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_VF_PARAMETERS, RequestorId)
  #define NDIS_SIZEOF_NIC_SWITCH_FREE_VF_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_FREE_VF_PARAMETERS, VFId)
  #define NDIS_SIZEOF_NIC_SWITCH_VF_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_VF_INFO, RequestorId)
  #define NDIS_SIZEOF_NIC_SWITCH_VF_INFO_ARRAY_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_NIC_SWITCH_VF_INFO_ARRAY, ElementSize)
  #define NDIS_SIZEOF_SRIOV_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_CAPABILITIES, SriovCapabilities)
  #define NDIS_SIZEOF_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS, BufferOffset)
  #define NDIS_SIZEOF_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS, BufferOffset)
  #define NDIS_SIZEOF_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS, BufferOffset)
  #define NDIS_SIZEOF_SRIOV_WRITE_VF_CONFIG_BLOCK_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_WRITE_VF_CONFIG_BLOCK_PARAMETERS, BufferOffset)
  #define NDIS_SIZEOF_SRIOV_RESET_VF_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_RESET_VF_PARAMETERS, VFId)
  #define NDIS_SIZEOF_SRIOV_SET_VF_POWER_STATE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_SET_VF_POWER_STATE_PARAMETERS, WakeEnable)
  #define NDIS_SIZEOF_SRIOV_CONFIG_STATE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_CONFIG_STATE_PARAMETERS, Length)
  #define NDIS_SIZEOF_SRIOV_VF_VENDOR_DEVICE_ID_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_VF_VENDOR_DEVICE_ID_INFO, DeviceId)
  #define NDIS_SIZEOF_SRIOV_PROBED_BARS_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_PROBED_BARS_INFO, BaseRegisterValuesOffset)
  #define NDIS_SIZEOF_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS, DestVPortId)
  #define NDIS_SIZEOF_SRIOV_BAR_RESOURCES_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_BAR_RESOURCES_INFO, BarResourcesOffset)
  #define NDIS_SIZEOF_SRIOV_PF_LUID_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_PF_LUID_INFO, Luid)
  #define NDIS_SIZEOF_SRIOV_VF_SERIAL_NUMBER_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_VF_SERIAL_NUMBER_INFO, SerialNumber)
  #define NDIS_SIZEOF_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO, BlockMask)
  #define NDIS_SIZEOF_NDIS_SWITCH_PORT_PROPERTY_SECURITY_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_PROPERTY_SECURITY, AllowTeaming)
  #define NDIS_SIZEOF_NDIS_SWITCH_PORT_PROPERTY_VLAN_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_PROPERTY_VLAN, VlanProperties)
  #define NDIS_SIZEOF_NDIS_SWITCH_PORT_PROPERTY_PROFILE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_PROPERTY_PROFILE, CdnLabel)
  #define NDIS_SIZEOF_NDIS_SWITCH_PORT_PROPERTY_CUSTOM_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_PROPERTY_CUSTOM, PropertyBufferOffset)
  #define NDIS_SIZEOF_NDIS_SWITCH_PORT_PROPERTY_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_PROPERTY_PARAMETERS, Reserved)
  #define NDIS_SIZEOF_NDIS_SWITCH_PORT_PROPERTY_ENUM_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_PROPERTY_ENUM_PARAMETERS, Reserved)
  #define NDIS_SIZEOF_NDIS_SWITCH_PORT_PROPERTY_ENUM_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_PROPERTY_ENUM_INFO, PropertyBufferOffset)
  #define NDIS_SIZEOF_NDIS_SWITCH_PORT_FEATURE_STATUS_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_FEATURE_STATUS_PARAMETERS, Reserved)
  #define NDIS_SIZEOF_NDIS_SWITCH_PORT_FEATURE_STATUS_CUSTOM_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_FEATURE_STATUS_CUSTOM, FeatureStatusBufferOffset)
  #define NDIS_SIZEOF_NDIS_SWITCH_PROPERTY_CUSTOM_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PROPERTY_CUSTOM, PropertyBufferOffset)
  #define NDIS_SIZEOF_NDIS_SWITCH_PORT_PROPERTY_DELETE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_PROPERTY_DELETE_PARAMETERS, PropertyInstanceId)
  #define NDIS_SIZEOF_NDIS_SWITCH_PROPERTY_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PROPERTY_PARAMETERS, PropertyBufferOffset)
  #define NDIS_SIZEOF_NDIS_SWITCH_PROPERTY_ENUM_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PROPERTY_ENUM_INFO, PropertyBufferOffset)
  #define NDIS_SIZEOF_NDIS_SWITCH_PROPERTY_ENUM_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PROPERTY_ENUM_PARAMETERS, NumProperties)
  #define NDIS_SIZEOF_NDIS_SWITCH_FEATURE_STATUS_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_FEATURE_STATUS_PARAMETERS, FeatureStatusBufferLength)
  #define NDIS_SIZEOF_NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS, PropertyInstanceId)
  #define NDIS_SIZEOF_NDIS_SWITCH_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PARAMETERS, IsActive)
  #define NDIS_SIZEOF_NDIS_SWITCH_FEATURE_STATUS_CUSTOM_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_FEATURE_STATUS_CUSTOM, FeatureStatusCustomBufferOffset)
  #define NDIS_SIZEOF_NDIS_SWITCH_PORT_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_PARAMETERS, PortState)
  #define NDIS_SIZEOF_NDIS_SWITCH_PORT_ARRAY_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_PORT_ARRAY, ElementSize)
  #define NDIS_SIZEOF_NDIS_SWITCH_NIC_OID_REQUEST_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_NIC_OID_REQUEST, OidRequest)
  #define NDIS_SIZEOF_NDIS_SWITCH_NIC_SAVE_STATE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_NIC_SAVE_STATE, SaveDataOffset)
  #define NDIS_SIZEOF_NDIS_SWITCH_NIC_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_NIC_PARAMETERS, VFAssigned)
  #define NDIS_SIZEOF_NDIS_SWITCH_NIC_ARRAY_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_SWITCH_NIC_ARRAY, ElementSize)
  
  #define NDIS_SWITCH_PORT_PROPERTY_CUSTOM_GET_BUFFER(PPROPC) ((PVOID) ((PUCHAR) (PPROPC) + (PPROPC)->PropertyBufferOffset))
  #define NDIS_SWITCH_PORT_PROPERTY_PARAMETERS_GET_PROPERTY(PPARM) ((PVOID) ((PUCHAR) (PPARM) + (PPARM)->PropertyBufferOffset))
  #define NDIS_SWITCH_CREATE_PROPERTY_VERSION(VMAJOR, VMINOR) (((VMAJOR) << 8) + (VMINOR))
  #define NDIS_SWITCH_PORT_PROPERTY_ENUM_PARAMETERS_GET_FIRST_INFO(PEPARM) ((PNDIS_SWITCH_PORT_PROPERTY_ENUM_INFO) ((PUCHAR) (PEPARM) + (PEPARM)->FirstPropertyOffset))
  #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)))
  #define NDIS_SWITCH_PORT_PROPERTY_ENUM_INFO_GET_PROPERTY(PEINFO) ((PVOID) ((PUCHAR) (PEINFO) + (PEINFO)->PropertyBufferOffset))
  #define NDIS_SWITCH_CREATE_FEATURE_STATUS_VERSION(VMAJOR, VMINOR) (((VMAJOR) << 8) + (VMINOR))
  #define NDIS_SWITCH_PROPERTY_CUSTOM_GET_BUFFER(SWPROPC) ((PVOID) ((PUCHAR) (SWPROPC) + (SWPROPC)->PropertyBufferOffset))
  #define NDIS_SWITCH_PROPERTY_PARAMETERS_GET_PROPERTY(SWPARA) ((PVOID) ((PUCHAR) (SWPARA) + (SWPARA)->PropertyBufferOffset))
  #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)))
  #define NDIS_SWITCH_PROPERTY_ENUM_INFO_GET_PROPERTY(SWEINFO) ((PVOID) ((PUCHAR) (SWEINFO) + (SWEINFO)->PropertyBufferOffset))
  #define NDIS_SWITCH_PROPERTY_ENUM_PARAMETERS_GET_FIRST_INFO(SWEPARM) ((PNDIS_SWITCH_PROPERTY_ENUM_INFO) ((PUCHAR) (SWEPARM) + (SWEPARM)->FirstPropertyOffset))
  #define NDIS_SWITCH_PORT_AT_ARRAY_INDEX(PA, IDX) ((PNDIS_SWITCH_PORT_PARAMETERS) ((PUCHAR) (PA) + (PA)->FirstElementOffset + ((PA)->ElementSize * (IDX))))
  #define NDIS_SWITCH_NIC_AT_ARRAY_INDEX(NA, IDX) ((PNDIS_SWITCH_NIC_PARAMETERS) ((PUCHAR) (NA) + (NA)->FirstElementOffset + ((NA)->ElementSize * (IDX))))
  
  #include <ndkinfo.h>
  #include <ws2def.h>
  #ifndef __CYGWIN__
  #include <ws2ipdef.h>
  #endif
  
    typedef struct _NDIS_NDK_PERFORMANCE_COUNTERS {
      ULONG64 Connect;
      ULONG64 Accept;
      ULONG64 ConnectFailure;
      ULONG64 ConnectionError;
      ULONG64 ActiveConnection;
      ULONG64 Reserved01;
      ULONG64 Reserved02;
      ULONG64 Reserved03;
      ULONG64 Reserved04;
      ULONG64 Reserved05;
      ULONG64 Reserved06;
      ULONG64 Reserved07;
      ULONG64 Reserved08;
      ULONG64 Reserved09;
      ULONG64 Reserved10;
      ULONG64 Reserved11;
      ULONG64 Reserved12;
      ULONG64 Reserved13;
      ULONG64 Reserved14;
      ULONG64 Reserved15;
      ULONG64 Reserved16;
      ULONG64 Reserved17;
      ULONG64 Reserved18;
      ULONG64 Reserved19;
      ULONG64 Reserved20;
      ULONG64 CQError;
      ULONG64 RDMAInOctets;
      ULONG64 RDMAOutOctets;
      ULONG64 RDMAInFrames;
      ULONG64 RDMAOutFrames;
    } NDIS_NDK_PERFORMANCE_COUNTERS, *PNDIS_NDK_PERFORMANCE_COUNTERS;
  
    typedef struct _NDIS_NDK_CAPABILITIES {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      ULONG MaxQpCount;
      ULONG MaxCqCount;
      ULONG MaxMrCount;
      ULONG MaxPdCount;
      ULONG MaxInboundReadLimit;
      ULONG MaxOutboundReadLimit;
      ULONG MaxMwCount;
      ULONG MaxSrqCount;
      ULONG64 MissingCounterMask;
      NDK_ADAPTER_INFO *NdkInfo;
    } NDIS_NDK_CAPABILITIES, *PNDIS_NDK_CAPABILITIES;
  
    typedef struct _NDK_WMI_ADAPTER_INFO {
      NDK_VERSION Version;
      UINT32 VendorId;
      UINT32 DeviceId;
      ULONGLONG MaxRegistrationSize;
      ULONGLONG MaxWindowSize;
      ULONG FRMRPageCount;
      ULONG MaxInitiatorRequestSge;
      ULONG MaxReceiveRequestSge;
      ULONG MaxReadRequestSge;
      ULONG MaxTransferLength;
      ULONG MaxInlineDataSize;
      ULONG MaxInboundReadLimit;
      ULONG MaxOutboundReadLimit;
      ULONG MaxReceiveQueueDepth;
      ULONG MaxInitiatorQueueDepth;
      ULONG MaxSrqDepth;
      ULONG MaxCqDepth;
      ULONG LargeRequestThreshold;
      ULONG MaxCallerData;
      ULONG MaxCalleeData;
      ULONG AdapterFlags;
    } NDK_WMI_ADAPTER_INFO, *PNDK_WMI_ADAPTER_INFO;
  
    typedef struct _NDIS_WMI_NDK_CAPABILITIES {
      ULONG MaxQpCount;
      ULONG MaxCqCount;
      ULONG MaxMrCount;
      ULONG MaxPdCount;
      ULONG MaxInboundReadLimit;
      ULONG MaxOutboundReadLimit;
      ULONG MaxMwCount;
      ULONG MaxSrqCount;
      ULONG64 MissingCounterMask;
      NDK_WMI_ADAPTER_INFO NdkInfo;
    } NDIS_WMI_NDK_CAPABILITIES, *PNDIS_WMI_NDK_CAPABILITIES;
  
    typedef struct _NDIS_NDK_STATISTICS_INFO {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_NDK_PERFORMANCE_COUNTERS CounterSet;
    } NDIS_NDK_STATISTICS_INFO;
  
    typedef struct _NDIS_NDK_CONNECTION_ENTRY {
      SOCKADDR_INET Local;
      SOCKADDR_INET Remote;
      BOOLEAN UserModeOwner;
      ULONG OwnerPid;
    } NDIS_NDK_CONNECTION_ENTRY;
  
    typedef struct _NDIS_NDK_CONNECTIONS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      ULONG Count;
      BOOLEAN NDConnectionsMappedtoTCPConnections;
      NDIS_NDK_CONNECTION_ENTRY Connections[1];
    } NDIS_NDK_CONNECTIONS;
  
    typedef struct _NDIS_NDK_LOCAL_ENDPOINT_ENTRY {
      SOCKADDR_INET Local;
      BOOLEAN UserModeOwner;
      BOOLEAN Listener;
      ULONG OwnerPid;
    } NDIS_NDK_LOCAL_ENDPOINT_ENTRY;
  
    typedef struct _NDIS_NDK_LOCAL_ENDPOINTS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      ULONG Count;
      BOOLEAN NDLocalEndpointsMappedtoTCPLocalEndpoints;
      NDIS_NDK_LOCAL_ENDPOINT_ENTRY LocalEndpoints[1];
    } NDIS_NDK_LOCAL_ENDPOINTS;
  
    typedef struct _NDIS_QOS_CAPABILITIES {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      ULONG MaxNumTrafficClasses;
      ULONG MaxNumEtsCapableTrafficClasses;
      ULONG MaxNumPfcEnabledTrafficClasses;
    } NDIS_QOS_CAPABILITIES, *PNDIS_QOS_CAPABILITIES;
  
    typedef struct _NDIS_QOS_CLASSIFICATION_ELEMENT {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      USHORT ConditionSelector;
      USHORT ConditionField;
      USHORT ActionSelector;
      USHORT ActionField;
    } NDIS_QOS_CLASSIFICATION_ELEMENT, *PNDIS_QOS_CLASSIFICATION_ELEMENT;
  
    typedef struct _NDIS_QOS_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      ULONG NumTrafficClasses;
      UCHAR PriorityAssignmentTable[NDIS_QOS_MAXIMUM_PRIORITIES];
      UCHAR TcBandwidthAssignmentTable[NDIS_QOS_MAXIMUM_TRAFFIC_CLASSES];
      UCHAR TsaAssignmentTable[NDIS_QOS_MAXIMUM_TRAFFIC_CLASSES];
      ULONG PfcEnable;
      ULONG NumClassificationElements;
      ULONG ClassificationElementSize;
      ULONG FirstClassificationElementOffset;
    } NDIS_QOS_PARAMETERS, *PNDIS_QOS_PARAMETERS;
  
    typedef NDIS_IF_COUNTED_STRING NDIS_NIC_SWITCH_FRIENDLYNAME, *PNDIS_NIC_SWITCH_FRIENDLYNAME;
    typedef NDIS_IF_COUNTED_STRING NDIS_VPORT_NAME, *PNDIS_VPORT_NAME;
    typedef ULONG NDIS_NIC_SWITCH_ID, *PNDIS_NIC_SWITCH_ID;
    typedef USHORT NDIS_SRIOV_FUNCTION_ID, *PNDIS_SRIOV_FUNCTION_ID;
    typedef ULONG NDIS_VF_RID, *PNDIS_VF_RID;
  
    typedef enum _NDIS_NIC_SWITCH_TYPE {
      NdisNicSwitchTypeUnspecified,
      NdisNicSwitchTypeExternal,
      NdisNicSwitchTypeMax
    } NDIS_NIC_SWITCH_TYPE, *PNDIS_NIC_SWITCH_TYPE;
  
    typedef struct _NDIS_NIC_SWITCH_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_NIC_SWITCH_TYPE SwitchType;
      NDIS_NIC_SWITCH_ID SwitchId;
      NDIS_NIC_SWITCH_FRIENDLYNAME SwitchFriendlyName;
      ULONG NumVFs;
      ULONG NdisReserved1;
      ULONG NdisReserved2;
      ULONG NdisReserved3;
    } NDIS_NIC_SWITCH_PARAMETERS, *PNDIS_NIC_SWITCH_PARAMETERS;
  
    typedef struct _NDIS_NIC_SWITCH_DELETE_SWITCH_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_NIC_SWITCH_ID SwitchId;
    } NDIS_NIC_SWITCH_DELETE_SWITCH_PARAMETERS, *PNDIS_NIC_SWITCH_DELETE_SWITCH_PARAMETERS;
  
    typedef struct _NDIS_NIC_SWITCH_INFO {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_NIC_SWITCH_TYPE SwitchType;
      NDIS_NIC_SWITCH_ID SwitchId;
      NDIS_NIC_SWITCH_FRIENDLYNAME SwitchFriendlyName;
      ULONG NumVFs;
      ULONG NumAllocatedVFs;
      ULONG NumVPorts;
      ULONG NumActiveVPorts;
      ULONG NumQueuePairsForDefaultVPort;
      ULONG NumQueuePairsForNonDefaultVPorts;
      ULONG NumActiveDefaultVPortMacAddresses;
      ULONG NumActiveNonDefaultVPortMacAddresses;
      ULONG NumActiveDefaultVPortVlanIds;
      ULONG NumActiveNonDefaultVPortVlanIds;
    } NDIS_NIC_SWITCH_INFO, *PNDIS_NIC_SWITCH_INFO;
  
    typedef struct _NDIS_NIC_SWITCH_INFO_ARRAY {
      NDIS_OBJECT_HEADER Header;
      ULONG FirstElementOffset;
      ULONG NumElements;
      ULONG ElementSize;
    } NDIS_NIC_SWITCH_INFO_ARRAY, *PNDIS_NIC_SWITCH_INFO_ARRAY;
  
    typedef enum _NDIS_NIC_SWITCH_VPORT_STATE {
      NdisNicSwitchVPortStateUndefined,
      NdisNicSwitchVPortStateActivated,
      NdisNicSwitchVPortStateDeactivated,
      NdisNicSwitchVPortStateMaximum
    } NDIS_NIC_SWITCH_VPORT_STATE, *PNDIS_NIC_SWITCH_VPORT_STATE;
  
    typedef enum _NDIS_NIC_SWITCH_VPORT_INTERRUPT_MODERATION {
      NdisNicSwitchVPortInterruptModerationUndefined = 0,
      NdisNicSwitchVPortInterruptModerationAdaptive = 1,
      NdisNicSwitchVPortInterruptModerationOff = 2,
      NdisNicSwitchVPortInterruptModerationLow = 100,
      NdisNicSwitchVPortInterruptModerationMedium = 200,
      NdisNicSwitchVPortInterruptModerationHigh = 300,
    } NDIS_NIC_SWITCH_VPORT_INTERRUPT_MODERATION, *PNDIS_NIC_SWITCH_VPORT_INTERRUPT_MODERATION;
  
    typedef struct _NDIS_NIC_SWITCH_VPORT_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_NIC_SWITCH_ID SwitchId;
      NDIS_NIC_SWITCH_VPORT_ID VPortId;
      NDIS_VPORT_NAME VPortName;
      NDIS_SRIOV_FUNCTION_ID AttachedFunctionId;
      ULONG NumQueuePairs;
      NDIS_NIC_SWITCH_VPORT_INTERRUPT_MODERATION InterruptModeration;
      NDIS_NIC_SWITCH_VPORT_STATE VPortState;
      GROUP_AFFINITY ProcessorAffinity;
      ULONG LookaheadSize;
    } NDIS_NIC_SWITCH_VPORT_PARAMETERS, *PNDIS_NIC_SWITCH_VPORT_PARAMETERS;
  
    typedef struct _NDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_NIC_SWITCH_VPORT_ID VPortId;
    } NDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS, *PNDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS;
  
    typedef struct _NDIS_NIC_SWITCH_VPORT_INFO {
      NDIS_OBJECT_HEADER Header;
      NDIS_NIC_SWITCH_VPORT_ID VPortId;
      ULONG Flags;
      NDIS_NIC_SWITCH_ID SwitchId;
      NDIS_VPORT_NAME VPortName;
      NDIS_SRIOV_FUNCTION_ID AttachedFunctionId;
      ULONG NumQueuePairs;
      NDIS_NIC_SWITCH_VPORT_INTERRUPT_MODERATION InterruptModeration;
      NDIS_NIC_SWITCH_VPORT_STATE VPortState;
      GROUP_AFFINITY ProcessorAffinity;
      ULONG LookaheadSize;
      ULONG NumFilters;
    } NDIS_NIC_SWITCH_VPORT_INFO, *PNDIS_NIC_SWITCH_VPORT_INFO;
  
    typedef struct _NDIS_NIC_SWITCH_VPORT_INFO_ARRAY {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_NIC_SWITCH_ID SwitchId;
      NDIS_SRIOV_FUNCTION_ID AttachedFunctionId;
      ULONG FirstElementOffset;
      ULONG NumElements;
      ULONG ElementSize;
    } NDIS_NIC_SWITCH_VPORT_INFO_ARRAY, *PNDIS_NIC_SWITCH_VPORT_INFO_ARRAY;
  
    typedef struct _NDIS_NIC_SWITCH_VF_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_NIC_SWITCH_ID SwitchId;
      NDIS_VM_NAME VMName;
      NDIS_VM_FRIENDLYNAME VMFriendlyName;
      NDIS_SWITCH_NIC_NAME NicName;
      USHORT MacAddressLength;
      UCHAR PermanentMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH];
      UCHAR CurrentMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH];
      NDIS_SRIOV_FUNCTION_ID VFId;
      NDIS_VF_RID RequestorId;
    } NDIS_NIC_SWITCH_VF_PARAMETERS, *PNDIS_NIC_SWITCH_VF_PARAMETERS;
  
    typedef struct _NDIS_NIC_SWITCH_FREE_VF_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_SRIOV_FUNCTION_ID VFId;
    } NDIS_NIC_SWITCH_FREE_VF_PARAMETERS, *PNDIS_NIC_SWITCH_FREE_VF_PARAMETERS;
  
    typedef struct _NDIS_NIC_SWITCH_VF_INFO {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_NIC_SWITCH_ID SwitchId;
      NDIS_VM_NAME VMName;
      NDIS_VM_FRIENDLYNAME VMFriendlyName;
      NDIS_SWITCH_NIC_NAME NicName;
      USHORT MacAddressLength;
      UCHAR PermanentMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH];
      UCHAR CurrentMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH];
      NDIS_SRIOV_FUNCTION_ID VFId;
      NDIS_VF_RID RequestorId;
    } NDIS_NIC_SWITCH_VF_INFO, *PNDIS_NIC_SWITCH_VF_INFO;
  
    typedef struct _NDIS_NIC_SWITCH_VF_INFO_ARRAY {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_NIC_SWITCH_ID SwitchId;
      ULONG FirstElementOffset;
      ULONG NumElements;
      ULONG ElementSize;
    } NDIS_NIC_SWITCH_VF_INFO_ARRAY, *PNDIS_NIC_SWITCH_VF_INFO_ARRAY;
  
    typedef struct _NDIS_SRIOV_CAPABILITIES {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      ULONG SriovCapabilities;
    } NDIS_SRIOV_CAPABILITIES, *PNDIS_SRIOV_CAPABILITIES;
  
    typedef struct _NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      NDIS_SRIOV_FUNCTION_ID VFId;
      ULONG Offset;
      ULONG Length;
      ULONG BufferOffset;
    } NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS, *PNDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS;
  
    typedef struct _NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      NDIS_SRIOV_FUNCTION_ID VFId;
      ULONG Offset;
      ULONG Length;
      ULONG BufferOffset;
    } NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS, *PNDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS;
  
    typedef struct _NDIS_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      NDIS_SRIOV_FUNCTION_ID VFId;
      ULONG BlockId;
      ULONG Length;
      ULONG BufferOffset;
    } NDIS_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS, *PNDIS_SRIOV_READ_VF_CONFIG_BLOCK_PARAMETERS;
  
    typedef struct _NDIS_SRIOV_WRITE_VF_CONFIG_BLOCK_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      NDIS_SRIOV_FUNCTION_ID VFId;
      ULONG BlockId;
      ULONG Length;
      ULONG BufferOffset;
    } NDIS_SRIOV_WRITE_VF_CONFIG_BLOCK_PARAMETERS, *PNDIS_SRIOV_WRITE_VF_CONFIG_BLOCK_PARAMETERS;
  
    typedef struct _NDIS_SRIOV_RESET_VF_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      NDIS_SRIOV_FUNCTION_ID VFId;
    } NDIS_SRIOV_RESET_VF_PARAMETERS, *PNDIS_SRIOV_RESET_VF_PARAMETERS;
  
    typedef struct _NDIS_SRIOV_SET_VF_POWER_STATE_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      NDIS_SRIOV_FUNCTION_ID VFId;
      NDIS_DEVICE_POWER_STATE PowerState;
      BOOLEAN WakeEnable;
    } NDIS_SRIOV_SET_VF_POWER_STATE_PARAMETERS, *PNDIS_SRIOV_SET_VF_POWER_STATE_PARAMETERS;
  
    typedef struct _NDIS_SRIOV_CONFIG_STATE_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG BlockId;
      ULONG Length;
    } NDIS_SRIOV_CONFIG_STATE_PARAMETERS, *PNDIS_SRIOV_CONFIG_STATE_PARAMETERS;
  
    typedef struct _NDIS_SRIOV_VF_VENDOR_DEVICE_ID_INFO {
      NDIS_OBJECT_HEADER Header;
      NDIS_SRIOV_FUNCTION_ID VFId;
      USHORT VendorId;
      USHORT DeviceId;
    } NDIS_SRIOV_VF_VENDOR_DEVICE_ID_INFO, *PNDIS_SRIOV_VF_VENDOR_DEVICE_ID_INFO;
  
    typedef struct _NDIS_SRIOV_PROBED_BARS_INFO {
      NDIS_OBJECT_HEADER Header;
      ULONG BaseRegisterValuesOffset;
    } NDIS_SRIOV_PROBED_BARS_INFO, *PNDIS_SRIOV_PROBED_BARS_INFO;
  
    typedef struct _NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      NDIS_RECEIVE_FILTER_ID FilterId;
      NDIS_RECEIVE_QUEUE_ID SourceQueueId;
      NDIS_NIC_SWITCH_VPORT_ID SourceVPortId;
      NDIS_RECEIVE_QUEUE_ID DestQueueId;
      NDIS_NIC_SWITCH_VPORT_ID DestVPortId;
    } NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS, *PNDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS;
  
    typedef struct _NDIS_SRIOV_BAR_RESOURCES_INFO {
      NDIS_OBJECT_HEADER Header;
      NDIS_SRIOV_FUNCTION_ID VFId;
      USHORT BarIndex;
      ULONG BarResourcesOffset;
    } NDIS_SRIOV_BAR_RESOURCES_INFO, *PNDIS_SRIOV_BAR_RESOURCES_INFO;
  
    typedef struct _NDIS_SRIOV_PF_LUID_INFO {
      NDIS_OBJECT_HEADER Header;
      LUID Luid;
    } NDIS_SRIOV_PF_LUID_INFO, *PNDIS_SRIOV_PF_LUID_INFO;
  
    typedef struct _NDIS_SRIOV_VF_SERIAL_NUMBER_INFO {
      NDIS_OBJECT_HEADER Header;
      ULONG SerialNumber;
    } NDIS_SRIOV_VF_SERIAL_NUMBER_INFO, *PNDIS_SRIOV_VF_SERIAL_NUMBER_INFO;
  
    typedef struct _NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO {
      NDIS_OBJECT_HEADER Header;
      ULONG64 BlockMask;
    } NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO, *PNDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO;
  
    typedef GUID NDIS_SWITCH_OBJECT_INSTANCE_ID, *PNDIS_SWITCH_OBJECT_INSTANCE_ID;
    typedef GUID NDIS_SWITCH_OBJECT_ID, *PNDIS_SWITCH_OBJECT_ID;
    typedef USHORT NDIS_SWITCH_OBJECT_VERSION, *PNDIS_SWITCH_OBJECT_VERSION;
    typedef USHORT NDIS_SWITCH_OBJECT_SERIALIZATION_VERSION, *PNDIS_SWITCH_OBJECT_SERIALIZATION_VERSION;
  #ifndef _NDIS_SWITCH_PORT_ID
  #define _NDIS_SWITCH_PORT_ID NDIS_SWITCH_PORT_ID
    typedef UINT32 NDIS_SWITCH_PORT_ID, *PNDIS_SWITCH_PORT_ID;
    typedef USHORT NDIS_SWITCH_NIC_INDEX, *PNDIS_SWITCH_NIC_INDEX;
  #endif
  
    typedef enum _NDIS_SWITCH_PORT_PROPERTY_TYPE {
      NdisSwitchPortPropertyTypeUndefined,
      NdisSwitchPortPropertyTypeCustom,
      NdisSwitchPortPropertyTypeSecurity,
      NdisSwitchPortPropertyTypeVlan,
      NdisSwitchPortPropertyTypeProfile,
      NdisSwitchPortPropertyTypeMaximum
    } NDIS_SWITCH_PORT_PROPERTY_TYPE, *PNDIS_SWITCH_PORT_PROPERTY_TYPE;
  
    typedef struct _NDIS_SWITCH_PORT_PROPERTY_SECURITY {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      BOOLEAN AllowMacSpoofing;
      BOOLEAN AllowIeeePriorityTag;
      UINT32 VirtualSubnetId;
      BOOLEAN AllowTeaming;
    } NDIS_SWITCH_PORT_PROPERTY_SECURITY, *PNDIS_SWITCH_PORT_PROPERTY_SECURITY;
  
    typedef enum _NDIS_SWITCH_PORT_VLAN_MODE {
      NdisSwitchPortVlanModeUnknown = 0,
      NdisSwitchPortVlanModeAccess = 1,
      NdisSwitchPortVlanModeTrunk = 2,
      NdisSwitchPortVlanModePrivate = 3,
      NdisSwitchPortVlanModeMax = 4
    } NDIS_SWITCH_PORT_VLAN_MODE, *PNDIS_SWITCH_PORT_VLAN_MODE;
  
    typedef enum _NDIS_SWITCH_PORT_PVLAN_MODE {
      NdisSwitchPortPvlanModeUndefined = 0,
      NdisSwitchPortPvlanModeIsolated,
      NdisSwitchPortPvlanModeCommunity,
      NdisSwitchPortPvlanModePromiscuous
    } NDIS_SWITCH_PORT_PVLAN_MODE, *PNDIS_SWITCH_PORT_PVLAN_MODE;
  
    typedef struct _NDIS_SWITCH_PORT_PROPERTY_VLAN {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_SWITCH_PORT_VLAN_MODE OperationMode;
      __C89_NAMELESS union {
        struct {
  	UINT16 AccessVlanId;
  	UINT16 NativeVlanId;
  	UINT64 PruneVlanIdArray[64];
  	UINT64 TrunkVlanIdArray[64];
        } VlanProperties;
        struct {
  	NDIS_SWITCH_PORT_PVLAN_MODE PvlanMode;
  	UINT16 PrimaryVlanId;
  	__C89_NAMELESS union {
  	  UINT16 SecondaryVlanId;
  	  UINT64 SecondaryVlanIdArray[64];
  	};
        } PvlanProperties;
      };
    } NDIS_SWITCH_PORT_PROPERTY_VLAN, *PNDIS_SWITCH_PORT_PROPERTY_VLAN;
  
    typedef struct _NDIS_SWITCH_PORT_PROPERTY_PROFILE {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_SWITCH_PORT_PROPERTY_PROFILE_NAME ProfileName;
      GUID ProfileId;
      NDIS_VENDOR_NAME VendorName;
      GUID VendorId;
      UINT32 ProfileData;
      GUID NetCfgInstanceId;
      struct {
        UINT32 PciSegmentNumber:16;
        UINT32 PciBusNumber:8;
        UINT32 PciDeviceNumber:5;
        UINT32 PciFunctionNumber:3;
      } PciLocation;
      UINT32 CdnLabelId;
      NDIS_SWITCH_PORT_PROPERTY_PROFILE_CDN_LABEL CdnLabel;
    } NDIS_SWITCH_PORT_PROPERTY_PROFILE, *PNDIS_SWITCH_PORT_PROPERTY_PROFILE;
  
    typedef struct _NDIS_SWITCH_PORT_PROPERTY_CUSTOM {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      ULONG PropertyBufferLength;
      ULONG PropertyBufferOffset;
    } NDIS_SWITCH_PORT_PROPERTY_CUSTOM, *PNDIS_SWITCH_PORT_PROPERTY_CUSTOM;
  
    typedef struct _NDIS_SWITCH_PORT_PROPERTY_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_SWITCH_PORT_ID PortId;
      NDIS_SWITCH_PORT_PROPERTY_TYPE PropertyType;
      NDIS_SWITCH_OBJECT_ID PropertyId;
      NDIS_SWITCH_OBJECT_VERSION PropertyVersion;
      NDIS_SWITCH_OBJECT_SERIALIZATION_VERSION SerializationVersion;
      NDIS_SWITCH_OBJECT_INSTANCE_ID PropertyInstanceId;
      ULONG PropertyBufferLength;
      ULONG PropertyBufferOffset;
      ULONG Reserved;
    } NDIS_SWITCH_PORT_PROPERTY_PARAMETERS, *PNDIS_SWITCH_PORT_PROPERTY_PARAMETERS;
  
    typedef struct _NDIS_SWITCH_PORT_PROPERTY_DELETE_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_SWITCH_PORT_ID PortId;
      NDIS_SWITCH_PORT_PROPERTY_TYPE PropertyType;
      NDIS_SWITCH_OBJECT_ID PropertyId;
      NDIS_SWITCH_OBJECT_INSTANCE_ID PropertyInstanceId;
    } NDIS_SWITCH_PORT_PROPERTY_DELETE_PARAMETERS, *PNDIS_SWITCH_PORT_PROPERTY_DELETE_PARAMETERS;
  
    typedef struct _NDIS_SWITCH_PORT_PROPERTY_ENUM_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_SWITCH_PORT_ID PortId;
      NDIS_SWITCH_PORT_PROPERTY_TYPE PropertyType;
      NDIS_SWITCH_OBJECT_ID PropertyId;
      NDIS_SWITCH_OBJECT_SERIALIZATION_VERSION SerializationVersion;
      ULONG FirstPropertyOffset;
      ULONG NumProperties;
      USHORT Reserved;
    } NDIS_SWITCH_PORT_PROPERTY_ENUM_PARAMETERS, *PNDIS_SWITCH_PORT_PROPERTY_ENUM_PARAMETERS;
  
    typedef struct _NDIS_SWITCH_PORT_PROPERTY_ENUM_INFO {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_SWITCH_OBJECT_VERSION PropertyVersion;
      NDIS_SWITCH_OBJECT_INSTANCE_ID PropertyInstanceId;
      ULONG QwordAlignedPropertyBufferLength;
      ULONG PropertyBufferLength;
      ULONG PropertyBufferOffset;
    } NDIS_SWITCH_PORT_PROPERTY_ENUM_INFO, *PNDIS_SWITCH_PORT_PROPERTY_ENUM_INFO;
  
    typedef enum _NDIS_SWITCH_PORT_FEATURE_STATUS_TYPE {
      NdisSwitchPortFeatureStatusTypeUndefined,
      NdisSwitchPortFeatureStatusTypeCustom,
      NdisSwitchPortFeatureStatusTypeMaximum
    } NDIS_SWITCH_PORT_FEATURE_STATUS_TYPE, *PNDIS_SWITCH_PORT_FEATURE_STATUS_TYPE;
  
    typedef struct _NDIS_SWITCH_PORT_FEATURE_STATUS_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_SWITCH_PORT_ID PortId;
      NDIS_SWITCH_PORT_FEATURE_STATUS_TYPE FeatureStatusType;
      NDIS_SWITCH_OBJECT_ID FeatureStatusId;
      NDIS_SWITCH_OBJECT_VERSION FeatureStatusVersion;
      NDIS_SWITCH_OBJECT_SERIALIZATION_VERSION SerializationVersion;
      NDIS_SWITCH_OBJECT_INSTANCE_ID FeatureStatusInstanceId;
      ULONG FeatureStatusBufferLength;
      ULONG FeatureStatusBufferOffset;
      ULONG Reserved;
    } NDIS_SWITCH_PORT_FEATURE_STATUS_PARAMETERS, *PNDIS_SWITCH_PORT_FEATURE_STATUS_PARAMETERS;
  
    typedef struct _NDIS_SWITCH_PORT_FEATURE_STATUS_CUSTOM {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      ULONG FeatureStatusBufferLength;
      ULONG FeatureStatusBufferOffset;
    } NDIS_SWITCH_PORT_FEATURE_STATUS_CUSTOM, *PNDIS_SWITCH_PORT_FEATURE_STATUS_CUSTOM;
  
    typedef enum _NDIS_SWITCH_PROPERTY_TYPE {
      NdisSwitchPropertyTypeUndefined,
      NdisSwitchPropertyTypeCustom,
      NdisSwitchPropertyTypeMaximum
    } NDIS_SWITCH_PROPERTY_TYPE, *PNDIS_SWITCH_PROPERTY_TYPE;
  
    typedef struct _NDIS_SWITCH_PROPERTY_CUSTOM {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      ULONG PropertyBufferLength;
      ULONG PropertyBufferOffset;
    } NDIS_SWITCH_PROPERTY_CUSTOM, *PNDIS_SWITCH_PROPERTY_CUSTOM;
  
    typedef struct _NDIS_SWITCH_PROPERTY_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_SWITCH_PROPERTY_TYPE PropertyType;
      NDIS_SWITCH_OBJECT_ID PropertyId;
      NDIS_SWITCH_OBJECT_VERSION PropertyVersion;
      NDIS_SWITCH_OBJECT_SERIALIZATION_VERSION SerializationVersion;
      NDIS_SWITCH_OBJECT_INSTANCE_ID PropertyInstanceId;
      ULONG PropertyBufferLength;
      ULONG PropertyBufferOffset;
    } NDIS_SWITCH_PROPERTY_PARAMETERS, *PNDIS_SWITCH_PROPERTY_PARAMETERS;
  
    typedef struct _NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_SWITCH_PROPERTY_TYPE PropertyType;
      NDIS_SWITCH_OBJECT_ID PropertyId;
      NDIS_SWITCH_OBJECT_INSTANCE_ID PropertyInstanceId;
    } NDIS_SWITCH_PROPERTY_DELETE_PARAMETERS, *PNDIS_SWITCH_PROPERTY_DELETE_PARAMETERS;
  
    typedef struct _NDIS_SWITCH_PROPERTY_ENUM_INFO {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_SWITCH_OBJECT_INSTANCE_ID PropertyInstanceId;
      NDIS_SWITCH_OBJECT_VERSION PropertyVersion;
      ULONG QwordAlignedPropertyBufferLength;
      ULONG PropertyBufferLength;
      ULONG PropertyBufferOffset;
    } NDIS_SWITCH_PROPERTY_ENUM_INFO, *PNDIS_SWITCH_PROPERTY_ENUM_INFO;
  
    typedef struct _NDIS_SWITCH_PROPERTY_ENUM_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_SWITCH_PROPERTY_TYPE PropertyType;
      NDIS_SWITCH_OBJECT_ID PropertyId;
      NDIS_SWITCH_OBJECT_SERIALIZATION_VERSION SerializationVersion;
      ULONG FirstPropertyOffset;
      ULONG NumProperties;
    } NDIS_SWITCH_PROPERTY_ENUM_PARAMETERS, *PNDIS_SWITCH_PROPERTY_ENUM_PARAMETERS;
  
    typedef enum _NDIS_SWITCH_FEATURE_STATUS_TYPE {
      NdisSwitchFeatureStatusTypeUndefined,
      NdisSwitchFeatureStatusTypeCustom,
      NdisSwitchFeatureStatusTypeMaximum
    } NDIS_SWITCH_FEATURE_STATUS_TYPE, *PNDIS_SWITCH_FEATURE_STATUS_TYPE;
  
    typedef struct _NDIS_SWITCH_FEATURE_STATUS_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_SWITCH_FEATURE_STATUS_TYPE FeatureStatusType;
      NDIS_SWITCH_OBJECT_ID FeatureStatusId;
      NDIS_SWITCH_OBJECT_INSTANCE_ID FeatureStatusInstanceId;
      NDIS_SWITCH_OBJECT_VERSION FeatureStatusVersion;
      NDIS_SWITCH_OBJECT_SERIALIZATION_VERSION SerializationVersion;
      ULONG FeatureStatusBufferOffset;
      ULONG FeatureStatusBufferLength;
    } NDIS_SWITCH_FEATURE_STATUS_PARAMETERS, *PNDIS_SWITCH_FEATURE_STATUS_PARAMETERS;
  
    typedef struct _NDIS_SWITCH_FEATURE_STATUS_CUSTOM {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      ULONG FeatureStatusCustomBufferLength;
      ULONG FeatureStatusCustomBufferOffset;
    } NDIS_SWITCH_FEATURE_STATUS_CUSTOM, *PNDIS_SWITCH_FEATURE_STATUS_CUSTOM;
  
    typedef struct _NDIS_SWITCH_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_SWITCH_NAME SwitchName;
      NDIS_SWITCH_FRIENDLYNAME SwitchFriendlyName;
      UINT32 NumSwitchPorts;
      BOOLEAN IsActive;
    } NDIS_SWITCH_PARAMETERS, *PNDIS_SWITCH_PARAMETERS;
  
    typedef enum _NDIS_SWITCH_PORT_TYPE {
      NdisSwitchPortTypeGeneric = 0,
      NdisSwitchPortTypeExternal = 1,
      NdisSwitchPortTypeSynthetic = 2,
      NdisSwitchPortTypeEmulated = 3,
      NdisSwitchPortTypeInternal = 4
    } NDIS_SWITCH_PORT_TYPE;
  
    typedef enum _NDIS_SWITCH_PORT_STATE {
      NdisSwitchPortStateUnknown = 0,
      NdisSwitchPortStateCreated = 1,
      NdisSwitchPortStateTeardown = 2,
      NdisSwitchPortStateDeleted = 3
    } NDIS_SWITCH_PORT_STATE;
  
    typedef struct _NDIS_SWITCH_PORT_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_SWITCH_PORT_ID PortId;
      NDIS_SWITCH_PORT_NAME PortName;
      NDIS_SWITCH_PORT_FRIENDLYNAME PortFriendlyName;
      NDIS_SWITCH_PORT_TYPE PortType;
      BOOLEAN IsValidationPort;
      NDIS_SWITCH_PORT_STATE PortState;
    } NDIS_SWITCH_PORT_PARAMETERS, *PNDIS_SWITCH_PORT_PARAMETERS;
  
    typedef struct _NDIS_SWITCH_PORT_ARRAY {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      USHORT FirstElementOffset;
      ULONG NumElements;
      ULONG ElementSize;
    } NDIS_SWITCH_PORT_ARRAY, *PNDIS_SWITCH_PORT_ARRAY;
  
    typedef enum _NDIS_SWITCH_NIC_TYPE {
      NdisSwitchNicTypeExternal = 0,
      NdisSwitchNicTypeSynthetic = 1,
      NdisSwitchNicTypeEmulated = 2,
      NdisSwitchNicTypeInternal = 3
    } NDIS_SWITCH_NIC_TYPE;
  
    typedef enum _NDIS_SWITCH_NIC_STATE {
      NdisSwitchNicStateUnknown = 0,
      NdisSwitchNicStateCreated = 1,
      NdisSwitchNicStateConnected = 2,
      NdisSwitchNicStateDisconnected = 3,
      NdisSwitchNicStateDeleted = 4
    } NDIS_SWITCH_NIC_STATE;
  
    typedef struct _NDIS_SWITCH_NIC_PARAMETERS {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_SWITCH_NIC_NAME NicName;
      NDIS_SWITCH_NIC_FRIENDLYNAME NicFriendlyName;
      NDIS_SWITCH_PORT_ID PortId;
      NDIS_SWITCH_NIC_INDEX NicIndex;
      NDIS_SWITCH_NIC_TYPE NicType;
      NDIS_SWITCH_NIC_STATE NicState;
      NDIS_VM_NAME VmName;
      NDIS_VM_FRIENDLYNAME VmFriendlyName;
      GUID NetCfgInstanceId;
      ULONG MTU;
      USHORT NumaNodeId;
      UCHAR PermanentMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH];
      UCHAR VMMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH];
      UCHAR CurrentMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH];
      BOOLEAN VFAssigned;
    } NDIS_SWITCH_NIC_PARAMETERS, *PNDIS_SWITCH_NIC_PARAMETERS;
  
    typedef struct _NDIS_SWITCH_NIC_ARRAY {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      USHORT FirstElementOffset;
      ULONG NumElements;
      ULONG ElementSize;
    } NDIS_SWITCH_NIC_ARRAY, *PNDIS_SWITCH_NIC_ARRAY;
  
    typedef struct _NDIS_OID_REQUEST NDIS_OID_REQUEST, *PNDIS_OID_REQUEST;
  
    typedef struct _NDIS_SWITCH_NIC_OID_REQUEST {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_SWITCH_PORT_ID SourcePortId;
      NDIS_SWITCH_NIC_INDEX SourceNicIndex;
      NDIS_SWITCH_PORT_ID DestinationPortId;
      NDIS_SWITCH_NIC_INDEX DestinationNicIndex;
      PNDIS_OID_REQUEST OidRequest;
    } NDIS_SWITCH_NIC_OID_REQUEST, *PNDIS_SWITCH_NIC_OID_REQUEST;
  
    typedef struct _NDIS_SWITCH_NIC_SAVE_STATE {
      NDIS_OBJECT_HEADER Header;
      ULONG Flags;
      NDIS_SWITCH_PORT_ID PortId;
      NDIS_SWITCH_NIC_INDEX NicIndex;
      GUID ExtensionId;
      NDIS_SWITCH_EXTENSION_FRIENDLYNAME ExtensionFriendlyName;
      GUID FeatureClassId;
      USHORT SaveDataSize;
      USHORT SaveDataOffset;
    } NDIS_SWITCH_NIC_SAVE_STATE, *PNDIS_SWITCH_NIC_SAVE_STATE;
  #endif
  
    typedef struct _NDIS_PORT_STATE {
      NDIS_OBJECT_HEADER Header;
      NDIS_MEDIA_CONNECT_STATE MediaConnectState;
      ULONG64 XmitLinkSpeed;
      ULONG64 RcvLinkSpeed;
      NET_IF_DIRECTION_TYPE Direction;
      NDIS_PORT_CONTROL_STATE SendControlState;
      NDIS_PORT_CONTROL_STATE RcvControlState;
      NDIS_PORT_AUTHORIZATION_STATE SendAuthorizationState;
      NDIS_PORT_AUTHORIZATION_STATE RcvAuthorizationState;
      ULONG Flags;
    } NDIS_PORT_STATE, *PNDIS_PORT_STATE;
  
    typedef struct _NDIS_PORT_CHARACTERISTICS {
      NDIS_OBJECT_HEADER Header;
      NDIS_PORT_NUMBER PortNumber;
      ULONG Flags;
      NDIS_PORT_TYPE Type;
      NDIS_MEDIA_CONNECT_STATE MediaConnectState;
      ULONG64 XmitLinkSpeed;
      ULONG64 RcvLinkSpeed;
      NET_IF_DIRECTION_TYPE Direction;
      NDIS_PORT_CONTROL_STATE SendControlState;
      NDIS_PORT_CONTROL_STATE RcvControlState;
      NDIS_PORT_AUTHORIZATION_STATE SendAuthorizationState;
      NDIS_PORT_AUTHORIZATION_STATE RcvAuthorizationState;
    } NDIS_PORT_CHARACTERISTICS, *PNDIS_PORT_CHARACTERISTICS;
  
    typedef struct _NDIS_PORT NDIS_PORT, *PNDIS_PORT;
  
    struct _NDIS_PORT {
      PNDIS_PORT Next;
      PVOID NdisReserved;
      PVOID MiniportReserved;
      PVOID ProtocolReserved;
      NDIS_PORT_CHARACTERISTICS PortCharacteristics;
    };
  
    typedef struct _NDIS_PORT_ARRAY {
      NDIS_OBJECT_HEADER Header;
      ULONG NumberOfPorts;
      ULONG OffsetFirstPort;
      ULONG ElementSize;
      NDIS_PORT_CHARACTERISTICS Ports[1];
    } NDIS_PORT_ARRAY, *PNDIS_PORT_ARRAY;
  #endif
  #endif
  
  #ifdef __cplusplus
  }
  #endif
  
  #endif
  #endif
  