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