4 * Network Device Interface Specification definitions
6 * This file is part of the ReactOS DDK package.
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
11 * THIS SOFTWARE IS NOT COPYRIGHTED
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 * DEFINES: i386 - Target platform is i386
22 * NDIS_WRAPPER - Define only for NDIS library
23 * NDIS_MINIPORT_DRIVER - Define only for NDIS miniport drivers
24 * NDIS40 - Use NDIS 4.0 structures by default
25 * NDIS50 - Use NDIS 5.0 structures by default
26 * NDIS51 - Use NDIS 5.1 structures by default
27 * NDIS40_MINIPORT - Building NDIS 4.0 miniport driver
28 * NDIS50_MINIPORT - Building NDIS 5.0 miniport driver
29 * NDIS51_MINIPORT - Building NDIS 5.1 miniport driver
45 typedef _Return_type_success_(return >= 0) int NDIS_STATUS
, *PNDIS_STATUS
;
49 #if !defined(_WINDEF_H)
50 typedef unsigned int UINT
, *PUINT
;
57 __drv_Mode_impl(NDIS_INCLUDED
)
62 typedef enum _NET_DEVICE_POWER_STATE
{
63 NetDeviceStateUnspecified
= 0,
69 } NET_DEVICE_POWER_STATE
, *PNET_DEVICE_POWER_STATE
;
71 typedef enum _NET_PNP_EVENT_CODE
{
74 NetEventQueryRemoveDevice
,
75 NetEventCancelRemoveDevice
,
78 NetEventBindsComplete
,
79 NetEventPnPCapabilities
,
82 NetEventPortActivation
,
83 NetEventPortDeactivation
,
84 NetEventIMReEnableDevice
,
86 } NET_PNP_EVENT_CODE
, *PNET_PNP_EVENT_CODE
;
88 typedef struct _NET_PNP_EVENT
{
89 NET_PNP_EVENT_CODE NetEvent
;
92 ULONG_PTR NdisReserved
[4];
93 ULONG_PTR TransportReserved
[4];
94 ULONG_PTR TdiReserved
[4];
95 ULONG_PTR TdiClientReserved
[4];
96 } NET_PNP_EVENT
, *PNET_PNP_EVENT
;
98 #endif /* __NET_PNP__ */
100 #if !defined(NDIS_WRAPPER)
102 #if (defined(NDIS_MINIPORT_MAJOR_VERSION) || \
103 (defined(NDIS_MINIPORT_MINOR_VERSION)) || \
104 (defined(NDIS_PROTOCOL_MAJOR_VERSION)) || \
105 (defined(NDIS_PROTOCOL_MINOR_VERSION)) || \
106 (defined(NDIS_FILTER_MAJOR_VERSION)) || \
107 (defined(NDIS_FILTER_MINOR_VERSION)))
108 #error "Driver should not redefine NDIS reserved macros"
111 #if defined(NDIS_MINIPORT_DRIVER)
113 #if defined(NDIS620_MINIPORT)
114 #define NDIS_MINIPORT_MAJOR_VERSION 6
115 #define NDIS_MINIPORT_MINOR_VERSION 20
116 #elif defined(NDIS61_MINIPORT)
117 #define NDIS_MINIPORT_MAJOR_VERSION 6
118 #define NDIS_MINIPORT_MINOR_VERSION 1
119 #elif defined(NDIS60_MINIPORT)
120 #define NDIS_MINIPORT_MAJOR_VERSION 6
121 #define NDIS_MINIPORT_MINOR_VERSION 0
122 #elif defined(NDIS51_MINIPORT)
123 #define NDIS_MINIPORT_MAJOR_VERSION 5
124 #define NDIS_MINIPORT_MINOR_VERSION 1
125 #elif defined(NDIS50_MINIPORT)
126 #define NDIS_MINIPORT_MAJOR_VERSION 5
127 #define NDIS_MINIPORT_MINOR_VERSION 0
129 #error "Only NDIS miniport drivers with version >= 5 are supported"
132 #if ((NDIS_MINIPORT_MAJOR_VERSION == 6) && \
133 (NDIS_MINIPORT_MINOR_VERSION != 20) && \
134 (NDIS_MINIPORT_MINOR_VERSION != 1) && \
135 (NDIS_MINIPORT_MINOR_VERSION != 0))
136 #error "Invalid miniport major/minor version combination"
137 #elif ((NDIS_MINIPORT_MAJOR_VERSION == 5) && \
138 (NDIS_MINIPORT_MINOR_VERSION != 1) && \
139 (NDIS_MINIPORT_MINOR_VERSION != 0))
140 #error "Invalid miniport major/minor version combination"
143 #if (NDIS_MINIPORT_MAJOR_VERSION == 6) && \
144 ((NDIS_MINIPORT_MINOR_VERSION == 20 && NTDDI_VERSION < NTDDI_WIN7) || \
145 (NDIS_MINIPORT_MINOR_VERSION == 1 && NTDDI_VERSION < NTDDI_VISTA) || \
146 (NDIS_MINIPORT_MINOR_VERSION == 0 && NTDDI_VERSION < NTDDI_VISTA))
147 #error "Wrong NDIS/DDI version"
148 #elif ((NDIS_MINIPORT_MAJOR_VERSION == 5) && \
149 (((NDIS_MINIPORT_MINOR_VERSION == 1) && (NTDDI_VERSION < NTDDI_WINXP)) || \
150 ((NDIS_MINIPORT_MINOR_VERSION == 0) && (NTDDI_VERSION < NTDDI_WIN2K))))
151 #error "Wrong NDIS/DDI version"
155 #endif /* defined(NDIS_MINIPORT_DRIVER) */
158 #error "Only NDIS Protocol drivers version 4 or later are supported"
162 #define NDIS_PROTOCOL_MAJOR_VERSION 6
163 #define NDIS_PROTOCOL_MINOR_VERSION 20
164 #define NDIS_FILTER_MAJOR_VERSION 6
165 #define NDIS_FILTER_MINOR_VERSION 20
166 #elif defined(NDIS61)
167 #define NDIS_PROTOCOL_MAJOR_VERSION 6
168 #define NDIS_PROTOCOL_MINOR_VERSION 1
169 #define NDIS_FILTER_MAJOR_VERSION 6
170 #define NDIS_FILTER_MINOR_VERSION 1
171 #elif defined(NDIS60)
172 #define NDIS_PROTOCOL_MAJOR_VERSION 6
173 #define NDIS_PROTOCOL_MINOR_VERSION 0
174 #define NDIS_FILTER_MAJOR_VERSION 6
175 #define NDIS_FILTER_MINOR_VERSION 0
176 #elif defined(NDIS51)
177 #define NDIS_PROTOCOL_MAJOR_VERSION 5
178 #define NDIS_PROTOCOL_MINOR_VERSION 1
179 #elif defined(NDIS50)
180 #define NDIS_PROTOCOL_MAJOR_VERSION 5
181 #define NDIS_PROTOCOL_MINOR_VERSION 0
182 #elif defined(NDIS40)
183 #define NDIS_PROTOCOL_MAJOR_VERSION 4
184 #define NDIS_PROTOCOL_MINOR_VERSION 0
187 #if !defined(NDIS_MINIPORT_DRIVER) && !defined(NDIS_PROTOCOL_MAJOR_VERSION)
189 #define NDIS_PROTOCOL_MAJOR_VERSION 4
190 #define NDIS_PROTOCOL_MINOR_VERSION 0
193 #if defined(NDIS_FILTER_MAJOR_VERSION)
195 #if ((NDIS_FILTER_MAJOR_VERSION == 6) && \
196 (NDIS_FILTER_MINOR_VERSION != 20) && \
197 (NDIS_FILTER_MINOR_VERSION != 1) && \
198 (NDIS_FILTER_MINOR_VERSION != 0))
199 #error "Invalid Filter version"
202 #endif /* defined(NDIS_FILTER_MAJOR_VERSION) */
205 #if defined(NDIS_PROTOCOL_MAJOR_VERSION)
207 #if ((NDIS_PROTOCOL_MAJOR_VERSION == 6) && \
208 (NDIS_PROTOCOL_MINOR_VERSION != 20) && \
209 (NDIS_PROTOCOL_MINOR_VERSION != 1) && \
210 (NDIS_PROTOCOL_MINOR_VERSION != 0))
211 #error "Invalid Protocol version"
212 #elif ((NDIS_PROTOCOL_MAJOR_VERSION == 5) && \
213 (NDIS_PROTOCOL_MINOR_VERSION != 1) && (NDIS_PROTOCOL_MINOR_VERSION != 0))
214 #error "Invalid Protocol version"
215 #elif ((NDIS_PROTOCOL_MAJOR_VERSION == 4) && (NDIS_PROTOCOL_MINOR_VERSION != 0))
216 #error "Invalid Protocol major/minor version"
219 #if ((NDIS_PROTOCOL_MAJOR_VERSION == 6) && (NTDDI_VERSION < NTDDI_VISTA))
220 #error "Wrong NDIS/DDI version"
223 #endif /* defined(NDIS_PROTOCOL_MAJOR_VERSION) */
225 #endif /* !defined(NDIS_WRAPPER) */
227 #if !defined(NDIS_LEGACY_MINIPORT)
229 #if ((defined(NDIS_MINIPORT_DRIVER) && (NDIS_MINIPORT_MAJOR_VERSION < 6)) || NDIS_WRAPPER)
230 #define NDIS_LEGACY_MINIPORT 1
232 #define NDIS_LEGACY_MINIPORT 0
235 #endif /* !defined(NDIS_LEGACY_MINIPORT) */
237 #if !defined(NDIS_LEGACY_PROTOCOL)
239 #if ((defined(NDIS_PROTOCOL_MAJOR_VERSION) && (NDIS_PROTOCOL_MAJOR_VERSION < 6)) || NDIS_WRAPPER)
240 #define NDIS_LEGACY_PROTOCOL 1
242 #define NDIS_LEGACY_PROTOCOL 0
245 #endif /* !defined(NDIS_LEGACY_PROTOCOL) */
247 #if !defined(NDIS_LEGACY_DRIVER)
249 #if (NDIS_LEGACY_MINIPORT || NDIS_LEGACY_PROTOCOL || NDIS_WRAPPER)
250 #define NDIS_LEGACY_DRIVER 1
252 #define NDIS_LEGACY_DRIVER 0
255 #endif /* !defined(NDIS_LEGACY_DRIVER) */
257 #if !defined(NDIS_SUPPORT_NDIS6)
259 #if ((defined (NDIS_MINIPORT_MAJOR_VERSION) && (NDIS_MINIPORT_MAJOR_VERSION >= 6)) || \
260 (defined (NDIS60)) || NDIS_WRAPPER)
261 #define NDIS_SUPPORT_NDIS6 1
263 #define NDIS_SUPPORT_NDIS6 0
266 #endif /* !defined(NDIS_SUPPORT_NDIS6) */
268 #if !defined(NDIS_SUPPORT_NDIS61)
269 #if (((defined (NDIS_MINIPORT_MAJOR_VERSION) && (NDIS_MINIPORT_MAJOR_VERSION >= 6)) && \
270 (defined (NDIS_MINIPORT_MINOR_VERSION) && (NDIS_MINIPORT_MINOR_VERSION >= 1))) || \
271 (defined (NDIS61)) || NDIS_WRAPPER)
272 #define NDIS_SUPPORT_NDIS61 1
274 #define NDIS_SUPPORT_NDIS61 0
276 #endif /* !defined(NDIS_SUPPORT_NDIS61) */
278 #if !defined(NDIS_SUPPORT_NDIS620)
280 #if (((defined (NDIS_MINIPORT_MAJOR_VERSION) && (NDIS_MINIPORT_MAJOR_VERSION >= 6)) && \
281 (defined (NDIS_MINIPORT_MINOR_VERSION) && (NDIS_MINIPORT_MINOR_VERSION >= 20))) || \
282 (defined (NDIS620)) || NDIS_WRAPPER)
283 #define NDIS_SUPPORT_NDIS620 1
285 #define NDIS_SUPPORT_NDIS620 0
288 #endif /* !defined(NDIS_SUPPORT_NDIS620) */
290 #if (NDIS_SUPPORT_NDIS620)
291 #undef NDIS_SUPPORT_NDIS61
292 #define NDIS_SUPPORT_NDIS61 1
295 #if (NDIS_SUPPORT_NDIS61)
296 #undef NDIS_SUPPORT_NDIS6
297 #define NDIS_SUPPORT_NDIS6 1
300 #if defined(NDIS61_MINIPORT) || defined(NDIS60_MINIPORT) || defined(NDIS61) || \
301 defined(NDIS60) || defined(NDIS_WRAPPER) || defined(NDIS_LEGACY_DRIVER)
302 #define NDIS_SUPPORT_60_COMPATIBLE_API 1
304 #define NDIS_SUPPORT_60_COMPATIBLE_API 0
307 #if defined(NDIS_WRAPPER)
310 #define NDISAPI DECLSPEC_IMPORT
313 typedef PVOID QUEUED_CLOSE
; //FIXME : Doesn't exist in public headers
315 typedef struct _X_FILTER FDDI_FILTER
, *PFDDI_FILTER
;
316 typedef struct _X_FILTER TR_FILTER
, *PTR_FILTER
;
317 typedef struct _X_FILTER NULL_FILTER
, *PNULL_FILTER
;
319 typedef struct _NDIS_MINIPORT_BLOCK NDIS_MINIPORT_BLOCK
, *PNDIS_MINIPORT_BLOCK
;
321 typedef struct _REFERENCE
{
323 USHORT ReferenceCount
;
325 } REFERENCE
, *PREFERENCE
;
327 /* NDIS base types */
329 typedef struct _NDIS_SPIN_LOCK
{
332 } NDIS_SPIN_LOCK
, *PNDIS_SPIN_LOCK
;
334 typedef struct _NDIS_EVENT
{
336 } NDIS_EVENT
, *PNDIS_EVENT
;
338 typedef PVOID NDIS_HANDLE
, *PNDIS_HANDLE
;
340 typedef ANSI_STRING NDIS_ANSI_STRING
, *PNDIS_ANSI_STRING
;
341 typedef UNICODE_STRING NDIS_STRING
, *PNDIS_STRING
;
343 typedef MDL NDIS_BUFFER
, *PNDIS_BUFFER
;
345 /* NDIS_STATUS constants */
346 #define NDIS_STATUS_SUCCESS ((NDIS_STATUS)STATUS_SUCCESS)
347 #define NDIS_STATUS_PENDING ((NDIS_STATUS)STATUS_PENDING)
348 #define NDIS_STATUS_NOT_RECOGNIZED ((NDIS_STATUS)0x00010001L)
349 #define NDIS_STATUS_NOT_COPIED ((NDIS_STATUS)0x00010002L)
350 #define NDIS_STATUS_NOT_ACCEPTED ((NDIS_STATUS)0x00010003L)
351 #define NDIS_STATUS_CALL_ACTIVE ((NDIS_STATUS)0x00010007L)
352 #define NDIS_STATUS_INDICATION_REQUIRED ((NDIS_STATUS)STATUS_NDIS_INDICATION_REQUIRED)
353 #define NDIS_STATUS_ONLINE ((NDIS_STATUS)0x40010003L)
354 #define NDIS_STATUS_RESET_START ((NDIS_STATUS)0x40010004L)
355 #define NDIS_STATUS_RESET_END ((NDIS_STATUS)0x40010005L)
356 #define NDIS_STATUS_RING_STATUS ((NDIS_STATUS)0x40010006L)
357 #define NDIS_STATUS_CLOSED ((NDIS_STATUS)0x40010007L)
358 #define NDIS_STATUS_WAN_LINE_UP ((NDIS_STATUS)0x40010008L)
359 #define NDIS_STATUS_WAN_LINE_DOWN ((NDIS_STATUS)0x40010009L)
360 #define NDIS_STATUS_WAN_FRAGMENT ((NDIS_STATUS)0x4001000AL)
361 #define NDIS_STATUS_MEDIA_CONNECT ((NDIS_STATUS)0x4001000BL)
362 #define NDIS_STATUS_MEDIA_DISCONNECT ((NDIS_STATUS)0x4001000CL)
363 #define NDIS_STATUS_HARDWARE_LINE_UP ((NDIS_STATUS)0x4001000DL)
364 #define NDIS_STATUS_HARDWARE_LINE_DOWN ((NDIS_STATUS)0x4001000EL)
365 #define NDIS_STATUS_INTERFACE_UP ((NDIS_STATUS)0x4001000FL)
366 #define NDIS_STATUS_INTERFACE_DOWN ((NDIS_STATUS)0x40010010L)
367 #define NDIS_STATUS_MEDIA_BUSY ((NDIS_STATUS)0x40010011L)
368 #define NDIS_STATUS_MEDIA_SPECIFIC_INDICATION ((NDIS_STATUS)0x40010012L)
369 #define NDIS_STATUS_WW_INDICATION NDIS_STATUS_MEDIA_SPECIFIC_INDICATION
370 #define NDIS_STATUS_LINK_SPEED_CHANGE ((NDIS_STATUS)0x40010013L)
371 #define NDIS_STATUS_WAN_GET_STATS ((NDIS_STATUS)0x40010014L)
372 #define NDIS_STATUS_WAN_CO_FRAGMENT ((NDIS_STATUS)0x40010015L)
373 #define NDIS_STATUS_WAN_CO_LINKPARAMS ((NDIS_STATUS)0x40010016L)
374 #if NDIS_SUPPORT_NDIS6
375 #define NDIS_STATUS_LINK_STATE ((NDIS_STATUS)0x40010017L)
376 #define NDIS_STATUS_NETWORK_CHANGE ((NDIS_STATUS)0x40010018L)
377 #define NDIS_STATUS_MEDIA_SPECIFIC_INDICATION_EX ((NDIS_STATUS)0x40010019L)
378 #define NDIS_STATUS_PORT_STATE ((NDIS_STATUS)0x40010022L)
379 #define NDIS_STATUS_OPER_STATUS ((NDIS_STATUS)0x40010023L)
380 #define NDIS_STATUS_PACKET_FILTER ((NDIS_STATUS)0x40010024L)
381 #endif /* NDIS_SUPPORT_NDIS6 */
382 #define NDIS_STATUS_WAN_CO_MTULINKPARAMS ((NDIS_STATUS)0x40010025L)
384 #if NDIS_SUPPORT_NDIS6
386 #define NDIS_STATUS_IP_OPER_STATUS ((NDIS_STATUS)0x40010026L)
388 #define NDIS_STATUS_OFFLOAD_PAUSE ((NDIS_STATUS)0x40020001L)
389 #define NDIS_STATUS_UPLOAD_ALL ((NDIS_STATUS)0x40020002L)
390 #define NDIS_STATUS_OFFLOAD_RESUME ((NDIS_STATUS)0x40020003L)
391 #define NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS ((NDIS_STATUS)0x40020004L)
392 #define NDIS_STATUS_OFFLOAD_STATE_INVALID ((NDIS_STATUS)0x40020005L)
393 #define NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG ((NDIS_STATUS)0x40020006L)
394 #define NDIS_STATUS_TASK_OFFLOAD_HARDWARE_CAPABILITIES ((NDIS_STATUS)0x40020007L)
395 #define NDIS_STATUS_OFFLOAD_ENCASPULATION_CHANGE ((NDIS_STATUS)0x40020008L)
396 #define NDIS_STATUS_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES ((NDIS_STATUS)0x4002000BL)
398 #if (NDIS_SUPPORT_NDIS61)
399 #define NDIS_STATUS_HD_SPLIT_CURRENT_CONFIG ((NDIS_STATUS)0x4002000CL)
402 #if (NDIS_SUPPORT_NDIS620)
403 #define NDIS_STATUS_RECEIVE_QUEUE_STATE ((NDIS_STATUS)0x4002000DL)
406 #define NDIS_STATUS_OFFLOAD_IM_RESERVED1 ((NDIS_STATUS)0x40020100L)
407 #define NDIS_STATUS_OFFLOAD_IM_RESERVED2 ((NDIS_STATUS)0x40020101L)
408 #define NDIS_STATUS_OFFLOAD_IM_RESERVED3 ((NDIS_STATUS)0x40020102L)
410 #define NDIS_STATUS_DOT11_SCAN_CONFIRM ((NDIS_STATUS)0x40030000L)
411 #define NDIS_STATUS_DOT11_MPDU_MAX_LENGTH_CHANGED ((NDIS_STATUS)0x40030001L)
412 #define NDIS_STATUS_DOT11_ASSOCIATION_START ((NDIS_STATUS)0x40030002L)
413 #define NDIS_STATUS_DOT11_ASSOCIATION_COMPLETION ((NDIS_STATUS)0x40030003L)
414 #define NDIS_STATUS_DOT11_CONNECTION_START ((NDIS_STATUS)0x40030004L)
415 #define NDIS_STATUS_DOT11_CONNECTION_COMPLETION ((NDIS_STATUS)0x40030005L)
416 #define NDIS_STATUS_DOT11_ROAMING_START ((NDIS_STATUS)0x40030006L)
417 #define NDIS_STATUS_DOT11_ROAMING_COMPLETION ((NDIS_STATUS)0x40030007L)
418 #define NDIS_STATUS_DOT11_DISASSOCIATION ((NDIS_STATUS)0x40030008L)
419 #define NDIS_STATUS_DOT11_TKIPMIC_FAILURE ((NDIS_STATUS)0x40030009L)
420 #define NDIS_STATUS_DOT11_PMKID_CANDIDATE_LIST ((NDIS_STATUS)0x4003000AL)
421 #define NDIS_STATUS_DOT11_PHY_STATE_CHANGED ((NDIS_STATUS)0x4003000BL)
422 #define NDIS_STATUS_DOT11_LINK_QUALITY ((NDIS_STATUS)0x4003000CL)
423 #define NDIS_STATUS_DOT11_INCOMING_ASSOC_STARTED ((NDIS_STATUS)0x4003000DL)
424 #define NDIS_STATUS_DOT11_INCOMING_ASSOC_REQUEST_RECEIVED ((NDIS_STATUS)0x4003000EL)
425 #define NDIS_STATUS_DOT11_INCOMING_ASSOC_COMPLETION ((NDIS_STATUS)0x4003000FL)
426 #define NDIS_STATUS_DOT11_STOP_AP ((NDIS_STATUS)0x40030010L)
427 #define NDIS_STATUS_DOT11_PHY_FREQUENCY_ADOPTED ((NDIS_STATUS)0x40030011L)
428 #define NDIS_STATUS_DOT11_CAN_SUSTAIN_AP ((NDIS_STATUS)0x40030012L)
430 #define NDIS_STATUS_WWAN_DEVICE_CAPS ((NDIS_STATUS)0x40041000)
431 #define NDIS_STATUS_WWAN_READY_INFO ((NDIS_STATUS)0x40041001)
432 #define NDIS_STATUS_WWAN_RADIO_STATE ((NDIS_STATUS)0x40041002)
433 #define NDIS_STATUS_WWAN_PIN_INFO ((NDIS_STATUS)0x40041003)
434 #define NDIS_STATUS_WWAN_PIN_LIST ((NDIS_STATUS)0x40041004)
435 #define NDIS_STATUS_WWAN_HOME_PROVIDER ((NDIS_STATUS)0x40041005)
436 #define NDIS_STATUS_WWAN_PREFERRED_PROVIDERS ((NDIS_STATUS)0x40041006)
437 #define NDIS_STATUS_WWAN_VISIBLE_PROVIDERS ((NDIS_STATUS)0x40041007)
438 #define NDIS_STATUS_WWAN_REGISTER_STATE ((NDIS_STATUS)0x40041008)
439 #define NDIS_STATUS_WWAN_PACKET_SERVICE ((NDIS_STATUS)0x40041009)
440 #define NDIS_STATUS_WWAN_SIGNAL_STATE ((NDIS_STATUS)0x4004100a)
441 #define NDIS_STATUS_WWAN_CONTEXT_STATE ((NDIS_STATUS)0x4004100b)
442 #define NDIS_STATUS_WWAN_PROVISIONED_CONTEXTS ((NDIS_STATUS)0x4004100c)
443 #define NDIS_STATUS_WWAN_SERVICE_ACTIVATION ((NDIS_STATUS)0x4004100d)
444 #define NDIS_STATUS_WWAN_SMS_CONFIGURATION ((NDIS_STATUS)0x4004100e)
445 #define NDIS_STATUS_WWAN_SMS_RECEIVE ((NDIS_STATUS)0x4004100f)
446 #define NDIS_STATUS_WWAN_SMS_SEND ((NDIS_STATUS)0x40041010)
447 #define NDIS_STATUS_WWAN_SMS_DELETE ((NDIS_STATUS)0x40041011)
448 #define NDIS_STATUS_WWAN_SMS_STATUS ((NDIS_STATUS)0x40041012)
449 #define NDIS_STATUS_WWAN_DNS_ADDRESS ((NDIS_STATUS)0x40041013)
451 #define NDIS_STATUS_WWAN_VENDOR_SPECIFIC ((NDIS_STATUS)0x40043000)
453 #endif /* NDIS_SUPPORT_NDIS6 */
455 #if (NDIS_SUPPORT_NDIS620)
456 #define NDIS_STATUS_PM_WOL_PATTERN_REJECTED ((NDIS_STATUS)0x40030051L)
457 #define NDIS_STATUS_PM_OFFLOAD_REJECTED ((NDIS_STATUS)0x40030052L)
458 #define NDIS_STATUS_PM_CAPABILITIES_CHANGE ((NDIS_STATUS)0x40030053L)
461 #define NDIS_STATUS_NOT_RESETTABLE ((NDIS_STATUS)0x80010001L)
462 #define NDIS_STATUS_SOFT_ERRORS ((NDIS_STATUS)0x80010003L)
463 #define NDIS_STATUS_HARD_ERRORS ((NDIS_STATUS)0x80010004L)
464 #define NDIS_STATUS_BUFFER_OVERFLOW ((NDIS_STATUS)STATUS_BUFFER_OVERFLOW)
465 #define NDIS_STATUS_FAILURE ((NDIS_STATUS)STATUS_UNSUCCESSFUL)
466 #define NDIS_STATUS_RESOURCES ((NDIS_STATUS)STATUS_INSUFFICIENT_RESOURCES)
467 #define NDIS_STATUS_CLOSING ((NDIS_STATUS)0xC0010002L)
468 #define NDIS_STATUS_BAD_VERSION ((NDIS_STATUS)0xC0010004L)
469 #define NDIS_STATUS_BAD_CHARACTERISTICS ((NDIS_STATUS)0xC0010005L)
470 #define NDIS_STATUS_ADAPTER_NOT_FOUND ((NDIS_STATUS)0xC0010006L)
471 #define NDIS_STATUS_OPEN_FAILED ((NDIS_STATUS)0xC0010007L)
472 #define NDIS_STATUS_DEVICE_FAILED ((NDIS_STATUS)0xC0010008L)
473 #define NDIS_STATUS_MULTICAST_FULL ((NDIS_STATUS)0xC0010009L)
474 #define NDIS_STATUS_MULTICAST_EXISTS ((NDIS_STATUS)0xC001000AL)
475 #define NDIS_STATUS_MULTICAST_NOT_FOUND ((NDIS_STATUS)0xC001000BL)
476 #define NDIS_STATUS_REQUEST_ABORTED ((NDIS_STATUS)0xC001000CL)
477 #define NDIS_STATUS_RESET_IN_PROGRESS ((NDIS_STATUS)0xC001000DL)
478 #define NDIS_STATUS_CLOSING_INDICATING ((NDIS_STATUS)0xC001000EL)
479 #define NDIS_STATUS_NOT_SUPPORTED ((NDIS_STATUS)STATUS_NOT_SUPPORTED)
480 #define NDIS_STATUS_INVALID_PACKET ((NDIS_STATUS)0xC001000FL)
481 #define NDIS_STATUS_OPEN_LIST_FULL ((NDIS_STATUS)0xC0010010L)
482 #define NDIS_STATUS_ADAPTER_NOT_READY ((NDIS_STATUS)0xC0010011L)
483 #define NDIS_STATUS_ADAPTER_NOT_OPEN ((NDIS_STATUS)0xC0010012L)
484 #define NDIS_STATUS_NOT_INDICATING ((NDIS_STATUS)0xC0010013L)
485 #define NDIS_STATUS_INVALID_LENGTH ((NDIS_STATUS)0xC0010014L)
486 #define NDIS_STATUS_INVALID_DATA ((NDIS_STATUS)0xC0010015L)
487 #define NDIS_STATUS_BUFFER_TOO_SHORT ((NDIS_STATUS)0xC0010016L)
488 #define NDIS_STATUS_INVALID_OID ((NDIS_STATUS)0xC0010017L)
489 #define NDIS_STATUS_ADAPTER_REMOVED ((NDIS_STATUS)0xC0010018L)
490 #define NDIS_STATUS_UNSUPPORTED_MEDIA ((NDIS_STATUS)0xC0010019L)
491 #define NDIS_STATUS_GROUP_ADDRESS_IN_USE ((NDIS_STATUS)0xC001001AL)
492 #define NDIS_STATUS_FILE_NOT_FOUND ((NDIS_STATUS)0xC001001BL)
493 #define NDIS_STATUS_ERROR_READING_FILE ((NDIS_STATUS)0xC001001CL)
494 #define NDIS_STATUS_ALREADY_MAPPED ((NDIS_STATUS)0xC001001DL)
495 #define NDIS_STATUS_RESOURCE_CONFLICT ((NDIS_STATUS)0xC001001EL)
496 #define NDIS_STATUS_NO_CABLE ((NDIS_STATUS)0xC001001FL)
498 #define NDIS_STATUS_INVALID_SAP ((NDIS_STATUS)0xC0010020L)
499 #define NDIS_STATUS_SAP_IN_USE ((NDIS_STATUS)0xC0010021L)
500 #define NDIS_STATUS_INVALID_ADDRESS ((NDIS_STATUS)0xC0010022L)
501 #define NDIS_STATUS_VC_NOT_ACTIVATED ((NDIS_STATUS)0xC0010023L)
502 #define NDIS_STATUS_DEST_OUT_OF_ORDER ((NDIS_STATUS)0xC0010024L)
503 #define NDIS_STATUS_VC_NOT_AVAILABLE ((NDIS_STATUS)0xC0010025L)
504 #define NDIS_STATUS_CELLRATE_NOT_AVAILABLE ((NDIS_STATUS)0xC0010026L)
505 #define NDIS_STATUS_INCOMPATABLE_QOS ((NDIS_STATUS)0xC0010027L)
506 #define NDIS_STATUS_AAL_PARAMS_UNSUPPORTED ((NDIS_STATUS)0xC0010028L)
507 #define NDIS_STATUS_NO_ROUTE_TO_DESTINATION ((NDIS_STATUS)0xC0010029L)
509 #define NDIS_STATUS_TOKEN_RING_OPEN_ERROR ((NDIS_STATUS)0xC0011000L)
510 #define NDIS_STATUS_INVALID_DEVICE_REQUEST ((NDIS_STATUS)STATUS_INVALID_DEVICE_REQUEST)
511 #define NDIS_STATUS_NETWORK_UNREACHABLE ((NDIS_STATUS)STATUS_NETWORK_UNREACHABLE)
513 #if NDIS_SUPPORT_NDIS6
515 #define NDIS_STATUS_SEND_ABORTED ((NDIS_STATUS)STATUS_NDIS_REQUEST_ABORTED)
516 #define NDIS_STATUS_PAUSED ((NDIS_STATUS)STATUS_NDIS_PAUSED)
517 #define NDIS_STATUS_INTERFACE_NOT_FOUND ((NDIS_STATUS)STATUS_NDIS_INTERFACE_NOT_FOUND)
518 #define NDIS_STATUS_INVALID_PARAMETER ((NDIS_STATUS)STATUS_INVALID_PARAMETER)
519 #define NDIS_STATUS_UNSUPPORTED_REVISION ((NDIS_STATUS)STATUS_NDIS_UNSUPPORTED_REVISION)
520 #define NDIS_STATUS_INVALID_PORT ((NDIS_STATUS)STATUS_NDIS_INVALID_PORT)
521 #define NDIS_STATUS_INVALID_PORT_STATE ((NDIS_STATUS)STATUS_NDIS_INVALID_PORT_STATE)
522 #define NDIS_STATUS_INVALID_STATE ((NDIS_STATUS)STATUS_INVALID_DEVICE_STATE)
523 #define NDIS_STATUS_MEDIA_DISCONNECTED ((NDIS_STATUS)STATUS_NDIS_MEDIA_DISCONNECTED)
524 #define NDIS_STATUS_LOW_POWER_STATE ((NDIS_STATUS)STATUS_NDIS_LOW_POWER_STATE)
525 #define NDIS_STATUS_DOT11_AUTO_CONFIG_ENABLED ((NDIS_STATUS)STATUS_NDIS_DOT11_AUTO_CONFIG_ENABLED)
526 #define NDIS_STATUS_DOT11_MEDIA_IN_USE ((NDIS_STATUS)STATUS_NDIS_DOT11_MEDIA_IN_USE)
527 #define NDIS_STATUS_DOT11_POWER_STATE_INVALID ((NDIS_STATUS)STATUS_NDIS_DOT11_POWER_STATE_INVALID)
528 #define NDIS_STATUS_UPLOAD_IN_PROGRESS ((NDIS_STATUS)0xC0231001L)
529 #define NDIS_STATUS_REQUEST_UPLOAD ((NDIS_STATUS)0xC0231002L)
530 #define NDIS_STATUS_UPLOAD_REQUESTED ((NDIS_STATUS)0xC0231003L)
531 #define NDIS_STATUS_OFFLOAD_TCP_ENTRIES ((NDIS_STATUS)0xC0231004L)
532 #define NDIS_STATUS_OFFLOAD_PATH_ENTRIES ((NDIS_STATUS)0xC0231005L)
533 #define NDIS_STATUS_OFFLOAD_NEIGHBOR_ENTRIES ((NDIS_STATUS)0xC0231006L)
534 #define NDIS_STATUS_OFFLOAD_IP_ADDRESS_ENTRIES ((NDIS_STATUS)0xC0231007L)
535 #define NDIS_STATUS_OFFLOAD_HW_ADDRESS_ENTRIES ((NDIS_STATUS)0xC0231008L)
536 #define NDIS_STATUS_OFFLOAD_VLAN_ENTRIES ((NDIS_STATUS)0xC0231009L)
537 #define NDIS_STATUS_OFFLOAD_TCP_XMIT_BUFFER ((NDIS_STATUS)0xC023100AL)
538 #define NDIS_STATUS_OFFLOAD_TCP_RCV_BUFFER ((NDIS_STATUS)0xC023100BL)
539 #define NDIS_STATUS_OFFLOAD_TCP_RCV_WINDOW ((NDIS_STATUS)0xC023100CL)
540 #define NDIS_STATUS_OFFLOAD_VLAN_MISMATCH ((NDIS_STATUS)0xC023100DL)
541 #define NDIS_STATUS_OFFLOAD_DATA_NOT_ACCEPTED ((NDIS_STATUS)0xC023100EL)
542 #define NDIS_STATUS_OFFLOAD_POLICY ((NDIS_STATUS)0xC023100FL)
543 #define NDIS_STATUS_OFFLOAD_DATA_PARTIALLY_ACCEPTED ((NDIS_STATUS)0xC0231010L)
544 #define NDIS_STATUS_OFFLOAD_REQUEST_RESET ((NDIS_STATUS)0xC0231011L)
546 #if NDIS_SUPPORT_NDIS620
547 #define NDIS_STATUS_PM_WOL_PATTERN_LIST_FULL ((NDIS_STATUS)STATUS_NDIS_PM_WOL_PATTERN_LIST_FULL)
548 #define NDIS_STATUS_PM_PROTOCOL_OFFLOAD_LIST_FULL ((NDIS_STATUS)STATUS_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL)
551 #endif /* NDIS_SUPPORT_NDIS6 */
553 #if (NDIS_SUPPORT_NDIS620)
554 #define NDIS_STATUS_OFFLOAD_CONNECTION_REJECTED ((NDIS_STATUS)STATUS_NDIS_OFFLOAD_CONNECTION_REJECTED)
557 /* NDIS error codes for error logging */
559 #define NDIS_ERROR_CODE ULONG
561 #define NDIS_ERROR_CODE_RESOURCE_CONFLICT EVENT_NDIS_RESOURCE_CONFLICT
562 #define NDIS_ERROR_CODE_OUT_OF_RESOURCES EVENT_NDIS_OUT_OF_RESOURCE
563 #define NDIS_ERROR_CODE_HARDWARE_FAILURE EVENT_NDIS_HARDWARE_FAILURE
564 #define NDIS_ERROR_CODE_ADAPTER_NOT_FOUND EVENT_NDIS_ADAPTER_NOT_FOUND
565 #define NDIS_ERROR_CODE_INTERRUPT_CONNECT EVENT_NDIS_INTERRUPT_CONNECT
566 #define NDIS_ERROR_CODE_DRIVER_FAILURE EVENT_NDIS_DRIVER_FAILURE
567 #define NDIS_ERROR_CODE_BAD_VERSION EVENT_NDIS_BAD_VERSION
568 #define NDIS_ERROR_CODE_TIMEOUT EVENT_NDIS_TIMEOUT
569 #define NDIS_ERROR_CODE_NETWORK_ADDRESS EVENT_NDIS_NETWORK_ADDRESS
570 #define NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION EVENT_NDIS_UNSUPPORTED_CONFIGURATION
571 #define NDIS_ERROR_CODE_INVALID_VALUE_FROM_ADAPTER EVENT_NDIS_INVALID_VALUE_FROM_ADAPTER
572 #define NDIS_ERROR_CODE_MISSING_CONFIGURATION_PARAMETER EVENT_NDIS_MISSING_CONFIGURATION_PARAMETER
573 #define NDIS_ERROR_CODE_BAD_IO_BASE_ADDRESS EVENT_NDIS_BAD_IO_BASE_ADDRESS
574 #define NDIS_ERROR_CODE_RECEIVE_SPACE_SMALL EVENT_NDIS_RECEIVE_SPACE_SMALL
575 #define NDIS_ERROR_CODE_ADAPTER_DISABLED EVENT_NDIS_ADAPTER_DISABLED
577 /* Memory allocation flags. Used by Ndis[Allocate|Free]Memory */
578 #define NDIS_MEMORY_CONTIGUOUS 0x00000001
579 #define NDIS_MEMORY_NONCACHED 0x00000002
581 /* NIC attribute flags. Used by NdisMSetAttributes(Ex) */
582 #define NDIS_ATTRIBUTE_IGNORE_PACKET_TIMEOUT 0x00000001
583 #define NDIS_ATTRIBUTE_IGNORE_REQUEST_TIMEOUT 0x00000002
584 #define NDIS_ATTRIBUTE_IGNORE_TOKEN_RING_ERRORS 0x00000004
585 #define NDIS_ATTRIBUTE_BUS_MASTER 0x00000008
586 #define NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER 0x00000010
587 #define NDIS_ATTRIBUTE_DESERIALIZE 0x00000020
588 #define NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND 0x00000040
589 #define NDIS_ATTRIBUTE_SURPRISE_REMOVE_OK 0x00000080
590 #define NDIS_ATTRIBUTE_NOT_CO_NDIS 0x00000100
591 #define NDIS_ATTRIBUTE_USES_SAFE_BUFFER_APIS 0x00000200
595 #if NDIS_SUPPORT_60_COMPATIBLE_API
597 typedef union _NDIS_RW_LOCK_REFCOUNT
{
600 } NDIS_RW_LOCK_REFCOUNT
;
602 typedef struct _NDIS_RW_LOCK
{
603 __MINGW_EXTENSION
union {
604 __MINGW_EXTENSION
struct {
610 __MINGW_EXTENSION
union {
611 NDIS_RW_LOCK_REFCOUNT RefCount
[MAXIMUM_PROCESSORS
];
612 ULONG RefCountEx
[sizeof(NDIS_RW_LOCK_REFCOUNT
)/sizeof(ULONG
) * MAXIMUM_PROCESSORS
];
613 __MINGW_EXTENSION
struct {
614 KSPIN_LOCK RefCountLock
;
615 volatile ULONG SharedRefCount
;
616 volatile BOOLEAN WriterWaiting
;
619 } NDIS_RW_LOCK
, *PNDIS_RW_LOCK
;
621 typedef struct _LOCK_STATE
{
624 } LOCK_STATE
, *PLOCK_STATE
;
626 #endif /* NDIS_SUPPORT_60_COMPATIBLE_API */
630 _IRQL_requires_(DISPATCH_LEVEL
)
632 _Function_class_(NDIS_TIMER_FUNCTION
)
634 (NTAPI NDIS_TIMER_FUNCTION
)(
635 _In_ PVOID SystemSpecific1
,
636 _In_ PVOID FunctionContext
,
637 _In_ PVOID SystemSpecific2
,
638 _In_ PVOID SystemSpecific3
);
639 typedef NDIS_TIMER_FUNCTION
*PNDIS_TIMER_FUNCTION
;
641 typedef struct _NDIS_TIMER
{
644 } NDIS_TIMER
, *PNDIS_TIMER
;
648 typedef CM_MCA_POS_DATA NDIS_MCA_POS_DATA
, *PNDIS_MCA_POS_DATA
;
649 typedef CM_EISA_SLOT_INFORMATION NDIS_EISA_SLOT_INFORMATION
, *PNDIS_EISA_SLOT_INFORMATION
;
650 typedef CM_EISA_FUNCTION_INFORMATION NDIS_EISA_FUNCTION_INFORMATION
, *PNDIS_EISA_FUNCTION_INFORMATION
;
651 typedef CM_PARTIAL_RESOURCE_LIST NDIS_RESOURCE_LIST
, *PNDIS_RESOURCE_LIST
;
654 #define READABLE_LOCAL_CLOCK 0x00000001
655 #define CLOCK_NETWORK_DERIVED 0x00000002
656 #define CLOCK_PRECISION 0x00000004
657 #define RECEIVE_TIME_INDICATION_CAPABLE 0x00000008
658 #define TIMED_SEND_CAPABLE 0x00000010
659 #define TIME_STAMP_CAPABLE 0x00000020
661 /* NDIS packet filter bits (OID_GEN_CURRENT_PACKET_FILTER) */
662 #define NDIS_PACKET_TYPE_DIRECTED 0x00000001
663 #define NDIS_PACKET_TYPE_MULTICAST 0x00000002
664 #define NDIS_PACKET_TYPE_ALL_MULTICAST 0x00000004
665 #define NDIS_PACKET_TYPE_BROADCAST 0x00000008
666 #define NDIS_PACKET_TYPE_SOURCE_ROUTING 0x00000010
667 #define NDIS_PACKET_TYPE_PROMISCUOUS 0x00000020
668 #define NDIS_PACKET_TYPE_SMT 0x00000040
669 #define NDIS_PACKET_TYPE_ALL_LOCAL 0x00000080
670 #define NDIS_PACKET_TYPE_GROUP 0x00001000
671 #define NDIS_PACKET_TYPE_ALL_FUNCTIONAL 0x00002000
672 #define NDIS_PACKET_TYPE_FUNCTIONAL 0x00004000
673 #define NDIS_PACKET_TYPE_MAC_FRAME 0x00008000
675 /* NDIS protocol option bits (OID_GEN_PROTOCOL_OPTIONS) */
676 #define NDIS_PROT_OPTION_ESTIMATED_LENGTH 0x00000001
677 #define NDIS_PROT_OPTION_NO_LOOPBACK 0x00000002
678 #define NDIS_PROT_OPTION_NO_RSVD_ON_RCVPKT 0x00000004
680 /* NDIS MAC option bits (OID_GEN_MAC_OPTIONS) */
681 #define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA 0x00000001
682 #define NDIS_MAC_OPTION_RECEIVE_SERIALIZED 0x00000002
683 #define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND 0x00000004
684 #define NDIS_MAC_OPTION_NO_LOOPBACK 0x00000008
685 #define NDIS_MAC_OPTION_FULL_DUPLEX 0x00000010
686 #define NDIS_MAC_OPTION_EOTX_INDICATION 0x00000020
687 #define NDIS_MAC_OPTION_8021P_PRIORITY 0x00000040
688 #define NDIS_MAC_OPTION_RESERVED 0x80000000
690 #define NDIS_GUID_TO_OID 0x00000001
691 #define NDIS_GUID_TO_STATUS 0x00000002
692 #define NDIS_GUID_ANSI_STRING 0x00000004
693 #define NDIS_GUID_UNICODE_STRING 0x00000008
694 #define NDIS_GUID_ARRAY 0x00000010
696 #if NDIS_LEGACY_DRIVER
698 /* NDIS_PACKET_PRIVATE.Flags constants */
699 #define fPACKET_WRAPPER_RESERVED 0x3f
700 #define fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO 0x40
701 #define fPACKET_ALLOCATED_BY_NDIS 0x80
703 #define NDIS_FLAGS_PROTOCOL_ID_MASK 0x0000000f
704 #define NDIS_FLAGS_MULTICAST_PACKET 0x00000010
705 #define NDIS_FLAGS_RESERVED2 0x00000020
706 #define NDIS_FLAGS_RESERVED3 0x00000040
707 #define NDIS_FLAGS_DONT_LOOPBACK 0x00000080
708 #define NDIS_FLAGS_IS_LOOPBACK_PACKET 0x00000100
709 #define NDIS_FLAGS_LOOPBACK_ONLY 0x00000200
710 #define NDIS_FLAGS_RESERVED4 0x00000400
711 #define NDIS_FLAGS_DOUBLE_BUFFERED 0x00000800
712 #define NDIS_FLAGS_SENT_AT_DPC 0x00001000
713 #define NDIS_FLAGS_USES_SG_BUFFER_LIST 0x00002000
714 #define NDIS_FLAGS_USES_ORIGINAL_PACKET 0x00004000
715 #define NDIS_FLAGS_PADDED 0x00010000
716 #define NDIS_FLAGS_XLATE_AT_TOP 0x00020000
718 typedef NDIS_HANDLE PNDIS_PACKET_POOL
;
720 typedef struct _NDIS_PACKET_PRIVATE
{
725 PNDIS_PACKET_POOL Pool
;
729 UCHAR NdisPacketFlags
;
730 USHORT NdisPacketOobOffset
;
731 } NDIS_PACKET_PRIVATE
, *PNDIS_PACKET_PRIVATE
;
733 typedef struct _NDIS_PACKET
{
734 NDIS_PACKET_PRIVATE Private
;
735 __MINGW_EXTENSION
union {
736 __MINGW_EXTENSION
struct {
737 UCHAR MiniportReserved
[2 * sizeof(PVOID
)];
738 UCHAR WrapperReserved
[2 * sizeof(PVOID
)];
740 __MINGW_EXTENSION
struct {
741 UCHAR MiniportReservedEx
[3 * sizeof(PVOID
)];
742 UCHAR WrapperReservedEx
[sizeof(PVOID
)];
744 __MINGW_EXTENSION
struct {
745 UCHAR MacReserved
[4 * sizeof(PVOID
)];
748 ULONG_PTR Reserved
[2];
749 UCHAR ProtocolReserved
[1];
750 } NDIS_PACKET
, *PNDIS_PACKET
, **PPNDIS_PACKET
;
752 typedef struct _NDIS_PACKET_STACK
{
753 ULONG_PTR IMReserved
[2];
754 ULONG_PTR NdisReserved
[4];
755 } NDIS_PACKET_STACK
, *PNDIS_PACKET_STACK
;
757 #endif /* NDIS_LEGACY_DRIVER */
759 typedef enum _NDIS_CLASS_ID
{
760 NdisClass802_3Priority
,
761 NdisClassWirelessWanMbxMailbox
,
762 NdisClassIrdaPacketInfo
,
766 typedef struct _MEDIA_SPECIFIC_INFORMATION
{
767 UINT NextEntryOffset
;
768 NDIS_CLASS_ID ClassId
;
770 UCHAR ClassInformation
[1];
771 } MEDIA_SPECIFIC_INFORMATION
, *PMEDIA_SPECIFIC_INFORMATION
;
773 #if NDIS_LEGACY_DRIVER
774 typedef struct _NDIS_PACKET_OOB_DATA
{
775 __MINGW_EXTENSION
union {
776 ULONGLONG TimeToSend
;
779 ULONGLONG TimeReceived
;
781 UINT SizeMediaSpecificInfo
;
782 PVOID MediaSpecificInformation
;
784 } NDIS_PACKET_OOB_DATA
, *PNDIS_PACKET_OOB_DATA
;
787 /* Request types used by NdisRequest */
788 typedef enum _NDIS_REQUEST_TYPE
{
789 NdisRequestQueryInformation
,
790 NdisRequestSetInformation
,
791 NdisRequestQueryStatistics
,
795 NdisRequestTransferData
,
801 #if NDIS_SUPPORT_NDIS6
804 } NDIS_REQUEST_TYPE
, *PNDIS_REQUEST_TYPE
;
806 #if NDIS_LEGACY_DRIVER
807 typedef struct _NDIS_REQUEST
{
808 UCHAR MacReserved
[4 * sizeof(PVOID
)];
809 NDIS_REQUEST_TYPE RequestType
;
811 struct QUERY_INFORMATION
{
813 PVOID InformationBuffer
;
814 UINT InformationBufferLength
;
818 struct SET_INFORMATION
{
820 PVOID InformationBuffer
;
821 UINT InformationBufferLength
;
826 #if (defined(NDIS50) || defined(NDIS51) || defined(NDIS50_MINIPORT) || defined(NDIS51_MINIPORT))
827 UCHAR NdisReserved
[9 * sizeof(PVOID
)];
828 __MINGW_EXTENSION
union {
829 UCHAR CallMgrReserved
[2 * sizeof(PVOID
)];
830 UCHAR ProtocolReserved
[2 * sizeof(PVOID
)];
832 UCHAR MiniportReserved
[2 * sizeof(PVOID
)];
834 } NDIS_REQUEST
, *PNDIS_REQUEST
;
835 #endif /* NDIS_LEGACY_DRIVER */
837 /* Wide Area Networks definitions */
839 #if NDIS_LEGACY_DRIVER
840 typedef struct _NDIS_WAN_PACKET
{
841 LIST_ENTRY WanPacketQueue
;
842 PUCHAR CurrentBuffer
;
846 PVOID ProtocolReserved1
;
847 PVOID ProtocolReserved2
;
848 PVOID ProtocolReserved3
;
849 PVOID ProtocolReserved4
;
854 } NDIS_WAN_PACKET
, *PNDIS_WAN_PACKET
;
857 /* DMA channel information */
859 typedef struct _NDIS_DMA_DESCRIPTION
{
861 BOOLEAN AutoInitialize
;
862 BOOLEAN DmaChannelSpecified
;
867 } NDIS_DMA_DESCRIPTION
, *PNDIS_DMA_DESCRIPTION
;
869 typedef struct _NDIS_DMA_BLOCK
{
870 PVOID MapRegisterBase
;
871 KEVENT AllocationEvent
;
872 PADAPTER_OBJECT SystemAdapterObject
;
875 } NDIS_DMA_BLOCK
, *PNDIS_DMA_BLOCK
;
877 typedef UCHAR NDIS_DMA_SIZE
;
879 #define NDIS_DMA_24BITS ((NDIS_DMA_SIZE)0)
880 #define NDIS_DMA_32BITS ((NDIS_DMA_SIZE)1)
881 #define NDIS_DMA_64BITS ((NDIS_DMA_SIZE)2)
883 typedef enum _NDIS_PROCESSOR_TYPE
{
890 } NDIS_PROCESSOR_TYPE
, *PNDIS_PROCESSOR_TYPE
;
892 typedef enum _NDIS_ENVIRONMENT_TYPE
{
893 NdisEnvironmentWindows
,
894 NdisEnvironmentWindowsNt
895 } NDIS_ENVIRONMENT_TYPE
, *PNDIS_ENVIRONMENT_TYPE
;
897 /* Possible hardware architecture */
898 typedef enum _NDIS_INTERFACE_TYPE
{
899 NdisInterfaceInternal
= Internal
,
900 NdisInterfaceIsa
= Isa
,
901 NdisInterfaceEisa
= Eisa
,
902 NdisInterfaceMca
= MicroChannel
,
903 NdisInterfaceTurboChannel
= TurboChannel
,
904 NdisInterfacePci
= PCIBus
,
905 NdisInterfacePcMcia
= PCMCIABus
,
906 NdisInterfaceCBus
= CBus
,
907 NdisInterfaceMPIBus
= MPIBus
,
908 NdisInterfaceMPSABus
= MPSABus
,
909 NdisInterfaceProcessorInternal
= ProcessorInternal
,
910 NdisInterfaceInternalPowerBus
= InternalPowerBus
,
911 NdisInterfacePNPISABus
= PNPISABus
,
912 NdisInterfacePNPBus
= PNPBus
,
916 NdisMaximumInterfaceType
917 } NDIS_INTERFACE_TYPE
, *PNDIS_INTERFACE_TYPE
;
919 #define NdisInterruptLevelSensitive LevelSensitive
920 #define NdisInterruptLatched Latched
922 typedef KINTERRUPT_MODE NDIS_INTERRUPT_MODE
, *PNDIS_INTERRUPT_MODE
;
924 typedef enum _NDIS_PARAMETER_TYPE
{
925 NdisParameterInteger
,
926 NdisParameterHexInteger
,
928 NdisParameterMultiString
,
930 } NDIS_PARAMETER_TYPE
, *PNDIS_PARAMETER_TYPE
;
932 typedef struct _BINARY_DATA
{
934 _Field_size_bytes_(Length
) PVOID Buffer
;
937 typedef struct _NDIS_CONFIGURATION_PARAMETER
{
938 NDIS_PARAMETER_TYPE ParameterType
;
941 NDIS_STRING StringData
;
942 BINARY_DATA BinaryData
;
944 } NDIS_CONFIGURATION_PARAMETER
, *PNDIS_CONFIGURATION_PARAMETER
;
946 typedef PHYSICAL_ADDRESS NDIS_PHYSICAL_ADDRESS
, *PNDIS_PHYSICAL_ADDRESS
;
948 typedef struct _NDIS_PHYSICAL_ADDRESS_UNIT
{
949 NDIS_PHYSICAL_ADDRESS PhysicalAddress
;
951 } NDIS_PHYSICAL_ADDRESS_UNIT
, *PNDIS_PHYSICAL_ADDRESS_UNIT
;
953 typedef struct _NDIS_WAN_LINE_DOWN
{
954 UCHAR RemoteAddress
[6];
955 UCHAR LocalAddress
[6];
956 } NDIS_WAN_LINE_DOWN
, *PNDIS_WAN_LINE_DOWN
;
958 typedef struct _NDIS_WAN_LINE_UP
{
960 ULONG MaximumTotalSize
;
961 NDIS_WAN_QUALITY Quality
;
963 UCHAR RemoteAddress
[6];
964 OUT UCHAR LocalAddress
[6];
965 ULONG ProtocolBufferLength
;
966 PUCHAR ProtocolBuffer
;
968 NDIS_STRING DeviceName
;
969 } NDIS_WAN_LINE_UP
, *PNDIS_WAN_LINE_UP
;
972 (NTAPI
*TDI_REGISTER_CALLBACK
)(
973 _In_ PUNICODE_STRING DeviceName
,
974 _Out_ HANDLE
*TdiHandle
);
977 (NTAPI
*TDI_PNP_HANDLER
)(
978 _In_ PUNICODE_STRING UpperComponent
,
979 _In_ PUNICODE_STRING LowerComponent
,
980 _In_ PUNICODE_STRING BindList
,
981 _In_ PVOID ReconfigBuffer
,
982 _In_ UINT ReconfigBufferSize
,
983 _In_ UINT Operation
);
985 typedef struct _OID_LIST OID_LIST
, *POID_LIST
;
989 typedef enum _NDIS_PNP_DEVICE_STATE
{
991 NdisPnPDeviceStarted
,
992 NdisPnPDeviceQueryStopped
,
993 NdisPnPDeviceStopped
,
994 NdisPnPDeviceQueryRemoved
,
995 NdisPnPDeviceRemoved
,
996 NdisPnPDeviceSurpriseRemoved
997 } NDIS_PNP_DEVICE_STATE
;
999 #define NDIS_DEVICE_NOT_STOPPABLE 0x00000001
1000 #define NDIS_DEVICE_NOT_REMOVEABLE 0x00000002
1001 #define NDIS_DEVICE_NOT_SUSPENDABLE 0x00000004
1002 #define NDIS_DEVICE_DISABLE_PM 0x00000008
1003 #define NDIS_DEVICE_DISABLE_WAKE_UP 0x00000010
1004 #define NDIS_DEVICE_DISABLE_WAKE_ON_RECONNECT 0x00000020
1005 #define NDIS_DEVICE_RESERVED 0x00000040
1006 #define NDIS_DEVICE_DISABLE_WAKE_ON_MAGIC_PACKET 0x00000080
1007 #define NDIS_DEVICE_DISABLE_WAKE_ON_PATTERN_MATCH 0x00000100
1009 /* Protocol types supported by NDIS */
1010 #define NDIS_PROTOCOL_ID_DEFAULT 0x00
1011 #define NDIS_PROTOCOL_ID_TCP_IP 0x02
1012 #define NDIS_PROTOCOL_ID_IPX 0x06
1013 #define NDIS_PROTOCOL_ID_NBF 0x07
1014 #define NDIS_PROTOCOL_ID_MAX 0x0F
1015 #define NDIS_PROTOCOL_ID_MASK 0x0F
1017 typedef ULONG NDIS_AF
, *PNDIS_AF
;
1019 #define CO_ADDRESS_FAMILY_Q2931 ((NDIS_AF)0x1)
1020 #define CO_ADDRESS_FAMILY_PSCHED ((NDIS_AF)0x2)
1021 #define CO_ADDRESS_FAMILY_L2TP ((NDIS_AF)0x3)
1022 #define CO_ADDRESS_FAMILY_IRDA ((NDIS_AF)0x4)
1023 #define CO_ADDRESS_FAMILY_1394 ((NDIS_AF)0x5)
1024 #define CO_ADDRESS_FAMILY_PPP ((NDIS_AF)0x6)
1025 #define CO_ADDRESS_FAMILY_INFINIBAND ((NDIS_AF)0x7)
1026 #define CO_ADDRESS_FAMILY_TAPI ((NDIS_AF)0x800)
1027 #define CO_ADDRESS_FAMILY_TAPI_PROXY ((NDIS_AF)0x801)
1029 #define CO_ADDRESS_FAMILY_PROXY 0x80000000
1031 typedef struct _CO_ADDRESS_FAMILY
{
1032 NDIS_AF AddressFamily
;
1035 } CO_ADDRESS_FAMILY
, *PCO_ADDRESS_FAMILY
;
1037 typedef struct _CO_SPECIFIC_PARAMETERS
{
1040 UCHAR Parameters
[1];
1041 } CO_SPECIFIC_PARAMETERS
, *PCO_SPECIFIC_PARAMETERS
;
1043 typedef struct _CO_CALL_MANAGER_PARAMETERS
{
1046 CO_SPECIFIC_PARAMETERS CallMgrSpecific
;
1047 } CO_CALL_MANAGER_PARAMETERS
, *PCO_CALL_MANAGER_PARAMETERS
;
1049 /* CO_MEDIA_PARAMETERS.Flags constants */
1050 #define RECEIVE_TIME_INDICATION 0x00000001
1051 #define USE_TIME_STAMPS 0x00000002
1052 #define TRANSMIT_VC 0x00000004
1053 #define RECEIVE_VC 0x00000008
1054 #define INDICATE_ERRED_PACKETS 0x00000010
1055 #define INDICATE_END_OF_TX 0x00000020
1056 #define RESERVE_RESOURCES_VC 0x00000040
1057 #define ROUND_DOWN_FLOW 0x00000080
1058 #define ROUND_UP_FLOW 0x00000100
1060 typedef struct _CO_MEDIA_PARAMETERS
{
1062 ULONG ReceivePriority
;
1063 ULONG ReceiveSizeHint
;
1064 CO_SPECIFIC_PARAMETERS MediaSpecific
;
1065 } CO_MEDIA_PARAMETERS
, *PCO_MEDIA_PARAMETERS
;
1067 /* CO_CALL_PARAMETERS.Flags constants */
1068 #define PERMANENT_VC 0x00000001
1069 #define CALL_PARAMETERS_CHANGED 0x00000002
1070 #define QUERY_CALL_PARAMETERS 0x00000004
1071 #define BROADCAST_VC 0x00000008
1072 #define MULTIPOINT_VC 0x00000010
1074 typedef struct _CO_CALL_PARAMETERS
{
1076 PCO_CALL_MANAGER_PARAMETERS CallMgrParameters
;
1077 PCO_MEDIA_PARAMETERS MediaParameters
;
1078 } CO_CALL_PARAMETERS
, *PCO_CALL_PARAMETERS
;
1080 typedef struct _CO_SAP
{
1086 #if NDIS_LEGACY_DRIVER
1087 typedef struct _NDIS_IPSEC_PACKET_INFO
{
1088 __MINGW_EXTENSION
union {
1090 NDIS_HANDLE OffloadHandle
;
1091 NDIS_HANDLE NextOffloadHandle
;
1094 ULONG SA_DELETE_REQ
:1;
1095 ULONG CRYPTO_DONE
:1;
1096 ULONG NEXT_CRYPTO_DONE
:1;
1100 } NDIS_IPSEC_PACKET_INFO
, *PNDIS_IPSEC_PACKET_INFO
;
1103 #if (NDIS_SUPPORT_NDIS6 || NDIS60)
1104 typedef struct _NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO
{
1105 __MINGW_EXTENSION
union {
1107 NDIS_HANDLE OffloadHandle
;
1110 USHORT SaDeleteReq
:1;
1111 USHORT CryptoDone
:1;
1112 USHORT NextCryptoDone
:1;
1114 USHORT CryptoStatus
;
1117 } NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO
, *PNDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO
;
1120 /* NDIS_MAC_FRAGMENT.Errors constants */
1121 #define WAN_ERROR_CRC 0x00000001
1122 #define WAN_ERROR_FRAMING 0x00000002
1123 #define WAN_ERROR_HARDWAREOVERRUN 0x00000004
1124 #define WAN_ERROR_BUFFEROVERRUN 0x00000008
1125 #define WAN_ERROR_TIMEOUT 0x00000010
1126 #define WAN_ERROR_ALIGNMENT 0x00000020
1128 typedef struct _NDIS_MAC_FRAGMENT
{
1129 NDIS_HANDLE NdisLinkContext
;
1131 } NDIS_MAC_FRAGMENT
, *PNDIS_MAC_FRAGMENT
;
1133 typedef struct _NDIS_MAC_LINE_DOWN
{
1134 NDIS_HANDLE NdisLinkContext
;
1135 } NDIS_MAC_LINE_DOWN
, *PNDIS_MAC_LINE_DOWN
;
1137 typedef struct _NDIS_MAC_LINE_UP
{
1139 NDIS_WAN_QUALITY Quality
;
1141 NDIS_HANDLE ConnectionWrapperID
;
1142 NDIS_HANDLE NdisLinkHandle
;
1143 NDIS_HANDLE NdisLinkContext
;
1144 } NDIS_MAC_LINE_UP
, *PNDIS_MAC_LINE_UP
;
1146 typedef struct _NDIS_PACKET_8021Q_INFO
{
1147 __MINGW_EXTENSION
union {
1149 UINT32 UserPriority
:3;
1150 UINT32 CanonicalFormatId
:1;
1156 } NDIS_PACKET_8021Q_INFO
, *PNDIS_PACKET_8021Q_INFO
;
1158 typedef enum _NDIS_PER_PACKET_INFO
{
1159 TcpIpChecksumPacketInfo
,
1161 TcpLargeSendPacketInfo
,
1162 ClassificationHandlePacketInfo
,
1164 ScatterGatherListPacketInfo
,
1168 OriginalNetBufferList
,
1169 CachedNetBufferList
,
1170 ShortPacketPaddingInfo
,
1172 } NDIS_PER_PACKET_INFO
, *PNDIS_PER_PACKET_INFO
;
1174 #if NDIS_LEGACY_DRIVER
1176 typedef struct _NDIS_PACKET_EXTENSION
{
1177 PVOID NdisPacketInfo
[MaxPerPacketInfo
];
1178 } NDIS_PACKET_EXTENSION
, *PNDIS_PACKET_EXTENSION
;
1180 typedef enum _NDIS_TASK
{
1181 TcpIpChecksumNdisTask
,
1183 TcpLargeSendNdisTask
,
1185 } NDIS_TASK
, *PNDIS_TASK
;
1187 typedef enum _NDIS_ENCAPSULATION
{
1188 UNSPECIFIED_Encapsulation
,
1190 IEEE_802_3_Encapsulation
,
1191 IEEE_802_5_Encapsulation
,
1192 LLC_SNAP_ROUTED_Encapsulation
,
1193 LLC_SNAP_BRIDGED_Encapsulation
1194 } NDIS_ENCAPSULATION
;
1196 typedef struct _NDIS_ENCAPSULATION_FORMAT
{
1197 NDIS_ENCAPSULATION Encapsulation
;
1199 ULONG FixedHeaderSize
:1;
1202 ULONG EncapsulationHeaderSize
;
1203 } NDIS_ENCAPSULATION_FORMAT
, *PNDIS_ENCAPSULATION_FORMAT
;
1205 typedef struct _NDIS_TASK_OFFLOAD_HEADER
{
1209 ULONG OffsetFirstTask
;
1210 NDIS_ENCAPSULATION_FORMAT EncapsulationFormat
;
1211 } NDIS_TASK_OFFLOAD_HEADER
, *PNDIS_TASK_OFFLOAD_HEADER
;
1213 typedef struct _NDIS_TASK_OFFLOAD
{
1217 ULONG OffsetNextTask
;
1218 ULONG TaskBufferLength
;
1219 UCHAR TaskBuffer
[1];
1220 } NDIS_TASK_OFFLOAD
, *PNDIS_TASK_OFFLOAD
;
1222 typedef struct _NDIS_TASK_TCP_IP_CHECKSUM
{
1224 ULONG IpOptionsSupported
:1;
1225 ULONG TcpOptionsSupported
:1;
1226 ULONG TcpChecksum
:1;
1227 ULONG UdpChecksum
:1;
1231 ULONG IpOptionsSupported
:1;
1232 ULONG TcpOptionsSupported
:1;
1233 ULONG TcpChecksum
:1;
1234 ULONG UdpChecksum
:1;
1238 ULONG IpOptionsSupported
:1;
1239 ULONG TcpOptionsSupported
:1;
1240 ULONG TcpChecksum
:1;
1241 ULONG UdpChecksum
:1;
1244 ULONG IpOptionsSupported
:1;
1245 ULONG TcpOptionsSupported
:1;
1246 ULONG TcpChecksum
:1;
1247 ULONG UdpChecksum
:1;
1249 } NDIS_TASK_TCP_IP_CHECKSUM
, *PNDIS_TASK_TCP_IP_CHECKSUM
;
1251 #define NDIS_TASK_TCP_LARGE_SEND_V0 0
1253 typedef struct _NDIS_TASK_TCP_LARGE_SEND
{
1255 ULONG MaxOffLoadSize
;
1256 ULONG MinSegmentCount
;
1259 } NDIS_TASK_TCP_LARGE_SEND
, *PNDIS_TASK_TCP_LARGE_SEND
;
1261 typedef struct _NDIS_TASK_IPSEC
{
1263 ULONG AH_ESP_COMBINED
;
1264 ULONG TRANSPORT_TUNNEL_COMBINED
;
1286 } NDIS_TASK_IPSEC
, *PNDIS_TASK_IPSEC
;
1288 #endif /* NDIS_LEGACY_DRIVER */
1290 #define IPSEC_TPT_UDPESP_ENCAPTYPE_IKE 0x00000001
1291 #define IPSEC_TUN_UDPESP_ENCAPTYPE_IKE 0x00000002
1292 #define IPSEC_TPTOVERTUN_UDPESP_ENCAPTYPE_IKE 0x00000004
1293 #define IPSEC_TPT_UDPESP_OVER_PURE_TUN_ENCAPTYPE_IKE 0x00000008
1294 #define IPSEC_TPT_UDPESP_ENCAPTYPE_OTHER 0x00000010
1295 #define IPSEC_TUN_UDPESP_ENCAPTYPE_OTHER 0x00000020
1296 #define IPSEC_TPTOVERTUN_UDPESP_ENCAPTYPE_OTHER 0x00000040
1297 #define IPSEC_TPT_UDPESP_OVER_PURE_TUN_ENCAPTYPE_OTHER 0x00000080
1299 #if NDIS_LEGACY_DRIVER
1303 * NDIS_GET_ORIGINAL_PACKET(
1304 * IN PNDIS_PACKET Packet);
1306 #define NDIS_GET_ORIGINAL_PACKET(Packet) \
1307 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, OriginalPacketInfo)
1311 * NDIS_GET_PACKET_CANCEL_ID(
1312 * IN PNDIS_PACKET Packet);
1314 #define NDIS_GET_PACKET_CANCEL_ID(Packet) \
1315 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, PacketCancelId)
1318 * PNDIS_PACKET_EXTENSION
1319 * NDIS_PACKET_EXTENSION_FROM_PACKET(
1320 * IN PNDIS_PACKET Packet);
1322 #define NDIS_PACKET_EXTENSION_FROM_PACKET(Packet) \
1323 ((PNDIS_PACKET_EXTENSION)((PUCHAR)(Packet) \
1324 + (Packet)->Private.NdisPacketOobOffset + sizeof(NDIS_PACKET_OOB_DATA)))
1328 * NDIS_PER_PACKET_INFO_FROM_PACKET(
1329 * IN OUT PNDIS_PACKET Packet,
1330 * IN NDIS_PER_PACKET_INFO InfoType);
1332 #define NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, InfoType) \
1333 ((PNDIS_PACKET_EXTENSION)((PUCHAR)(Packet) + (Packet)->Private.NdisPacketOobOffset \
1334 + sizeof(NDIS_PACKET_OOB_DATA)))->NdisPacketInfo[(InfoType)]
1338 * NDIS_SET_ORIGINAL_PACKET(
1339 * IN OUT PNDIS_PACKET Packet,
1340 * IN PNDIS_PACKET OriginalPacket);
1342 #define NDIS_SET_ORIGINAL_PACKET(Packet, OriginalPacket) \
1343 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, OriginalPacketInfo) = (OriginalPacket)
1347 * NDIS_SET_PACKET_CANCEL_ID(
1348 * IN PNDIS_PACKET Packet
1349 * IN ULONG_PTR CancelId);
1351 #define NDIS_SET_PACKET_CANCEL_ID(Packet, CancelId) \
1352 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, PacketCancelId) = (CancelId)
1354 #define NdisSetPacketCancelId(_Packet, _CancelId) NDIS_SET_PACKET_CANCEL_ID(_Packet, _CancelId)
1355 #define NdisGetPacketCancelId(_Packet) NDIS_GET_PACKET_CANCEL_ID(_Packet)
1357 #endif /* NDIS_LEGACY_DRIVER */
1359 #if NDIS_SUPPORT_NDIS6
1360 typedef struct _NDIS_GENERIC_OBJECT
{
1361 NDIS_OBJECT_HEADER Header
;
1363 PVOID CallersCaller
;
1364 PDRIVER_OBJECT DriverObject
;
1365 } NDIS_GENERIC_OBJECT
, *PNDIS_GENERIC_OBJECT
;
1368 /* NDIS_TASK_OFFLOAD_HEADER.Version constants */
1369 #define NDIS_TASK_OFFLOAD_VERSION 1
1371 #define MAX_HASHES 4
1372 #define TRUNCATED_HASH_LEN 12
1374 #define CRYPTO_SUCCESS 0
1375 #define CRYPTO_GENERIC_ERROR 1
1376 #define CRYPTO_TRANSPORT_AH_AUTH_FAILED 2
1377 #define CRYPTO_TRANSPORT_ESP_AUTH_FAILED 3
1378 #define CRYPTO_TUNNEL_AH_AUTH_FAILED 4
1379 #define CRYPTO_TUNNEL_ESP_AUTH_FAILED 5
1380 #define CRYPTO_INVALID_PACKET_SYNTAX 6
1381 #define CRYPTO_INVALID_PROTOCOL 7
1383 typedef struct _NDIS_TCP_IP_CHECKSUM_PACKET_INFO
{
1384 __MINGW_EXTENSION
union {
1386 ULONG NdisPacketChecksumV4
:1;
1387 ULONG NdisPacketChecksumV6
:1;
1388 ULONG NdisPacketTcpChecksum
:1;
1389 ULONG NdisPacketUdpChecksum
:1;
1390 ULONG NdisPacketIpChecksum
:1;
1393 ULONG NdisPacketTcpChecksumFailed
:1;
1394 ULONG NdisPacketUdpChecksumFailed
:1;
1395 ULONG NdisPacketIpChecksumFailed
:1;
1396 ULONG NdisPacketTcpChecksumSucceeded
:1;
1397 ULONG NdisPacketUdpChecksumSucceeded
:1;
1398 ULONG NdisPacketIpChecksumSucceeded
:1;
1399 ULONG NdisPacketLoopback
:1;
1403 } NDIS_TCP_IP_CHECKSUM_PACKET_INFO
, *PNDIS_TCP_IP_CHECKSUM_PACKET_INFO
;
1405 typedef struct _NDIS_WAN_CO_FRAGMENT
{
1407 } NDIS_WAN_CO_FRAGMENT
, *PNDIS_WAN_CO_FRAGMENT
;
1409 typedef struct _NDIS_WAN_FRAGMENT
{
1410 UCHAR RemoteAddress
[6];
1411 UCHAR LocalAddress
[6];
1412 } NDIS_WAN_FRAGMENT
, *PNDIS_WAN_FRAGMENT
;
1414 typedef struct _WAN_CO_LINKPARAMS
{
1415 ULONG TransmitSpeed
;
1418 } WAN_CO_LINKPARAMS
, *PWAN_CO_LINKPARAMS
;
1420 typedef struct _NDIS_WAN_GET_STATS
{
1421 UCHAR LocalAddress
[6];
1427 ULONG TimeoutErrors
;
1428 ULONG AlignmentErrors
;
1429 ULONG SerialOverrunErrors
;
1430 ULONG FramingErrors
;
1431 ULONG BufferOverrunErrors
;
1432 ULONG BytesTransmittedUncompressed
;
1433 ULONG BytesReceivedUncompressed
;
1434 ULONG BytesTransmittedCompressed
;
1435 ULONG BytesReceivedCompressed
;
1436 } NDIS_WAN_GET_STATS
, *PNDIS_WAN_GET_STATS
;
1441 (NTAPI
*CM_ACTIVATE_VC_COMPLETE_HANDLER
)(
1442 IN NDIS_STATUS Status
,
1443 IN NDIS_HANDLE CallMgrVcContext
,
1444 IN PCO_CALL_PARAMETERS CallParameters
);
1447 (NTAPI
*CM_ADD_PARTY_HANDLER
)(
1448 IN NDIS_HANDLE CallMgrVcContext
,
1449 IN OUT PCO_CALL_PARAMETERS CallParameters
,
1450 IN NDIS_HANDLE NdisPartyHandle
,
1451 OUT PNDIS_HANDLE CallMgrPartyContext
);
1454 (NTAPI
*CM_CLOSE_AF_HANDLER
)(
1455 IN NDIS_HANDLE CallMgrAfContext
);
1458 (NTAPI
*CM_CLOSE_CALL_HANDLER
)(
1459 IN NDIS_HANDLE CallMgrVcContext
,
1460 IN NDIS_HANDLE CallMgrPartyContext OPTIONAL
,
1461 IN PVOID CloseData OPTIONAL
,
1462 IN UINT Size OPTIONAL
);
1465 (NTAPI
*CM_DEREG_SAP_HANDLER
)(
1466 IN NDIS_HANDLE CallMgrSapContext
);
1469 (NTAPI
*CM_DEACTIVATE_VC_COMPLETE_HANDLER
)(
1470 IN NDIS_STATUS Status
,
1471 IN NDIS_HANDLE CallMgrVcContext
);
1474 (NTAPI
*CM_DROP_PARTY_HANDLER
)(
1475 IN NDIS_HANDLE CallMgrPartyContext
,
1476 IN PVOID CloseData OPTIONAL
,
1477 IN UINT Size OPTIONAL
);
1480 (NTAPI
*CM_INCOMING_CALL_COMPLETE_HANDLER
)(
1481 IN NDIS_STATUS Status
,
1482 IN NDIS_HANDLE CallMgrVcContext
,
1483 IN PCO_CALL_PARAMETERS CallParameters
);
1486 (NTAPI
*CM_MAKE_CALL_HANDLER
)(
1487 IN NDIS_HANDLE CallMgrVcContext
,
1488 IN OUT PCO_CALL_PARAMETERS CallParameters
,
1489 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
1490 OUT PNDIS_HANDLE CallMgrPartyContext OPTIONAL
);
1493 (NTAPI
*CM_MODIFY_CALL_QOS_HANDLER
)(
1494 IN NDIS_HANDLE CallMgrVcContext
,
1495 IN PCO_CALL_PARAMETERS CallParameters
);
1498 (NTAPI
*CM_OPEN_AF_HANDLER
)(
1499 IN NDIS_HANDLE CallMgrBindingContext
,
1500 IN PCO_ADDRESS_FAMILY AddressFamily
,
1501 IN NDIS_HANDLE NdisAfHandle
,
1502 OUT PNDIS_HANDLE CallMgrAfContext
);
1505 (NTAPI
*CM_REG_SAP_HANDLER
)(
1506 IN NDIS_HANDLE CallMgrAfContext
,
1508 IN NDIS_HANDLE NdisSapHandle
,
1509 OUT PNDIS_HANDLE CallMgrSapContext
);
1512 (NTAPI
*CO_CREATE_VC_HANDLER
)(
1513 IN NDIS_HANDLE ProtocolAfContext
,
1514 IN NDIS_HANDLE NdisVcHandle
,
1515 OUT PNDIS_HANDLE ProtocolVcContext
);
1518 (NTAPI
*CO_DELETE_VC_HANDLER
)(
1519 IN NDIS_HANDLE ProtocolVcContext
);
1521 #define PROTOCOL_RESERVED_SIZE_IN_PACKET (4 * sizeof(PVOID))
1523 /* Prototypes for NDIS 5.0 protocol characteristics */
1525 _IRQL_requires_(PASSIVE_LEVEL
)
1527 (NTAPI
*CO_SEND_COMPLETE_HANDLER
)(
1528 _In_ NDIS_STATUS Status
,
1529 _In_ NDIS_HANDLE ProtocolVcContext
,
1530 _In_ PNDIS_PACKET Packet
);
1532 _IRQL_requires_max_(DISPATCH_LEVEL
)
1534 (NTAPI
*CO_STATUS_HANDLER
)(
1535 _In_ NDIS_HANDLE ProtocolBindingContext
,
1536 _In_opt_ NDIS_HANDLE ProtocolVcContext
,
1537 _In_ NDIS_STATUS GeneralStatus
,
1538 _In_ PVOID StatusBuffer
,
1539 _In_ UINT StatusBufferSize
);
1541 _IRQL_requires_max_(DISPATCH_LEVEL
)
1543 (NTAPI
*CO_RECEIVE_PACKET_HANDLER
)(
1544 _In_ NDIS_HANDLE ProtocolBindingContext
,
1545 _In_ NDIS_HANDLE ProtocolVcContext
,
1546 _In_ PNDIS_PACKET Packet
);
1548 _IRQL_requires_max_(DISPATCH_LEVEL
)
1550 (NTAPI
*CO_REQUEST_HANDLER
)(
1551 _In_ NDIS_HANDLE ProtocolAfContext
,
1552 _In_opt_ NDIS_HANDLE ProtocolVcContext
,
1553 _In_opt_ NDIS_HANDLE ProtocolPartyContext
,
1554 _Inout_ PNDIS_REQUEST NdisRequest
);
1556 _IRQL_requires_max_(DISPATCH_LEVEL
)
1558 (NTAPI
*CO_REQUEST_COMPLETE_HANDLER
)(
1559 _In_ NDIS_STATUS Status
,
1560 _In_opt_ NDIS_HANDLE ProtocolAfContext
,
1561 _In_opt_ NDIS_HANDLE ProtocolVcContext
,
1562 _In_opt_ NDIS_HANDLE ProtocolPartyContext
,
1563 _In_ PNDIS_REQUEST NdisRequest
);
1565 typedef struct _NDIS_CALL_MANAGER_CHARACTERISTICS
{
1570 CO_CREATE_VC_HANDLER CmCreateVcHandler
;
1571 CO_DELETE_VC_HANDLER CmDeleteVcHandler
;
1572 CM_OPEN_AF_HANDLER CmOpenAfHandler
;
1573 CM_CLOSE_AF_HANDLER CmCloseAfHandler
;
1574 CM_REG_SAP_HANDLER CmRegisterSapHandler
;
1575 CM_DEREG_SAP_HANDLER CmDeregisterSapHandler
;
1576 CM_MAKE_CALL_HANDLER CmMakeCallHandler
;
1577 CM_CLOSE_CALL_HANDLER CmCloseCallHandler
;
1578 CM_INCOMING_CALL_COMPLETE_HANDLER CmIncomingCallCompleteHandler
;
1579 CM_ADD_PARTY_HANDLER CmAddPartyHandler
;
1580 CM_DROP_PARTY_HANDLER CmDropPartyHandler
;
1581 CM_ACTIVATE_VC_COMPLETE_HANDLER CmActivateVcCompleteHandler
;
1582 CM_DEACTIVATE_VC_COMPLETE_HANDLER CmDeactivateVcCompleteHandler
;
1583 CM_MODIFY_CALL_QOS_HANDLER CmModifyCallQoSHandler
;
1584 CO_REQUEST_HANDLER CmRequestHandler
;
1585 CO_REQUEST_COMPLETE_HANDLER CmRequestCompleteHandler
;
1586 } NDIS_CALL_MANAGER_CHARACTERISTICS
, *PNDIS_CALL_MANAGER_CHARACTERISTICS
;
1590 /* Call Manager clients */
1592 typedef VOID (*CL_OPEN_AF_COMPLETE_HANDLER
)(
1593 IN NDIS_STATUS Status
,
1594 IN NDIS_HANDLE ProtocolAfContext
,
1595 IN NDIS_HANDLE NdisAfHandle
);
1598 (NTAPI
*CL_CLOSE_AF_COMPLETE_HANDLER
)(
1599 IN NDIS_STATUS Status
,
1600 IN NDIS_HANDLE ProtocolAfContext
);
1603 (NTAPI
*CL_REG_SAP_COMPLETE_HANDLER
)(
1604 IN NDIS_STATUS Status
,
1605 IN NDIS_HANDLE ProtocolSapContext
,
1607 IN NDIS_HANDLE NdisSapHandle
);
1610 (NTAPI
*CL_DEREG_SAP_COMPLETE_HANDLER
)(
1611 IN NDIS_STATUS Status
,
1612 IN NDIS_HANDLE ProtocolSapContext
);
1615 (NTAPI
*CL_MAKE_CALL_COMPLETE_HANDLER
)(
1616 IN NDIS_STATUS Status
,
1617 IN NDIS_HANDLE ProtocolVcContext
,
1618 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
1619 IN PCO_CALL_PARAMETERS CallParameters
);
1622 (NTAPI
*CL_MODIFY_CALL_QOS_COMPLETE_HANDLER
)(
1623 IN NDIS_STATUS Status
,
1624 IN NDIS_HANDLE ProtocolVcContext
,
1625 IN PCO_CALL_PARAMETERS CallParameters
);
1628 (NTAPI
*CL_CLOSE_CALL_COMPLETE_HANDLER
)(
1629 IN NDIS_STATUS Status
,
1630 IN NDIS_HANDLE ProtocolVcContext
,
1631 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
);
1634 (NTAPI
*CL_ADD_PARTY_COMPLETE_HANDLER
)(
1635 IN NDIS_STATUS Status
,
1636 IN NDIS_HANDLE ProtocolPartyContext
,
1637 IN NDIS_HANDLE NdisPartyHandle
,
1638 IN PCO_CALL_PARAMETERS CallParameters
);
1641 (NTAPI
*CL_DROP_PARTY_COMPLETE_HANDLER
)(
1642 IN NDIS_STATUS Status
,
1643 IN NDIS_HANDLE ProtocolPartyContext
);
1646 (NTAPI
*CL_INCOMING_CALL_HANDLER
)(
1647 IN NDIS_HANDLE ProtocolSapContext
,
1648 IN NDIS_HANDLE ProtocolVcContext
,
1649 IN OUT PCO_CALL_PARAMETERS CallParameters
);
1652 (NTAPI
*CL_INCOMING_CALL_QOS_CHANGE_HANDLER
)(
1653 IN NDIS_HANDLE ProtocolVcContext
,
1654 IN PCO_CALL_PARAMETERS CallParameters
);
1657 (NTAPI
*CL_INCOMING_CLOSE_CALL_HANDLER
)(
1658 IN NDIS_STATUS CloseStatus
,
1659 IN NDIS_HANDLE ProtocolVcContext
,
1660 IN PVOID CloseData OPTIONAL
,
1661 IN UINT Size OPTIONAL
);
1664 (NTAPI
*CL_INCOMING_DROP_PARTY_HANDLER
)(
1665 IN NDIS_STATUS DropStatus
,
1666 IN NDIS_HANDLE ProtocolPartyContext
,
1667 IN PVOID CloseData OPTIONAL
,
1668 IN UINT Size OPTIONAL
);
1671 (NTAPI
*CL_CALL_CONNECTED_HANDLER
)(
1672 IN NDIS_HANDLE ProtocolVcContext
);
1675 typedef struct _NDIS_CLIENT_CHARACTERISTICS
{
1680 CO_CREATE_VC_HANDLER ClCreateVcHandler
;
1681 CO_DELETE_VC_HANDLER ClDeleteVcHandler
;
1682 CO_REQUEST_HANDLER ClRequestHandler
;
1683 CO_REQUEST_COMPLETE_HANDLER ClRequestCompleteHandler
;
1684 CL_OPEN_AF_COMPLETE_HANDLER ClOpenAfCompleteHandler
;
1685 CL_CLOSE_AF_COMPLETE_HANDLER ClCloseAfCompleteHandler
;
1686 CL_REG_SAP_COMPLETE_HANDLER ClRegisterSapCompleteHandler
;
1687 CL_DEREG_SAP_COMPLETE_HANDLER ClDeregisterSapCompleteHandler
;
1688 CL_MAKE_CALL_COMPLETE_HANDLER ClMakeCallCompleteHandler
;
1689 CL_MODIFY_CALL_QOS_COMPLETE_HANDLER ClModifyCallQoSCompleteHandler
;
1690 CL_CLOSE_CALL_COMPLETE_HANDLER ClCloseCallCompleteHandler
;
1691 CL_ADD_PARTY_COMPLETE_HANDLER ClAddPartyCompleteHandler
;
1692 CL_DROP_PARTY_COMPLETE_HANDLER ClDropPartyCompleteHandler
;
1693 CL_INCOMING_CALL_HANDLER ClIncomingCallHandler
;
1694 CL_INCOMING_CALL_QOS_CHANGE_HANDLER ClIncomingCallQoSChangeHandler
;
1695 CL_INCOMING_CLOSE_CALL_HANDLER ClIncomingCloseCallHandler
;
1696 CL_INCOMING_DROP_PARTY_HANDLER ClIncomingDropPartyHandler
;
1697 CL_CALL_CONNECTED_HANDLER ClCallConnectedHandler
;
1698 } NDIS_CLIENT_CHARACTERISTICS
, *PNDIS_CLIENT_CHARACTERISTICS
;
1701 /* NDIS protocol structures */
1703 /* Prototypes for NDIS 3.0 protocol characteristics */
1706 (NTAPI
*OPEN_ADAPTER_COMPLETE_HANDLER
)(
1707 _In_ NDIS_HANDLE ProtocolBindingContext
,
1708 _In_ NDIS_STATUS Status
,
1709 _In_ NDIS_STATUS OpenErrorStatus
);
1712 (NTAPI
*CLOSE_ADAPTER_COMPLETE_HANDLER
)(
1713 _In_ NDIS_HANDLE ProtocolBindingContext
,
1714 _In_ NDIS_STATUS Status
);
1717 (NTAPI
*RESET_COMPLETE_HANDLER
)(
1718 _In_ NDIS_HANDLE ProtocolBindingContext
,
1719 _In_ NDIS_STATUS Status
);
1722 (NTAPI
*REQUEST_COMPLETE_HANDLER
)(
1723 _In_ NDIS_HANDLE ProtocolBindingContext
,
1724 _In_ PNDIS_REQUEST NdisRequest
,
1725 _In_ NDIS_STATUS Status
);
1728 (NTAPI
*STATUS_HANDLER
)(
1729 _In_ NDIS_HANDLE ProtocolBindingContext
,
1730 _In_ NDIS_STATUS GeneralStatus
,
1731 _In_ PVOID StatusBuffer
,
1732 _In_ UINT StatusBufferSize
);
1735 (NTAPI
*STATUS_COMPLETE_HANDLER
)(
1736 _In_ NDIS_HANDLE ProtocolBindingContext
);
1739 (NTAPI
*SEND_COMPLETE_HANDLER
)(
1740 _In_ NDIS_HANDLE ProtocolBindingContext
,
1741 _In_ PNDIS_PACKET Packet
,
1742 _In_ NDIS_STATUS Status
);
1745 (NTAPI
*WAN_SEND_COMPLETE_HANDLER
)(
1746 _In_ NDIS_HANDLE ProtocolBindingContext
,
1747 _In_ PNDIS_WAN_PACKET Packet
,
1748 _In_ NDIS_STATUS Status
);
1751 (NTAPI
*TRANSFER_DATA_COMPLETE_HANDLER
)(
1752 _In_ NDIS_HANDLE ProtocolBindingContext
,
1753 _In_ PNDIS_PACKET Packet
,
1754 _In_ NDIS_STATUS Status
,
1755 _In_ UINT BytesTransferred
);
1758 (NTAPI
*WAN_TRANSFER_DATA_COMPLETE_HANDLER
)(
1762 (NTAPI
*RECEIVE_HANDLER
)(
1763 _In_ NDIS_HANDLE ProtocolBindingContext
,
1764 _In_ NDIS_HANDLE MacReceiveContext
,
1765 _In_ PVOID HeaderBuffer
,
1766 _In_ UINT HeaderBufferSize
,
1767 _In_ PVOID LookAheadBuffer
,
1768 _In_ UINT LookaheadBufferSize
,
1769 _In_ UINT PacketSize
);
1772 (NTAPI
*WAN_RECEIVE_HANDLER
)(
1773 _In_ NDIS_HANDLE NdisLinkHandle
,
1775 _In_ ULONG PacketSize
);
1778 (NTAPI
*RECEIVE_COMPLETE_HANDLER
)(
1779 _In_ NDIS_HANDLE ProtocolBindingContext
);
1781 /* Protocol characteristics for NDIS 3.0 protocols */
1783 #define NDIS30_PROTOCOL_CHARACTERISTICS_S \
1784 UCHAR MajorNdisVersion; \
1785 UCHAR MinorNdisVersion; \
1787 _ANONYMOUS_UNION union { \
1791 OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler; \
1792 CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler; \
1793 _ANONYMOUS_UNION union { \
1794 SEND_COMPLETE_HANDLER SendCompleteHandler; \
1795 WAN_SEND_COMPLETE_HANDLER WanSendCompleteHandler; \
1796 } DUMMYUNIONNAME2; \
1797 _ANONYMOUS_UNION union { \
1798 TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; \
1799 WAN_TRANSFER_DATA_COMPLETE_HANDLER WanTransferDataCompleteHandler; \
1800 } DUMMYUNIONNAME3; \
1801 RESET_COMPLETE_HANDLER ResetCompleteHandler; \
1802 REQUEST_COMPLETE_HANDLER RequestCompleteHandler; \
1803 _ANONYMOUS_UNION union { \
1804 RECEIVE_HANDLER ReceiveHandler; \
1805 WAN_RECEIVE_HANDLER WanReceiveHandler; \
1806 } DUMMYUNIONNAME4; \
1807 RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; \
1808 STATUS_HANDLER StatusHandler; \
1809 STATUS_COMPLETE_HANDLER StatusCompleteHandler; \
1812 typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS
{
1813 NDIS30_PROTOCOL_CHARACTERISTICS_S
1814 } NDIS30_PROTOCOL_CHARACTERISTICS
, *PNDIS30_PROTOCOL_CHARACTERISTICS
;
1817 /* Prototypes for NDIS 4.0 protocol characteristics */
1820 (NTAPI
*RECEIVE_PACKET_HANDLER
)(
1821 IN NDIS_HANDLE ProtocolBindingContext
,
1822 IN PNDIS_PACKET Packet
);
1825 (NTAPI
*BIND_HANDLER
)(
1826 OUT PNDIS_STATUS Status
,
1827 IN NDIS_HANDLE BindContext
,
1828 IN PNDIS_STRING DeviceName
,
1829 IN PVOID SystemSpecific1
,
1830 IN PVOID SystemSpecific2
);
1833 (NTAPI
*UNBIND_HANDLER
)(
1834 OUT PNDIS_STATUS Status
,
1835 IN NDIS_HANDLE ProtocolBindingContext
,
1836 IN NDIS_HANDLE UnbindContext
);
1839 (NTAPI
*PNP_EVENT_HANDLER
)(
1840 IN NDIS_HANDLE ProtocolBindingContext
,
1841 IN PNET_PNP_EVENT NetPnPEvent
);
1844 (NTAPI
*UNLOAD_PROTOCOL_HANDLER
)(
1847 /* Protocol characteristics for NDIS 4.0 protocols */
1849 typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS
{
1850 UCHAR MajorNdisVersion
;
1851 UCHAR MinorNdisVersion
;
1853 __MINGW_EXTENSION
union {
1857 OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler
;
1858 CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler
;
1859 __MINGW_EXTENSION
union {
1860 SEND_COMPLETE_HANDLER SendCompleteHandler
;
1861 WAN_SEND_COMPLETE_HANDLER WanSendCompleteHandler
;
1863 __MINGW_EXTENSION
union {
1864 TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler
;
1865 WAN_TRANSFER_DATA_COMPLETE_HANDLER WanTransferDataCompleteHandler
;
1867 RESET_COMPLETE_HANDLER ResetCompleteHandler
;
1868 REQUEST_COMPLETE_HANDLER RequestCompleteHandler
;
1869 __MINGW_EXTENSION
union {
1870 RECEIVE_HANDLER ReceiveHandler
;
1871 WAN_RECEIVE_HANDLER WanReceiveHandler
;
1873 RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler
;
1874 STATUS_HANDLER StatusHandler
;
1875 STATUS_COMPLETE_HANDLER StatusCompleteHandler
;
1877 RECEIVE_PACKET_HANDLER ReceivePacketHandler
;
1878 BIND_HANDLER BindAdapterHandler
;
1879 UNBIND_HANDLER UnbindAdapterHandler
;
1880 PNP_EVENT_HANDLER PnPEventHandler
;
1881 UNLOAD_PROTOCOL_HANDLER UnloadHandler
;
1882 } NDIS40_PROTOCOL_CHARACTERISTICS
;
1885 (NTAPI PROTCOL_CO_AF_REGISTER_NOTIFY
)(
1886 IN NDIS_HANDLE ProtocolBindingContext
,
1887 IN PCO_ADDRESS_FAMILY AddressFamily
);
1888 typedef PROTCOL_CO_AF_REGISTER_NOTIFY
*CO_AF_REGISTER_NOTIFY_HANDLER
;
1890 #if NDIS_LEGACY_PROTOCOL
1892 typedef struct _NDIS50_PROTOCOL_CHARACTERISTICS
{
1894 NDIS40_PROTOCOL_CHARACTERISTICS Ndis40Chars
;
1896 NDIS40_PROTOCOL_CHARACTERISTICS
;
1898 PVOID ReservedHandlers
[4];
1899 CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler
;
1900 CO_STATUS_HANDLER CoStatusHandler
;
1901 CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler
;
1902 CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler
;
1903 } NDIS50_PROTOCOL_CHARACTERISTICS
;
1905 #if (defined(NDIS50) || defined(NDIS51))
1906 typedef NDIS50_PROTOCOL_CHARACTERISTICS NDIS_PROTOCOL_CHARACTERISTICS
;
1908 typedef NDIS40_PROTOCOL_CHARACTERISTICS NDIS_PROTOCOL_CHARACTERISTICS
;
1911 typedef NDIS_PROTOCOL_CHARACTERISTICS
*PNDIS_PROTOCOL_CHARACTERISTICS
;
1913 #endif /* NDIS_LEGACY_PROTOCOL */
1915 /* Prototypes for NDIS_MINIPORT_CHARACTERISTICS */
1918 (NTAPI
*W_CHECK_FOR_HANG_HANDLER
)(
1919 _In_ NDIS_HANDLE MiniportAdapterContext
);
1922 (NTAPI
*W_DISABLE_INTERRUPT_HANDLER
)(
1923 _In_ NDIS_HANDLE MiniportAdapterContext
);
1926 (NTAPI
*W_ENABLE_INTERRUPT_HANDLER
)(
1927 _In_ NDIS_HANDLE MiniportAdapterContext
);
1930 (NTAPI
*W_HALT_HANDLER
)(
1931 _In_ NDIS_HANDLE MiniportAdapterContext
);
1934 (NTAPI
*W_HANDLE_INTERRUPT_HANDLER
)(
1935 _In_ NDIS_HANDLE MiniportAdapterContext
);
1938 (NTAPI
*W_INITIALIZE_HANDLER
)(
1939 _Out_ PNDIS_STATUS OpenErrorStatus
,
1940 _Out_ PUINT SelectedMediumIndex
,
1941 _In_ PNDIS_MEDIUM MediumArray
,
1942 _In_ UINT MediumArraySize
,
1943 _In_ NDIS_HANDLE MiniportAdapterContext
,
1944 _In_ NDIS_HANDLE WrapperConfigurationContext
);
1947 (NTAPI
*W_ISR_HANDLER
)(
1948 _Out_ PBOOLEAN InterruptRecognized
,
1949 _Out_ PBOOLEAN QueueMiniportHandleInterrupt
,
1950 _In_ NDIS_HANDLE MiniportAdapterContext
);
1953 (NTAPI
*W_QUERY_INFORMATION_HANDLER
)(
1954 _In_ NDIS_HANDLE MiniportAdapterContext
,
1956 _In_ PVOID InformationBuffer
,
1957 _In_ ULONG InformationBufferLength
,
1958 _Out_ PULONG BytesWritten
,
1959 _Out_ PULONG BytesNeeded
);
1962 (NTAPI
*W_RECONFIGURE_HANDLER
)(
1963 _Out_ PNDIS_STATUS OpenErrorStatus
,
1964 _In_ NDIS_HANDLE MiniportAdapterContext
,
1965 _In_ NDIS_HANDLE WrapperConfigurationContext
);
1968 (NTAPI
*W_RESET_HANDLER
)(
1969 _Out_ PBOOLEAN AddressingReset
,
1970 _In_ NDIS_HANDLE MiniportAdapterContext
);
1973 (NTAPI
*W_SEND_HANDLER
)(
1974 _In_ NDIS_HANDLE MiniportAdapterContext
,
1975 _In_ PNDIS_PACKET Packet
,
1979 (NTAPI
*WM_SEND_HANDLER
)(
1980 _In_ NDIS_HANDLE MiniportAdapterContext
,
1981 _In_ NDIS_HANDLE NdisLinkHandle
,
1982 _In_ PNDIS_WAN_PACKET Packet
);
1985 (NTAPI
*W_SET_INFORMATION_HANDLER
)(
1986 _In_ NDIS_HANDLE MiniportAdapterContext
,
1988 _In_ PVOID InformationBuffer
,
1989 _In_ ULONG InformationBufferLength
,
1990 _Out_ PULONG BytesRead
,
1991 _Out_ PULONG BytesNeeded
);
1994 (NTAPI
*W_TRANSFER_DATA_HANDLER
)(
1995 _Out_ PNDIS_PACKET Packet
,
1996 _Out_ PUINT BytesTransferred
,
1997 _In_ NDIS_HANDLE MiniportAdapterContext
,
1998 _In_ NDIS_HANDLE MiniportReceiveContext
,
1999 _In_ UINT ByteOffset
,
2000 _In_ UINT BytesToTransfer
);
2003 (NTAPI
*WM_TRANSFER_DATA_HANDLER
)(VOID
);
2006 (NTAPI
*ADAPTER_SHUTDOWN_HANDLER
)(
2007 _In_ PVOID ShutdownContext
);
2010 (NTAPI
*W_RETURN_PACKET_HANDLER
)(
2011 _In_ NDIS_HANDLE MiniportAdapterContext
,
2012 _In_ PNDIS_PACKET Packet
);
2015 (NTAPI
*W_SEND_PACKETS_HANDLER
)(
2016 _In_ NDIS_HANDLE MiniportAdapterContext
,
2017 _In_ PPNDIS_PACKET PacketArray
,
2018 _In_ UINT NumberOfPackets
);
2021 (NTAPI
*W_ALLOCATE_COMPLETE_HANDLER
)(
2022 _In_ NDIS_HANDLE MiniportAdapterContext
,
2023 _In_ PVOID VirtualAddress
,
2024 _In_ PNDIS_PHYSICAL_ADDRESS PhysicalAddress
,
2026 _In_ PVOID Context
);
2028 /* NDIS structures available only to miniport drivers */
2030 #define NDIS30_MINIPORT_CHARACTERISTICS_S \
2031 UCHAR MajorNdisVersion; \
2032 UCHAR MinorNdisVersion; \
2034 W_CHECK_FOR_HANG_HANDLER CheckForHangHandler; \
2035 W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler; \
2036 W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler; \
2037 W_HALT_HANDLER HaltHandler; \
2038 W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler; \
2039 W_INITIALIZE_HANDLER InitializeHandler; \
2040 W_ISR_HANDLER ISRHandler; \
2041 W_QUERY_INFORMATION_HANDLER QueryInformationHandler; \
2042 W_RECONFIGURE_HANDLER ReconfigureHandler; \
2043 W_RESET_HANDLER ResetHandler; \
2044 W_SEND_HANDLER SendHandler; \
2045 W_SET_INFORMATION_HANDLER SetInformationHandler; \
2046 W_TRANSFER_DATA_HANDLER TransferDataHandler;
2048 typedef struct _NDIS30_MINIPORT_CHARACTERISTICS
{
2049 NDIS30_MINIPORT_CHARACTERISTICS_S
2050 } NDIS30_MINIPORT_CHARACTERISTICS
, *PSNDIS30_MINIPORT_CHARACTERISTICS
;
2054 #define NDIS40_MINIPORT_CHARACTERISTICS_S \
2055 NDIS30_MINIPORT_CHARACTERISTICS Ndis30Chars; \
2056 W_RETURN_PACKET_HANDLER ReturnPacketHandler; \
2057 W_SEND_PACKETS_HANDLER SendPacketsHandler; \
2058 W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler;
2060 #else /* !__cplusplus */
2062 #define NDIS40_MINIPORT_CHARACTERISTICS_S \
2063 NDIS30_MINIPORT_CHARACTERISTICS_S \
2064 W_RETURN_PACKET_HANDLER ReturnPacketHandler; \
2065 W_SEND_PACKETS_HANDLER SendPacketsHandler; \
2066 W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler;
2068 #endif /* !__cplusplus */
2070 typedef struct _NDIS40_MINIPORT_CHARACTERISTICS
{
2071 NDIS40_MINIPORT_CHARACTERISTICS_S
2072 } NDIS40_MINIPORT_CHARACTERISTICS
, *PNDIS40_MINIPORT_CHARACTERISTICS
;
2074 /* Extensions for NDIS 5.0 miniports */
2076 _IRQL_requires_max_(DISPATCH_LEVEL
)
2077 _Function_class_(MINIPORT_CO_CREATE_VC
)
2079 (NTAPI MINIPORT_CO_CREATE_VC
)(
2080 _In_ NDIS_HANDLE MiniportAdapterContext
,
2081 _In_ NDIS_HANDLE NdisVcHandle
,
2082 _Out_ PNDIS_HANDLE MiniportVcContext
);
2083 typedef MINIPORT_CO_CREATE_VC
*W_CO_CREATE_VC_HANDLER
;
2085 _IRQL_requires_max_(DISPATCH_LEVEL
)
2086 _Function_class_(MINIPORT_CO_DELETE_VC
)
2088 (NTAPI MINIPORT_CO_DELETE_VC
)(
2089 _In_ NDIS_HANDLE MiniportVcContext
);
2090 typedef MINIPORT_CO_DELETE_VC
*W_CO_DELETE_VC_HANDLER
;
2092 _IRQL_requires_max_(DISPATCH_LEVEL
)
2093 _Function_class_(MINIPORT_CO_ACTIVATE_VC
)
2095 (NTAPI MINIPORT_CO_ACTIVATE_VC
)(
2096 _In_ NDIS_HANDLE MiniportVcContext
,
2097 _Inout_ PCO_CALL_PARAMETERS CallParameters
);
2098 typedef MINIPORT_CO_ACTIVATE_VC
*W_CO_ACTIVATE_VC_HANDLER
;
2100 _IRQL_requires_max_(DISPATCH_LEVEL
)
2101 _Function_class_(MINIPORT_CO_DEACTIVATE_VC
)
2103 (NTAPI MINIPORT_CO_DEACTIVATE_VC
)(
2104 _In_ NDIS_HANDLE MiniportVcContext
);
2105 typedef MINIPORT_CO_DEACTIVATE_VC
*W_CO_DEACTIVATE_VC_HANDLER
;
2108 (NTAPI
*W_CO_SEND_PACKETS_HANDLER
)(
2109 _In_ NDIS_HANDLE MiniportVcContext
,
2110 _In_ PPNDIS_PACKET PacketArray
,
2111 _In_ UINT NumberOfPackets
);
2114 (NTAPI
*W_CO_REQUEST_HANDLER
)(
2115 _In_ NDIS_HANDLE MiniportAdapterContext
,
2116 _In_opt_ NDIS_HANDLE MiniportVcContext
,
2117 _Inout_ PNDIS_REQUEST NdisRequest
);
2121 #define NDIS50_MINIPORT_CHARACTERISTICS_S \
2122 NDIS40_MINIPORT_CHARACTERISTICS Ndis40Chars; \
2123 W_CO_CREATE_VC_HANDLER CoCreateVcHandler; \
2124 W_CO_DELETE_VC_HANDLER CoDeleteVcHandler; \
2125 W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler; \
2126 W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler; \
2127 W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler; \
2128 W_CO_REQUEST_HANDLER CoRequestHandler;
2130 #else /* !__cplusplus */
2132 #define NDIS50_MINIPORT_CHARACTERISTICS_S \
2133 NDIS40_MINIPORT_CHARACTERISTICS_S \
2134 W_CO_CREATE_VC_HANDLER CoCreateVcHandler; \
2135 W_CO_DELETE_VC_HANDLER CoDeleteVcHandler; \
2136 W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler; \
2137 W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler; \
2138 W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler; \
2139 W_CO_REQUEST_HANDLER CoRequestHandler;
2141 #endif /* !__cplusplus */
2143 typedef struct _NDIS50_MINIPORT_CHARACTERISTICS
{
2144 NDIS50_MINIPORT_CHARACTERISTICS_S
2145 } NDIS50_MINIPORT_CHARACTERISTICS
, *PSNDIS50_MINIPORT_CHARACTERISTICS
;
2147 /* Extensions for NDIS 5.1 miniports */
2150 (NTAPI
*W_CANCEL_SEND_PACKETS_HANDLER
)(
2151 _In_ NDIS_HANDLE MiniportAdapterContext
,
2152 _In_ PVOID CancelId
);
2155 (NTAPI
*W_PNP_EVENT_NOTIFY_HANDLER
)(
2156 _In_ NDIS_HANDLE MiniportAdapterContext
,
2157 _In_ NDIS_DEVICE_PNP_EVENT PnPEvent
,
2158 _In_ PVOID InformationBuffer
,
2159 _In_ ULONG InformationBufferLength
);
2162 (NTAPI
*W_MINIPORT_SHUTDOWN_HANDLER
)(
2163 _In_ PVOID ShutdownContext
);
2167 #define NDIS51_MINIPORT_CHARACTERISTICS_S \
2168 NDIS50_MINIPORT_CHARACTERISTICS Ndis50Chars; \
2169 W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler; \
2170 W_PNP_EVENT_NOTIFY_HANDLER PnPEventNotifyHandler; \
2171 W_MINIPORT_SHUTDOWN_HANDLER AdapterShutdownHandler; \
2179 #define NDIS51_MINIPORT_CHARACTERISTICS_S \
2180 NDIS50_MINIPORT_CHARACTERISTICS_S \
2181 W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler; \
2182 W_PNP_EVENT_NOTIFY_HANDLER PnPEventNotifyHandler; \
2183 W_MINIPORT_SHUTDOWN_HANDLER AdapterShutdownHandler; \
2191 typedef struct _NDIS51_MINIPORT_CHARACTERISTICS
{
2192 NDIS51_MINIPORT_CHARACTERISTICS_S
2193 } NDIS51_MINIPORT_CHARACTERISTICS
, *PSNDIS51_MINIPORT_CHARACTERISTICS
;
2195 #if defined(NDIS51_MINIPORT)
2196 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
2197 NDIS51_MINIPORT_CHARACTERISTICS_S
2198 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
2199 #elif defined(NDIS50_MINIPORT)
2200 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
2201 NDIS50_MINIPORT_CHARACTERISTICS_S
2202 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
2203 #elif defined(NDIS40_MINIPORT)
2204 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
2205 NDIS40_MINIPORT_CHARACTERISTICS_S
2206 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
2208 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
2209 NDIS30_MINIPORT_CHARACTERISTICS_S
2210 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
2213 typedef struct _NDIS_MINIPORT_INTERRUPT
{
2214 PKINTERRUPT InterruptObject
;
2215 KSPIN_LOCK DpcCountLock
;
2217 W_ISR_HANDLER MiniportIsr
;
2218 W_HANDLE_INTERRUPT_HANDLER MiniportDpc
;
2220 PNDIS_MINIPORT_BLOCK Miniport
;
2223 KEVENT DpcsCompletedEvent
;
2224 BOOLEAN SharedInterrupt
;
2225 BOOLEAN IsrRequested
;
2226 } NDIS_MINIPORT_INTERRUPT
, *PNDIS_MINIPORT_INTERRUPT
;
2228 /* Structures available only to full MAC drivers */
2231 (NTAPI
*PNDIS_INTERRUPT_SERVICE
)(
2232 IN PVOID InterruptContext
);
2235 (NTAPI
*PNDIS_DEFERRED_PROCESSING
)(
2236 IN PVOID SystemSpecific1
,
2237 IN PVOID InterruptContext
,
2238 IN PVOID SystemSpecific2
,
2239 IN PVOID SystemSpecific3
);
2241 typedef struct _NDIS_WRAPPER_HANDLE NDIS_WRAPPER_HANDLE
, *PNDIS_WRAPPER_HANDLE
;
2242 typedef struct _NDIS_PROTOCOL_BLOCK NDIS_PROTOCOL_BLOCK
, *PNDIS_PROTOCOL_BLOCK
;
2243 typedef struct _NDIS_OPEN_BLOCK NDIS_OPEN_BLOCK
, *PNDIS_OPEN_BLOCK
;
2244 typedef struct _NDIS_M_DRIVER_BLOCK NDIS_M_DRIVER_BLOCK
, *PNDIS_M_DRIVER_BLOCK
;
2245 typedef struct _NDIS_OFFLOAD NDIS_OFFLOAD
, *PNDIS_OFFLOAD
;
2246 typedef struct _NDIS_AF_LIST NDIS_AF_LIST
, *PNDIS_AF_LIST
;
2247 typedef struct _X_FILTER ETH_FILTER
, *PETH_FILTER
;
2248 #if NDIS_SUPPORT_NDIS6
2249 typedef USHORT NET_FRAME_TYPE
, *PNET_FRAME_TYPE
;
2252 typedef struct _NDIS_MINIPORT_TIMER
{
2255 PNDIS_TIMER_FUNCTION MiniportTimerFunction
;
2256 PVOID MiniportTimerContext
;
2257 PNDIS_MINIPORT_BLOCK Miniport
;
2258 struct _NDIS_MINIPORT_TIMER
*NextDeferredTimer
;
2259 } NDIS_MINIPORT_TIMER
, *PNDIS_MINIPORT_TIMER
;
2261 typedef struct _NDIS_INTERRUPT
{
2262 PKINTERRUPT InterruptObject
;
2263 KSPIN_LOCK DpcCountLock
;
2264 PNDIS_INTERRUPT_SERVICE MacIsr
;
2265 PNDIS_DEFERRED_PROCESSING MacDpc
;
2267 PVOID InterruptContext
;
2270 KEVENT DpcsCompletedEvent
;
2271 } NDIS_INTERRUPT
, *PNDIS_INTERRUPT
;
2274 typedef enum _NDIS_WORK_ITEM_TYPE
{
2275 NdisWorkItemRequest
,
2277 NdisWorkItemReturnPackets
,
2278 NdisWorkItemResetRequested
,
2279 NdisWorkItemResetInProgress
,
2281 NdisWorkItemSendLoopback
,
2282 NdisWorkItemMiniportCallback
,
2284 } NDIS_WORK_ITEM_TYPE
, *PNDIS_WORK_ITEM_TYPE
;
2286 #define NUMBER_OF_WORK_ITEM_TYPES NdisMaxWorkItems
2287 #define NUMBER_OF_SINGLE_WORK_ITEMS 6
2289 typedef struct _NDIS_MINIPORT_WORK_ITEM
{
2290 SINGLE_LIST_ENTRY Link
;
2291 NDIS_WORK_ITEM_TYPE WorkItemType
;
2292 PVOID WorkItemContext
;
2293 } NDIS_MINIPORT_WORK_ITEM
, *PNDIS_MINIPORT_WORK_ITEM
;
2295 struct _NDIS_WORK_ITEM
;
2296 typedef VOID (*NDIS_PROC
)(struct _NDIS_WORK_ITEM
*, PVOID
);
2298 typedef struct _NDIS_WORK_ITEM
{
2301 UCHAR WrapperReserved
[8*sizeof(PVOID
)];
2302 } NDIS_WORK_ITEM
, *PNDIS_WORK_ITEM
;
2304 typedef struct _NDIS_BIND_PATHS
{
2306 NDIS_STRING Paths
[1];
2307 } NDIS_BIND_PATHS
, *PNDIS_BIND_PATHS
;
2311 (NTAPI
*ETH_RCV_COMPLETE_HANDLER
)(
2312 _In_ PETH_FILTER Filter
);
2315 (NTAPI
*ETH_RCV_INDICATE_HANDLER
)(
2316 _In_ PETH_FILTER Filter
,
2317 _In_ NDIS_HANDLE MacReceiveContext
,
2319 _In_ PVOID HeaderBuffer
,
2320 _In_ UINT HeaderBufferSize
,
2321 _In_ PVOID LookaheadBuffer
,
2322 _In_ UINT LookaheadBufferSize
,
2323 _In_ UINT PacketSize
);
2326 (NTAPI
*FDDI_RCV_COMPLETE_HANDLER
)(
2327 IN PFDDI_FILTER Filter
);
2330 (NTAPI
*FDDI_RCV_INDICATE_HANDLER
)(
2331 IN PFDDI_FILTER Filter
,
2332 IN NDIS_HANDLE MacReceiveContext
,
2334 IN UINT AddressLength
,
2335 IN PVOID HeaderBuffer
,
2336 IN UINT HeaderBufferSize
,
2337 IN PVOID LookaheadBuffer
,
2338 IN UINT LookaheadBufferSize
,
2339 IN UINT PacketSize
);
2342 (NTAPI
*FILTER_PACKET_INDICATION_HANDLER
)(
2343 _In_ NDIS_HANDLE Miniport
,
2344 _In_ PPNDIS_PACKET PacketArray
,
2345 _In_ UINT NumberOfPackets
);
2348 (NTAPI
*TR_RCV_COMPLETE_HANDLER
)(
2349 _In_ PTR_FILTER Filter
);
2352 (NTAPI
*TR_RCV_INDICATE_HANDLER
)(
2353 _In_ PTR_FILTER Filter
,
2354 _In_ NDIS_HANDLE MacReceiveContext
,
2355 _In_ PVOID HeaderBuffer
,
2356 _In_ UINT HeaderBufferSize
,
2357 _In_ PVOID LookaheadBuffer
,
2358 _In_ UINT LookaheadBufferSize
,
2359 _In_ UINT PacketSize
);
2362 (NTAPI
*WAN_RCV_COMPLETE_HANDLER
)(
2363 _In_ NDIS_HANDLE MiniportAdapterHandle
,
2364 _In_ NDIS_HANDLE NdisLinkContext
);
2367 (NTAPI
*WAN_RCV_HANDLER
)(
2368 _Out_ PNDIS_STATUS Status
,
2369 _In_ NDIS_HANDLE MiniportAdapterHandle
,
2370 _In_ NDIS_HANDLE NdisLinkContext
,
2372 _In_ ULONG PacketSize
);
2375 (FASTCALL
*NDIS_M_DEQUEUE_WORK_ITEM
)(
2376 IN PNDIS_MINIPORT_BLOCK Miniport
,
2377 IN NDIS_WORK_ITEM_TYPE WorkItemType
,
2378 OUT PVOID
*WorkItemContext
);
2381 (FASTCALL
*NDIS_M_QUEUE_NEW_WORK_ITEM
)(
2382 IN PNDIS_MINIPORT_BLOCK Miniport
,
2383 IN NDIS_WORK_ITEM_TYPE WorkItemType
,
2384 IN PVOID WorkItemContext
);
2387 (FASTCALL
*NDIS_M_QUEUE_WORK_ITEM
)(
2388 IN PNDIS_MINIPORT_BLOCK Miniport
,
2389 IN NDIS_WORK_ITEM_TYPE WorkItemType
,
2390 IN PVOID WorkItemContext
);
2393 (NTAPI
*NDIS_M_REQ_COMPLETE_HANDLER
)(
2394 _In_ NDIS_HANDLE MiniportAdapterHandle
,
2395 _In_ NDIS_STATUS Status
);
2398 (NTAPI
*NDIS_M_RESET_COMPLETE_HANDLER
)(
2399 _In_ NDIS_HANDLE MiniportAdapterHandle
,
2400 _In_ NDIS_STATUS Status
,
2401 _In_ BOOLEAN AddressingReset
);
2404 (NTAPI
*NDIS_M_SEND_COMPLETE_HANDLER
)(
2405 _In_ NDIS_HANDLE MiniportAdapterHandle
,
2406 _In_ PNDIS_PACKET Packet
,
2407 _In_ NDIS_STATUS Status
);
2410 (NTAPI
*NDIS_M_SEND_RESOURCES_HANDLER
)(
2411 _In_ NDIS_HANDLE MiniportAdapterHandle
);
2414 (FASTCALL
*NDIS_M_START_SENDS
)(
2415 _In_ PNDIS_MINIPORT_BLOCK Miniport
);
2418 (NTAPI
*NDIS_M_STATUS_HANDLER
)(
2419 _In_ NDIS_HANDLE MiniportHandle
,
2420 _In_ NDIS_STATUS GeneralStatus
,
2421 _In_ PVOID StatusBuffer
,
2422 _In_ UINT StatusBufferSize
);
2425 (NTAPI
*NDIS_M_STS_COMPLETE_HANDLER
)(
2426 _In_ NDIS_HANDLE MiniportAdapterHandle
);
2429 (NTAPI
*NDIS_M_TD_COMPLETE_HANDLER
)(
2430 _In_ NDIS_HANDLE MiniportAdapterHandle
,
2431 _In_ PNDIS_PACKET Packet
,
2432 _In_ NDIS_STATUS Status
,
2433 _In_ UINT BytesTransferred
);
2435 typedef VOID (NTAPI
*NDIS_WM_SEND_COMPLETE_HANDLER
)(
2436 _In_ NDIS_HANDLE MiniportAdapterHandle
,
2438 _In_ NDIS_STATUS Status
);
2443 #define ARC_SEND_BUFFERS 8
2444 #define ARC_HEADER_SIZE 4
2446 typedef struct _NDIS_ARC_BUF
{
2447 NDIS_HANDLE ArcnetBufferPool
;
2448 PUCHAR ArcnetLookaheadBuffer
;
2450 ARC_BUFFER_LIST ArcnetBuffers
[ARC_SEND_BUFFERS
];
2451 } NDIS_ARC_BUF
, *PNDIS_ARC_BUF
;
2455 typedef struct _NDIS_LOG
{
2456 PNDIS_MINIPORT_BLOCK Miniport
;
2464 } NDIS_LOG
, *PNDIS_LOG
;
2467 #define FILTERDBS_ARCNET_S \
2470 #define FILTERDBS_ARCNET_S \
2472 #endif /* !ARCNET */
2474 #define FILTERDBS_S \
2475 _ANONYMOUS_UNION union { \
2476 PETH_FILTER EthDB; \
2477 PNULL_FILTER NullDB; \
2480 PFDDI_FILTER FddiDB; \
2483 typedef struct _FILTERDBS
{
2485 } FILTERDBS
, *PFILTERDBS
;
2487 struct _NDIS_MINIPORT_BLOCK
{
2488 NDIS_OBJECT_HEADER Header
;
2489 PNDIS_MINIPORT_BLOCK NextMiniport
;
2490 PNDIS_M_DRIVER_BLOCK DriverHandle
;
2491 NDIS_HANDLE MiniportAdapterContext
;
2492 UNICODE_STRING MiniportName
;
2493 PNDIS_BIND_PATHS BindPaths
;
2494 NDIS_HANDLE OpenQueue
;
2496 NDIS_HANDLE DeviceContext
;
2500 UCHAR AssignedProcessor
;
2502 PNDIS_REQUEST MediaRequest
;
2503 PNDIS_MINIPORT_INTERRUPT Interrupt
;
2506 LIST_ENTRY PacketList
;
2507 PNDIS_PACKET FirstPendingPacket
;
2508 PNDIS_PACKET ReturnPacketsQueue
;
2509 ULONG RequestBuffer
;
2510 PVOID SetMCastBuffer
;
2511 PNDIS_MINIPORT_BLOCK PrimaryMiniport
;
2512 PVOID WrapperContext
;
2513 PVOID BusDataContext
;
2514 ULONG PnPCapabilities
;
2515 PCM_RESOURCE_LIST Resources
;
2516 NDIS_TIMER WakeUpDpcTimer
;
2517 UNICODE_STRING BaseName
;
2518 UNICODE_STRING SymbolicLinkName
;
2519 ULONG CheckForHangSeconds
;
2521 USHORT CFHangCurrentTick
;
2522 NDIS_STATUS ResetStatus
;
2523 NDIS_HANDLE ResetOpen
;
2525 FILTER_PACKET_INDICATION_HANDLER PacketIndicateHandler
;
2526 NDIS_M_SEND_COMPLETE_HANDLER SendCompleteHandler
;
2527 NDIS_M_SEND_RESOURCES_HANDLER SendResourcesHandler
;
2528 NDIS_M_RESET_COMPLETE_HANDLER ResetCompleteHandler
;
2529 NDIS_MEDIUM MediaType
;
2531 NDIS_INTERFACE_TYPE BusType
;
2532 NDIS_INTERFACE_TYPE AdapterType
;
2533 PDEVICE_OBJECT DeviceObject
;
2534 PDEVICE_OBJECT PhysicalDeviceObject
;
2535 PDEVICE_OBJECT NextDeviceObject
;
2536 PMAP_REGISTER_ENTRY MapRegisters
;
2537 PNDIS_AF_LIST CallMgrAfList
;
2538 PVOID MiniportThread
;
2540 USHORT SetInfoBufLen
;
2541 USHORT MaxSendPackets
;
2542 NDIS_STATUS FakeStatus
;
2544 PUNICODE_STRING pAdapterInstanceName
;
2545 PNDIS_MINIPORT_TIMER TimerQueue
;
2547 PNDIS_REQUEST PendingRequest
;
2548 UINT MaximumLongAddresses
;
2549 UINT MaximumShortAddresses
;
2550 UINT CurrentLookahead
;
2551 UINT MaximumLookahead
;
2552 W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler
;
2553 W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler
;
2554 W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler
;
2555 W_SEND_PACKETS_HANDLER SendPacketsHandler
;
2556 NDIS_M_START_SENDS DeferredSendHandler
;
2557 ETH_RCV_INDICATE_HANDLER EthRxIndicateHandler
;
2558 TR_RCV_INDICATE_HANDLER TrRxIndicateHandler
;
2559 FDDI_RCV_INDICATE_HANDLER FddiRxIndicateHandler
;
2560 ETH_RCV_COMPLETE_HANDLER EthRxCompleteHandler
;
2561 TR_RCV_COMPLETE_HANDLER TrRxCompleteHandler
;
2562 FDDI_RCV_COMPLETE_HANDLER FddiRxCompleteHandler
;
2563 NDIS_M_STATUS_HANDLER StatusHandler
;
2564 NDIS_M_STS_COMPLETE_HANDLER StatusCompleteHandler
;
2565 NDIS_M_TD_COMPLETE_HANDLER TDCompleteHandler
;
2566 NDIS_M_REQ_COMPLETE_HANDLER QueryCompleteHandler
;
2567 NDIS_M_REQ_COMPLETE_HANDLER SetCompleteHandler
;
2568 NDIS_WM_SEND_COMPLETE_HANDLER WanSendCompleteHandler
;
2569 WAN_RCV_HANDLER WanRcvHandler
;
2570 WAN_RCV_COMPLETE_HANDLER WanRcvCompleteHandler
;
2571 #if defined(NDIS_WRAPPER)
2572 PNDIS_MINIPORT_BLOCK NextGlobalMiniport
;
2573 SINGLE_LIST_ENTRY WorkQueue
[NUMBER_OF_WORK_ITEM_TYPES
];
2574 SINGLE_LIST_ENTRY SingleWorkItems
[NUMBER_OF_SINGLE_WORK_ITEMS
];
2577 UCHAR ArcnetAddress
;
2579 _ANONYMOUS_UNION
union {
2581 PNDIS_ARC_BUF ArcBuf
;
2587 PCM_RESOURCE_LIST AllocatedResources
;
2588 PCM_RESOURCE_LIST AllocatedResourcesTranslated
;
2589 SINGLE_LIST_ENTRY PatternList
;
2590 NDIS_PNP_CAPABILITIES PMCapabilities
;
2591 DEVICE_CAPABILITIES DeviceCaps
;
2593 DEVICE_POWER_STATE CurrentDevicePowerState
;
2595 SYSTEM_POWER_STATE WaitWakeSystemState
;
2596 LARGE_INTEGER VcIndex
;
2597 KSPIN_LOCK VcCountLock
;
2598 LIST_ENTRY WmiEnabledVcs
;
2599 PNDIS_GUID pNdisGuidMap
;
2600 PNDIS_GUID pCustomGuidMap
;
2602 USHORT cNdisGuidMap
;
2603 USHORT cCustomGuidMap
;
2604 USHORT CurrentMapRegister
;
2605 PKEVENT AllocationEvent
;
2606 USHORT BaseMapRegistersNeeded
;
2607 USHORT SGMapRegistersNeeded
;
2608 ULONG MaximumPhysicalMapping
;
2609 NDIS_TIMER MediaDisconnectTimer
;
2610 USHORT MediaDisconnectTimeOut
;
2611 USHORT InstanceNumber
;
2612 NDIS_EVENT OpenReadyEvent
;
2613 NDIS_PNP_DEVICE_STATE PnPDeviceState
;
2614 NDIS_PNP_DEVICE_STATE OldPnPDeviceState
;
2615 PGET_SET_DEVICE_DATA SetBusData
;
2616 PGET_SET_DEVICE_DATA GetBusData
;
2620 NDIS_STATS NdisStats
;
2624 PNDIS_PACKET IndicatedPacket
[MAXIMUM_PROCESSORS
];
2625 PKEVENT RemoveReadyEvent
;
2626 PKEVENT AllOpensClosedEvent
;
2627 PKEVENT AllRequestsCompletedEvent
;
2629 NDIS_MINIPORT_WORK_ITEM WorkItemBuffer
[NUMBER_OF_SINGLE_WORK_ITEMS
];
2630 PDMA_ADAPTER SystemAdapterObject
;
2631 ULONG DriverVerifyFlags
;
2633 USHORT InternalResetCount
;
2634 USHORT MiniportResetCount
;
2635 USHORT MediaSenseConnectCount
;
2636 USHORT MediaSenseDisconnectCount
;
2637 PNDIS_PACKET
*xPackets
;
2638 ULONG UserModeOpenReferences
;
2639 _ANONYMOUS_UNION
union {
2640 PVOID SavedSendHandler
;
2641 PVOID SavedWanSendHandler
;
2643 PVOID SavedSendPacketsHandler
;
2644 PVOID SavedCancelSendPacketsHandler
;
2645 W_SEND_PACKETS_HANDLER WSendPacketsHandler
;
2646 ULONG MiniportAttributes
;
2647 PDMA_ADAPTER SavedSystemAdapterObject
;
2649 USHORT CFHangXTicks
;
2651 ULONG IndicatedPacketsCount
;
2652 ULONG PhysicalMediumType
;
2653 PNDIS_REQUEST LastRequest
;
2654 LONG DmaAdapterRefCount
;
2660 KSPIN_LOCK TimerQueueLock
;
2661 PKEVENT ResetCompletedEvent
;
2662 PKEVENT QueuedBindingCompletedEvent
;
2663 PKEVENT DmaResourcesReleasedEvent
;
2664 FILTER_PACKET_INDICATION_HANDLER SavedPacketIndicateHandler
;
2665 ULONG RegisteredInterrupts
;
2666 PNPAGED_LOOKASIDE_LIST SGListLookasideList
;
2667 ULONG ScatterGatherListSize
;
2671 #if NDIS_LEGACY_DRIVER
2674 (NTAPI
*WAN_SEND_HANDLER
)(
2675 _In_ NDIS_HANDLE MacBindingHandle
,
2676 _In_ NDIS_HANDLE LinkHandle
,
2680 (NTAPI
*SEND_PACKETS_HANDLER
)(
2681 _In_ NDIS_HANDLE MiniportAdapterContext
,
2682 _In_ PPNDIS_PACKET PacketArray
,
2683 _In_ UINT NumberOfPackets
);
2686 (NTAPI
*SEND_HANDLER
)(
2687 _In_ NDIS_HANDLE NdisBindingHandle
,
2688 _In_ PNDIS_PACKET Packet
);
2691 (NTAPI
*TRANSFER_DATA_HANDLER
)(
2692 _In_ NDIS_HANDLE NdisBindingHandle
,
2693 _In_ NDIS_HANDLE MacReceiveContext
,
2694 _In_ UINT ByteOffset
,
2695 _In_ UINT BytesToTransfer
,
2696 _Out_ PNDIS_PACKET Packet
,
2697 _Out_ PUINT BytesTransferred
);
2700 (NTAPI
*RESET_HANDLER
)(
2701 _In_ NDIS_HANDLE NdisBindingHandle
);
2704 (NTAPI
*REQUEST_HANDLER
)(
2705 _In_ NDIS_HANDLE NdisBindingHandle
,
2706 _In_ PNDIS_REQUEST NdisRequest
);
2708 #endif /* NDIS_LEGACY_DRIVER */
2710 #if defined(NDIS_WRAPPER)
2711 #define NDIS_COMMON_OPEN_BLOCK_WRAPPER_S \
2714 KSPIN_LOCK SpinLock; \
2715 NDIS_HANDLE FilterHandle; \
2716 ULONG ProtocolOptions; \
2717 USHORT CurrentLookahead; \
2718 USHORT ConnectDampTicks; \
2719 USHORT DisconnectDampTicks; \
2720 W_SEND_HANDLER WSendHandler; \
2721 W_TRANSFER_DATA_HANDLER WTransferDataHandler; \
2722 W_SEND_PACKETS_HANDLER WSendPacketsHandler; \
2723 W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler; \
2724 ULONG WakeUpEnable; \
2725 PKEVENT CloseCompleteEvent; \
2727 ULONG AfReferences; \
2728 PNDIS_OPEN_BLOCK NextGlobalOpen;
2730 #define NDIS_COMMON_OPEN_BLOCK_WRAPPER_S
2733 #define NDIS_COMMON_OPEN_BLOCK_S \
2735 NDIS_HANDLE BindingHandle; \
2736 PNDIS_MINIPORT_BLOCK MiniportHandle; \
2737 PNDIS_PROTOCOL_BLOCK ProtocolHandle; \
2738 NDIS_HANDLE ProtocolBindingContext; \
2739 PNDIS_OPEN_BLOCK MiniportNextOpen; \
2740 PNDIS_OPEN_BLOCK ProtocolNextOpen; \
2741 NDIS_HANDLE MiniportAdapterContext; \
2742 BOOLEAN Reserved1; \
2743 BOOLEAN Reserved2; \
2744 BOOLEAN Reserved3; \
2745 BOOLEAN Reserved4; \
2746 PNDIS_STRING BindDeviceName; \
2747 KSPIN_LOCK Reserved5; \
2748 PNDIS_STRING RootDeviceName; \
2749 _ANONYMOUS_UNION union { \
2750 SEND_HANDLER SendHandler; \
2751 WAN_SEND_HANDLER WanSendHandler; \
2753 TRANSFER_DATA_HANDLER TransferDataHandler; \
2754 SEND_COMPLETE_HANDLER SendCompleteHandler; \
2755 TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; \
2756 RECEIVE_HANDLER ReceiveHandler; \
2757 RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; \
2758 WAN_RECEIVE_HANDLER WanReceiveHandler; \
2759 REQUEST_COMPLETE_HANDLER RequestCompleteHandler; \
2760 RECEIVE_PACKET_HANDLER ReceivePacketHandler; \
2761 SEND_PACKETS_HANDLER SendPacketsHandler; \
2762 RESET_HANDLER ResetHandler; \
2763 REQUEST_HANDLER RequestHandler; \
2764 RESET_COMPLETE_HANDLER ResetCompleteHandler; \
2765 STATUS_HANDLER StatusHandler; \
2766 STATUS_COMPLETE_HANDLER StatusCompleteHandler; \
2767 NDIS_COMMON_OPEN_BLOCK_WRAPPER_S
2769 typedef struct _NDIS_COMMON_OPEN_BLOCK
{
2770 NDIS_COMMON_OPEN_BLOCK_S
2771 } NDIS_COMMON_OPEN_BLOCK
;
2773 struct _NDIS_OPEN_BLOCK
2776 NDIS_COMMON_OPEN_BLOCK NdisCommonOpenBlock
;
2778 NDIS_COMMON_OPEN_BLOCK_S
2782 #include <xfilter.h>
2784 #define NDIS_M_MAX_LOOKAHEAD 526
2786 _IRQL_requires_max_(DISPATCH_LEVEL
)
2790 NdisInitializeTimer(
2791 _Inout_ PNDIS_TIMER Timer
,
2792 _In_ PNDIS_TIMER_FUNCTION TimerFunction
,
2793 _In_opt_ _Points_to_data_ PVOID FunctionContext
);
2795 _IRQL_requires_max_(DISPATCH_LEVEL
)
2800 _In_ PNDIS_TIMER Timer
,
2801 _Out_
_At_(*TimerCancelled
, _Must_inspect_result_
) PBOOLEAN TimerCancelled
);
2803 _IRQL_requires_max_(DISPATCH_LEVEL
)
2808 _In_ PNDIS_TIMER Timer
,
2809 _In_ UINT MillisecondsToDelay
);
2814 NdisSetPeriodicTimer(
2815 _In_ PNDIS_TIMER NdisTimer
,
2816 _In_ UINT MillisecondsPeriod
);
2818 _IRQL_requires_max_(DISPATCH_LEVEL
)
2823 _In_ PNDIS_TIMER NdisTimer
,
2824 _In_ UINT MillisecondsToDelay
,
2825 _In_ PVOID FunctionContext
);
2827 _IRQL_requires_(PASSIVE_LEVEL
)
2831 NdisGetRoutineAddress(
2832 _In_ PNDIS_STRING NdisRoutineName
);
2834 _IRQL_requires_max_(DISPATCH_LEVEL
)
2838 NdisGetVersion(VOID
);
2840 #if NDIS_LEGACY_DRIVER
2842 _IRQL_requires_max_(DISPATCH_LEVEL
)
2847 _Out_ PNDIS_STATUS Status
,
2848 _Out_ PNDIS_BUFFER
*Buffer
,
2849 _In_opt_ NDIS_HANDLE PoolHandle
,
2850 _In_reads_bytes_(Length
) PVOID VirtualAddress
,
2853 _IRQL_requires_max_(DISPATCH_LEVEL
)
2857 NdisAllocateBufferPool(
2858 _Out_ PNDIS_STATUS Status
,
2859 _Out_ PNDIS_HANDLE PoolHandle
,
2860 _In_ UINT NumberOfDescriptors
);
2862 _IRQL_requires_max_(DISPATCH_LEVEL
)
2867 _In_ NDIS_HANDLE PoolHandle
);
2874 IN PNDIS_BUFFER Buffer);
2876 #define NdisFreeBuffer IoFreeMdl
2878 _IRQL_requires_max_(DISPATCH_LEVEL
)
2882 NdisAllocatePacketPool(
2883 _Out_ PNDIS_STATUS Status
,
2884 _Out_ PNDIS_HANDLE PoolHandle
,
2885 _In_ UINT NumberOfDescriptors
,
2886 _In_ UINT ProtocolReservedLength
);
2888 _IRQL_requires_max_(DISPATCH_LEVEL
)
2892 NdisAllocatePacketPoolEx(
2893 _Out_ PNDIS_STATUS Status
,
2894 _Out_ PNDIS_HANDLE PoolHandle
,
2895 _In_ UINT NumberOfDescriptors
,
2896 _In_ UINT NumberOfOverflowDescriptors
,
2897 _In_ UINT ProtocolReservedLength
);
2899 _IRQL_requires_max_(DISPATCH_LEVEL
)
2903 NdisSetPacketPoolProtocolId(
2904 _In_ NDIS_HANDLE PacketPoolHandle
,
2905 _In_ UINT ProtocolId
);
2907 _IRQL_requires_max_(DISPATCH_LEVEL
)
2911 NdisPacketPoolUsage(
2912 _In_ NDIS_HANDLE PoolHandle
);
2914 _IRQL_requires_max_(DISPATCH_LEVEL
)
2919 _In_ UINT ProtocolReservedSize
);
2921 _IRQL_requires_max_(DISPATCH_LEVEL
)
2925 NdisGetPoolFromPacket(
2926 _In_ PNDIS_PACKET Packet
);
2928 _IRQL_requires_max_(DISPATCH_LEVEL
)
2932 NdisIMGetCurrentPacketStack(
2933 _In_ PNDIS_PACKET Packet
,
2934 _Out_ BOOLEAN
*StacksRemaining
);
2936 _IRQL_requires_max_(DISPATCH_LEVEL
)
2941 _In_ NDIS_HANDLE PoolHandle
);
2943 _IRQL_requires_max_(DISPATCH_LEVEL
)
2948 _In_ PNDIS_PACKET Packet
);
2950 _IRQL_requires_(DISPATCH_LEVEL
)
2955 _In_ PNDIS_PACKET Packet
);
2957 _IRQL_requires_(DISPATCH_LEVEL
)
2961 NdisDprFreePacketNonInterlocked(
2962 _In_ PNDIS_PACKET Packet
);
2964 _IRQL_requires_max_(DISPATCH_LEVEL
)
2969 _Out_ PNDIS_STATUS Status
,
2970 _Out_ PNDIS_PACKET
*Packet
,
2971 _In_ NDIS_HANDLE PoolHandle
);
2973 _IRQL_requires_(DISPATCH_LEVEL
)
2977 NdisDprAllocatePacket(
2978 _Out_ PNDIS_STATUS Status
,
2979 _Out_ PNDIS_PACKET
*Packet
,
2980 _In_ NDIS_HANDLE PoolHandle
);
2982 _IRQL_requires_(DISPATCH_LEVEL
)
2986 NdisDprAllocatePacketNonInterlocked(
2987 _Out_ PNDIS_STATUS Status
,
2988 _Out_ PNDIS_PACKET
*Packet
,
2989 _In_ NDIS_HANDLE PoolHandle
);
2993 * NdisReinitializePacket(
2994 * IN OUT PNDIS_PACKET Packet);
2996 #define NdisReinitializePacket(Packet) { \
2997 (Packet)->Private.Head = (PNDIS_BUFFER)NULL; \
2998 (Packet)->Private.ValidCounts = FALSE; \
3006 IN PNDIS_BUFFER Buffer,
3007 OUT PVOID *VirtualAddress OPTIONAL,
3010 #define NdisQueryBuffer(_Buffer, _VirtualAddress, _Length) { \
3011 if (ARGUMENT_PRESENT(_VirtualAddress)) { \
3012 *(PVOID *)(_VirtualAddress) = MmGetSystemAddressForMdl(_Buffer); \
3014 *(_Length) = MmGetMdlByteCount(_Buffer); \
3020 NdisGetFirstBufferFromPacket(
3021 IN PNDIS_PACKET _Packet
,
3022 OUT PNDIS_BUFFER
*_FirstBuffer
,
3023 OUT PVOID
*_FirstBufferVA
,
3024 OUT PUINT _FirstBufferLength
,
3025 OUT PUINT _TotalBufferLength
);
3029 * NdisGetFirstBufferFromPacketSafe(
3030 * IN PNDIS_PACKET _Packet,
3031 * OUT PNDIS_BUFFER * _FirstBuffer,
3032 * OUT PVOID * _FirstBufferVA,
3033 * OUT PUINT _FirstBufferLength,
3034 * OUT PUINT _TotalBufferLength),
3035 * IN MM_PAGE_PRIORITY _Priority)
3037 #define NdisGetFirstBufferFromPacketSafe(_Packet, \
3040 _FirstBufferLength, \
3041 _TotalBufferLength, \
3044 PNDIS_BUFFER _Buffer; \
3046 _Buffer = (_Packet)->Private.Head; \
3047 *(_FirstBuffer) = _Buffer; \
3048 if (_Buffer != NULL) { \
3049 *(_FirstBufferVA) = MmGetSystemAddressForMdlSafe(_Buffer, _Priority); \
3050 *(_FirstBufferLength) = MmGetMdlByteCount(_Buffer); \
3051 _Buffer = _Buffer->Next; \
3052 *(_TotalBufferLength) = *(_FirstBufferLength); \
3053 while (_Buffer != NULL) { \
3054 *(_TotalBufferLength) += MmGetMdlByteCount(_Buffer); \
3055 _Buffer = _Buffer->Next; \
3059 *(_FirstBufferVA) = 0; \
3060 *(_FirstBufferLength) = 0; \
3061 *(_TotalBufferLength) = 0; \
3067 * NdisRecalculatePacketCounts(
3068 * IN OUT PNDIS_PACKET Packet);
3070 #define NdisRecalculatePacketCounts(Packet) { \
3071 PNDIS_BUFFER _Buffer = (Packet)->Private.Head; \
3072 if (_Buffer != NULL) { \
3073 while (_Buffer->Next != NULL) { \
3074 _Buffer = _Buffer->Next; \
3076 (Packet)->Private.Tail = _Buffer; \
3078 (Packet)->Private.ValidCounts = FALSE; \
3083 * NdisChainBufferAtFront(
3084 * IN OUT PNDIS_PACKET Packet,
3085 * IN OUT PNDIS_BUFFER Buffer)
3087 #define NdisChainBufferAtFront(Packet, \
3090 PNDIS_BUFFER _NdisBuffer = (Buffer); \
3092 while (_NdisBuffer->Next != NULL) \
3093 _NdisBuffer = _NdisBuffer->Next; \
3095 if ((Packet)->Private.Head == NULL) \
3096 (Packet)->Private.Tail = _NdisBuffer; \
3098 _NdisBuffer->Next = (Packet)->Private.Head; \
3099 (Packet)->Private.Head = (Buffer); \
3100 (Packet)->Private.ValidCounts = FALSE; \
3105 * NdisChainBufferAtBack(
3106 * IN OUT PNDIS_PACKET Packet,
3107 * IN OUT PNDIS_BUFFER Buffer)
3109 #define NdisChainBufferAtBack(Packet, \
3112 PNDIS_BUFFER _NdisBuffer = (Buffer); \
3114 while (_NdisBuffer->Next != NULL) \
3115 _NdisBuffer = _NdisBuffer->Next; \
3117 _NdisBuffer->Next = NULL; \
3119 if ((Packet)->Private.Head != NULL) \
3120 (Packet)->Private.Tail->Next = (Buffer); \
3122 (Packet)->Private.Head = (Buffer); \
3124 (Packet)->Private.Tail = _NdisBuffer; \
3125 (Packet)->Private.ValidCounts = FALSE; \
3131 NdisUnchainBufferAtFront(
3132 IN OUT PNDIS_PACKET Packet
,
3133 OUT PNDIS_BUFFER
*Buffer
);
3138 NdisUnchainBufferAtBack(
3139 IN OUT PNDIS_PACKET Packet
,
3140 OUT PNDIS_BUFFER
*Buffer
);
3142 _IRQL_requires_max_(DISPATCH_LEVEL
)
3146 NdisCopyFromPacketToPacket(
3147 _In_ PNDIS_PACKET Destination
,
3148 _In_ UINT DestinationOffset
,
3149 _In_ UINT BytesToCopy
,
3150 _In_ PNDIS_PACKET Source
,
3151 _In_ UINT SourceOffset
,
3152 _Out_ PUINT BytesCopied
);
3157 NdisCopyFromPacketToPacketSafe(
3158 IN PNDIS_PACKET Destination
,
3159 IN UINT DestinationOffset
,
3160 IN UINT BytesToCopy
,
3161 IN PNDIS_PACKET Source
,
3162 IN UINT SourceOffset
,
3163 OUT PUINT BytesCopied
,
3164 IN MM_PAGE_PRIORITY Priority
);
3166 _IRQL_requires_max_(DISPATCH_LEVEL
)
3167 __drv_preferredFunction("NdisAllocateMemoryWithTag", "Obsolete")
3172 _At_(*VirtualAddress
, __drv_allocatesMem(Mem
)) _Outptr_result_bytebuffer_(Length
)
3173 PVOID
*VirtualAddress
,
3175 _In_ UINT MemoryFlags
,
3176 _In_ NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress
);
3178 #define NdisInitializeWorkItem(_WI_, _R_, _C_) { \
3179 (_WI_)->Context = _C_; \
3180 (_WI_)->Routine = _R_; \
3183 _IRQL_requires_max_(DISPATCH_LEVEL
)
3187 NdisScheduleWorkItem(
3188 _In_ __drv_aliasesMem PNDIS_WORK_ITEM WorkItem
);
3190 _IRQL_requires_max_(DISPATCH_LEVEL
)
3194 NdisSetPacketStatus(
3195 _In_ PNDIS_PACKET Packet
,
3196 _In_ NDIS_STATUS Status
,
3197 _In_ NDIS_HANDLE Handle
,
3200 #endif /* NDIS_LEGACY_DRIVER */
3202 _IRQL_requires_(PASSIVE_LEVEL
)
3207 _Out_ PNDIS_STATUS Status
,
3208 _Out_ PNDIS_HANDLE FileHandle
,
3209 _Out_ PUINT FileLength
,
3210 _In_ PNDIS_STRING FileName
,
3211 _In_ NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress
);
3213 _IRQL_requires_(PASSIVE_LEVEL
)
3218 _In_ NDIS_HANDLE FileHandle
);
3220 _IRQL_requires_max_(DISPATCH_LEVEL
)
3225 _Out_ PNDIS_STATUS Status
,
3226 _Out_ PVOID
*MappedBuffer
,
3227 _In_ NDIS_HANDLE FileHandle
);
3229 _IRQL_requires_(PASSIVE_LEVEL
)
3234 _In_ NDIS_HANDLE FileHandle
);
3236 _IRQL_requires_max_(DISPATCH_LEVEL
)
3240 NdisGetSharedDataAlignment(VOID
);
3242 #define NdisFlushBuffer(Buffer,WriteToDevice) \
3243 KeFlushIoBuffers((Buffer),!(WriteToDevice), TRUE)
3245 _IRQL_requires_max_(DISPATCH_LEVEL
)
3250 _Out_ PNDIS_STATUS Status
,
3251 _Out_ PNDIS_BUFFER
*Buffer
,
3252 _In_ NDIS_HANDLE PoolHandle
,
3253 _In_ PVOID MemoryDescriptor
,
3259 * NdisCopyLookaheadData(
3260 * IN PVOID Destination,
3263 * IN ULONG ReceiveFlags);
3266 #if defined(_M_IX86) || defined(_M_AMD64)
3267 #define NdisCopyLookaheadData(Destination, Source, Length, MacOptions) \
3268 RtlCopyMemory(Destination, Source, Length)
3270 #define NdisCopyLookaheadData(Destination, Source, Length, MacOptions) \
3272 if ((MacOptions) & NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA) \
3274 RtlCopyMemory(Destination, Source, Length); \
3278 PUCHAR _Src = (PUCHAR)(Source); \
3279 PUCHAR _Dest = (PUCHAR)(Destination); \
3280 PUCHAR _End = _Dest + (Length); \
3281 while (_Dest < _End) \
3282 *_Dest++ = *_Src++; \
3291 NdisAdjustBufferLength(
3292 IN PNDIS_BUFFER Buffer,
3295 #define NdisAdjustBufferLength(Buffer, Length) \
3296 (((Buffer)->ByteCount) = (Length))
3298 #if NDIS_SUPPORT_NDIS6
3299 #define NdisAdjustMdlLength(_Mdl, _Length) \
3300 (((_Mdl)->ByteCount) = (_Length))
3308 IN PNDIS_BUFFER Buffer);
3310 #define NdisBufferLength MmGetMdlByteCount
3316 NdisBufferVirtualAddress(
3317 IN PNDIS_BUFFER Buffer);
3319 #define NdisBufferVirtualAddress MmGetSystemAddressForMdl
3321 #define NdisBufferVirtualAddressSafe MmGetSystemAddressForMdlSafe
3326 NDIS_BUFFER_TO_SPAN_PAGES(
3327 IN PNDIS_BUFFER Buffer
);
3333 NdisGetBufferPhysicalArraySize(
3334 IN PNDIS_BUFFER Buffer,
3335 OUT PUINT ArraySize);
3337 #define NdisGetBufferPhysicalArraySize(Buffer, ArraySize) \
3338 (*(ArraySize) = NDIS_BUFFER_TO_SPAN_PAGES(Buffer))
3344 NdisQueryBufferOffset(
3345 IN PNDIS_BUFFER Buffer,
3349 #define NdisQueryBufferOffset(_Buffer, _Offset, _Length) { \
3350 *(_Offset) = MmGetMdlByteOffset(_Buffer); \
3351 *(_Length) = MmGetMdlByteCount(_Buffer); \
3356 * NDIS_BUFFER_LINKAGE(
3357 * IN PNDIS_BUFFER Buffer);
3359 #define NDIS_BUFFER_LINKAGE(Buffer) (Buffer)->Next
3363 * NdisGetNextBuffer(
3364 * IN PNDIS_BUFFER CurrentBuffer,
3365 * OUT PNDIS_BUFFER * NextBuffer)
3367 #define NdisGetNextBuffer(CurrentBuffer, \
3370 *(NextBuffer) = (CurrentBuffer)->Next; \
3373 #if NDIS_LEGACY_DRIVER
3375 #define NDIS_PACKET_FIRST_NDIS_BUFFER(_Packet) ((_Packet)->Private.Head)
3376 #define NDIS_PACKET_LAST_NDIS_BUFFER(_Packet) ((_Packet)->Private.Tail)
3377 #define NDIS_PACKET_VALID_COUNTS(_Packet) ((_Packet)->Private.ValidCounts)
3381 * NdisGetPacketFlags(
3382 * IN PNDIS_PACKET Packet);
3384 #define NdisGetPacketFlags(Packet) (Packet)->Private.Flags
3388 * NDIS_GET_PACKET_PROTOCOL_TYPE(
3389 * IN PNDIS_PACKET Packet);
3391 #define NDIS_GET_PACKET_PROTOCOL_TYPE(_Packet) \
3392 ((_Packet)->Private.Flags & NDIS_PROTOCOL_ID_MASK)
3395 * PNDIS_PACKET_OOB_DATA
3396 * NDIS_OOB_DATA_FROM_PACKET(
3397 * IN PNDIS_PACKET Packet);
3399 #define NDIS_OOB_DATA_FROM_PACKET(_Packet) \
3400 (PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3401 (_Packet)->Private.NdisPacketOobOffset)
3405 * NDIS_GET_PACKET_HEADER_SIZE(
3406 * IN PNDIS_PACKET Packet);
3408 #define NDIS_GET_PACKET_HEADER_SIZE(_Packet) \
3409 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3410 (_Packet)->Private.NdisPacketOobOffset))->HeaderSize
3414 * NDIS_GET_PACKET_STATUS(
3415 * IN PNDIS_PACKET Packet);
3417 #define NDIS_GET_PACKET_STATUS(_Packet) \
3418 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3419 (_Packet)->Private.NdisPacketOobOffset))->Status
3423 * NDIS_GET_PACKET_TIME_TO_SEND(
3424 * IN PNDIS_PACKET Packet);
3426 #define NDIS_GET_PACKET_TIME_TO_SEND(_Packet) \
3427 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3428 (_Packet)->Private.NdisPacketOobOffset))->TimeToSend
3432 * NDIS_GET_PACKET_TIME_SENT(
3433 * IN PNDIS_PACKET Packet);
3435 #define NDIS_GET_PACKET_TIME_SENT(_Packet) \
3436 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3437 (_Packet)->Private.NdisPacketOobOffset))->TimeSent
3441 * NDIS_GET_PACKET_TIME_RECEIVED(
3442 * IN PNDIS_PACKET Packet);
3444 #define NDIS_GET_PACKET_TIME_RECEIVED(_Packet) \
3445 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3446 (_Packet)->Private.NdisPacketOobOffset))->TimeReceived
3450 * NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(
3451 * IN PNDIS_PACKET Packet,
3452 * IN PPVOID pMediaSpecificInfo,
3453 * IN PUINT pSizeMediaSpecificInfo);
3455 #define NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(_Packet, \
3456 _pMediaSpecificInfo, \
3457 _pSizeMediaSpecificInfo) \
3459 if (!((_Packet)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS) || \
3460 !((_Packet)->Private.NdisPacketFlags & fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO)) \
3462 *(_pMediaSpecificInfo) = NULL; \
3463 *(_pSizeMediaSpecificInfo) = 0; \
3467 *(_pMediaSpecificInfo) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3468 (_Packet)->Private.NdisPacketOobOffset))->MediaSpecificInformation; \
3469 *(_pSizeMediaSpecificInfo) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3470 (_Packet)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo; \
3476 * NDIS_SET_PACKET_HEADER_SIZE(
3477 * IN PNDIS_PACKET Packet,
3480 #define NDIS_SET_PACKET_HEADER_SIZE(_Packet, _HdrSize) \
3481 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3482 (_Packet)->Private.NdisPacketOobOffset))->HeaderSize = (_HdrSize)
3486 * NDIS_SET_PACKET_STATUS(
3487 * IN PNDIS_PACKET Packet,
3488 * IN NDIS_STATUS Status);
3490 #define NDIS_SET_PACKET_STATUS(_Packet, _Status) \
3491 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3492 (_Packet)->Private.NdisPacketOobOffset))->Status = (_Status)
3496 * NDIS_SET_PACKET_TIME_TO_SEND(
3497 * IN PNDIS_PACKET Packet,
3498 * IN ULONGLONG TimeToSend);
3500 #define NDIS_SET_PACKET_TIME_TO_SEND(_Packet, _TimeToSend) \
3501 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3502 (_Packet)->Private.NdisPacketOobOffset))->TimeToSend = (_TimeToSend)
3506 * NDIS_SET_PACKET_TIME_SENT(
3507 * IN PNDIS_PACKET Packet,
3508 * IN ULONGLONG TimeSent);
3510 #define NDIS_SET_PACKET_TIME_SENT(_Packet, _TimeSent) \
3511 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3512 (_Packet)->Private.NdisPacketOobOffset))->TimeSent = (_TimeSent)
3516 * NDIS_SET_PACKET_TIME_RECEIVED(
3517 * IN PNDIS_PACKET Packet,
3518 * IN ULONGLONG TimeReceived);
3520 #define NDIS_SET_PACKET_TIME_RECEIVED(_Packet, _TimeReceived) \
3521 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3522 (_Packet)->Private.NdisPacketOobOffset))->TimeReceived = (_TimeReceived)
3526 * NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(
3527 * IN PNDIS_PACKET Packet,
3528 * IN PVOID MediaSpecificInfo,
3529 * IN UINT SizeMediaSpecificInfo);
3531 #define NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(_Packet, \
3532 _MediaSpecificInfo, \
3533 _SizeMediaSpecificInfo) \
3535 if ((_Packet)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS) \
3537 (_Packet)->Private.NdisPacketFlags |= fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO; \
3538 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3539 (_Packet)->Private.NdisPacketOobOffset))->MediaSpecificInformation = \
3540 (_MediaSpecificInfo); \
3541 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3542 (_Packet)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo = \
3543 (_SizeMediaSpecificInfo); \
3549 * NdisSetPacketFlags(
3550 * IN PNDIS_PACKET Packet,
3553 #define NdisSetPacketFlags(Packet, Flags) (Packet)->Private.Flags |= (Flags)
3557 * NdisClearPacketFlags(
3558 * IN PNDIS_PACKET Packet,
3561 #define NdisClearPacketFlags(Packet, Flags) (Packet)->Private.Flags &= ~(Flags)
3566 * IN PNDIS_PACKET Packet,
3567 * OUT PUINT PhysicalBufferCount OPTIONAL,
3568 * OUT PUINT BufferCount OPTIONAL,
3569 * OUT PNDIS_BUFFER *FirstBuffer OPTIONAL,
3570 * OUT PUINT TotalPacketLength OPTIONAL);
3575 IN PNDIS_PACKET Packet
,
3576 OUT PUINT PhysicalBufferCount OPTIONAL
,
3577 OUT PUINT BufferCount OPTIONAL
,
3578 OUT PNDIS_BUFFER
*FirstBuffer OPTIONAL
,
3579 OUT PUINT TotalPacketLength OPTIONAL
)
3582 *FirstBuffer
= Packet
->Private
.Head
;
3583 if (TotalPacketLength
|| BufferCount
|| PhysicalBufferCount
) {
3584 if (!Packet
->Private
.ValidCounts
) {
3587 PNDIS_BUFFER NdisBuffer
;
3588 UINT _PhysicalBufferCount
= 0;
3589 UINT _TotalPacketLength
= 0;
3592 for (NdisBuffer
= Packet
->Private
.Head
;
3593 NdisBuffer
!= (PNDIS_BUFFER
)NULL
;
3594 NdisBuffer
= NdisBuffer
->Next
) {
3595 _PhysicalBufferCount
+= NDIS_BUFFER_TO_SPAN_PAGES(NdisBuffer
);
3596 NdisQueryBufferOffset(NdisBuffer
, &Offset
, &PacketLength
);
3597 _TotalPacketLength
+= PacketLength
;
3600 Packet
->Private
.PhysicalCount
= _PhysicalBufferCount
;
3601 Packet
->Private
.TotalLength
= _TotalPacketLength
;
3602 Packet
->Private
.Count
= Count
;
3603 Packet
->Private
.ValidCounts
= TRUE
;
3606 if (PhysicalBufferCount
)
3607 *PhysicalBufferCount
= Packet
->Private
.PhysicalCount
;
3610 *BufferCount
= Packet
->Private
.Count
;
3612 if (TotalPacketLength
)
3613 *TotalPacketLength
= Packet
->Private
.TotalLength
;
3619 * NdisQueryPacketLength(
3620 * IN PNDIS_PACKET Packet,
3621 * OUT PUINT PhysicalBufferCount OPTIONAL,
3622 * OUT PUINT BufferCount OPTIONAL,
3623 * OUT PNDIS_BUFFER *FirstBuffer OPTIONAL,
3624 * OUT PUINT TotalPacketLength OPTIONAL);
3626 #define NdisQueryPacketLength(_Packet, \
3627 _TotalPacketLength) \
3629 if (!(_Packet)->Private.ValidCounts) { \
3630 NdisQueryPacket(_Packet, NULL, NULL, NULL, _TotalPacketLength); \
3632 else *(_TotalPacketLength) = (_Packet)->Private.TotalLength; \
3635 #endif /* NDIS_LEGACY_DRIVER */
3637 /* Memory management routines */
3643 NdisCreateLookaheadBufferFromSharedMemory(
3644 IN PVOID pSharedMemory,
3645 IN UINT LookaheadLength,
3646 OUT PVOID *pLookaheadBuffer);
3648 #define NdisCreateLookaheadBufferFromSharedMemory(_S, _L, _B) ((*(_B)) = (_S))
3653 NdisDestroyLookaheadBufferFromSharedMemory(
3654 IN PVOID pLookaheadBuffer
);
3656 #if defined(_M_IX86) || defined(_M_AMD64) || defined(_M_ARM) || defined(_M_PPC)
3660 * NdisMoveMappedMemory(
3661 * OUT PVOID Destination,
3665 #define NdisMoveMappedMemory(Destination, Source, Length) \
3666 RtlCopyMemory(Destination, Source, Length)
3670 * NdisZeroMappedMemory(
3671 * IN PVOID Destination,
3674 #define NdisZeroMappedMemory(Destination, Length) \
3675 RtlZeroMemory(Destination, Length)
3679 #define NdisMoveMappedMemory(Destination, Source, Length) \
3681 PUCHAR _Dest = Destination, _Src = Source, _End = _Dest + Length; \
3682 while (_Dest < _End) \
3683 *_Dest++ = _Src++; \
3686 #define NdisZeroMappedMemory(Destination, Length) \
3688 PUCHAR _Dest = Destination, _End = _Dest + Length; \
3689 while (_Dest < _End) \
3693 #endif /* _M_IX86 or _M_AMD64 */
3697 * NdisMoveFromMappedMemory(
3698 * OUT PVOID Destination,
3702 #define NdisMoveFromMappedMemory(Destination, Source, Length) \
3703 NdisMoveMappedMemory(Destination, Source, Length)
3707 * NdisMoveToMappedMemory(
3708 * OUT PVOID Destination,
3712 #define NdisMoveToMappedMemory(Destination, Source, Length) \
3713 NdisMoveMappedMemory(Destination, Source, Length)
3717 * NdisMUpdateSharedMemory(
3718 * IN NDIS_HANDLE MiniportAdapterHandle,
3720 * IN PVOID VirtualAddress,
3721 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
3723 #define NdisMUpdateSharedMemory(_H, _L, _V, _P) \
3724 NdisUpdateSharedMemory(_H, _L, _V, _P)
3726 _When_(MemoryFlags
==0, _IRQL_requires_max_(DISPATCH_LEVEL
))
3727 _When_(MemoryFlags
==NDIS_MEMORY_CONTIGUOUS
, _IRQL_requires_(PASSIVE_LEVEL
))
3728 _When_(MemoryFlags
==NDIS_MEMORY_NONCACHED
, _IRQL_requires_max_(APC_LEVEL
))
3733 _In_reads_bytes_(Length
) __drv_freesMem(Mem
) PVOID VirtualAddress
,
3735 _In_
_Pre_satisfies_(MemoryFlags
== 0 || MemoryFlags
== NDIS_MEMORY_NONCACHED
|| MemoryFlags
== NDIS_MEMORY_CONTIGUOUS
)
3741 NdisFreeMemoryWithTag(
3742 IN PVOID VirtualAddress
,
3748 NdisImmediateReadSharedMemory(
3749 IN NDIS_HANDLE WrapperConfigurationContext
,
3750 IN ULONG SharedMemoryAddress
,
3757 NdisImmediateWriteSharedMemory(
3758 IN NDIS_HANDLE WrapperConfigurationContext
,
3759 IN ULONG SharedMemoryAddress
,
3763 _IRQL_requires_(PASSIVE_LEVEL
)
3767 NdisMAllocateSharedMemory(
3768 _In_ NDIS_HANDLE MiniportAdapterHandle
,
3770 _In_ BOOLEAN Cached
,
3771 _Outptr_result_bytebuffer_(Length
) _At_(*VirtualAddress
, _Must_inspect_result_
)
3772 PVOID
*VirtualAddress
,
3773 _Out_
_At_(*PhysicalAddress
, _Must_inspect_result_
)
3774 PNDIS_PHYSICAL_ADDRESS PhysicalAddress
);
3776 _IRQL_requires_max_(DISPATCH_LEVEL
)
3780 NdisMAllocateSharedMemoryAsync(
3781 _In_ NDIS_HANDLE MiniportAdapterHandle
,
3783 _In_ BOOLEAN Cached
,
3784 _In_ PVOID Context
);
3788 #define NdisUpdateSharedMemory(NdisAdapterHandle, \
3798 NdisUpdateSharedMemory(
3799 IN NDIS_HANDLE NdisAdapterHandle
,
3801 IN PVOID VirtualAddress
,
3802 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
3804 #endif /* defined(NDIS50) */
3808 * NdisGetPhysicalAddressHigh(
3809 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
3811 #define NdisGetPhysicalAddressHigh(PhysicalAddress) \
3812 ((PhysicalAddress).HighPart)
3816 * NdisSetPhysicalAddressHigh(
3817 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
3820 #define NdisSetPhysicalAddressHigh(PhysicalAddress, Value) \
3821 ((PhysicalAddress).HighPart) = (Value)
3825 * NdisGetPhysicalAddressLow(
3826 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
3828 #define NdisGetPhysicalAddressLow(PhysicalAddress) \
3829 ((PhysicalAddress).LowPart)
3834 * NdisSetPhysicalAddressLow(
3835 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
3838 #define NdisSetPhysicalAddressLow(PhysicalAddress, Value) \
3839 ((PhysicalAddress).LowPart) = (Value)
3843 * NDIS_PHYSICAL_ADDRESS_CONST(
3847 #define NDIS_PHYSICAL_ADDRESS_CONST(Low, High) \
3848 { {(ULONG)(Low), (LONG)(High)} }
3853 * IN CONST VOID *Source1,
3854 * IN CONST VOID *Source2,
3857 #define NdisEqualMemory(Source1, Source2, Length) \
3858 RtlEqualMemory(Source1, Source2, Length)
3863 * IN PVOID Destination,
3867 #define NdisFillMemory(Destination, Length, Fill) \
3868 RtlFillMemory(Destination, Length, Fill)
3873 * OUT PVOID Destination,
3877 #define NdisMoveMemory(Destination, Source, Length) \
3878 RtlCopyMemory(Destination, Source, Length)
3883 * NdisRetrieveUlong(
3884 * IN PULONG DestinationAddress,
3885 * IN PULONG SourceAddress);
3887 #define NdisRetrieveUlong(DestinationAddress, SourceAddress) \
3888 RtlRetrieveUlong(DestinationAddress, SourceAddress)
3894 * IN PULONG DestinationAddress,
3897 #define NdisStoreUlong(DestinationAddress, Value) \
3898 RtlStoreUlong(DestinationAddress, Value)
3904 * IN PVOID Destination,
3907 #define NdisZeroMemory(Destination, Length) \
3908 RtlZeroMemory(Destination, Length)
3911 (NTAPI
*NDIS_BLOCK_INITIALIZER
) (
3913 IN SIZE_T NumberOfBytes
3916 /* Configuration routines */
3918 #if NDIS_LEGACY_DRIVER
3919 _IRQL_requires_(PASSIVE_LEVEL
)
3920 _Success_(*Status
>= 0)
3924 NdisOpenConfiguration(
3925 _At_(*Status
, _Must_inspect_result_
) _Out_ PNDIS_STATUS Status
,
3926 _Out_ PNDIS_HANDLE ConfigurationHandle
,
3927 _In_ NDIS_HANDLE WrapperConfigurationContext
);
3930 _IRQL_requires_(PASSIVE_LEVEL
)
3931 _Success_(*Status
>= 0)
3935 NdisReadNetworkAddress(
3936 _At_(*Status
, _Must_inspect_result_
) _Out_ PNDIS_STATUS Status
,
3937 _Outptr_result_bytebuffer_to_(*NetworkAddressLength
, *NetworkAddressLength
)
3938 PVOID
*NetworkAddress
,
3939 _Out_ PUINT NetworkAddressLength
,
3940 _In_ NDIS_HANDLE ConfigurationHandle
);
3945 NdisReadEisaSlotInformation(
3946 OUT PNDIS_STATUS Status
,
3947 IN NDIS_HANDLE WrapperConfigurationContext
,
3948 OUT PUINT SlotNumber
,
3949 OUT PNDIS_EISA_FUNCTION_INFORMATION EisaData
);
3954 NdisReadEisaSlotInformationEx(
3955 OUT PNDIS_STATUS Status
,
3956 IN NDIS_HANDLE WrapperConfigurationContext
,
3957 OUT PUINT SlotNumber
,
3958 OUT PNDIS_EISA_FUNCTION_INFORMATION
*EisaData
,
3959 OUT PUINT NumberOfFunctions
);
3961 #if NDIS_LEGACY_MINIPORT
3963 _IRQL_requires_max_(DISPATCH_LEVEL
)
3967 NdisReadPciSlotInformation(
3968 _In_ NDIS_HANDLE NdisAdapterHandle
,
3969 _In_ ULONG SlotNumber
,
3971 _Out_writes_bytes_(Length
) PVOID Buffer
,
3974 _IRQL_requires_max_(DISPATCH_LEVEL
)
3978 NdisWritePciSlotInformation(
3979 _In_ NDIS_HANDLE NdisAdapterHandle
,
3980 _In_ ULONG SlotNumber
,
3982 _In_reads_bytes_(Length
) PVOID Buffer
,
3985 _IRQL_requires_max_(DISPATCH_LEVEL
)
3989 NdisReadPcmciaAttributeMemory(
3990 _In_ NDIS_HANDLE NdisAdapterHandle
,
3992 _Out_writes_bytes_(Length
) PVOID Buffer
,
3995 _IRQL_requires_max_(DISPATCH_LEVEL
)
3999 NdisWritePcmciaAttributeMemory(
4000 _In_ NDIS_HANDLE NdisAdapterHandle
,
4002 _In_reads_bytes_(Length
) PVOID Buffer
,
4005 #endif /* NDIS_LEGACY_MINIPORT */
4007 /* String management routines */
4013 NdisAnsiStringToUnicodeString(
4014 IN OUT PNDIS_STRING DestinationString,
4015 IN PNDIS_ANSI_STRING SourceString);
4017 #define NdisAnsiStringToUnicodeString(_us, _as) RtlAnsiStringToUnicodeString(_us, _as, FALSE)
4022 * IN PNDIS_STRING String1,
4023 * IN PNDIS_STRING String2,
4024 * IN BOOLEAN CaseInsensitive);
4026 #define NdisEqualString RtlEqualString
4028 #define NdisEqualUnicodeString RtlEqualUnicodeString
4035 IN OUT PNDIS_ANSI_STRING DestinationString,
4036 IN PCSTR SourceString);
4038 #define NdisInitAnsiString RtlInitString
4043 NdisInitUnicodeString(
4044 IN OUT PNDIS_STRING DestinationString
,
4045 IN PCWSTR SourceString
);
4051 NdisUnicodeStringToAnsiString(
4052 IN OUT PNDIS_ANSI_STRING DestinationString,
4053 IN PNDIS_STRING SourceString);
4055 #define NdisUnicodeStringToAnsiString(_as, _us) RtlUnicodeStringToAnsiString(_as, _us, FALSE)
4057 #define NdisFreeString(_s) NdisFreeMemory((_s).Buffer, (_s).MaximumLength, 0)
4058 #define NdisPrintString(_s) DbgPrint("%ls", (_s).Buffer)
4060 /* Spin lock reoutines */
4066 NdisAllocateSpinLock(
4067 IN PNDIS_SPIN_LOCK SpinLock);
4069 #define NdisAllocateSpinLock(_SpinLock) KeInitializeSpinLock(&(_SpinLock)->SpinLock)
4076 IN PNDIS_SPIN_LOCK SpinLock);
4078 #define NdisFreeSpinLock(_SpinLock)
4084 NdisAcquireSpinLock(
4085 IN PNDIS_SPIN_LOCK SpinLock);
4087 #define NdisAcquireSpinLock(_SpinLock) KeAcquireSpinLock(&(_SpinLock)->SpinLock, &(_SpinLock)->OldIrql)
4093 NdisReleaseSpinLock(
4094 IN PNDIS_SPIN_LOCK SpinLock);
4096 #define NdisReleaseSpinLock(_SpinLock) KeReleaseSpinLock(&(_SpinLock)->SpinLock,(_SpinLock)->OldIrql)
4102 NdisDprAcquireSpinLock(
4103 IN PNDIS_SPIN_LOCK SpinLock);
4105 #define NdisDprAcquireSpinLock(_SpinLock) KeAcquireSpinLockAtDpcLevel(&(_SpinLock)->SpinLock)
4111 NdisDprReleaseSpinLock(
4112 IN PNDIS_SPIN_LOCK SpinLock);
4114 #define NdisDprReleaseSpinLock(_SpinLock) KeReleaseSpinLockFromDpcLevel(&(_SpinLock)->SpinLock)
4120 * NdisRawReadPortBufferUchar(
4122 * OUT PUCHAR Buffer,
4125 #define NdisRawReadPortBufferUchar(Port, Buffer, Length) \
4126 READ_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length))
4130 * NdisRawReadPortBufferUlong(
4132 * OUT PULONG Buffer,
4135 #define NdisRawReadPortBufferUlong(Port, Buffer, Length) \
4136 READ_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length))
4140 * NdisRawReadPortBufferUshort(
4142 * OUT PUSHORT Buffer,
4145 #define NdisRawReadPortBufferUshort(Port, Buffer, Length) \
4146 READ_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length))
4150 * NdisRawReadPortUchar(
4154 #define NdisRawReadPortUchar(Port, Data) \
4155 *(Data) = READ_PORT_UCHAR((PUCHAR)(Port))
4159 * NdisRawReadPortUlong(
4163 #define NdisRawReadPortUlong(Port, Data) \
4164 *(Data) = READ_PORT_ULONG((PULONG)(Port))
4168 * NdisRawReadPortUshort(
4170 * OUT PUSHORT Data);
4172 #define NdisRawReadPortUshort(Port, Data) \
4173 *(Data) = READ_PORT_USHORT((PUSHORT)(Port))
4177 * NdisRawWritePortBufferUchar(
4182 #define NdisRawWritePortBufferUchar(Port, Buffer, Length) \
4183 WRITE_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length))
4187 * NdisRawWritePortBufferUlong(
4192 #define NdisRawWritePortBufferUlong(Port, Buffer, Length) \
4193 WRITE_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length))
4197 * NdisRawWritePortBufferUshort(
4199 * IN PUSHORT Buffer,
4202 #define NdisRawWritePortBufferUshort(Port, Buffer, Length) \
4203 WRITE_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length))
4207 * NdisRawWritePortUchar(
4211 #define NdisRawWritePortUchar(Port, Data) \
4212 WRITE_PORT_UCHAR((PUCHAR)(Port), (UCHAR)(Data))
4216 * NdisRawWritePortUlong(
4220 #define NdisRawWritePortUlong(Port, Data) \
4221 WRITE_PORT_ULONG((PULONG)(Port), (ULONG)(Data))
4225 * NdisRawWritePortUshort(
4229 #define NdisRawWritePortUshort(Port, Data) \
4230 WRITE_PORT_USHORT((PUSHORT)(Port), (USHORT)(Data))
4235 * NdisReadRegisterUchar(
4236 * IN PUCHAR Register,
4239 #define NdisReadRegisterUchar(Register, Data) \
4240 *(Data) = *(Register)
4244 * NdisReadRegisterUlong(
4245 * IN PULONG Register,
4248 #define NdisReadRegisterUlong(Register, Data) \
4249 *(Data) = *(Register)
4253 * NdisReadRegisterUshort(
4254 * IN PUSHORT Register,
4255 * OUT PUSHORT Data);
4257 #define NdisReadRegisterUshort(Register, Data) \
4258 *(Data) = *(Register)
4262 * NdisReadRegisterUchar(
4263 * IN PUCHAR Register,
4266 #define NdisWriteRegisterUchar(Register, Data) \
4267 WRITE_REGISTER_UCHAR((Register), (Data))
4271 * NdisReadRegisterUlong(
4272 * IN PULONG Register,
4275 #define NdisWriteRegisterUlong(Register, Data) \
4276 WRITE_REGISTER_ULONG((Register), (Data))
4280 * NdisReadRegisterUshort(
4281 * IN PUSHORT Register,
4284 #define NdisWriteRegisterUshort(Register, Data) \
4285 WRITE_REGISTER_USHORT((Register), (Data))
4292 * NdisInitializeListHead(
4293 * IN PLIST_ENTRY ListHead);
4295 #define NdisInitializeListHead InitializeListHead
4299 * NdisInterlockedInsertHeadList(
4300 * IN PLIST_ENTRY ListHead,
4301 * IN PLIST_ENTRY ListEntry,
4302 * IN PNDIS_SPIN_LOCK SpinLock);
4304 #define NdisInterlockedInsertHeadList(_ListHead, _ListEntry, _SpinLock) \
4305 ExInterlockedInsertHeadList(_ListHead, _ListEntry, &(_SpinLock)->SpinLock)
4309 * NdisInterlockedInsertTailList(
4310 * IN PLIST_ENTRY ListHead,
4311 * IN PLIST_ENTRY ListEntry,
4312 * IN PNDIS_SPIN_LOCK SpinLock);
4314 #define NdisInterlockedInsertTailList(_ListHead, _ListEntry, _SpinLock) \
4315 ExInterlockedInsertTailList(_ListHead, _ListEntry, &(_SpinLock)->SpinLock)
4319 * NdisInterlockedRemoveHeadList(
4320 * IN PLIST_ENTRY ListHead,
4321 * IN PNDIS_SPIN_LOCK SpinLock);
4323 #define NdisInterlockedRemoveHeadList(_ListHead, _SpinLock) \
4324 ExInterlockedRemoveHeadList(_ListHead, &(_SpinLock)->SpinLock)
4328 * NdisInitializeSListHead(
4329 * IN PSLIST_HEADER SListHead);
4331 #define NdisInitializeSListHead(SListHead) ExInitializeSListHead(SListHead)
4334 * USHORT NdisQueryDepthSList(
4335 * IN PSLIST_HEADER SListHead);
4337 #define NdisQueryDepthSList(SListHead) ExQueryDepthSList(SListHead)
4339 #define NdisInterlockedPushEntryList(ListHead, ListEntry, Lock) \
4340 ExInterlockedPushEntryList(ListHead, ListEntry, &(Lock)->SpinLock)
4342 #define NdisInterlockedPopEntryList(ListHead, Lock) \
4343 ExInterlockedPopEntryList(ListHead, &(Lock)->SpinLock)
4345 /* Non-paged lookaside lists */
4347 #define NdisInitializeNPagedLookasideList(_L, _AR, _FR, _Fl, _S, _T, _D) \
4348 ExInitializeNPagedLookasideList(_L, _AR, _FR, _Fl, _S, _T, _D)
4349 #define NdisDeleteNPagedLookasideList(_L) ExDeleteNPagedLookasideList(_L)
4350 #define NdisAllocateFromNPagedLookasideList(_L) ExAllocateFromNPagedLookasideList(_L)
4351 #define NdisFreeToNPagedLookasideList(_L, _E) ExFreeToNPagedLookasideList(_L, _E)
4353 /* Interlocked routines */
4357 * NdisInterlockedDecrement(
4360 #define NdisInterlockedDecrement(Addend) InterlockedDecrement(Addend)
4364 * NdisInterlockedIncrement(
4367 #define NdisInterlockedIncrement(Addend) InterlockedIncrement(Addend)
4371 * NdisInterlockedAddUlong(
4373 * IN ULONG Increment,
4374 * IN PNDIS_SPIN_LOCK SpinLock);
4376 #define NdisInterlockedAddUlong(_Addend, _Increment, _SpinLock) \
4377 ExInterlockedAddUlong(_Addend, _Increment, &(_SpinLock)->SpinLock)
4379 /* Miscellaneous routines */
4381 _IRQL_requires_(PASSIVE_LEVEL
)
4385 NdisCloseConfiguration(
4386 _In_
__drv_freesMem(mem
) NDIS_HANDLE ConfigurationHandle
);
4388 _IRQL_requires_(PASSIVE_LEVEL
)
4389 _Success_(*Status
>= 0)
4393 NdisReadConfiguration(
4394 _At_(*Status
, _Must_inspect_result_
) _Out_ PNDIS_STATUS Status
,
4395 _Out_ PNDIS_CONFIGURATION_PARAMETER
*ParameterValue
,
4396 _In_ NDIS_HANDLE ConfigurationHandle
,
4397 _In_ PNDIS_STRING Keyword
,
4398 _In_ NDIS_PARAMETER_TYPE ParameterType
);
4400 _IRQL_requires_(PASSIVE_LEVEL
)
4401 _Success_(*Status
>= 0)
4405 NdisWriteConfiguration(
4406 _At_(*Status
, _Must_inspect_result_
) _Out_ PNDIS_STATUS Status
,
4407 _In_ NDIS_HANDLE WrapperConfigurationContext
,
4408 _In_ PNDIS_STRING Keyword
,
4409 _In_ PNDIS_CONFIGURATION_PARAMETER ParameterValue
);
4411 _IRQL_requires_max_(DISPATCH_LEVEL
)
4415 NdisWriteErrorLogEntry(
4416 _In_ NDIS_HANDLE NdisAdapterHandle
,
4417 _In_ NDIS_ERROR_CODE ErrorCode
,
4418 _In_ ULONG NumberOfErrorValues
,
4421 _IRQL_requires_(PASSIVE_LEVEL
)
4425 NdisInitializeString(
4426 _Out_
_At_(Destination
->Buffer
, __drv_allocatesMem(Mem
)) PNDIS_STRING Destination
,
4427 _In_opt_z_ PUCHAR Source
);
4431 * NdisStallExecution(
4432 * IN UINT MicrosecondsToStall)
4434 #define NdisStallExecution KeStallExecutionProcessor
4440 NdisGetCurrentSystemTime(
4441 IN PLARGE_INTEGER pSystemTime);
4443 #define NdisGetCurrentSystemTime KeQuerySystemTime
4445 #if NDIS_SUPPORT_60_COMPATIBLE_API
4446 _IRQL_requires_(PASSIVE_LEVEL
)
4450 NdisSystemProcessorCount(VOID
);
4456 NdisGetCurrentProcessorCpuUsage(
4457 OUT PULONG pCpuUsage
);
4459 /* NDIS helper macros */
4463 * NDIS_INIT_FUNCTION(FunctionName)
4465 #define NDIS_INIT_FUNCTION(FunctionName) \
4466 alloc_text(init, FunctionName)
4470 * NDIS_PAGABLE_FUNCTION(FunctionName)
4472 #define NDIS_PAGEABLE_FUNCTION(FunctionName) \
4473 alloc_text(page, FunctionName)
4475 #define NDIS_PAGABLE_FUNCTION NDIS_PAGEABLE_FUNCTION
4478 /* NDIS 4.0 extensions */
4480 _IRQL_requires_max_(DISPATCH_LEVEL
)
4484 NdisMFreeSharedMemory(
4485 _In_ NDIS_HANDLE MiniportAdapterHandle
,
4487 _In_ BOOLEAN Cached
,
4488 _In_reads_bytes_(Length
) PVOID VirtualAddress
,
4489 _In_ NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
4494 NdisMWanIndicateReceive(
4495 OUT PNDIS_STATUS Status
,
4496 IN NDIS_HANDLE MiniportAdapterHandle
,
4497 IN NDIS_HANDLE NdisLinkContext
,
4498 IN PUCHAR PacketBuffer
,
4499 IN UINT PacketSize
);
4504 NdisMWanIndicateReceiveComplete(
4505 IN NDIS_HANDLE MiniportAdapterHandle
,
4506 IN NDIS_HANDLE NdisLinkContext
);
4511 NdisMWanSendComplete(
4512 IN NDIS_HANDLE MiniportAdapterHandle
,
4513 IN PNDIS_WAN_PACKET Packet
,
4514 IN NDIS_STATUS Status
);
4519 NdisPciAssignResources(
4520 IN NDIS_HANDLE NdisMacHandle
,
4521 IN NDIS_HANDLE NdisWrapperHandle
,
4522 IN NDIS_HANDLE WrapperConfigurationContext
,
4523 IN ULONG SlotNumber
,
4524 OUT PNDIS_RESOURCE_LIST
*AssignedResources
);
4527 /* NDIS 5.0 extensions */
4529 _IRQL_requires_max_(DISPATCH_LEVEL
)
4533 NdisAllocateMemoryWithTag(
4534 _At_(*VirtualAddress
, __drv_allocatesMem(Mem
)) _Outptr_result_bytebuffer_(Length
)
4535 PVOID
*VirtualAddress
,
4539 _IRQL_requires_max_(DISPATCH_LEVEL
)
4543 NdisGetCurrentProcessorCounts(
4544 _Out_ PULONG pIdleCount
,
4545 _Out_ PULONG pKernelAndUser
,
4546 _Out_ PULONG pIndex
);
4548 #if NDIS_LEGACY_DRIVER
4552 NdisGetSystemUpTime(
4553 OUT PULONG pSystemUpTime
);
4556 #if NDIS_SUPPORT_60_COMPATIBLE_API
4558 _IRQL_requires_max_(DISPATCH_LEVEL
)
4559 _IRQL_raises_(DISPATCH_LEVEL
)
4560 _When_(fWrite
, _Acquires_exclusive_lock_(*Lock
))
4561 _When_(!fWrite
, _Acquires_shared_lock_(*Lock
))
4565 NdisAcquireReadWriteLock(
4566 _Inout_ PNDIS_RW_LOCK Lock
,
4567 _In_ BOOLEAN fWrite
,
4568 _Out_ _IRQL_saves_ PLOCK_STATE LockState
);
4570 _IRQL_requires_max_(DISPATCH_LEVEL
)
4574 NdisInitializeReadWriteLock(
4575 _Out_ PNDIS_RW_LOCK Lock
);
4577 _IRQL_requires_(DISPATCH_LEVEL
)
4578 _Requires_lock_held_(*Lock
)
4579 _Releases_lock_(*Lock
)
4583 NdisReleaseReadWriteLock(
4584 _Inout_ PNDIS_RW_LOCK Lock
,
4585 _In_ _IRQL_restores_ PLOCK_STATE LockState
);
4587 #if NDIS_SUPPORT_NDIS6
4592 NdisDprAcquireReadWriteLock(
4593 IN PNDIS_RW_LOCK Lock
,
4595 IN PLOCK_STATE LockState
);
4600 NdisDprReleaseReadWriteLock(
4601 IN PNDIS_RW_LOCK Lock
,
4602 IN PLOCK_STATE LockState
);
4604 #endif /* NDIS_SUPPORT_NDIS6 */
4606 #endif /* NDIS_SUPPORT_60_COMPATIBLE_API */
4608 _IRQL_requires_(PASSIVE_LEVEL
)
4612 NdisMDeregisterDevice(
4613 _In_ NDIS_HANDLE NdisDeviceHandle
);
4615 _IRQL_requires_(PASSIVE_LEVEL
)
4619 NdisMGetDeviceProperty(
4620 _In_ NDIS_HANDLE MiniportAdapterHandle
,
4621 _Inout_opt_ PDEVICE_OBJECT
*PhysicalDeviceObject
,
4622 _Inout_opt_ PDEVICE_OBJECT
*FunctionalDeviceObject
,
4623 _Inout_opt_ PDEVICE_OBJECT
*NextDeviceObject
,
4624 _Inout_opt_ PCM_RESOURCE_LIST
*AllocatedResources
,
4625 _Inout_opt_ PCM_RESOURCE_LIST
*AllocatedResourcesTranslated
);
4627 _IRQL_requires_(PASSIVE_LEVEL
)
4631 NdisMInitializeScatterGatherDma(
4632 _In_ NDIS_HANDLE MiniportAdapterHandle
,
4633 _In_ BOOLEAN Dma64BitAddresses
,
4634 _In_ ULONG MaximumPhysicalMapping
);
4636 _IRQL_requires_max_(DISPATCH_LEVEL
)
4640 NdisMPromoteMiniport(
4641 _In_ NDIS_HANDLE MiniportAdapterHandle
);
4643 _IRQL_requires_(PASSIVE_LEVEL
)
4647 NdisMQueryAdapterInstanceName(
4648 _Out_ PNDIS_STRING AdapterInstanceName
,
4649 _In_ NDIS_HANDLE MiniportAdapterHandle
);
4651 _IRQL_requires_(PASSIVE_LEVEL
)
4655 NdisMRegisterDevice(
4656 _In_ NDIS_HANDLE NdisWrapperHandle
,
4657 _In_ PNDIS_STRING DeviceName
,
4658 _In_ PNDIS_STRING SymbolicName
,
4659 _In_reads_(IRP_MJ_PNP
) PDRIVER_DISPATCH
*MajorFunctions
,
4660 _Out_ PDEVICE_OBJECT
*pDeviceObject
,
4661 _Out_ NDIS_HANDLE
*NdisDeviceHandle
);
4663 _IRQL_requires_(PASSIVE_LEVEL
)
4667 NdisMRegisterUnloadHandler(
4668 _In_ NDIS_HANDLE NdisWrapperHandle
,
4669 _In_ PDRIVER_UNLOAD UnloadHandler
);
4671 _IRQL_requires_max_(DISPATCH_LEVEL
)
4675 NdisMRemoveMiniport(
4676 _In_ NDIS_HANDLE MiniportAdapterHandle
);
4678 _IRQL_requires_(PASSIVE_LEVEL
)
4682 NdisMSetMiniportSecondary(
4683 _In_ NDIS_HANDLE MiniportAdapterHandle
,
4684 _In_ NDIS_HANDLE PrimaryMiniportAdapterHandle
);
4686 _IRQL_requires_max_(APC_LEVEL
)
4687 _Success_(*Status
>= 0)
4691 NdisOpenConfigurationKeyByIndex(
4692 _At_(*Status
, _Must_inspect_result_
) _Out_ PNDIS_STATUS Status
,
4693 _In_ NDIS_HANDLE ConfigurationHandle
,
4695 _Out_ PNDIS_STRING KeyName
,
4696 _Out_ PNDIS_HANDLE KeyHandle
);
4698 _IRQL_requires_max_(APC_LEVEL
)
4699 _Success_(*Status
>= 0)
4703 NdisOpenConfigurationKeyByName(
4704 _At_(*Status
, _Must_inspect_result_
) _Out_ PNDIS_STATUS Status
,
4705 _In_ NDIS_HANDLE ConfigurationHandle
,
4706 _In_ PNDIS_STRING SubKeyName
,
4707 _Out_ PNDIS_HANDLE SubKeyHandle
);
4709 _Must_inspect_result_
4710 _IRQL_requires_max_(DISPATCH_LEVEL
)
4714 NdisQueryAdapterInstanceName(
4715 _Out_ PNDIS_STRING AdapterInstanceName
,
4716 _In_ NDIS_HANDLE NdisBindingHandle
);
4718 _Must_inspect_result_
4722 NdisQueryBindInstanceName(
4723 _Out_ PNDIS_STRING pAdapterInstanceName
,
4724 _In_ NDIS_HANDLE BindingContext
);
4726 _IRQL_requires_max_(DISPATCH_LEVEL
)
4730 NdisWriteEventLogEntry(
4731 _In_ _Points_to_data_ PVOID LogHandle
,
4732 _In_ NDIS_STATUS EventCode
,
4733 _In_ ULONG UniqueEventValue
,
4734 _In_ USHORT NumStrings
,
4735 _In_opt_ PVOID StringsList
,
4736 _In_ ULONG DataSize
,
4737 _In_reads_bytes_opt_(DataSize
) PVOID Data
);
4739 /* Connectionless services */
4741 _Must_inspect_result_
4742 _IRQL_requires_max_(DISPATCH_LEVEL
)
4747 _In_ NDIS_HANDLE NdisVcHandle
,
4748 _In_ NDIS_HANDLE ProtocolPartyContext
,
4749 _In_ PCO_CALL_PARAMETERS CallParameters
,
4750 _Out_ PNDIS_HANDLE NdisPartyHandle
);
4752 _Must_inspect_result_
4753 _IRQL_requires_max_(DISPATCH_LEVEL
)
4757 NdisClCloseAddressFamily(
4758 _In_ NDIS_HANDLE NdisAfHandle
);
4760 _Must_inspect_result_
4761 _IRQL_requires_max_(DISPATCH_LEVEL
)
4766 _In_ NDIS_HANDLE NdisVcHandle
,
4767 _In_opt_ NDIS_HANDLE NdisPartyHandle
,
4768 _In_reads_bytes_opt_(Size
) PVOID Buffer
,
4771 _Must_inspect_result_
4772 _IRQL_requires_max_(DISPATCH_LEVEL
)
4776 NdisClDeregisterSap(
4777 _In_ NDIS_HANDLE NdisSapHandle
);
4779 _Must_inspect_result_
4780 _IRQL_requires_max_(DISPATCH_LEVEL
)
4785 _In_ NDIS_HANDLE NdisPartyHandle
,
4786 _In_reads_bytes_opt_(Size
) PVOID Buffer
,
4787 _In_opt_ UINT Size
);
4789 _IRQL_requires_max_(DISPATCH_LEVEL
)
4793 NdisClIncomingCallComplete(
4794 _In_ NDIS_STATUS Status
,
4795 _In_ NDIS_HANDLE NdisVcHandle
,
4796 _In_ PCO_CALL_PARAMETERS CallParameters
);
4798 _Must_inspect_result_
4799 _IRQL_requires_max_(DISPATCH_LEVEL
)
4804 _In_ NDIS_HANDLE NdisVcHandle
,
4805 _Inout_ PCO_CALL_PARAMETERS CallParameters
,
4806 _In_opt_ NDIS_HANDLE ProtocolPartyContext
,
4807 _Out_opt_ PNDIS_HANDLE NdisPartyHandle
);
4809 _Must_inspect_result_
4810 _IRQL_requires_max_(DISPATCH_LEVEL
)
4814 NdisClModifyCallQoS(
4815 _In_ NDIS_HANDLE NdisVcHandle
,
4816 _In_ PCO_CALL_PARAMETERS CallParameters
);
4818 _Must_inspect_result_
4819 _IRQL_requires_(PASSIVE_LEVEL
)
4823 NdisClOpenAddressFamily(
4824 _In_ NDIS_HANDLE NdisBindingHandle
,
4825 _In_ PCO_ADDRESS_FAMILY AddressFamily
,
4826 _In_ NDIS_HANDLE ProtocolAfContext
,
4827 _In_ PNDIS_CLIENT_CHARACTERISTICS ClCharacteristics
,
4828 _In_ UINT SizeOfClCharacteristics
,
4829 _Out_ PNDIS_HANDLE NdisAfHandle
);
4831 _Must_inspect_result_
4832 _IRQL_requires_max_(DISPATCH_LEVEL
)
4837 _In_ NDIS_HANDLE NdisAfHandle
,
4838 _In_ NDIS_HANDLE ProtocolSapContext
,
4840 _Out_ PNDIS_HANDLE NdisSapHandle
);
4843 /* Call Manager services */
4845 _Must_inspect_result_
4846 _IRQL_requires_max_(DISPATCH_LEVEL
)
4851 _In_ NDIS_HANDLE NdisVcHandle
,
4852 _Inout_ PCO_CALL_PARAMETERS CallParameters
);
4854 _IRQL_requires_max_(DISPATCH_LEVEL
)
4858 NdisCmAddPartyComplete(
4859 _In_ NDIS_STATUS Status
,
4860 _In_ NDIS_HANDLE NdisPartyHandle
,
4861 _In_opt_ NDIS_HANDLE CallMgrPartyContext
,
4862 _In_ PCO_CALL_PARAMETERS CallParameters
);
4864 _IRQL_requires_max_(DISPATCH_LEVEL
)
4868 NdisCmCloseAddressFamilyComplete(
4869 _In_ NDIS_STATUS Status
,
4870 _In_ NDIS_HANDLE NdisAfHandle
);
4872 _IRQL_requires_max_(DISPATCH_LEVEL
)
4876 NdisCmCloseCallComplete(
4877 _In_ NDIS_STATUS Status
,
4878 _In_ NDIS_HANDLE NdisVcHandle
,
4879 _In_opt_ NDIS_HANDLE NdisPartyHandle
);
4881 _Must_inspect_result_
4882 _IRQL_requires_max_(DISPATCH_LEVEL
)
4887 _In_ NDIS_HANDLE NdisVcHandle
);
4889 _IRQL_requires_max_(DISPATCH_LEVEL
)
4893 NdisCmDeregisterSapComplete(
4894 _In_ NDIS_STATUS Status
,
4895 _In_ NDIS_HANDLE NdisSapHandle
);
4897 _IRQL_requires_max_(DISPATCH_LEVEL
)
4901 NdisCmDispatchCallConnected(
4902 _In_ NDIS_HANDLE NdisVcHandle
);
4904 _Must_inspect_result_
4905 _IRQL_requires_max_(DISPATCH_LEVEL
)
4909 NdisCmDispatchIncomingCall(
4910 _In_ NDIS_HANDLE NdisSapHandle
,
4911 _In_ NDIS_HANDLE NdisVcHandle
,
4912 _In_ PCO_CALL_PARAMETERS CallParameters
);
4914 _IRQL_requires_max_(DISPATCH_LEVEL
)
4918 NdisCmDispatchIncomingCallQoSChange(
4919 _In_ NDIS_HANDLE NdisVcHandle
,
4920 _In_ PCO_CALL_PARAMETERS CallParameters
);
4922 _IRQL_requires_max_(DISPATCH_LEVEL
)
4926 NdisCmDispatchIncomingCloseCall(
4927 _In_ NDIS_STATUS CloseStatus
,
4928 _In_ NDIS_HANDLE NdisVcHandle
,
4929 _In_reads_bytes_opt_(Size
) PVOID Buffer
,
4932 _IRQL_requires_max_(DISPATCH_LEVEL
)
4936 NdisCmDispatchIncomingDropParty(
4937 _In_ NDIS_STATUS DropStatus
,
4938 _In_ NDIS_HANDLE NdisPartyHandle
,
4939 _In_reads_bytes_opt_(Size
) PVOID Buffer
,
4942 _IRQL_requires_max_(DISPATCH_LEVEL
)
4946 NdisCmDropPartyComplete(
4947 _In_ NDIS_STATUS Status
,
4948 _In_ NDIS_HANDLE NdisPartyHandle
);
4950 _IRQL_requires_max_(DISPATCH_LEVEL
)
4954 NdisCmMakeCallComplete(
4955 _In_ NDIS_STATUS Status
,
4956 _In_ NDIS_HANDLE NdisVcHandle
,
4957 _In_opt_ NDIS_HANDLE NdisPartyHandle
,
4958 _In_opt_ NDIS_HANDLE CallMgrPartyContext
,
4959 _In_ PCO_CALL_PARAMETERS CallParameters
);
4961 _IRQL_requires_max_(DISPATCH_LEVEL
)
4965 NdisCmModifyCallQoSComplete(
4966 _In_ NDIS_STATUS Status
,
4967 _In_ NDIS_HANDLE NdisVcHandle
,
4968 _In_ PCO_CALL_PARAMETERS CallParameters
);
4970 _IRQL_requires_max_(DISPATCH_LEVEL
)
4974 NdisCmOpenAddressFamilyComplete(
4975 _In_ NDIS_STATUS Status
,
4976 _In_ NDIS_HANDLE NdisAfHandle
,
4977 _In_ NDIS_HANDLE CallMgrAfContext
);
4979 _Must_inspect_result_
4980 _IRQL_requires_(PASSIVE_LEVEL
)
4984 NdisCmRegisterAddressFamily(
4985 _In_ NDIS_HANDLE NdisBindingHandle
,
4986 _In_ PCO_ADDRESS_FAMILY AddressFamily
,
4987 _In_ PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics
,
4988 _In_ UINT SizeOfCmCharacteristics
);
4990 _IRQL_requires_max_(DISPATCH_LEVEL
)
4994 NdisCmRegisterSapComplete(
4995 _In_ NDIS_STATUS Status
,
4996 _In_ NDIS_HANDLE NdisSapHandle
,
4997 _In_ NDIS_HANDLE CallMgrSapContext
);
4999 _IRQL_requires_max_(DISPATCH_LEVEL
)
5004 _In_ NDIS_HANDLE NdisVcHandle
,
5005 _In_ PCO_CALL_PARAMETERS CallParameters
);
5007 _IRQL_requires_max_(DISPATCH_LEVEL
)
5012 _In_ NDIS_HANDLE MiniportAdapterHandle
,
5013 _In_ NDIS_HANDLE NdisAfHandle
,
5014 _In_ NDIS_HANDLE MiniportVcContext
,
5015 _Out_ PNDIS_HANDLE NdisVcHandle
);
5017 _IRQL_requires_max_(DISPATCH_LEVEL
)
5021 NdisMCmDeactivateVc(
5022 _In_ NDIS_HANDLE NdisVcHandle
);
5024 _IRQL_requires_max_(DISPATCH_LEVEL
)
5029 _In_ NDIS_HANDLE NdisVcHandle
);
5034 NdisMCmRegisterAddressFamily(
5035 IN NDIS_HANDLE MiniportAdapterHandle
,
5036 IN PCO_ADDRESS_FAMILY AddressFamily
,
5037 IN PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics
,
5038 IN UINT SizeOfCmCharacteristics
);
5040 _IRQL_requires_max_(DISPATCH_LEVEL
)
5045 _In_ NDIS_HANDLE NdisAfHandle
,
5046 _In_opt_ NDIS_HANDLE NdisVcHandle
,
5047 _In_opt_ NDIS_HANDLE NdisPartyHandle
,
5048 _Inout_ PNDIS_REQUEST NdisRequest
);
5051 /* Connection-oriented services */
5053 _Must_inspect_result_
5054 _IRQL_requires_max_(DISPATCH_LEVEL
)
5059 _In_ NDIS_HANDLE NdisBindingHandle
,
5060 _In_opt_ NDIS_HANDLE NdisAfHandle
,
5061 _In_ NDIS_HANDLE ProtocolVcContext
,
5062 _Inout_ PNDIS_HANDLE NdisVcHandle
);
5064 _Must_inspect_result_
5065 _IRQL_requires_max_(DISPATCH_LEVEL
)
5070 _In_ NDIS_HANDLE NdisVcHandle
);
5072 _Must_inspect_result_
5073 _IRQL_requires_max_(DISPATCH_LEVEL
)
5078 _In_ NDIS_HANDLE NdisBindingHandle
,
5079 _In_opt_ NDIS_HANDLE NdisAfHandle
,
5080 _In_opt_ NDIS_HANDLE NdisVcHandle
,
5081 _In_opt_ NDIS_HANDLE NdisPartyHandle
,
5082 _Inout_ PNDIS_REQUEST NdisRequest
);
5084 _IRQL_requires_max_(DISPATCH_LEVEL
)
5088 NdisCoRequestComplete(
5089 _In_ NDIS_STATUS Status
,
5090 _In_ NDIS_HANDLE NdisAfHandle
,
5091 _In_opt_ NDIS_HANDLE NdisVcHandle
,
5092 _In_opt_ NDIS_HANDLE NdisPartyHandle
,
5093 _In_ PNDIS_REQUEST NdisRequest
);
5095 _IRQL_requires_max_(DISPATCH_LEVEL
)
5100 _In_ NDIS_HANDLE NdisVcHandle
,
5101 _In_ PPNDIS_PACKET PacketArray
,
5102 _In_ UINT NumberOfPackets
);
5104 _IRQL_requires_max_(DISPATCH_LEVEL
)
5108 NdisMCoActivateVcComplete(
5109 _In_ NDIS_STATUS Status
,
5110 _In_ NDIS_HANDLE NdisVcHandle
,
5111 _In_ PCO_CALL_PARAMETERS CallParameters
);
5113 _IRQL_requires_max_(DISPATCH_LEVEL
)
5117 NdisMCoDeactivateVcComplete(
5118 _In_ NDIS_STATUS Status
,
5119 _In_ NDIS_HANDLE NdisVcHandle
);
5121 _IRQL_requires_(DISPATCH_LEVEL
)
5125 NdisMCoIndicateReceivePacket(
5126 _In_ NDIS_HANDLE NdisVcHandle
,
5127 _In_ PPNDIS_PACKET PacketArray
,
5128 _In_ UINT NumberOfPackets
);
5130 _IRQL_requires_max_(DISPATCH_LEVEL
)
5134 NdisMCoIndicateStatus(
5135 _In_ NDIS_HANDLE MiniportAdapterHandle
,
5136 _In_opt_ NDIS_HANDLE NdisVcHandle
,
5137 _In_ NDIS_STATUS GeneralStatus
,
5138 _In_reads_bytes_opt_(StatusBufferSize
) PVOID StatusBuffer
,
5139 _In_ ULONG StatusBufferSize
);
5141 _IRQL_requires_(DISPATCH_LEVEL
)
5145 NdisMCoReceiveComplete(
5146 _In_ NDIS_HANDLE MiniportAdapterHandle
);
5148 _IRQL_requires_max_(DISPATCH_LEVEL
)
5152 NdisMCoRequestComplete(
5153 _In_ NDIS_STATUS Status
,
5154 _In_ NDIS_HANDLE MiniportAdapterHandle
,
5155 _In_ PNDIS_REQUEST Request
);
5157 _IRQL_requires_(DISPATCH_LEVEL
)
5161 NdisMCoSendComplete(
5162 _In_ NDIS_STATUS Status
,
5163 _In_ NDIS_HANDLE NdisVcHandle
,
5164 _In_ PNDIS_PACKET Packet
);
5167 /* NDIS 5.0 extensions for intermediate drivers */
5169 _IRQL_requires_(PASSIVE_LEVEL
)
5173 NdisIMAssociateMiniport(
5174 _In_ NDIS_HANDLE DriverHandle
,
5175 _In_ NDIS_HANDLE ProtocolHandle
);
5177 _IRQL_requires_(PASSIVE_LEVEL
)
5181 NdisIMCancelInitializeDeviceInstance(
5182 _In_ NDIS_HANDLE DriverHandle
,
5183 _In_ PNDIS_STRING DeviceInstance
);
5188 NdisIMCopySendCompletePerPacketInfo(
5189 IN PNDIS_PACKET DstPacket
,
5190 IN PNDIS_PACKET SrcPacket
);
5195 NdisIMCopySendPerPacketInfo(
5196 IN PNDIS_PACKET DstPacket
,
5197 IN PNDIS_PACKET SrcPacket
);
5199 _IRQL_requires_(PASSIVE_LEVEL
)
5203 NdisIMDeregisterLayeredMiniport(
5204 _In_ NDIS_HANDLE DriverHandle
);
5206 _IRQL_requires_max_(APC_LEVEL
)
5210 NdisIMGetBindingContext(
5211 _In_ NDIS_HANDLE NdisBindingHandle
);
5213 _IRQL_requires_max_(DISPATCH_LEVEL
)
5217 NdisIMGetDeviceContext(
5218 _In_ NDIS_HANDLE MiniportAdapterHandle
);
5220 _IRQL_requires_(PASSIVE_LEVEL
)
5224 NdisIMInitializeDeviceInstanceEx(
5225 _In_ NDIS_HANDLE DriverHandle
,
5226 _In_ PNDIS_STRING DriverInstance
,
5227 _In_opt_ NDIS_HANDLE DeviceContext
);
5233 NdisInterlockedPopEntrySList(
5234 IN PSLIST_HEADER ListHead,
5235 IN PKSPIN_LOCK Lock);
5237 #define NdisInterlockedPopEntrySList(SListHead, Lock) \
5238 ExInterlockedPopEntrySList(SListHead, &(Lock)->SpinLock)
5244 NdisInterlockedPushEntrySList(
5245 IN PSLIST_HEADER ListHead,
5246 IN PSINGLE_LIST_ENTRY ListEntry,
5247 IN PKSPIN_LOCK Lock);
5249 #define NdisInterlockedPushEntrySList(SListHead, SListEntry, Lock) \
5250 ExInterlockedPushEntrySList(SListHead, SListEntry, &(Lock)->SpinLock)
5252 #define NdisInterlockedFlushSList(SListHead) ExInterlockedFlushSList(SListHead)
5258 NdisQueryBufferSafe(
5259 IN PNDIS_BUFFER Buffer,
5260 OUT PVOID *VirtualAddress OPTIONAL,
5264 #define NdisQueryBufferSafe(_Buffer, _VirtualAddress, _Length, _Priority) { \
5265 if (ARGUMENT_PRESENT(_VirtualAddress)) { \
5266 *(PVOID *)(_VirtualAddress) = MmGetSystemAddressForMdlSafe(_Buffer, _Priority); \
5268 *(_Length) = MmGetMdlByteCount(_Buffer); \
5271 /* Routines for NDIS miniport drivers */
5273 #if NDIS_SUPPORT_NDIS6
5276 PNDIS_GENERIC_OBJECT
5278 NdisAllocateGenericObject(
5279 PDRIVER_OBJECT DriverObject OPTIONAL
,
5286 NdisFreeGenericObject(
5287 IN PNDIS_GENERIC_OBJECT NdisObject
);
5289 #endif /* NDIS_SUPPORT_NDIS6 */
5294 NdisInitializeWrapper(
5295 OUT PNDIS_HANDLE NdisWrapperHandle
,
5296 IN PVOID SystemSpecific1
,
5297 IN PVOID SystemSpecific2
,
5298 IN PVOID SystemSpecific3
);
5300 _Must_inspect_result_
5301 _IRQL_requires_(PASSIVE_LEVEL
)
5302 __drv_preferredFunction("NdisMInitializeScatterGatherDma", "See details in NdisMAllocateMapRegisters documentation")
5306 NdisMAllocateMapRegisters(
5307 _In_ NDIS_HANDLE MiniportAdapterHandle
,
5308 _In_ UINT DmaChannel
,
5309 _In_ NDIS_DMA_SIZE DmaSize
,
5310 _In_ ULONG PhysicalMapRegistersNeeded
,
5311 _In_ ULONG MaximumPhysicalMapping
);
5315 * NdisMArcIndicateReceive(
5316 * IN NDIS_HANDLE MiniportAdapterHandle,
5317 * IN PUCHAR HeaderBuffer,
5318 * IN PUCHAR DataBuffer,
5321 #define NdisMArcIndicateReceive(MiniportAdapterHandle, \
5326 ArcFilterDprIndicateReceive( \
5327 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->ArcDB), \
5335 * NdisMArcIndicateReceiveComplete(
5336 * IN NDIS_HANDLE MiniportAdapterHandle);
5338 #define NdisMArcIndicateReceiveComplete(MiniportAdapterHandle) \
5340 if (((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->EthDB) \
5342 NdisMEthIndicateReceiveComplete(_H); \
5345 ArcFilterDprIndicateReceiveComplete( \
5346 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->ArcDB); \
5349 _IRQL_requires_(PASSIVE_LEVEL
)
5354 _In_ NDIS_HANDLE LogHandle
);
5356 _IRQL_requires_(PASSIVE_LEVEL
)
5361 _In_ NDIS_HANDLE MiniportAdapterHandle
,
5363 _Out_ PNDIS_HANDLE LogHandle
);
5368 NdisMDeregisterAdapterShutdownHandler(
5369 _In_ NDIS_HANDLE MiniportHandle
);
5371 #if NDIS_LEGACY_MINIPORT
5373 _IRQL_requires_(PASSIVE_LEVEL
)
5377 NdisMDeregisterInterrupt(
5378 _In_ PNDIS_MINIPORT_INTERRUPT Interrupt
);
5380 _IRQL_requires_(PASSIVE_LEVEL
)
5384 NdisMRegisterAdapterShutdownHandler(
5385 _In_ NDIS_HANDLE MiniportHandle
,
5386 _In_ PVOID ShutdownContext
,
5387 _In_ ADAPTER_SHUTDOWN_HANDLER ShutdownHandler
);
5392 NdisMRegisterInterrupt(
5393 OUT PNDIS_MINIPORT_INTERRUPT Interrupt
,
5394 IN NDIS_HANDLE MiniportAdapterHandle
,
5395 IN UINT InterruptVector
,
5396 IN UINT InterruptLevel
,
5397 IN BOOLEAN RequestIsr
,
5398 IN BOOLEAN SharedInterrupt
,
5399 IN NDIS_INTERRUPT_MODE InterruptMode
);
5404 NdisMRegisterMiniport(
5405 IN NDIS_HANDLE NdisWrapperHandle
,
5406 IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics
,
5407 IN UINT CharacteristicsLength
);
5412 NdisMSynchronizeWithInterrupt(
5413 IN PNDIS_MINIPORT_INTERRUPT Interrupt
,
5414 IN PVOID SynchronizeFunction
,
5415 IN PVOID SynchronizeContext
);
5416 #endif /* NDIS_LEGACY_MINIPORT */
5418 _IRQL_requires_(PASSIVE_LEVEL
)
5422 NdisMDeregisterIoPortRange(
5423 _In_ NDIS_HANDLE MiniportAdapterHandle
,
5424 _In_ UINT InitialPort
,
5425 _In_ UINT NumberOfPorts
,
5426 _In_ PVOID PortOffset
);
5430 * NdisMEthIndicateReceive(
5431 * IN NDIS_HANDLE MiniportAdapterHandle,
5432 * IN NDIS_HANDLE MiniportReceiveContext,
5433 * IN PVOID HeaderBuffer,
5434 * IN UINT HeaderBufferSize,
5435 * IN PVOID LookaheadBuffer,
5436 * IN UINT LookaheadBufferSize,
5437 * IN UINT PacketSize);
5439 #define NdisMEthIndicateReceive(MiniportAdapterHandle, \
5440 MiniportReceiveContext, \
5444 LookaheadBufferSize, \
5447 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxIndicateHandler)( \
5448 ((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthDB, \
5449 (MiniportReceiveContext), \
5452 (HeaderBufferSize), \
5453 (LookaheadBuffer), \
5454 (LookaheadBufferSize), \
5460 * NdisMEthIndicateReceiveComplete(
5461 * IN NDIS_HANDLE MiniportAdapterHandle);
5463 #define NdisMEthIndicateReceiveComplete(MiniportAdapterHandle) \
5465 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxCompleteHandler)( \
5466 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->EthDB); \
5471 * NdisMFddiIndicateReceive(
5472 * IN NDIS_HANDLE MiniportAdapterHandle,
5473 * IN NDIS_HANDLE MiniportReceiveContext,
5474 * IN PVOID HeaderBuffer,
5475 * IN UINT HeaderBufferSize,
5476 * IN PVOID LookaheadBuffer,
5477 * IN UINT LookaheadBufferSize,
5478 * IN UINT PacketSize);
5480 #define NdisMFddiIndicateReceive(MiniportAdapterHandle, \
5481 MiniportReceiveContext, \
5485 LookaheadBufferSize, \
5488 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxIndicateHandler)( \
5489 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiDB), \
5490 (MiniportReceiveContext), \
5491 (PUCHAR)(HeaderBuffer) + 1, \
5492 (((*(PUCHAR*)(HeaderBuffer)) & 0x40) ? \
5493 FDDI_LENGTH_OF_LONG_ADDRESS : \
5494 FDDI_LENGTH_OF_SHORT_ADDRESS), \
5496 (HeaderBufferSize), \
5497 (LookaheadBuffer), \
5498 (LookaheadBufferSize), \
5506 * NdisMFddiIndicateReceiveComplete(
5507 * IN NDIS_HANDLE MiniportAdapterHandle);
5509 #define NdisMFddiIndicateReceiveComplete(MiniportAdapterHandle) \
5511 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxCompleteHandler)( \
5512 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FddiDB); \
5515 _IRQL_requires_max_(DISPATCH_LEVEL
)
5520 _In_ NDIS_HANDLE LogHandle
);
5522 _IRQL_requires_(PASSIVE_LEVEL
)
5526 NdisMFreeMapRegisters(
5527 _In_ NDIS_HANDLE MiniportAdapterHandle
);
5532 * NdisMIndicateReceivePacket(
5533 * IN NDIS_HANDLE MiniportAdapterHandle,
5534 * IN PPNDIS_PACKET ReceivePackets,
5535 * IN UINT NumberOfPackets);
5537 #define NdisMIndicateReceivePacket(MiniportAdapterHandle, \
5538 ReceivePackets, NumberOfPackets) \
5539 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->PacketIndicateHandler)( \
5540 MiniportAdapterHandle, ReceivePackets, NumberOfPackets)
5544 * NdisMIndicateStatus(
5545 * IN NDIS_HANDLE MiniportAdapterHandle,
5546 * IN NDIS_STATUS GeneralStatus,
5547 * IN PVOID StatusBuffer,
5548 * IN UINT StatusBufferSize);
5551 #define NdisMIndicateStatus(MiniportAdapterHandle, \
5552 GeneralStatus, StatusBuffer, StatusBufferSize) \
5553 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->StatusHandler)( \
5554 MiniportAdapterHandle, GeneralStatus, StatusBuffer, StatusBufferSize)
5558 * NdisMIndicateStatusComplete(
5559 * IN NDIS_HANDLE MiniportAdapterHandle);
5561 #define NdisMIndicateStatusComplete(MiniportAdapterHandle) \
5562 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->StatusCompleteHandler)( \
5563 MiniportAdapterHandle)
5567 * NdisMInitializeWrapper(
5568 * OUT PNDIS_HANDLE NdisWrapperHandle,
5569 * IN PVOID SystemSpecific1,
5570 * IN PVOID SystemSpecific2,
5571 * IN PVOID SystemSpecific3);
5573 #define NdisMInitializeWrapper(NdisWrapperHandle, \
5577 NdisInitializeWrapper((NdisWrapperHandle), \
5578 (SystemSpecific1), \
5579 (SystemSpecific2), \
5582 _Must_inspect_result_
5583 _IRQL_requires_(PASSIVE_LEVEL
)
5588 _Outptr_result_bytebuffer_(Length
) PVOID
*VirtualAddress
,
5589 _In_ NDIS_HANDLE MiniportAdapterHandle
,
5590 _In_ NDIS_PHYSICAL_ADDRESS PhysicalAddress
,
5595 * NdisMQueryInformationComplete(
5596 * IN NDIS_HANDLE MiniportAdapterHandle,
5597 * IN NDIS_STATUS Status);
5599 #define NdisMQueryInformationComplete(MiniportAdapterHandle, Status) \
5600 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->QueryCompleteHandler)(MiniportAdapterHandle, Status)
5602 _Must_inspect_result_
5603 _IRQL_requires_(PASSIVE_LEVEL
)
5607 NdisMRegisterIoPortRange(
5608 _Out_ PVOID
*PortOffset
,
5609 _In_ NDIS_HANDLE MiniportAdapterHandle
,
5610 _In_ UINT InitialPort
,
5611 _In_ UINT NumberOfPorts
);
5617 IN PNDIS_MINIPORT_TIMER Timer
,
5618 IN UINT MillisecondsToDelay
);
5620 _IRQL_requires_max_(DISPATCH_LEVEL
)
5624 NdisMInitializeTimer(
5625 _Inout_ PNDIS_MINIPORT_TIMER Timer
,
5626 _In_ NDIS_HANDLE MiniportAdapterHandle
,
5627 _In_ PNDIS_TIMER_FUNCTION TimerFunction
,
5628 _In_ PVOID FunctionContext
);
5630 _IRQL_requires_max_(DISPATCH_LEVEL
)
5634 NdisMSetPeriodicTimer(
5635 _In_ PNDIS_MINIPORT_TIMER Timer
,
5636 _In_ UINT MillisecondPeriod
);
5638 _IRQL_requires_max_(DISPATCH_LEVEL
)
5643 _In_ PNDIS_MINIPORT_TIMER Timer
,
5644 _Out_
_At_(*TimerCancelled
, _Must_inspect_result_
) PBOOLEAN TimerCancelled
);
5646 #if !defined(NDIS_WRAPPER)
5650 * NdisMResetComplete(
5651 * IN NDIS_HANDLE MiniportAdapterHandle,
5652 * IN NDIS_STATUS Status,
5653 * IN BOOLEAN AddressingReset);
5655 #define NdisMResetComplete(MiniportAdapterHandle, \
5659 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->ResetCompleteHandler)( \
5660 MiniportAdapterHandle, Status, AddressingReset); \
5665 * NdisMSendComplete(
5666 * IN NDIS_HANDLE MiniportAdapterHandle,
5667 * IN PNDIS_PACKET Packet,
5668 * IN NDIS_STATUS Status);
5670 #define NdisMSendComplete(MiniportAdapterHandle, \
5674 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SendCompleteHandler)( \
5675 MiniportAdapterHandle, Packet, Status); \
5680 * NdisMSendResourcesAvailable(
5681 * IN NDIS_HANDLE MiniportAdapterHandle);
5683 #define NdisMSendResourcesAvailable(MiniportAdapterHandle) \
5685 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SendResourcesHandler)( \
5686 MiniportAdapterHandle); \
5691 * NdisMTransferDataComplete(
5692 * IN NDIS_HANDLE MiniportAdapterHandle,
5693 * IN PNDIS_PACKET Packet,
5694 * IN NDIS_STATUS Status,
5695 * IN UINT BytesTransferred);
5697 #define NdisMTransferDataComplete(MiniportAdapterHandle, \
5702 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TDCompleteHandler)( \
5703 MiniportAdapterHandle, Packet, Status, BytesTransferred) \
5706 #endif /* !_NDIS_ */
5711 * NdisMSetAttributes(
5712 * IN NDIS_HANDLE MiniportAdapterHandle,
5713 * IN NDIS_HANDLE MiniportAdapterContext,
5714 * IN BOOLEAN BusMaster,
5715 * IN NDIS_INTERFACE_TYPE AdapterType);
5717 #define NdisMSetAttributes(MiniportAdapterHandle, \
5718 MiniportAdapterContext, \
5721 NdisMSetAttributesEx(MiniportAdapterHandle, \
5722 MiniportAdapterContext, \
5724 (BusMaster) ? NDIS_ATTRIBUTE_BUS_MASTER : 0, \
5730 NdisMSetAttributesEx(
5731 IN NDIS_HANDLE MiniportAdapterHandle
,
5732 IN NDIS_HANDLE MiniportAdapterContext
,
5733 IN UINT CheckForHangTimeInSeconds OPTIONAL
,
5734 IN ULONG AttributeFlags
,
5735 IN NDIS_INTERFACE_TYPE AdapterType
);
5739 * NdisMSetInformationComplete(
5740 * IN NDIS_HANDLE MiniportAdapterHandle,
5741 * IN NDIS_STATUS Status);
5743 #define NdisMSetInformationComplete(MiniportAdapterHandle, \
5745 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SetCompleteHandler)( \
5746 MiniportAdapterHandle, Status)
5748 _IRQL_requires_max_(APC_LEVEL
)
5753 _In_ ULONG MicrosecondsToSleep
);
5757 * NdisMTrIndicateReceive(
5758 * IN NDIS_HANDLE MiniportAdapterHandle,
5759 * IN NDIS_HANDLE MiniportReceiveContext,
5760 * IN PVOID HeaderBuffer,
5761 * IN UINT HeaderBufferSize,
5762 * IN PVOID LookaheadBuffer,
5763 * IN UINT LookaheadBufferSize,
5764 * IN UINT PacketSize);
5766 #define NdisMTrIndicateReceive(MiniportAdapterHandle, \
5767 MiniportReceiveContext, \
5771 LookaheadBufferSize, \
5774 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxIndicateHandler)( \
5775 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrDB), \
5776 (MiniportReceiveContext), \
5779 (HeaderBufferSize), \
5780 (LookaheadBuffer), \
5781 (LookaheadBufferSize), \
5787 * NdisMTrIndicateReceiveComplete(
5788 * IN NDIS_HANDLE MiniportAdapterHandle);
5790 #define NdisMTrIndicateReceiveComplete(MiniportAdapterHandle) \
5792 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxCompleteHandler)( \
5793 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->TrDB); \
5796 _IRQL_requires_max_(DISPATCH_LEVEL
)
5801 _In_ NDIS_HANDLE LogHandle
,
5802 _In_reads_bytes_(LogBufferSize
) PVOID LogBuffer
,
5803 _In_ UINT LogBufferSize
);
5805 _IRQL_requires_(PASSIVE_LEVEL
)
5809 NdisMQueryAdapterResources(
5810 _Out_ PNDIS_STATUS Status
,
5811 _In_ NDIS_HANDLE WrapperConfigurationContext
,
5812 _Out_ PNDIS_RESOURCE_LIST ResourceList
,
5813 _Inout_ PUINT BufferSize
);
5815 _IRQL_requires_(PASSIVE_LEVEL
)
5819 NdisTerminateWrapper(
5820 _In_ NDIS_HANDLE NdisWrapperHandle
,
5821 _In_opt_ PVOID SystemSpecific
);
5823 _IRQL_requires_(PASSIVE_LEVEL
)
5828 _In_ NDIS_HANDLE MiniportAdapterHandle
,
5829 _In_reads_bytes_(Length
) PVOID VirtualAddress
,
5832 /* Event functions */
5834 _IRQL_requires_max_(DISPATCH_LEVEL
)
5838 NdisInitializeEvent(
5839 _Out_ PNDIS_EVENT Event
);
5841 _IRQL_requires_max_(DISPATCH_LEVEL
)
5846 _In_ PNDIS_EVENT Event
);
5848 _IRQL_requires_max_(DISPATCH_LEVEL
)
5853 _In_ PNDIS_EVENT Event
);
5855 _When_(MsToWait
!= 0, _Check_return_
)
5856 _IRQL_requires_(PASSIVE_LEVEL
)
5861 _In_ PNDIS_EVENT Event
,
5862 _In_ UINT MsToWait
);
5864 /* NDIS intermediate miniport structures */
5866 typedef VOID (NTAPI
*W_MINIPORT_CALLBACK
)(
5867 IN NDIS_HANDLE MiniportAdapterContext
,
5868 IN PVOID CallbackContext
);
5870 /* Routines for intermediate miniport drivers */
5872 _IRQL_requires_(PASSIVE_LEVEL
)
5876 NdisIMDeInitializeDeviceInstance(
5877 _In_ NDIS_HANDLE NdisMiniportHandle
);
5881 * NdisIMInitializeDeviceInstance(
5882 * IN NDIS_HANDLE DriverHandle,
5883 * IN PNDIS_STRING DeviceInstance);
5885 #define NdisIMInitializeDeviceInstance(DriverHandle, DeviceInstance) \
5886 NdisIMInitializeDeviceInstanceEx(DriverHandle, DeviceInstance, NULL)
5888 /* Functions obsoleted by NDIS 5.0 */
5894 IN PNDIS_HANDLE NdisDmaHandle
);
5899 NdisSetupDmaTransfer(
5900 OUT PNDIS_STATUS Status
,
5901 IN PNDIS_HANDLE NdisDmaHandle
,
5902 IN PNDIS_BUFFER Buffer
,
5905 IN BOOLEAN WriteToDevice
);
5911 NdisUpcaseUnicodeString(
5912 OUT PUNICODE_STRING DestinationString,
5913 IN PUNICODE_STRING SourceString);
5915 #define NdisUpcaseUnicodeString(_d, _s) RtlUpcaseUnicodeString(_d, _s, FALSE)
5918 /* Routines for NDIS protocol drivers */
5920 #if NDIS_LEGACY_PROTOCOL
5925 NdisIMRegisterLayeredMiniport(
5926 _In_ NDIS_HANDLE NdisWrapperHandle
,
5927 _In_ PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics
,
5928 _In_ UINT CharacteristicsLength
,
5929 _Out_ PNDIS_HANDLE DriverHandle
);
5935 OUT PNDIS_STATUS Status
,
5936 IN NDIS_HANDLE NdisBindingHandle
,
5937 IN NDIS_HANDLE MacReceiveContext
,
5939 IN UINT BytesToTransfer
,
5940 IN OUT PNDIS_PACKET Packet
,
5941 OUT PUINT BytesTransferred
);
5947 OUT PNDIS_STATUS Status
,
5948 IN NDIS_HANDLE NdisBindingHandle
,
5949 IN PNDIS_PACKET Packet
);
5955 IN NDIS_HANDLE NdisBindingHandle
,
5956 IN PPNDIS_PACKET PacketArray
,
5957 IN UINT NumberOfPackets
);
5959 _IRQL_requires_max_(DISPATCH_LEVEL
)
5964 _Out_ PNDIS_STATUS Status
,
5965 _In_ NDIS_HANDLE NdisBindingHandle
,
5966 _In_ PNDIS_REQUEST NdisRequest
);
5968 _IRQL_requires_max_(DISPATCH_LEVEL
)
5973 _Out_ PNDIS_STATUS Status
,
5974 _In_ NDIS_HANDLE NdisBindingHandle
);
5976 _IRQL_requires_max_(DISPATCH_LEVEL
)
5980 NdisDeregisterProtocol(
5981 _Out_ PNDIS_STATUS Status
,
5982 _In_ NDIS_HANDLE NdisProtocolHandle
);
5984 _IRQL_requires_(PASSIVE_LEVEL
)
5989 _At_(*Status
, _Must_inspect_result_
) _Out_ PNDIS_STATUS Status
,
5990 _Out_ PNDIS_STATUS OpenErrorStatus
,
5991 _Out_ PNDIS_HANDLE NdisBindingHandle
,
5992 _Out_ PUINT SelectedMediumIndex
,
5993 _In_reads_(MediumArraySize
) PNDIS_MEDIUM MediumArray
,
5994 _In_ UINT MediumArraySize
,
5995 _In_ NDIS_HANDLE NdisProtocolHandle
,
5996 _In_ NDIS_HANDLE ProtocolBindingContext
,
5997 _In_ PNDIS_STRING AdapterName
,
5998 _In_ UINT OpenOptions
,
5999 _In_opt_ PSTRING AddressingInformation
);
6001 _IRQL_requires_(PASSIVE_LEVEL
)
6006 _Out_ PNDIS_STATUS Status
,
6007 _In_ NDIS_HANDLE NdisBindingHandle
);
6009 _IRQL_requires_(PASSIVE_LEVEL
)
6013 NdisCompleteBindAdapter(
6014 _In_ NDIS_HANDLE BindAdapterContext
,
6015 _In_ NDIS_STATUS Status
,
6016 _In_ NDIS_STATUS OpenStatus
);
6018 _IRQL_requires_(PASSIVE_LEVEL
)
6022 NdisCompleteUnbindAdapter(
6023 _In_ NDIS_HANDLE UnbindAdapterContext
,
6024 _In_ NDIS_STATUS Status
);
6029 NdisSetProtocolFilter(
6030 _At_(*Status
, _Must_inspect_result_
) _Out_ PNDIS_STATUS Status
,
6031 _In_ NDIS_HANDLE NdisBindingHandle
,
6032 _In_ RECEIVE_HANDLER ReceiveHandler
,
6033 _In_ RECEIVE_PACKET_HANDLER ReceivePacketHandler
,
6034 _In_ NDIS_MEDIUM Medium
,
6037 _In_ PUCHAR Pattern
);
6039 _IRQL_requires_max_(DISPATCH_LEVEL
)
6043 NdisGetDriverHandle(
6044 _In_ PNDIS_HANDLE NdisBindingHandle
,
6045 _Out_ PNDIS_HANDLE NdisDriverHandle
);
6047 _IRQL_requires_(PASSIVE_LEVEL
)
6051 NdisOpenProtocolConfiguration(
6052 _Out_ PNDIS_STATUS Status
,
6053 _Out_ PNDIS_HANDLE ConfigurationHandle
,
6054 _In_ PNDIS_STRING ProtocolSection
);
6056 _IRQL_requires_(PASSIVE_LEVEL
)
6060 NdisCompletePnPEvent(
6061 _In_ NDIS_STATUS Status
,
6062 _In_ NDIS_HANDLE NdisBindingHandle
,
6063 _In_ PNET_PNP_EVENT NetPnPEvent
);
6068 * IN PNDIS_PACKET Packet,
6071 #define NdisSetSendFlags(_Packet,_Flags)(_Packet)->Private.Flags = (_Flags)
6073 #define NdisQuerySendFlags(_Packet,_Flags) *(_Flags) = (_Packet)->Private.Flags
6075 _IRQL_requires_max_(DISPATCH_LEVEL
)
6080 _In_reads_(NumberOfPackets
) PNDIS_PACKET
*PacketsToReturn
,
6081 _In_ UINT NumberOfPackets
);
6083 _Must_inspect_result_
6084 _IRQL_requires_max_(DISPATCH_LEVEL
)
6088 NdisGetReceivedPacket(
6089 _In_ PNDIS_HANDLE NdisBindingHandle
,
6090 _In_ PNDIS_HANDLE MacContext
);
6092 _IRQL_requires_max_(DISPATCH_LEVEL
)
6096 NdisCancelSendPackets(
6097 _In_ NDIS_HANDLE NdisBindingHandle
,
6098 _In_ _Points_to_data_ PVOID CancelId
);
6100 _Must_inspect_result_
6101 _IRQL_requires_max_(DISPATCH_LEVEL
)
6105 NdisQueryPendingIOCount(
6106 _In_ _Points_to_data_ PVOID NdisBindingHandle
,
6107 _Out_ PULONG IoCount
);
6109 _IRQL_requires_(PASSIVE_LEVEL
)
6113 NdisRegisterProtocol(
6114 _Out_ PNDIS_STATUS Status
,
6115 _Out_ PNDIS_HANDLE NdisProtocolHandle
,
6116 _In_ PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics
,
6117 _In_ UINT CharacteristicsLength
);
6119 #endif /* NDIS_LEGACY_PROTOCOL */
6121 _IRQL_requires_max_(DISPATCH_LEVEL
)
6125 NdisGeneratePartialCancelId(VOID
);
6127 _IRQL_requires_(PASSIVE_LEVEL
)
6131 NdisReEnumerateProtocolBindings(
6132 _In_ NDIS_HANDLE NdisProtocolHandle
);
6137 NdisRegisterTdiCallBack(
6138 _In_ TDI_REGISTER_CALLBACK RegisterCallback
,
6139 _In_ TDI_PNP_HANDLER PnPHandler
);
6144 NdisDeregisterTdiCallBack(VOID
);
6146 /* Obsoleted in Windows XP */
6148 /* Prototypes for NDIS_MAC_CHARACTERISTICS */
6150 typedef NDIS_STATUS (*OPEN_ADAPTER_HANDLER
)(
6151 OUT PNDIS_STATUS OpenErrorStatus
,
6152 OUT NDIS_HANDLE
*MacBindingHandle
,
6153 OUT PUINT SelectedMediumIndex
,
6154 IN PNDIS_MEDIUM MediumArray
,
6155 IN UINT MediumArraySize
,
6156 IN NDIS_HANDLE NdisBindingContext
,
6157 IN NDIS_HANDLE MacAdapterContext
,
6158 IN UINT OpenOptions
,
6159 IN PSTRING AddressingInformation OPTIONAL
);
6161 typedef NDIS_STATUS (NTAPI
*CLOSE_ADAPTER_HANDLER
)(
6162 IN NDIS_HANDLE MacBindingHandle
);
6164 typedef NDIS_STATUS (NTAPI
*WAN_TRANSFER_DATA_HANDLER
)(
6167 typedef NDIS_STATUS (NTAPI
*QUERY_GLOBAL_STATISTICS_HANDLER
)(
6168 IN NDIS_HANDLE MacAdapterContext
,
6169 IN PNDIS_REQUEST NdisRequest
);
6171 typedef VOID (NTAPI
*UNLOAD_MAC_HANDLER
)(
6172 IN NDIS_HANDLE MacMacContext
);
6174 typedef NDIS_STATUS (NTAPI
*ADD_ADAPTER_HANDLER
)(
6175 IN NDIS_HANDLE MacMacContext
,
6176 IN NDIS_HANDLE WrapperConfigurationContext
,
6177 IN PNDIS_STRING AdapterName
);
6179 typedef VOID (*REMOVE_ADAPTER_HANDLER
)(
6180 IN NDIS_HANDLE MacAdapterContext
);
6182 typedef struct _NDIS_MAC_CHARACTERISTICS
{
6183 UCHAR MajorNdisVersion
;
6184 UCHAR MinorNdisVersion
;
6187 OPEN_ADAPTER_HANDLER OpenAdapterHandler
;
6188 CLOSE_ADAPTER_HANDLER CloseAdapterHandler
;
6189 SEND_HANDLER SendHandler
;
6190 TRANSFER_DATA_HANDLER TransferDataHandler
;
6191 RESET_HANDLER ResetHandler
;
6192 REQUEST_HANDLER RequestHandler
;
6193 QUERY_GLOBAL_STATISTICS_HANDLER QueryGlobalStatisticsHandler
;
6194 UNLOAD_MAC_HANDLER UnloadMacHandler
;
6195 ADD_ADAPTER_HANDLER AddAdapterHandler
;
6196 REMOVE_ADAPTER_HANDLER RemoveAdapterHandler
;
6198 } NDIS_MAC_CHARACTERISTICS
, *PNDIS_MAC_CHARACTERISTICS
;
6200 typedef NDIS_MAC_CHARACTERISTICS NDIS_WAN_MAC_CHARACTERISTICS
;
6201 typedef NDIS_WAN_MAC_CHARACTERISTICS
*PNDIS_WAN_MAC_CHARACTERISTICS
;