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;
2175 #define NDIS51_MINIPORT_CHARACTERISTICS_S \
2176 NDIS50_MINIPORT_CHARACTERISTICS_S \
2177 W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler; \
2178 W_PNP_EVENT_NOTIFY_HANDLER PnPEventNotifyHandler; \
2179 W_MINIPORT_SHUTDOWN_HANDLER AdapterShutdownHandler;
2183 typedef struct _NDIS51_MINIPORT_CHARACTERISTICS
{
2184 NDIS51_MINIPORT_CHARACTERISTICS_S
2185 } NDIS51_MINIPORT_CHARACTERISTICS
, *PSNDIS51_MINIPORT_CHARACTERISTICS
;
2187 #if defined(NDIS51_MINIPORT)
2188 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
2189 NDIS51_MINIPORT_CHARACTERISTICS_S
2190 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
2191 #elif defined(NDIS50_MINIPORT)
2192 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
2193 NDIS50_MINIPORT_CHARACTERISTICS_S
2194 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
2195 #elif defined(NDIS40_MINIPORT)
2196 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
2197 NDIS40_MINIPORT_CHARACTERISTICS_S
2198 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
2200 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
2201 NDIS30_MINIPORT_CHARACTERISTICS_S
2202 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
2205 typedef struct _NDIS_MINIPORT_INTERRUPT
{
2206 PKINTERRUPT InterruptObject
;
2207 KSPIN_LOCK DpcCountLock
;
2209 W_ISR_HANDLER MiniportIsr
;
2210 W_HANDLE_INTERRUPT_HANDLER MiniportDpc
;
2212 PNDIS_MINIPORT_BLOCK Miniport
;
2215 KEVENT DpcsCompletedEvent
;
2216 BOOLEAN SharedInterrupt
;
2217 BOOLEAN IsrRequested
;
2218 } NDIS_MINIPORT_INTERRUPT
, *PNDIS_MINIPORT_INTERRUPT
;
2220 /* Structures available only to full MAC drivers */
2223 (NTAPI
*PNDIS_INTERRUPT_SERVICE
)(
2224 IN PVOID InterruptContext
);
2227 (NTAPI
*PNDIS_DEFERRED_PROCESSING
)(
2228 IN PVOID SystemSpecific1
,
2229 IN PVOID InterruptContext
,
2230 IN PVOID SystemSpecific2
,
2231 IN PVOID SystemSpecific3
);
2233 typedef struct _NDIS_WRAPPER_HANDLE NDIS_WRAPPER_HANDLE
, *PNDIS_WRAPPER_HANDLE
;
2234 typedef struct _NDIS_PROTOCOL_BLOCK NDIS_PROTOCOL_BLOCK
, *PNDIS_PROTOCOL_BLOCK
;
2235 typedef struct _NDIS_OPEN_BLOCK NDIS_OPEN_BLOCK
, *PNDIS_OPEN_BLOCK
;
2236 typedef struct _NDIS_M_DRIVER_BLOCK NDIS_M_DRIVER_BLOCK
, *PNDIS_M_DRIVER_BLOCK
;
2237 typedef struct _NDIS_OFFLOAD NDIS_OFFLOAD
, *PNDIS_OFFLOAD
;
2238 typedef struct _NDIS_AF_LIST NDIS_AF_LIST
, *PNDIS_AF_LIST
;
2239 typedef struct _X_FILTER ETH_FILTER
, *PETH_FILTER
;
2240 #if NDIS_SUPPORT_NDIS6
2241 typedef USHORT NET_FRAME_TYPE
, *PNET_FRAME_TYPE
;
2244 typedef struct _NDIS_MINIPORT_TIMER
{
2247 PNDIS_TIMER_FUNCTION MiniportTimerFunction
;
2248 PVOID MiniportTimerContext
;
2249 PNDIS_MINIPORT_BLOCK Miniport
;
2250 struct _NDIS_MINIPORT_TIMER
*NextDeferredTimer
;
2251 } NDIS_MINIPORT_TIMER
, *PNDIS_MINIPORT_TIMER
;
2253 typedef struct _NDIS_INTERRUPT
{
2254 PKINTERRUPT InterruptObject
;
2255 KSPIN_LOCK DpcCountLock
;
2256 PNDIS_INTERRUPT_SERVICE MacIsr
;
2257 PNDIS_DEFERRED_PROCESSING MacDpc
;
2259 PVOID InterruptContext
;
2262 KEVENT DpcsCompletedEvent
;
2263 } NDIS_INTERRUPT
, *PNDIS_INTERRUPT
;
2266 typedef enum _NDIS_WORK_ITEM_TYPE
{
2267 NdisWorkItemRequest
,
2269 NdisWorkItemReturnPackets
,
2270 NdisWorkItemResetRequested
,
2271 NdisWorkItemResetInProgress
,
2273 NdisWorkItemSendLoopback
,
2274 NdisWorkItemMiniportCallback
,
2276 } NDIS_WORK_ITEM_TYPE
, *PNDIS_WORK_ITEM_TYPE
;
2278 #define NUMBER_OF_WORK_ITEM_TYPES NdisMaxWorkItems
2279 #define NUMBER_OF_SINGLE_WORK_ITEMS 6
2281 typedef struct _NDIS_MINIPORT_WORK_ITEM
{
2282 SINGLE_LIST_ENTRY Link
;
2283 NDIS_WORK_ITEM_TYPE WorkItemType
;
2284 PVOID WorkItemContext
;
2285 } NDIS_MINIPORT_WORK_ITEM
, *PNDIS_MINIPORT_WORK_ITEM
;
2287 struct _NDIS_WORK_ITEM
;
2288 typedef VOID (*NDIS_PROC
)(struct _NDIS_WORK_ITEM
*, PVOID
);
2290 typedef struct _NDIS_WORK_ITEM
{
2293 UCHAR WrapperReserved
[8*sizeof(PVOID
)];
2294 } NDIS_WORK_ITEM
, *PNDIS_WORK_ITEM
;
2296 typedef struct _NDIS_BIND_PATHS
{
2298 NDIS_STRING Paths
[1];
2299 } NDIS_BIND_PATHS
, *PNDIS_BIND_PATHS
;
2303 (NTAPI
*ETH_RCV_COMPLETE_HANDLER
)(
2304 _In_ PETH_FILTER Filter
);
2307 (NTAPI
*ETH_RCV_INDICATE_HANDLER
)(
2308 _In_ PETH_FILTER Filter
,
2309 _In_ NDIS_HANDLE MacReceiveContext
,
2311 _In_ PVOID HeaderBuffer
,
2312 _In_ UINT HeaderBufferSize
,
2313 _In_ PVOID LookaheadBuffer
,
2314 _In_ UINT LookaheadBufferSize
,
2315 _In_ UINT PacketSize
);
2318 (NTAPI
*FDDI_RCV_COMPLETE_HANDLER
)(
2319 IN PFDDI_FILTER Filter
);
2322 (NTAPI
*FDDI_RCV_INDICATE_HANDLER
)(
2323 IN PFDDI_FILTER Filter
,
2324 IN NDIS_HANDLE MacReceiveContext
,
2326 IN UINT AddressLength
,
2327 IN PVOID HeaderBuffer
,
2328 IN UINT HeaderBufferSize
,
2329 IN PVOID LookaheadBuffer
,
2330 IN UINT LookaheadBufferSize
,
2331 IN UINT PacketSize
);
2334 (NTAPI
*FILTER_PACKET_INDICATION_HANDLER
)(
2335 _In_ NDIS_HANDLE Miniport
,
2336 _In_ PPNDIS_PACKET PacketArray
,
2337 _In_ UINT NumberOfPackets
);
2340 (NTAPI
*TR_RCV_COMPLETE_HANDLER
)(
2341 _In_ PTR_FILTER Filter
);
2344 (NTAPI
*TR_RCV_INDICATE_HANDLER
)(
2345 _In_ PTR_FILTER Filter
,
2346 _In_ NDIS_HANDLE MacReceiveContext
,
2347 _In_ PVOID HeaderBuffer
,
2348 _In_ UINT HeaderBufferSize
,
2349 _In_ PVOID LookaheadBuffer
,
2350 _In_ UINT LookaheadBufferSize
,
2351 _In_ UINT PacketSize
);
2354 (NTAPI
*WAN_RCV_COMPLETE_HANDLER
)(
2355 _In_ NDIS_HANDLE MiniportAdapterHandle
,
2356 _In_ NDIS_HANDLE NdisLinkContext
);
2359 (NTAPI
*WAN_RCV_HANDLER
)(
2360 _Out_ PNDIS_STATUS Status
,
2361 _In_ NDIS_HANDLE MiniportAdapterHandle
,
2362 _In_ NDIS_HANDLE NdisLinkContext
,
2364 _In_ ULONG PacketSize
);
2367 (FASTCALL
*NDIS_M_DEQUEUE_WORK_ITEM
)(
2368 IN PNDIS_MINIPORT_BLOCK Miniport
,
2369 IN NDIS_WORK_ITEM_TYPE WorkItemType
,
2370 OUT PVOID
*WorkItemContext
);
2373 (FASTCALL
*NDIS_M_QUEUE_NEW_WORK_ITEM
)(
2374 IN PNDIS_MINIPORT_BLOCK Miniport
,
2375 IN NDIS_WORK_ITEM_TYPE WorkItemType
,
2376 IN PVOID WorkItemContext
);
2379 (FASTCALL
*NDIS_M_QUEUE_WORK_ITEM
)(
2380 IN PNDIS_MINIPORT_BLOCK Miniport
,
2381 IN NDIS_WORK_ITEM_TYPE WorkItemType
,
2382 IN PVOID WorkItemContext
);
2385 (NTAPI
*NDIS_M_REQ_COMPLETE_HANDLER
)(
2386 _In_ NDIS_HANDLE MiniportAdapterHandle
,
2387 _In_ NDIS_STATUS Status
);
2390 (NTAPI
*NDIS_M_RESET_COMPLETE_HANDLER
)(
2391 _In_ NDIS_HANDLE MiniportAdapterHandle
,
2392 _In_ NDIS_STATUS Status
,
2393 _In_ BOOLEAN AddressingReset
);
2396 (NTAPI
*NDIS_M_SEND_COMPLETE_HANDLER
)(
2397 _In_ NDIS_HANDLE MiniportAdapterHandle
,
2398 _In_ PNDIS_PACKET Packet
,
2399 _In_ NDIS_STATUS Status
);
2402 (NTAPI
*NDIS_M_SEND_RESOURCES_HANDLER
)(
2403 _In_ NDIS_HANDLE MiniportAdapterHandle
);
2406 (FASTCALL
*NDIS_M_START_SENDS
)(
2407 _In_ PNDIS_MINIPORT_BLOCK Miniport
);
2410 (NTAPI
*NDIS_M_STATUS_HANDLER
)(
2411 _In_ NDIS_HANDLE MiniportHandle
,
2412 _In_ NDIS_STATUS GeneralStatus
,
2413 _In_ PVOID StatusBuffer
,
2414 _In_ UINT StatusBufferSize
);
2417 (NTAPI
*NDIS_M_STS_COMPLETE_HANDLER
)(
2418 _In_ NDIS_HANDLE MiniportAdapterHandle
);
2421 (NTAPI
*NDIS_M_TD_COMPLETE_HANDLER
)(
2422 _In_ NDIS_HANDLE MiniportAdapterHandle
,
2423 _In_ PNDIS_PACKET Packet
,
2424 _In_ NDIS_STATUS Status
,
2425 _In_ UINT BytesTransferred
);
2427 typedef VOID (NTAPI
*NDIS_WM_SEND_COMPLETE_HANDLER
)(
2428 _In_ NDIS_HANDLE MiniportAdapterHandle
,
2430 _In_ NDIS_STATUS Status
);
2435 #define ARC_SEND_BUFFERS 8
2436 #define ARC_HEADER_SIZE 4
2438 typedef struct _NDIS_ARC_BUF
{
2439 NDIS_HANDLE ArcnetBufferPool
;
2440 PUCHAR ArcnetLookaheadBuffer
;
2442 ARC_BUFFER_LIST ArcnetBuffers
[ARC_SEND_BUFFERS
];
2443 } NDIS_ARC_BUF
, *PNDIS_ARC_BUF
;
2447 typedef struct _NDIS_LOG
{
2448 PNDIS_MINIPORT_BLOCK Miniport
;
2456 } NDIS_LOG
, *PNDIS_LOG
;
2459 #define FILTERDBS_ARCNET_S \
2462 #define FILTERDBS_ARCNET_S \
2464 #endif /* !ARCNET */
2466 #define FILTERDBS_S \
2467 _ANONYMOUS_UNION union { \
2468 PETH_FILTER EthDB; \
2469 PNULL_FILTER NullDB; \
2472 PFDDI_FILTER FddiDB; \
2475 typedef struct _FILTERDBS
{
2477 } FILTERDBS
, *PFILTERDBS
;
2479 struct _NDIS_MINIPORT_BLOCK
{
2480 NDIS_OBJECT_HEADER Header
;
2481 PNDIS_MINIPORT_BLOCK NextMiniport
;
2482 PNDIS_M_DRIVER_BLOCK DriverHandle
;
2483 NDIS_HANDLE MiniportAdapterContext
;
2484 UNICODE_STRING MiniportName
;
2485 PNDIS_BIND_PATHS BindPaths
;
2486 NDIS_HANDLE OpenQueue
;
2488 NDIS_HANDLE DeviceContext
;
2492 UCHAR AssignedProcessor
;
2494 PNDIS_REQUEST MediaRequest
;
2495 PNDIS_MINIPORT_INTERRUPT Interrupt
;
2498 LIST_ENTRY PacketList
;
2499 PNDIS_PACKET FirstPendingPacket
;
2500 PNDIS_PACKET ReturnPacketsQueue
;
2501 ULONG RequestBuffer
;
2502 PVOID SetMCastBuffer
;
2503 PNDIS_MINIPORT_BLOCK PrimaryMiniport
;
2504 PVOID WrapperContext
;
2505 PVOID BusDataContext
;
2506 ULONG PnPCapabilities
;
2507 PCM_RESOURCE_LIST Resources
;
2508 NDIS_TIMER WakeUpDpcTimer
;
2509 UNICODE_STRING BaseName
;
2510 UNICODE_STRING SymbolicLinkName
;
2511 ULONG CheckForHangSeconds
;
2513 USHORT CFHangCurrentTick
;
2514 NDIS_STATUS ResetStatus
;
2515 NDIS_HANDLE ResetOpen
;
2517 FILTER_PACKET_INDICATION_HANDLER PacketIndicateHandler
;
2518 NDIS_M_SEND_COMPLETE_HANDLER SendCompleteHandler
;
2519 NDIS_M_SEND_RESOURCES_HANDLER SendResourcesHandler
;
2520 NDIS_M_RESET_COMPLETE_HANDLER ResetCompleteHandler
;
2521 NDIS_MEDIUM MediaType
;
2523 NDIS_INTERFACE_TYPE BusType
;
2524 NDIS_INTERFACE_TYPE AdapterType
;
2525 PDEVICE_OBJECT DeviceObject
;
2526 PDEVICE_OBJECT PhysicalDeviceObject
;
2527 PDEVICE_OBJECT NextDeviceObject
;
2528 PMAP_REGISTER_ENTRY MapRegisters
;
2529 PNDIS_AF_LIST CallMgrAfList
;
2530 PVOID MiniportThread
;
2532 USHORT SetInfoBufLen
;
2533 USHORT MaxSendPackets
;
2534 NDIS_STATUS FakeStatus
;
2536 PUNICODE_STRING pAdapterInstanceName
;
2537 PNDIS_MINIPORT_TIMER TimerQueue
;
2539 PNDIS_REQUEST PendingRequest
;
2540 UINT MaximumLongAddresses
;
2541 UINT MaximumShortAddresses
;
2542 UINT CurrentLookahead
;
2543 UINT MaximumLookahead
;
2544 W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler
;
2545 W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler
;
2546 W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler
;
2547 W_SEND_PACKETS_HANDLER SendPacketsHandler
;
2548 NDIS_M_START_SENDS DeferredSendHandler
;
2549 ETH_RCV_INDICATE_HANDLER EthRxIndicateHandler
;
2550 TR_RCV_INDICATE_HANDLER TrRxIndicateHandler
;
2551 FDDI_RCV_INDICATE_HANDLER FddiRxIndicateHandler
;
2552 ETH_RCV_COMPLETE_HANDLER EthRxCompleteHandler
;
2553 TR_RCV_COMPLETE_HANDLER TrRxCompleteHandler
;
2554 FDDI_RCV_COMPLETE_HANDLER FddiRxCompleteHandler
;
2555 NDIS_M_STATUS_HANDLER StatusHandler
;
2556 NDIS_M_STS_COMPLETE_HANDLER StatusCompleteHandler
;
2557 NDIS_M_TD_COMPLETE_HANDLER TDCompleteHandler
;
2558 NDIS_M_REQ_COMPLETE_HANDLER QueryCompleteHandler
;
2559 NDIS_M_REQ_COMPLETE_HANDLER SetCompleteHandler
;
2560 NDIS_WM_SEND_COMPLETE_HANDLER WanSendCompleteHandler
;
2561 WAN_RCV_HANDLER WanRcvHandler
;
2562 WAN_RCV_COMPLETE_HANDLER WanRcvCompleteHandler
;
2563 #if defined(NDIS_WRAPPER)
2564 PNDIS_MINIPORT_BLOCK NextGlobalMiniport
;
2565 SINGLE_LIST_ENTRY WorkQueue
[NUMBER_OF_WORK_ITEM_TYPES
];
2566 SINGLE_LIST_ENTRY SingleWorkItems
[NUMBER_OF_SINGLE_WORK_ITEMS
];
2569 UCHAR ArcnetAddress
;
2571 _ANONYMOUS_UNION
union {
2573 PNDIS_ARC_BUF ArcBuf
;
2579 PCM_RESOURCE_LIST AllocatedResources
;
2580 PCM_RESOURCE_LIST AllocatedResourcesTranslated
;
2581 SINGLE_LIST_ENTRY PatternList
;
2582 NDIS_PNP_CAPABILITIES PMCapabilities
;
2583 DEVICE_CAPABILITIES DeviceCaps
;
2585 DEVICE_POWER_STATE CurrentDevicePowerState
;
2587 SYSTEM_POWER_STATE WaitWakeSystemState
;
2588 LARGE_INTEGER VcIndex
;
2589 KSPIN_LOCK VcCountLock
;
2590 LIST_ENTRY WmiEnabledVcs
;
2591 PNDIS_GUID pNdisGuidMap
;
2592 PNDIS_GUID pCustomGuidMap
;
2594 USHORT cNdisGuidMap
;
2595 USHORT cCustomGuidMap
;
2596 USHORT CurrentMapRegister
;
2597 PKEVENT AllocationEvent
;
2598 USHORT BaseMapRegistersNeeded
;
2599 USHORT SGMapRegistersNeeded
;
2600 ULONG MaximumPhysicalMapping
;
2601 NDIS_TIMER MediaDisconnectTimer
;
2602 USHORT MediaDisconnectTimeOut
;
2603 USHORT InstanceNumber
;
2604 NDIS_EVENT OpenReadyEvent
;
2605 NDIS_PNP_DEVICE_STATE PnPDeviceState
;
2606 NDIS_PNP_DEVICE_STATE OldPnPDeviceState
;
2607 PGET_SET_DEVICE_DATA SetBusData
;
2608 PGET_SET_DEVICE_DATA GetBusData
;
2612 NDIS_STATS NdisStats
;
2616 PNDIS_PACKET IndicatedPacket
[MAXIMUM_PROCESSORS
];
2617 PKEVENT RemoveReadyEvent
;
2618 PKEVENT AllOpensClosedEvent
;
2619 PKEVENT AllRequestsCompletedEvent
;
2621 NDIS_MINIPORT_WORK_ITEM WorkItemBuffer
[NUMBER_OF_SINGLE_WORK_ITEMS
];
2622 PDMA_ADAPTER SystemAdapterObject
;
2623 ULONG DriverVerifyFlags
;
2625 USHORT InternalResetCount
;
2626 USHORT MiniportResetCount
;
2627 USHORT MediaSenseConnectCount
;
2628 USHORT MediaSenseDisconnectCount
;
2629 PNDIS_PACKET
*xPackets
;
2630 ULONG UserModeOpenReferences
;
2631 _ANONYMOUS_UNION
union {
2632 PVOID SavedSendHandler
;
2633 PVOID SavedWanSendHandler
;
2635 PVOID SavedSendPacketsHandler
;
2636 PVOID SavedCancelSendPacketsHandler
;
2637 W_SEND_PACKETS_HANDLER WSendPacketsHandler
;
2638 ULONG MiniportAttributes
;
2639 PDMA_ADAPTER SavedSystemAdapterObject
;
2641 USHORT CFHangXTicks
;
2643 ULONG IndicatedPacketsCount
;
2644 ULONG PhysicalMediumType
;
2645 PNDIS_REQUEST LastRequest
;
2646 LONG DmaAdapterRefCount
;
2652 KSPIN_LOCK TimerQueueLock
;
2653 PKEVENT ResetCompletedEvent
;
2654 PKEVENT QueuedBindingCompletedEvent
;
2655 PKEVENT DmaResourcesReleasedEvent
;
2656 FILTER_PACKET_INDICATION_HANDLER SavedPacketIndicateHandler
;
2657 ULONG RegisteredInterrupts
;
2658 PNPAGED_LOOKASIDE_LIST SGListLookasideList
;
2659 ULONG ScatterGatherListSize
;
2663 #if NDIS_LEGACY_DRIVER
2666 (NTAPI
*WAN_SEND_HANDLER
)(
2667 _In_ NDIS_HANDLE MacBindingHandle
,
2668 _In_ NDIS_HANDLE LinkHandle
,
2672 (NTAPI
*SEND_PACKETS_HANDLER
)(
2673 _In_ NDIS_HANDLE MiniportAdapterContext
,
2674 _In_ PPNDIS_PACKET PacketArray
,
2675 _In_ UINT NumberOfPackets
);
2678 (NTAPI
*SEND_HANDLER
)(
2679 _In_ NDIS_HANDLE NdisBindingHandle
,
2680 _In_ PNDIS_PACKET Packet
);
2683 (NTAPI
*TRANSFER_DATA_HANDLER
)(
2684 _In_ NDIS_HANDLE NdisBindingHandle
,
2685 _In_ NDIS_HANDLE MacReceiveContext
,
2686 _In_ UINT ByteOffset
,
2687 _In_ UINT BytesToTransfer
,
2688 _Out_ PNDIS_PACKET Packet
,
2689 _Out_ PUINT BytesTransferred
);
2692 (NTAPI
*RESET_HANDLER
)(
2693 _In_ NDIS_HANDLE NdisBindingHandle
);
2696 (NTAPI
*REQUEST_HANDLER
)(
2697 _In_ NDIS_HANDLE NdisBindingHandle
,
2698 _In_ PNDIS_REQUEST NdisRequest
);
2700 #endif /* NDIS_LEGACY_DRIVER */
2702 #if defined(NDIS_WRAPPER)
2703 #define NDIS_COMMON_OPEN_BLOCK_WRAPPER_S \
2706 KSPIN_LOCK SpinLock; \
2707 NDIS_HANDLE FilterHandle; \
2708 ULONG ProtocolOptions; \
2709 USHORT CurrentLookahead; \
2710 USHORT ConnectDampTicks; \
2711 USHORT DisconnectDampTicks; \
2712 W_SEND_HANDLER WSendHandler; \
2713 W_TRANSFER_DATA_HANDLER WTransferDataHandler; \
2714 W_SEND_PACKETS_HANDLER WSendPacketsHandler; \
2715 W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler; \
2716 ULONG WakeUpEnable; \
2717 PKEVENT CloseCompleteEvent; \
2719 ULONG AfReferences; \
2720 PNDIS_OPEN_BLOCK NextGlobalOpen;
2722 #define NDIS_COMMON_OPEN_BLOCK_WRAPPER_S
2725 #define NDIS_COMMON_OPEN_BLOCK_S \
2727 NDIS_HANDLE BindingHandle; \
2728 PNDIS_MINIPORT_BLOCK MiniportHandle; \
2729 PNDIS_PROTOCOL_BLOCK ProtocolHandle; \
2730 NDIS_HANDLE ProtocolBindingContext; \
2731 PNDIS_OPEN_BLOCK MiniportNextOpen; \
2732 PNDIS_OPEN_BLOCK ProtocolNextOpen; \
2733 NDIS_HANDLE MiniportAdapterContext; \
2734 BOOLEAN Reserved1; \
2735 BOOLEAN Reserved2; \
2736 BOOLEAN Reserved3; \
2737 BOOLEAN Reserved4; \
2738 PNDIS_STRING BindDeviceName; \
2739 KSPIN_LOCK Reserved5; \
2740 PNDIS_STRING RootDeviceName; \
2741 _ANONYMOUS_UNION union { \
2742 SEND_HANDLER SendHandler; \
2743 WAN_SEND_HANDLER WanSendHandler; \
2745 TRANSFER_DATA_HANDLER TransferDataHandler; \
2746 SEND_COMPLETE_HANDLER SendCompleteHandler; \
2747 TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; \
2748 RECEIVE_HANDLER ReceiveHandler; \
2749 RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; \
2750 WAN_RECEIVE_HANDLER WanReceiveHandler; \
2751 REQUEST_COMPLETE_HANDLER RequestCompleteHandler; \
2752 RECEIVE_PACKET_HANDLER ReceivePacketHandler; \
2753 SEND_PACKETS_HANDLER SendPacketsHandler; \
2754 RESET_HANDLER ResetHandler; \
2755 REQUEST_HANDLER RequestHandler; \
2756 RESET_COMPLETE_HANDLER ResetCompleteHandler; \
2757 STATUS_HANDLER StatusHandler; \
2758 STATUS_COMPLETE_HANDLER StatusCompleteHandler; \
2759 NDIS_COMMON_OPEN_BLOCK_WRAPPER_S
2761 typedef struct _NDIS_COMMON_OPEN_BLOCK
{
2762 NDIS_COMMON_OPEN_BLOCK_S
2763 } NDIS_COMMON_OPEN_BLOCK
;
2765 struct _NDIS_OPEN_BLOCK
2768 NDIS_COMMON_OPEN_BLOCK NdisCommonOpenBlock
;
2770 NDIS_COMMON_OPEN_BLOCK_S
2774 #include <xfilter.h>
2776 #define NDIS_M_MAX_LOOKAHEAD 526
2778 _IRQL_requires_max_(DISPATCH_LEVEL
)
2782 NdisInitializeTimer(
2783 _Inout_ PNDIS_TIMER Timer
,
2784 _In_ PNDIS_TIMER_FUNCTION TimerFunction
,
2785 _In_opt_ _Points_to_data_ PVOID FunctionContext
);
2787 _IRQL_requires_max_(DISPATCH_LEVEL
)
2792 _In_ PNDIS_TIMER Timer
,
2793 _Out_
_At_(*TimerCancelled
, _Must_inspect_result_
) PBOOLEAN TimerCancelled
);
2795 _IRQL_requires_max_(DISPATCH_LEVEL
)
2800 _In_ PNDIS_TIMER Timer
,
2801 _In_ UINT MillisecondsToDelay
);
2806 NdisSetPeriodicTimer(
2807 _In_ PNDIS_TIMER NdisTimer
,
2808 _In_ UINT MillisecondsPeriod
);
2810 _IRQL_requires_max_(DISPATCH_LEVEL
)
2815 _In_ PNDIS_TIMER NdisTimer
,
2816 _In_ UINT MillisecondsToDelay
,
2817 _In_ PVOID FunctionContext
);
2819 _IRQL_requires_(PASSIVE_LEVEL
)
2823 NdisGetRoutineAddress(
2824 _In_ PNDIS_STRING NdisRoutineName
);
2826 _IRQL_requires_max_(DISPATCH_LEVEL
)
2830 NdisGetVersion(VOID
);
2832 #if NDIS_LEGACY_DRIVER
2834 _IRQL_requires_max_(DISPATCH_LEVEL
)
2839 _Out_ PNDIS_STATUS Status
,
2840 _Out_ PNDIS_BUFFER
*Buffer
,
2841 _In_opt_ NDIS_HANDLE PoolHandle
,
2842 _In_reads_bytes_(Length
) PVOID VirtualAddress
,
2845 _IRQL_requires_max_(DISPATCH_LEVEL
)
2849 NdisAllocateBufferPool(
2850 _Out_ PNDIS_STATUS Status
,
2851 _Out_ PNDIS_HANDLE PoolHandle
,
2852 _In_ UINT NumberOfDescriptors
);
2854 _IRQL_requires_max_(DISPATCH_LEVEL
)
2859 _In_ NDIS_HANDLE PoolHandle
);
2866 IN PNDIS_BUFFER Buffer);
2868 #define NdisFreeBuffer IoFreeMdl
2870 _IRQL_requires_max_(DISPATCH_LEVEL
)
2874 NdisAllocatePacketPool(
2875 _Out_ PNDIS_STATUS Status
,
2876 _Out_ PNDIS_HANDLE PoolHandle
,
2877 _In_ UINT NumberOfDescriptors
,
2878 _In_ UINT ProtocolReservedLength
);
2880 _IRQL_requires_max_(DISPATCH_LEVEL
)
2884 NdisAllocatePacketPoolEx(
2885 _Out_ PNDIS_STATUS Status
,
2886 _Out_ PNDIS_HANDLE PoolHandle
,
2887 _In_ UINT NumberOfDescriptors
,
2888 _In_ UINT NumberOfOverflowDescriptors
,
2889 _In_ UINT ProtocolReservedLength
);
2891 _IRQL_requires_max_(DISPATCH_LEVEL
)
2895 NdisSetPacketPoolProtocolId(
2896 _In_ NDIS_HANDLE PacketPoolHandle
,
2897 _In_ UINT ProtocolId
);
2899 _IRQL_requires_max_(DISPATCH_LEVEL
)
2903 NdisPacketPoolUsage(
2904 _In_ NDIS_HANDLE PoolHandle
);
2906 _IRQL_requires_max_(DISPATCH_LEVEL
)
2911 _In_ UINT ProtocolReservedSize
);
2913 _IRQL_requires_max_(DISPATCH_LEVEL
)
2917 NdisGetPoolFromPacket(
2918 _In_ PNDIS_PACKET Packet
);
2920 _IRQL_requires_max_(DISPATCH_LEVEL
)
2924 NdisIMGetCurrentPacketStack(
2925 _In_ PNDIS_PACKET Packet
,
2926 _Out_ BOOLEAN
*StacksRemaining
);
2928 _IRQL_requires_max_(DISPATCH_LEVEL
)
2933 _In_ NDIS_HANDLE PoolHandle
);
2935 _IRQL_requires_max_(DISPATCH_LEVEL
)
2940 _In_ PNDIS_PACKET Packet
);
2942 _IRQL_requires_(DISPATCH_LEVEL
)
2947 _In_ PNDIS_PACKET Packet
);
2949 _IRQL_requires_(DISPATCH_LEVEL
)
2953 NdisDprFreePacketNonInterlocked(
2954 _In_ PNDIS_PACKET Packet
);
2956 _IRQL_requires_max_(DISPATCH_LEVEL
)
2961 _Out_ PNDIS_STATUS Status
,
2962 _Out_ PNDIS_PACKET
*Packet
,
2963 _In_ NDIS_HANDLE PoolHandle
);
2965 _IRQL_requires_(DISPATCH_LEVEL
)
2969 NdisDprAllocatePacket(
2970 _Out_ PNDIS_STATUS Status
,
2971 _Out_ PNDIS_PACKET
*Packet
,
2972 _In_ NDIS_HANDLE PoolHandle
);
2974 _IRQL_requires_(DISPATCH_LEVEL
)
2978 NdisDprAllocatePacketNonInterlocked(
2979 _Out_ PNDIS_STATUS Status
,
2980 _Out_ PNDIS_PACKET
*Packet
,
2981 _In_ NDIS_HANDLE PoolHandle
);
2985 * NdisReinitializePacket(
2986 * IN OUT PNDIS_PACKET Packet);
2988 #define NdisReinitializePacket(Packet) { \
2989 (Packet)->Private.Head = (PNDIS_BUFFER)NULL; \
2990 (Packet)->Private.ValidCounts = FALSE; \
2998 IN PNDIS_BUFFER Buffer,
2999 OUT PVOID *VirtualAddress OPTIONAL,
3002 #define NdisQueryBuffer(_Buffer, _VirtualAddress, _Length) { \
3003 if (ARGUMENT_PRESENT(_VirtualAddress)) { \
3004 *(PVOID *)(_VirtualAddress) = MmGetSystemAddressForMdl(_Buffer); \
3006 *(_Length) = MmGetMdlByteCount(_Buffer); \
3012 NdisGetFirstBufferFromPacket(
3013 IN PNDIS_PACKET _Packet
,
3014 OUT PNDIS_BUFFER
*_FirstBuffer
,
3015 OUT PVOID
*_FirstBufferVA
,
3016 OUT PUINT _FirstBufferLength
,
3017 OUT PUINT _TotalBufferLength
);
3021 * NdisGetFirstBufferFromPacketSafe(
3022 * IN PNDIS_PACKET _Packet,
3023 * OUT PNDIS_BUFFER * _FirstBuffer,
3024 * OUT PVOID * _FirstBufferVA,
3025 * OUT PUINT _FirstBufferLength,
3026 * OUT PUINT _TotalBufferLength),
3027 * IN MM_PAGE_PRIORITY _Priority)
3029 #define NdisGetFirstBufferFromPacketSafe(_Packet, \
3032 _FirstBufferLength, \
3033 _TotalBufferLength, \
3036 PNDIS_BUFFER _Buffer; \
3038 _Buffer = (_Packet)->Private.Head; \
3039 *(_FirstBuffer) = _Buffer; \
3040 if (_Buffer != NULL) { \
3041 *(_FirstBufferVA) = MmGetSystemAddressForMdlSafe(_Buffer, _Priority); \
3042 *(_FirstBufferLength) = MmGetMdlByteCount(_Buffer); \
3043 _Buffer = _Buffer->Next; \
3044 *(_TotalBufferLength) = *(_FirstBufferLength); \
3045 while (_Buffer != NULL) { \
3046 *(_TotalBufferLength) += MmGetMdlByteCount(_Buffer); \
3047 _Buffer = _Buffer->Next; \
3051 *(_FirstBufferVA) = 0; \
3052 *(_FirstBufferLength) = 0; \
3053 *(_TotalBufferLength) = 0; \
3059 * NdisRecalculatePacketCounts(
3060 * IN OUT PNDIS_PACKET Packet);
3062 #define NdisRecalculatePacketCounts(Packet) { \
3063 PNDIS_BUFFER _Buffer = (Packet)->Private.Head; \
3064 if (_Buffer != NULL) { \
3065 while (_Buffer->Next != NULL) { \
3066 _Buffer = _Buffer->Next; \
3068 (Packet)->Private.Tail = _Buffer; \
3070 (Packet)->Private.ValidCounts = FALSE; \
3075 * NdisChainBufferAtFront(
3076 * IN OUT PNDIS_PACKET Packet,
3077 * IN OUT PNDIS_BUFFER Buffer)
3079 #define NdisChainBufferAtFront(Packet, \
3082 PNDIS_BUFFER _NdisBuffer = (Buffer); \
3084 while (_NdisBuffer->Next != NULL) \
3085 _NdisBuffer = _NdisBuffer->Next; \
3087 if ((Packet)->Private.Head == NULL) \
3088 (Packet)->Private.Tail = _NdisBuffer; \
3090 _NdisBuffer->Next = (Packet)->Private.Head; \
3091 (Packet)->Private.Head = (Buffer); \
3092 (Packet)->Private.ValidCounts = FALSE; \
3097 * NdisChainBufferAtBack(
3098 * IN OUT PNDIS_PACKET Packet,
3099 * IN OUT PNDIS_BUFFER Buffer)
3101 #define NdisChainBufferAtBack(Packet, \
3104 PNDIS_BUFFER _NdisBuffer = (Buffer); \
3106 while (_NdisBuffer->Next != NULL) \
3107 _NdisBuffer = _NdisBuffer->Next; \
3109 _NdisBuffer->Next = NULL; \
3111 if ((Packet)->Private.Head != NULL) \
3112 (Packet)->Private.Tail->Next = (Buffer); \
3114 (Packet)->Private.Head = (Buffer); \
3116 (Packet)->Private.Tail = _NdisBuffer; \
3117 (Packet)->Private.ValidCounts = FALSE; \
3123 NdisUnchainBufferAtFront(
3124 IN OUT PNDIS_PACKET Packet
,
3125 OUT PNDIS_BUFFER
*Buffer
);
3130 NdisUnchainBufferAtBack(
3131 IN OUT PNDIS_PACKET Packet
,
3132 OUT PNDIS_BUFFER
*Buffer
);
3134 _IRQL_requires_max_(DISPATCH_LEVEL
)
3138 NdisCopyFromPacketToPacket(
3139 _In_ PNDIS_PACKET Destination
,
3140 _In_ UINT DestinationOffset
,
3141 _In_ UINT BytesToCopy
,
3142 _In_ PNDIS_PACKET Source
,
3143 _In_ UINT SourceOffset
,
3144 _Out_ PUINT BytesCopied
);
3149 NdisCopyFromPacketToPacketSafe(
3150 IN PNDIS_PACKET Destination
,
3151 IN UINT DestinationOffset
,
3152 IN UINT BytesToCopy
,
3153 IN PNDIS_PACKET Source
,
3154 IN UINT SourceOffset
,
3155 OUT PUINT BytesCopied
,
3156 IN MM_PAGE_PRIORITY Priority
);
3158 _IRQL_requires_max_(DISPATCH_LEVEL
)
3159 __drv_preferredFunction("NdisAllocateMemoryWithTag", "Obsolete")
3164 _At_(*VirtualAddress
, __drv_allocatesMem(Mem
)) _Outptr_result_bytebuffer_(Length
)
3165 PVOID
*VirtualAddress
,
3167 _In_ UINT MemoryFlags
,
3168 _In_ NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress
);
3170 #define NdisInitializeWorkItem(_WI_, _R_, _C_) { \
3171 (_WI_)->Context = _C_; \
3172 (_WI_)->Routine = _R_; \
3175 _IRQL_requires_max_(DISPATCH_LEVEL
)
3179 NdisScheduleWorkItem(
3180 _In_ __drv_aliasesMem PNDIS_WORK_ITEM WorkItem
);
3182 _IRQL_requires_max_(DISPATCH_LEVEL
)
3186 NdisSetPacketStatus(
3187 _In_ PNDIS_PACKET Packet
,
3188 _In_ NDIS_STATUS Status
,
3189 _In_ NDIS_HANDLE Handle
,
3192 #endif /* NDIS_LEGACY_DRIVER */
3194 _IRQL_requires_(PASSIVE_LEVEL
)
3199 _Out_ PNDIS_STATUS Status
,
3200 _Out_ PNDIS_HANDLE FileHandle
,
3201 _Out_ PUINT FileLength
,
3202 _In_ PNDIS_STRING FileName
,
3203 _In_ NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress
);
3205 _IRQL_requires_(PASSIVE_LEVEL
)
3210 _In_ NDIS_HANDLE FileHandle
);
3212 _IRQL_requires_max_(DISPATCH_LEVEL
)
3217 _Out_ PNDIS_STATUS Status
,
3218 _Out_ PVOID
*MappedBuffer
,
3219 _In_ NDIS_HANDLE FileHandle
);
3221 _IRQL_requires_(PASSIVE_LEVEL
)
3226 _In_ NDIS_HANDLE FileHandle
);
3228 _IRQL_requires_max_(DISPATCH_LEVEL
)
3232 NdisGetSharedDataAlignment(VOID
);
3234 #define NdisFlushBuffer(Buffer,WriteToDevice) \
3235 KeFlushIoBuffers((Buffer),!(WriteToDevice), TRUE)
3237 _IRQL_requires_max_(DISPATCH_LEVEL
)
3242 _Out_ PNDIS_STATUS Status
,
3243 _Out_ PNDIS_BUFFER
*Buffer
,
3244 _In_ NDIS_HANDLE PoolHandle
,
3245 _In_ PVOID MemoryDescriptor
,
3251 * NdisCopyLookaheadData(
3252 * IN PVOID Destination,
3255 * IN ULONG ReceiveFlags);
3258 #if defined(_M_IX86) || defined(_M_AMD64)
3259 #define NdisCopyLookaheadData(Destination, Source, Length, MacOptions) \
3260 RtlCopyMemory(Destination, Source, Length)
3262 #define NdisCopyLookaheadData(Destination, Source, Length, MacOptions) \
3264 if ((MacOptions) & NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA) \
3266 RtlCopyMemory(_Destination, _Source, _Length); \
3270 PUCHAR _Src = (PUCHAR)(Source); \
3271 PUCHAR _Dest = (PUCHAR)(Destination); \
3272 PUCHAR _End = _Dest + (Length); \
3273 while (_Dest < _End) \
3274 *_Dest++ = *_Src++; \
3283 NdisAdjustBufferLength(
3284 IN PNDIS_BUFFER Buffer,
3287 #define NdisAdjustBufferLength(Buffer, Length) \
3288 (((Buffer)->ByteCount) = (Length))
3290 #if NDIS_SUPPORT_NDIS6
3291 #define NdisAdjustMdlLength(_Mdl, _Length) \
3292 (((_Mdl)->ByteCount) = (_Length))
3300 IN PNDIS_BUFFER Buffer);
3302 #define NdisBufferLength MmGetMdlByteCount
3308 NdisBufferVirtualAddress(
3309 IN PNDIS_BUFFER Buffer);
3311 #define NdisBufferVirtualAddress MmGetSystemAddressForMdl
3313 #define NdisBufferVirtualAddressSafe MmGetSystemAddressForMdlSafe
3318 NDIS_BUFFER_TO_SPAN_PAGES(
3319 IN PNDIS_BUFFER Buffer
);
3325 NdisGetBufferPhysicalArraySize(
3326 IN PNDIS_BUFFER Buffer,
3327 OUT PUINT ArraySize);
3329 #define NdisGetBufferPhysicalArraySize(Buffer, ArraySize) \
3330 (*(ArraySize) = NDIS_BUFFER_TO_SPAN_PAGES(Buffer))
3336 NdisQueryBufferOffset(
3337 IN PNDIS_BUFFER Buffer,
3341 #define NdisQueryBufferOffset(_Buffer, _Offset, _Length) { \
3342 *(_Offset) = MmGetMdlByteOffset(_Buffer); \
3343 *(_Length) = MmGetMdlByteCount(_Buffer); \
3348 * NDIS_BUFFER_LINKAGE(
3349 * IN PNDIS_BUFFER Buffer);
3351 #define NDIS_BUFFER_LINKAGE(Buffer) (Buffer)->Next
3355 * NdisGetNextBuffer(
3356 * IN PNDIS_BUFFER CurrentBuffer,
3357 * OUT PNDIS_BUFFER * NextBuffer)
3359 #define NdisGetNextBuffer(CurrentBuffer, \
3362 *(NextBuffer) = (CurrentBuffer)->Next; \
3365 #if NDIS_LEGACY_DRIVER
3367 #define NDIS_PACKET_FIRST_NDIS_BUFFER(_Packet) ((_Packet)->Private.Head)
3368 #define NDIS_PACKET_LAST_NDIS_BUFFER(_Packet) ((_Packet)->Private.Tail)
3369 #define NDIS_PACKET_VALID_COUNTS(_Packet) ((_Packet)->Private.ValidCounts)
3373 * NdisGetPacketFlags(
3374 * IN PNDIS_PACKET Packet);
3376 #define NdisGetPacketFlags(Packet) (Packet)->Private.Flags
3380 * NDIS_GET_PACKET_PROTOCOL_TYPE(
3381 * IN PNDIS_PACKET Packet);
3383 #define NDIS_GET_PACKET_PROTOCOL_TYPE(_Packet) \
3384 ((_Packet)->Private.Flags & NDIS_PROTOCOL_ID_MASK)
3387 * PNDIS_PACKET_OOB_DATA
3388 * NDIS_OOB_DATA_FROM_PACKET(
3389 * IN PNDIS_PACKET Packet);
3391 #define NDIS_OOB_DATA_FROM_PACKET(_Packet) \
3392 (PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3393 (_Packet)->Private.NdisPacketOobOffset)
3397 * NDIS_GET_PACKET_HEADER_SIZE(
3398 * IN PNDIS_PACKET Packet);
3400 #define NDIS_GET_PACKET_HEADER_SIZE(_Packet) \
3401 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3402 (_Packet)->Private.NdisPacketOobOffset))->HeaderSize
3406 * NDIS_GET_PACKET_STATUS(
3407 * IN PNDIS_PACKET Packet);
3409 #define NDIS_GET_PACKET_STATUS(_Packet) \
3410 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3411 (_Packet)->Private.NdisPacketOobOffset))->Status
3415 * NDIS_GET_PACKET_TIME_TO_SEND(
3416 * IN PNDIS_PACKET Packet);
3418 #define NDIS_GET_PACKET_TIME_TO_SEND(_Packet) \
3419 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3420 (_Packet)->Private.NdisPacketOobOffset))->TimeToSend
3424 * NDIS_GET_PACKET_TIME_SENT(
3425 * IN PNDIS_PACKET Packet);
3427 #define NDIS_GET_PACKET_TIME_SENT(_Packet) \
3428 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3429 (_Packet)->Private.NdisPacketOobOffset))->TimeSent
3433 * NDIS_GET_PACKET_TIME_RECEIVED(
3434 * IN PNDIS_PACKET Packet);
3436 #define NDIS_GET_PACKET_TIME_RECEIVED(_Packet) \
3437 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3438 (_Packet)->Private.NdisPacketOobOffset))->TimeReceived
3442 * NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(
3443 * IN PNDIS_PACKET Packet,
3444 * IN PPVOID pMediaSpecificInfo,
3445 * IN PUINT pSizeMediaSpecificInfo);
3447 #define NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(_Packet, \
3448 _pMediaSpecificInfo, \
3449 _pSizeMediaSpecificInfo) \
3451 if (!((_Packet)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS) || \
3452 !((_Packet)->Private.NdisPacketFlags & fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO)) \
3454 *(_pMediaSpecificInfo) = NULL; \
3455 *(_pSizeMediaSpecificInfo) = 0; \
3459 *(_pMediaSpecificInfo) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3460 (_Packet)->Private.NdisPacketOobOffset))->MediaSpecificInformation; \
3461 *(_pSizeMediaSpecificInfo) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3462 (_Packet)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo; \
3468 * NDIS_SET_PACKET_HEADER_SIZE(
3469 * IN PNDIS_PACKET Packet,
3472 #define NDIS_SET_PACKET_HEADER_SIZE(_Packet, _HdrSize) \
3473 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3474 (_Packet)->Private.NdisPacketOobOffset))->HeaderSize = (_HdrSize)
3478 * NDIS_SET_PACKET_STATUS(
3479 * IN PNDIS_PACKET Packet,
3480 * IN NDIS_STATUS Status);
3482 #define NDIS_SET_PACKET_STATUS(_Packet, _Status) \
3483 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3484 (_Packet)->Private.NdisPacketOobOffset))->Status = (_Status)
3488 * NDIS_SET_PACKET_TIME_TO_SEND(
3489 * IN PNDIS_PACKET Packet,
3490 * IN ULONGLONG TimeToSend);
3492 #define NDIS_SET_PACKET_TIME_TO_SEND(_Packet, _TimeToSend) \
3493 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3494 (_Packet)->Private.NdisPacketOobOffset))->TimeToSend = (_TimeToSend)
3498 * NDIS_SET_PACKET_TIME_SENT(
3499 * IN PNDIS_PACKET Packet,
3500 * IN ULONGLONG TimeSent);
3502 #define NDIS_SET_PACKET_TIME_SENT(_Packet, _TimeSent) \
3503 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3504 (_Packet)->Private.NdisPacketOobOffset))->TimeSent = (_TimeSent)
3508 * NDIS_SET_PACKET_TIME_RECEIVED(
3509 * IN PNDIS_PACKET Packet,
3510 * IN ULONGLONG TimeReceived);
3512 #define NDIS_SET_PACKET_TIME_RECEIVED(_Packet, _TimeReceived) \
3513 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3514 (_Packet)->Private.NdisPacketOobOffset))->TimeReceived = (_TimeReceived)
3518 * NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(
3519 * IN PNDIS_PACKET Packet,
3520 * IN PVOID MediaSpecificInfo,
3521 * IN UINT SizeMediaSpecificInfo);
3523 #define NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(_Packet, \
3524 _MediaSpecificInfo, \
3525 _SizeMediaSpecificInfo) \
3527 if ((_Packet)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS) \
3529 (_Packet)->Private.NdisPacketFlags |= fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO; \
3530 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3531 (_Packet)->Private.NdisPacketOobOffset))->MediaSpecificInformation = \
3532 (_MediaSpecificInfo); \
3533 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3534 (_Packet)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo = \
3535 (_SizeMediaSpecificInfo); \
3541 * NdisSetPacketFlags(
3542 * IN PNDIS_PACKET Packet,
3545 #define NdisSetPacketFlags(Packet, Flags) (Packet)->Private.Flags |= (Flags)
3549 * NdisClearPacketFlags(
3550 * IN PNDIS_PACKET Packet,
3553 #define NdisClearPacketFlags(Packet, Flags) (Packet)->Private.Flags &= ~(Flags)
3558 * IN PNDIS_PACKET Packet,
3559 * OUT PUINT PhysicalBufferCount OPTIONAL,
3560 * OUT PUINT BufferCount OPTIONAL,
3561 * OUT PNDIS_BUFFER *FirstBuffer OPTIONAL,
3562 * OUT PUINT TotalPacketLength OPTIONAL);
3567 IN PNDIS_PACKET Packet
,
3568 OUT PUINT PhysicalBufferCount OPTIONAL
,
3569 OUT PUINT BufferCount OPTIONAL
,
3570 OUT PNDIS_BUFFER
*FirstBuffer OPTIONAL
,
3571 OUT PUINT TotalPacketLength OPTIONAL
)
3574 *FirstBuffer
= Packet
->Private
.Head
;
3575 if (TotalPacketLength
|| BufferCount
|| PhysicalBufferCount
) {
3576 if (!Packet
->Private
.ValidCounts
) {
3579 PNDIS_BUFFER NdisBuffer
;
3580 UINT _PhysicalBufferCount
= 0;
3581 UINT _TotalPacketLength
= 0;
3584 for (NdisBuffer
= Packet
->Private
.Head
;
3585 NdisBuffer
!= (PNDIS_BUFFER
)NULL
;
3586 NdisBuffer
= NdisBuffer
->Next
) {
3587 _PhysicalBufferCount
+= NDIS_BUFFER_TO_SPAN_PAGES(NdisBuffer
);
3588 NdisQueryBufferOffset(NdisBuffer
, &Offset
, &PacketLength
);
3589 _TotalPacketLength
+= PacketLength
;
3592 Packet
->Private
.PhysicalCount
= _PhysicalBufferCount
;
3593 Packet
->Private
.TotalLength
= _TotalPacketLength
;
3594 Packet
->Private
.Count
= Count
;
3595 Packet
->Private
.ValidCounts
= TRUE
;
3598 if (PhysicalBufferCount
)
3599 *PhysicalBufferCount
= Packet
->Private
.PhysicalCount
;
3602 *BufferCount
= Packet
->Private
.Count
;
3604 if (TotalPacketLength
)
3605 *TotalPacketLength
= Packet
->Private
.TotalLength
;
3611 * NdisQueryPacketLength(
3612 * IN PNDIS_PACKET Packet,
3613 * OUT PUINT PhysicalBufferCount OPTIONAL,
3614 * OUT PUINT BufferCount OPTIONAL,
3615 * OUT PNDIS_BUFFER *FirstBuffer OPTIONAL,
3616 * OUT PUINT TotalPacketLength OPTIONAL);
3618 #define NdisQueryPacketLength(_Packet, \
3619 _TotalPacketLength) \
3621 if (!(_Packet)->Private.ValidCounts) { \
3622 NdisQueryPacket(_Packet, NULL, NULL, NULL, _TotalPacketLength); \
3624 else *(_TotalPacketLength) = (_Packet)->Private.TotalLength; \
3627 #endif /* NDIS_LEGACY_DRIVER */
3629 /* Memory management routines */
3635 NdisCreateLookaheadBufferFromSharedMemory(
3636 IN PVOID pSharedMemory,
3637 IN UINT LookaheadLength,
3638 OUT PVOID *pLookaheadBuffer);
3640 #define NdisCreateLookaheadBufferFromSharedMemory(_S, _L, _B) ((*(_B)) = (_S))
3645 NdisDestroyLookaheadBufferFromSharedMemory(
3646 IN PVOID pLookaheadBuffer
);
3648 #if defined(_M_IX86) || defined(_M_AMD64) || defined(_M_ARM) || defined(_M_PPC)
3652 * NdisMoveMappedMemory(
3653 * OUT PVOID Destination,
3657 #define NdisMoveMappedMemory(Destination, Source, Length) \
3658 RtlCopyMemory(Destination, Source, Length)
3662 * NdisZeroMappedMemory(
3663 * IN PVOID Destination,
3666 #define NdisZeroMappedMemory(Destination, Length) \
3667 RtlZeroMemory(Destination, Length)
3671 #define NdisMoveMappedMemory(Destination, Source, Length) \
3673 PUCHAR _Dest = Destination, _Src = Source, _End = _Dest + Length; \
3674 while (_Dest < _End) \
3675 *_Dest++ = _Src++; \
3678 #define NdisZeroMappedMemory(Destination, Length) \
3680 PUCHAR _Dest = Destination, _End = _Dest + Length; \
3681 while (_Dest < _End) \
3685 #endif /* _M_IX86 or _M_AMD64 */
3689 * NdisMoveFromMappedMemory(
3690 * OUT PVOID Destination,
3694 #define NdisMoveFromMappedMemory(Destination, Source, Length) \
3695 NdisMoveMappedMemory(Destination, Source, Length)
3699 * NdisMoveToMappedMemory(
3700 * OUT PVOID Destination,
3704 #define NdisMoveToMappedMemory(Destination, Source, Length) \
3705 NdisMoveMappedMemory(Destination, Source, Length)
3709 * NdisMUpdateSharedMemory(
3710 * IN NDIS_HANDLE MiniportAdapterHandle,
3712 * IN PVOID VirtualAddress,
3713 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
3715 #define NdisMUpdateSharedMemory(_H, _L, _V, _P) \
3716 NdisUpdateSharedMemory(_H, _L, _V, _P)
3718 _When_(MemoryFlags
==0, _IRQL_requires_max_(DISPATCH_LEVEL
))
3719 _When_(MemoryFlags
==NDIS_MEMORY_CONTIGUOUS
, _IRQL_requires_(PASSIVE_LEVEL
))
3720 _When_(MemoryFlags
==NDIS_MEMORY_NONCACHED
, _IRQL_requires_max_(APC_LEVEL
))
3725 _In_reads_bytes_(Length
) __drv_freesMem(Mem
) PVOID VirtualAddress
,
3727 _In_
_Pre_satisfies_(MemoryFlags
== 0 || MemoryFlags
== NDIS_MEMORY_NONCACHED
|| MemoryFlags
== NDIS_MEMORY_CONTIGUOUS
)
3733 NdisFreeMemoryWithTag(
3734 IN PVOID VirtualAddress
,
3740 NdisImmediateReadSharedMemory(
3741 IN NDIS_HANDLE WrapperConfigurationContext
,
3742 IN ULONG SharedMemoryAddress
,
3749 NdisImmediateWriteSharedMemory(
3750 IN NDIS_HANDLE WrapperConfigurationContext
,
3751 IN ULONG SharedMemoryAddress
,
3755 _IRQL_requires_(PASSIVE_LEVEL
)
3759 NdisMAllocateSharedMemory(
3760 _In_ NDIS_HANDLE MiniportAdapterHandle
,
3762 _In_ BOOLEAN Cached
,
3763 _Outptr_result_bytebuffer_(Length
) _At_(*VirtualAddress
, _Must_inspect_result_
)
3764 PVOID
*VirtualAddress
,
3765 _Out_
_At_(*PhysicalAddress
, _Must_inspect_result_
)
3766 PNDIS_PHYSICAL_ADDRESS PhysicalAddress
);
3768 _IRQL_requires_max_(DISPATCH_LEVEL
)
3772 NdisMAllocateSharedMemoryAsync(
3773 _In_ NDIS_HANDLE MiniportAdapterHandle
,
3775 _In_ BOOLEAN Cached
,
3776 _In_ PVOID Context
);
3780 #define NdisUpdateSharedMemory(NdisAdapterHandle, \
3790 NdisUpdateSharedMemory(
3791 IN NDIS_HANDLE NdisAdapterHandle
,
3793 IN PVOID VirtualAddress
,
3794 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
3796 #endif /* defined(NDIS50) */
3800 * NdisGetPhysicalAddressHigh(
3801 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
3803 #define NdisGetPhysicalAddressHigh(PhysicalAddress) \
3804 ((PhysicalAddress).HighPart)
3808 * NdisSetPhysicalAddressHigh(
3809 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
3812 #define NdisSetPhysicalAddressHigh(PhysicalAddress, Value) \
3813 ((PhysicalAddress).HighPart) = (Value)
3817 * NdisGetPhysicalAddressLow(
3818 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
3820 #define NdisGetPhysicalAddressLow(PhysicalAddress) \
3821 ((PhysicalAddress).LowPart)
3826 * NdisSetPhysicalAddressLow(
3827 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
3830 #define NdisSetPhysicalAddressLow(PhysicalAddress, Value) \
3831 ((PhysicalAddress).LowPart) = (Value)
3835 * NDIS_PHYSICAL_ADDRESS_CONST(
3839 #define NDIS_PHYSICAL_ADDRESS_CONST(Low, High) \
3840 { {(ULONG)(Low), (LONG)(High)} }
3845 * IN CONST VOID *Source1,
3846 * IN CONST VOID *Source2,
3849 #define NdisEqualMemory(Source1, Source2, Length) \
3850 RtlEqualMemory(Source1, Source2, Length)
3855 * IN PVOID Destination,
3859 #define NdisFillMemory(Destination, Length, Fill) \
3860 RtlFillMemory(Destination, Length, Fill)
3865 * OUT PVOID Destination,
3869 #define NdisMoveMemory(Destination, Source, Length) \
3870 RtlCopyMemory(Destination, Source, Length)
3875 * NdisRetrieveUlong(
3876 * IN PULONG DestinationAddress,
3877 * IN PULONG SourceAddress);
3879 #define NdisRetrieveUlong(DestinationAddress, SourceAddress) \
3880 RtlRetrieveUlong(DestinationAddress, SourceAddress)
3886 * IN PULONG DestinationAddress,
3889 #define NdisStoreUlong(DestinationAddress, Value) \
3890 RtlStoreUlong(DestinationAddress, Value)
3896 * IN PVOID Destination,
3899 #define NdisZeroMemory(Destination, Length) \
3900 RtlZeroMemory(Destination, Length)
3903 (NTAPI
*NDIS_BLOCK_INITIALIZER
) (
3905 IN SIZE_T NumberOfBytes
3908 /* Configuration routines */
3910 #if NDIS_LEGACY_DRIVER
3911 _IRQL_requires_(PASSIVE_LEVEL
)
3912 _Success_(*Status
>= 0)
3916 NdisOpenConfiguration(
3917 _At_(*Status
, _Must_inspect_result_
) _Out_ PNDIS_STATUS Status
,
3918 _Out_ PNDIS_HANDLE ConfigurationHandle
,
3919 _In_ NDIS_HANDLE WrapperConfigurationContext
);
3922 _IRQL_requires_(PASSIVE_LEVEL
)
3923 _Success_(*Status
>= 0)
3927 NdisReadNetworkAddress(
3928 _At_(*Status
, _Must_inspect_result_
) _Out_ PNDIS_STATUS Status
,
3929 _Outptr_result_bytebuffer_to_(*NetworkAddressLength
, *NetworkAddressLength
)
3930 PVOID
*NetworkAddress
,
3931 _Out_ PUINT NetworkAddressLength
,
3932 _In_ NDIS_HANDLE ConfigurationHandle
);
3937 NdisReadEisaSlotInformation(
3938 OUT PNDIS_STATUS Status
,
3939 IN NDIS_HANDLE WrapperConfigurationContext
,
3940 OUT PUINT SlotNumber
,
3941 OUT PNDIS_EISA_FUNCTION_INFORMATION EisaData
);
3946 NdisReadEisaSlotInformationEx(
3947 OUT PNDIS_STATUS Status
,
3948 IN NDIS_HANDLE WrapperConfigurationContext
,
3949 OUT PUINT SlotNumber
,
3950 OUT PNDIS_EISA_FUNCTION_INFORMATION
*EisaData
,
3951 OUT PUINT NumberOfFunctions
);
3953 #if NDIS_LEGACY_MINIPORT
3955 _IRQL_requires_max_(DISPATCH_LEVEL
)
3959 NdisReadPciSlotInformation(
3960 _In_ NDIS_HANDLE NdisAdapterHandle
,
3961 _In_ ULONG SlotNumber
,
3963 _Out_writes_bytes_(Length
) PVOID Buffer
,
3966 _IRQL_requires_max_(DISPATCH_LEVEL
)
3970 NdisWritePciSlotInformation(
3971 _In_ NDIS_HANDLE NdisAdapterHandle
,
3972 _In_ ULONG SlotNumber
,
3974 _In_reads_bytes_(Length
) PVOID Buffer
,
3977 _IRQL_requires_max_(DISPATCH_LEVEL
)
3981 NdisReadPcmciaAttributeMemory(
3982 _In_ NDIS_HANDLE NdisAdapterHandle
,
3984 _Out_writes_bytes_(Length
) PVOID Buffer
,
3987 _IRQL_requires_max_(DISPATCH_LEVEL
)
3991 NdisWritePcmciaAttributeMemory(
3992 _In_ NDIS_HANDLE NdisAdapterHandle
,
3994 _In_reads_bytes_(Length
) PVOID Buffer
,
3997 #endif /* NDIS_LEGACY_MINIPORT */
3999 /* String management routines */
4005 NdisAnsiStringToUnicodeString(
4006 IN OUT PNDIS_STRING DestinationString,
4007 IN PNDIS_ANSI_STRING SourceString);
4009 #define NdisAnsiStringToUnicodeString(_us, _as) RtlAnsiStringToUnicodeString(_us, _as, FALSE)
4014 * IN PNDIS_STRING String1,
4015 * IN PNDIS_STRING String2,
4016 * IN BOOLEAN CaseInsensitive);
4018 #define NdisEqualString RtlEqualString
4020 #define NdisEqualUnicodeString RtlEqualUnicodeString
4027 IN OUT PNDIS_ANSI_STRING DestinationString,
4028 IN PCSTR SourceString);
4030 #define NdisInitAnsiString RtlInitString
4035 NdisInitUnicodeString(
4036 IN OUT PNDIS_STRING DestinationString
,
4037 IN PCWSTR SourceString
);
4043 NdisUnicodeStringToAnsiString(
4044 IN OUT PNDIS_ANSI_STRING DestinationString,
4045 IN PNDIS_STRING SourceString);
4047 #define NdisUnicodeStringToAnsiString(_as, _us) RtlUnicodeStringToAnsiString(_as, _us, FALSE)
4049 #define NdisFreeString(_s) NdisFreeMemory((_s).Buffer, (_s).MaximumLength, 0)
4050 #define NdisPrintString(_s) DbgPrint("%ls", (_s).Buffer)
4052 /* Spin lock reoutines */
4058 NdisAllocateSpinLock(
4059 IN PNDIS_SPIN_LOCK SpinLock);
4061 #define NdisAllocateSpinLock(_SpinLock) KeInitializeSpinLock(&(_SpinLock)->SpinLock)
4068 IN PNDIS_SPIN_LOCK SpinLock);
4070 #define NdisFreeSpinLock(_SpinLock)
4076 NdisAcquireSpinLock(
4077 IN PNDIS_SPIN_LOCK SpinLock);
4079 #define NdisAcquireSpinLock(_SpinLock) KeAcquireSpinLock(&(_SpinLock)->SpinLock, &(_SpinLock)->OldIrql)
4085 NdisReleaseSpinLock(
4086 IN PNDIS_SPIN_LOCK SpinLock);
4088 #define NdisReleaseSpinLock(_SpinLock) KeReleaseSpinLock(&(_SpinLock)->SpinLock,(_SpinLock)->OldIrql)
4094 NdisDprAcquireSpinLock(
4095 IN PNDIS_SPIN_LOCK SpinLock);
4097 #define NdisDprAcquireSpinLock(_SpinLock) KeAcquireSpinLockAtDpcLevel(&(_SpinLock)->SpinLock)
4103 NdisDprReleaseSpinLock(
4104 IN PNDIS_SPIN_LOCK SpinLock);
4106 #define NdisDprReleaseSpinLock(_SpinLock) KeReleaseSpinLockFromDpcLevel(&(_SpinLock)->SpinLock)
4112 * NdisRawReadPortBufferUchar(
4114 * OUT PUCHAR Buffer,
4117 #define NdisRawReadPortBufferUchar(Port, Buffer, Length) \
4118 READ_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length))
4122 * NdisRawReadPortBufferUlong(
4124 * OUT PULONG Buffer,
4127 #define NdisRawReadPortBufferUlong(Port, Buffer, Length) \
4128 READ_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length))
4132 * NdisRawReadPortBufferUshort(
4134 * OUT PUSHORT Buffer,
4137 #define NdisRawReadPortBufferUshort(Port, Buffer, Length) \
4138 READ_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length))
4142 * NdisRawReadPortUchar(
4146 #define NdisRawReadPortUchar(Port, Data) \
4147 *(Data) = READ_PORT_UCHAR((PUCHAR)(Port))
4151 * NdisRawReadPortUlong(
4155 #define NdisRawReadPortUlong(Port, Data) \
4156 *(Data) = READ_PORT_ULONG((PULONG)(Port))
4160 * NdisRawReadPortUshort(
4162 * OUT PUSHORT Data);
4164 #define NdisRawReadPortUshort(Port, Data) \
4165 *(Data) = READ_PORT_USHORT((PUSHORT)(Port))
4169 * NdisRawWritePortBufferUchar(
4174 #define NdisRawWritePortBufferUchar(Port, Buffer, Length) \
4175 WRITE_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length))
4179 * NdisRawWritePortBufferUlong(
4184 #define NdisRawWritePortBufferUlong(Port, Buffer, Length) \
4185 WRITE_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length))
4189 * NdisRawWritePortBufferUshort(
4191 * IN PUSHORT Buffer,
4194 #define NdisRawWritePortBufferUshort(Port, Buffer, Length) \
4195 WRITE_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length))
4199 * NdisRawWritePortUchar(
4203 #define NdisRawWritePortUchar(Port, Data) \
4204 WRITE_PORT_UCHAR((PUCHAR)(Port), (UCHAR)(Data))
4208 * NdisRawWritePortUlong(
4212 #define NdisRawWritePortUlong(Port, Data) \
4213 WRITE_PORT_ULONG((PULONG)(Port), (ULONG)(Data))
4217 * NdisRawWritePortUshort(
4221 #define NdisRawWritePortUshort(Port, Data) \
4222 WRITE_PORT_USHORT((PUSHORT)(Port), (USHORT)(Data))
4227 * NdisReadRegisterUchar(
4228 * IN PUCHAR Register,
4231 #define NdisReadRegisterUchar(Register, Data) \
4232 *(Data) = *(Register)
4236 * NdisReadRegisterUlong(
4237 * IN PULONG Register,
4240 #define NdisReadRegisterUlong(Register, Data) \
4241 *(Data) = *(Register)
4245 * NdisReadRegisterUshort(
4246 * IN PUSHORT Register,
4247 * OUT PUSHORT Data);
4249 #define NdisReadRegisterUshort(Register, Data) \
4250 *(Data) = *(Register)
4254 * NdisReadRegisterUchar(
4255 * IN PUCHAR Register,
4258 #define NdisWriteRegisterUchar(Register, Data) \
4259 WRITE_REGISTER_UCHAR((Register), (Data))
4263 * NdisReadRegisterUlong(
4264 * IN PULONG Register,
4267 #define NdisWriteRegisterUlong(Register, Data) \
4268 WRITE_REGISTER_ULONG((Register), (Data))
4272 * NdisReadRegisterUshort(
4273 * IN PUSHORT Register,
4276 #define NdisWriteRegisterUshort(Register, Data) \
4277 WRITE_REGISTER_USHORT((Register), (Data))
4284 * NdisInitializeListHead(
4285 * IN PLIST_ENTRY ListHead);
4287 #define NdisInitializeListHead InitializeListHead
4291 * NdisInterlockedInsertHeadList(
4292 * IN PLIST_ENTRY ListHead,
4293 * IN PLIST_ENTRY ListEntry,
4294 * IN PNDIS_SPIN_LOCK SpinLock);
4296 #define NdisInterlockedInsertHeadList(_ListHead, _ListEntry, _SpinLock) \
4297 ExInterlockedInsertHeadList(_ListHead, _ListEntry, &(_SpinLock)->SpinLock)
4301 * NdisInterlockedInsertTailList(
4302 * IN PLIST_ENTRY ListHead,
4303 * IN PLIST_ENTRY ListEntry,
4304 * IN PNDIS_SPIN_LOCK SpinLock);
4306 #define NdisInterlockedInsertTailList(_ListHead, _ListEntry, _SpinLock) \
4307 ExInterlockedInsertTailList(_ListHead, _ListEntry, &(_SpinLock)->SpinLock)
4311 * NdisInterlockedRemoveHeadList(
4312 * IN PLIST_ENTRY ListHead,
4313 * IN PNDIS_SPIN_LOCK SpinLock);
4315 #define NdisInterlockedRemoveHeadList(_ListHead, _SpinLock) \
4316 ExInterlockedRemoveHeadList(_ListHead, &(_SpinLock)->SpinLock)
4320 * NdisInitializeSListHead(
4321 * IN PSLIST_HEADER SListHead);
4323 #define NdisInitializeSListHead(SListHead) ExInitializeSListHead(SListHead)
4326 * USHORT NdisQueryDepthSList(
4327 * IN PSLIST_HEADER SListHead);
4329 #define NdisQueryDepthSList(SListHead) ExQueryDepthSList(SListHead)
4331 #define NdisInterlockedPushEntryList(ListHead, ListEntry, Lock) \
4332 ExInterlockedPushEntryList(ListHead, ListEntry, &(Lock)->SpinLock)
4334 #define NdisInterlockedPopEntryList(ListHead, Lock) \
4335 ExInterlockedPopEntryList(ListHead, &(Lock)->SpinLock)
4337 /* Non-paged lookaside lists */
4339 #define NdisInitializeNPagedLookasideList(_L, _AR, _FR, _Fl, _S, _T, _D) \
4340 ExInitializeNPagedLookasideList(_L, _AR, _FR, _Fl, _S, _T, _D)
4341 #define NdisDeleteNPagedLookasideList(_L) ExDeleteNPagedLookasideList(_L)
4342 #define NdisAllocateFromNPagedLookasideList(_L) ExAllocateFromNPagedLookasideList(_L)
4343 #define NdisFreeToNPagedLookasideList(_L, _E) ExFreeToNPagedLookasideList(_L, _E)
4345 /* Interlocked routines */
4349 * NdisInterlockedDecrement(
4352 #define NdisInterlockedDecrement(Addend) InterlockedDecrement(Addend)
4356 * NdisInterlockedIncrement(
4359 #define NdisInterlockedIncrement(Addend) InterlockedIncrement(Addend)
4363 * NdisInterlockedAddUlong(
4365 * IN ULONG Increment,
4366 * IN PNDIS_SPIN_LOCK SpinLock);
4368 #define NdisInterlockedAddUlong(_Addend, _Increment, _SpinLock) \
4369 ExInterlockedAddUlong(_Addend, _Increment, &(_SpinLock)->SpinLock)
4371 /* Miscellaneous routines */
4373 _IRQL_requires_(PASSIVE_LEVEL
)
4377 NdisCloseConfiguration(
4378 _In_
__drv_freesMem(mem
) NDIS_HANDLE ConfigurationHandle
);
4380 _IRQL_requires_(PASSIVE_LEVEL
)
4381 _Success_(*Status
>= 0)
4385 NdisReadConfiguration(
4386 _At_(*Status
, _Must_inspect_result_
) _Out_ PNDIS_STATUS Status
,
4387 _Out_ PNDIS_CONFIGURATION_PARAMETER
*ParameterValue
,
4388 _In_ NDIS_HANDLE ConfigurationHandle
,
4389 _In_ PNDIS_STRING Keyword
,
4390 _In_ NDIS_PARAMETER_TYPE ParameterType
);
4392 _IRQL_requires_(PASSIVE_LEVEL
)
4393 _Success_(*Status
>= 0)
4397 NdisWriteConfiguration(
4398 _At_(*Status
, _Must_inspect_result_
) _Out_ PNDIS_STATUS Status
,
4399 _In_ NDIS_HANDLE WrapperConfigurationContext
,
4400 _In_ PNDIS_STRING Keyword
,
4401 _In_ PNDIS_CONFIGURATION_PARAMETER ParameterValue
);
4403 _IRQL_requires_max_(DISPATCH_LEVEL
)
4407 NdisWriteErrorLogEntry(
4408 _In_ NDIS_HANDLE NdisAdapterHandle
,
4409 _In_ NDIS_ERROR_CODE ErrorCode
,
4410 _In_ ULONG NumberOfErrorValues
,
4413 _IRQL_requires_(PASSIVE_LEVEL
)
4417 NdisInitializeString(
4418 _Out_
_At_(Destination
->Buffer
, __drv_allocatesMem(Mem
)) PNDIS_STRING Destination
,
4419 _In_opt_z_ PUCHAR Source
);
4423 * NdisStallExecution(
4424 * IN UINT MicrosecondsToStall)
4426 #define NdisStallExecution KeStallExecutionProcessor
4432 NdisGetCurrentSystemTime(
4433 IN PLARGE_INTEGER pSystemTime);
4435 #define NdisGetCurrentSystemTime KeQuerySystemTime
4437 #if NDIS_SUPPORT_60_COMPATIBLE_API
4438 _IRQL_requires_(PASSIVE_LEVEL
)
4442 NdisSystemProcessorCount(VOID
);
4448 NdisGetCurrentProcessorCpuUsage(
4449 OUT PULONG pCpuUsage
);
4451 /* NDIS helper macros */
4455 * NDIS_INIT_FUNCTION(FunctionName)
4457 #define NDIS_INIT_FUNCTION(FunctionName) \
4458 alloc_text(init, FunctionName)
4462 * NDIS_PAGABLE_FUNCTION(FunctionName)
4464 #define NDIS_PAGEABLE_FUNCTION(FunctionName) \
4465 alloc_text(page, FunctionName)
4467 #define NDIS_PAGABLE_FUNCTION NDIS_PAGEABLE_FUNCTION
4470 /* NDIS 4.0 extensions */
4472 _IRQL_requires_max_(DISPATCH_LEVEL
)
4476 NdisMFreeSharedMemory(
4477 _In_ NDIS_HANDLE MiniportAdapterHandle
,
4479 _In_ BOOLEAN Cached
,
4480 _In_reads_bytes_(Length
) PVOID VirtualAddress
,
4481 _In_ NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
4486 NdisMWanIndicateReceive(
4487 OUT PNDIS_STATUS Status
,
4488 IN NDIS_HANDLE MiniportAdapterHandle
,
4489 IN NDIS_HANDLE NdisLinkContext
,
4490 IN PUCHAR PacketBuffer
,
4491 IN UINT PacketSize
);
4496 NdisMWanIndicateReceiveComplete(
4497 IN NDIS_HANDLE MiniportAdapterHandle
,
4498 IN NDIS_HANDLE NdisLinkContext
);
4503 NdisMWanSendComplete(
4504 IN NDIS_HANDLE MiniportAdapterHandle
,
4505 IN PNDIS_WAN_PACKET Packet
,
4506 IN NDIS_STATUS Status
);
4511 NdisPciAssignResources(
4512 IN NDIS_HANDLE NdisMacHandle
,
4513 IN NDIS_HANDLE NdisWrapperHandle
,
4514 IN NDIS_HANDLE WrapperConfigurationContext
,
4515 IN ULONG SlotNumber
,
4516 OUT PNDIS_RESOURCE_LIST
*AssignedResources
);
4519 /* NDIS 5.0 extensions */
4521 _IRQL_requires_max_(DISPATCH_LEVEL
)
4525 NdisAllocateMemoryWithTag(
4526 _At_(*VirtualAddress
, __drv_allocatesMem(Mem
)) _Outptr_result_bytebuffer_(Length
)
4527 PVOID
*VirtualAddress
,
4531 _IRQL_requires_max_(DISPATCH_LEVEL
)
4535 NdisGetCurrentProcessorCounts(
4536 _Out_ PULONG pIdleCount
,
4537 _Out_ PULONG pKernelAndUser
,
4538 _Out_ PULONG pIndex
);
4540 #if NDIS_LEGACY_DRIVER
4544 NdisGetSystemUpTime(
4545 OUT PULONG pSystemUpTime
);
4548 #if NDIS_SUPPORT_60_COMPATIBLE_API
4550 _IRQL_requires_max_(DISPATCH_LEVEL
)
4551 _IRQL_raises_(DISPATCH_LEVEL
)
4552 _When_(fWrite
, _Acquires_exclusive_lock_(*Lock
))
4553 _When_(!fWrite
, _Acquires_shared_lock_(*Lock
))
4557 NdisAcquireReadWriteLock(
4558 _Inout_ PNDIS_RW_LOCK Lock
,
4559 _In_ BOOLEAN fWrite
,
4560 _Out_ _IRQL_saves_ PLOCK_STATE LockState
);
4562 _IRQL_requires_max_(DISPATCH_LEVEL
)
4566 NdisInitializeReadWriteLock(
4567 _Out_ PNDIS_RW_LOCK Lock
);
4569 _IRQL_requires_(DISPATCH_LEVEL
)
4570 _Requires_lock_held_(*Lock
)
4571 _Releases_lock_(*Lock
)
4575 NdisReleaseReadWriteLock(
4576 _Inout_ PNDIS_RW_LOCK Lock
,
4577 _In_ _IRQL_restores_ PLOCK_STATE LockState
);
4579 #if NDIS_SUPPORT_NDIS6
4584 NdisDprAcquireReadWriteLock(
4585 IN PNDIS_RW_LOCK Lock
,
4587 IN PLOCK_STATE LockState
);
4592 NdisDprReleaseReadWriteLock(
4593 IN PNDIS_RW_LOCK Lock
,
4594 IN PLOCK_STATE LockState
);
4596 #endif /* NDIS_SUPPORT_NDIS6 */
4598 #endif /* NDIS_SUPPORT_60_COMPATIBLE_API */
4600 _IRQL_requires_(PASSIVE_LEVEL
)
4604 NdisMDeregisterDevice(
4605 _In_ NDIS_HANDLE NdisDeviceHandle
);
4607 _IRQL_requires_(PASSIVE_LEVEL
)
4611 NdisMGetDeviceProperty(
4612 _In_ NDIS_HANDLE MiniportAdapterHandle
,
4613 _Inout_opt_ PDEVICE_OBJECT
*PhysicalDeviceObject
,
4614 _Inout_opt_ PDEVICE_OBJECT
*FunctionalDeviceObject
,
4615 _Inout_opt_ PDEVICE_OBJECT
*NextDeviceObject
,
4616 _Inout_opt_ PCM_RESOURCE_LIST
*AllocatedResources
,
4617 _Inout_opt_ PCM_RESOURCE_LIST
*AllocatedResourcesTranslated
);
4619 _IRQL_requires_(PASSIVE_LEVEL
)
4623 NdisMInitializeScatterGatherDma(
4624 _In_ NDIS_HANDLE MiniportAdapterHandle
,
4625 _In_ BOOLEAN Dma64BitAddresses
,
4626 _In_ ULONG MaximumPhysicalMapping
);
4628 _IRQL_requires_max_(DISPATCH_LEVEL
)
4632 NdisMPromoteMiniport(
4633 _In_ NDIS_HANDLE MiniportAdapterHandle
);
4635 _IRQL_requires_(PASSIVE_LEVEL
)
4639 NdisMQueryAdapterInstanceName(
4640 _Out_ PNDIS_STRING AdapterInstanceName
,
4641 _In_ NDIS_HANDLE MiniportAdapterHandle
);
4643 _IRQL_requires_(PASSIVE_LEVEL
)
4647 NdisMRegisterDevice(
4648 _In_ NDIS_HANDLE NdisWrapperHandle
,
4649 _In_ PNDIS_STRING DeviceName
,
4650 _In_ PNDIS_STRING SymbolicName
,
4651 _In_reads_(IRP_MJ_PNP
) PDRIVER_DISPATCH
*MajorFunctions
,
4652 _Out_ PDEVICE_OBJECT
*pDeviceObject
,
4653 _Out_ NDIS_HANDLE
*NdisDeviceHandle
);
4655 _IRQL_requires_(PASSIVE_LEVEL
)
4659 NdisMRegisterUnloadHandler(
4660 _In_ NDIS_HANDLE NdisWrapperHandle
,
4661 _In_ PDRIVER_UNLOAD UnloadHandler
);
4663 _IRQL_requires_max_(DISPATCH_LEVEL
)
4667 NdisMRemoveMiniport(
4668 _In_ NDIS_HANDLE MiniportAdapterHandle
);
4670 _IRQL_requires_(PASSIVE_LEVEL
)
4674 NdisMSetMiniportSecondary(
4675 _In_ NDIS_HANDLE MiniportAdapterHandle
,
4676 _In_ NDIS_HANDLE PrimaryMiniportAdapterHandle
);
4678 _IRQL_requires_max_(APC_LEVEL
)
4679 _Success_(*Status
>= 0)
4683 NdisOpenConfigurationKeyByIndex(
4684 _At_(*Status
, _Must_inspect_result_
) _Out_ PNDIS_STATUS Status
,
4685 _In_ NDIS_HANDLE ConfigurationHandle
,
4687 _Out_ PNDIS_STRING KeyName
,
4688 _Out_ PNDIS_HANDLE KeyHandle
);
4690 _IRQL_requires_max_(APC_LEVEL
)
4691 _Success_(*Status
>= 0)
4695 NdisOpenConfigurationKeyByName(
4696 _At_(*Status
, _Must_inspect_result_
) _Out_ PNDIS_STATUS Status
,
4697 _In_ NDIS_HANDLE ConfigurationHandle
,
4698 _In_ PNDIS_STRING SubKeyName
,
4699 _Out_ PNDIS_HANDLE SubKeyHandle
);
4701 _Must_inspect_result_
4702 _IRQL_requires_max_(DISPATCH_LEVEL
)
4706 NdisQueryAdapterInstanceName(
4707 _Out_ PNDIS_STRING AdapterInstanceName
,
4708 _In_ NDIS_HANDLE NdisBindingHandle
);
4710 _Must_inspect_result_
4714 NdisQueryBindInstanceName(
4715 _Out_ PNDIS_STRING pAdapterInstanceName
,
4716 _In_ NDIS_HANDLE BindingContext
);
4718 _IRQL_requires_max_(DISPATCH_LEVEL
)
4722 NdisWriteEventLogEntry(
4723 _In_ _Points_to_data_ PVOID LogHandle
,
4724 _In_ NDIS_STATUS EventCode
,
4725 _In_ ULONG UniqueEventValue
,
4726 _In_ USHORT NumStrings
,
4727 _In_opt_ PVOID StringsList
,
4728 _In_ ULONG DataSize
,
4729 _In_reads_bytes_opt_(DataSize
) PVOID Data
);
4731 /* Connectionless services */
4733 _Must_inspect_result_
4734 _IRQL_requires_max_(DISPATCH_LEVEL
)
4739 _In_ NDIS_HANDLE NdisVcHandle
,
4740 _In_ NDIS_HANDLE ProtocolPartyContext
,
4741 _In_ PCO_CALL_PARAMETERS CallParameters
,
4742 _Out_ PNDIS_HANDLE NdisPartyHandle
);
4744 _Must_inspect_result_
4745 _IRQL_requires_max_(DISPATCH_LEVEL
)
4749 NdisClCloseAddressFamily(
4750 _In_ NDIS_HANDLE NdisAfHandle
);
4752 _Must_inspect_result_
4753 _IRQL_requires_max_(DISPATCH_LEVEL
)
4758 _In_ NDIS_HANDLE NdisVcHandle
,
4759 _In_opt_ NDIS_HANDLE NdisPartyHandle
,
4760 _In_reads_bytes_opt_(Size
) PVOID Buffer
,
4763 _Must_inspect_result_
4764 _IRQL_requires_max_(DISPATCH_LEVEL
)
4768 NdisClDeregisterSap(
4769 _In_ NDIS_HANDLE NdisSapHandle
);
4771 _Must_inspect_result_
4772 _IRQL_requires_max_(DISPATCH_LEVEL
)
4777 _In_ NDIS_HANDLE NdisPartyHandle
,
4778 _In_reads_bytes_opt_(Size
) PVOID Buffer
,
4779 _In_opt_ UINT Size
);
4781 _IRQL_requires_max_(DISPATCH_LEVEL
)
4785 NdisClIncomingCallComplete(
4786 _In_ NDIS_STATUS Status
,
4787 _In_ NDIS_HANDLE NdisVcHandle
,
4788 _In_ PCO_CALL_PARAMETERS CallParameters
);
4790 _Must_inspect_result_
4791 _IRQL_requires_max_(DISPATCH_LEVEL
)
4796 _In_ NDIS_HANDLE NdisVcHandle
,
4797 _Inout_ PCO_CALL_PARAMETERS CallParameters
,
4798 _In_opt_ NDIS_HANDLE ProtocolPartyContext
,
4799 _Out_opt_ PNDIS_HANDLE NdisPartyHandle
);
4801 _Must_inspect_result_
4802 _IRQL_requires_max_(DISPATCH_LEVEL
)
4806 NdisClModifyCallQoS(
4807 _In_ NDIS_HANDLE NdisVcHandle
,
4808 _In_ PCO_CALL_PARAMETERS CallParameters
);
4810 _Must_inspect_result_
4811 _IRQL_requires_(PASSIVE_LEVEL
)
4815 NdisClOpenAddressFamily(
4816 _In_ NDIS_HANDLE NdisBindingHandle
,
4817 _In_ PCO_ADDRESS_FAMILY AddressFamily
,
4818 _In_ NDIS_HANDLE ProtocolAfContext
,
4819 _In_ PNDIS_CLIENT_CHARACTERISTICS ClCharacteristics
,
4820 _In_ UINT SizeOfClCharacteristics
,
4821 _Out_ PNDIS_HANDLE NdisAfHandle
);
4823 _Must_inspect_result_
4824 _IRQL_requires_max_(DISPATCH_LEVEL
)
4829 _In_ NDIS_HANDLE NdisAfHandle
,
4830 _In_ NDIS_HANDLE ProtocolSapContext
,
4832 _Out_ PNDIS_HANDLE NdisSapHandle
);
4835 /* Call Manager services */
4837 _Must_inspect_result_
4838 _IRQL_requires_max_(DISPATCH_LEVEL
)
4843 _In_ NDIS_HANDLE NdisVcHandle
,
4844 _Inout_ PCO_CALL_PARAMETERS CallParameters
);
4846 _IRQL_requires_max_(DISPATCH_LEVEL
)
4850 NdisCmAddPartyComplete(
4851 _In_ NDIS_STATUS Status
,
4852 _In_ NDIS_HANDLE NdisPartyHandle
,
4853 _In_opt_ NDIS_HANDLE CallMgrPartyContext
,
4854 _In_ PCO_CALL_PARAMETERS CallParameters
);
4856 _IRQL_requires_max_(DISPATCH_LEVEL
)
4860 NdisCmCloseAddressFamilyComplete(
4861 _In_ NDIS_STATUS Status
,
4862 _In_ NDIS_HANDLE NdisAfHandle
);
4864 _IRQL_requires_max_(DISPATCH_LEVEL
)
4868 NdisCmCloseCallComplete(
4869 _In_ NDIS_STATUS Status
,
4870 _In_ NDIS_HANDLE NdisVcHandle
,
4871 _In_opt_ NDIS_HANDLE NdisPartyHandle
);
4873 _Must_inspect_result_
4874 _IRQL_requires_max_(DISPATCH_LEVEL
)
4879 _In_ NDIS_HANDLE NdisVcHandle
);
4881 _IRQL_requires_max_(DISPATCH_LEVEL
)
4885 NdisCmDeregisterSapComplete(
4886 _In_ NDIS_STATUS Status
,
4887 _In_ NDIS_HANDLE NdisSapHandle
);
4889 _IRQL_requires_max_(DISPATCH_LEVEL
)
4893 NdisCmDispatchCallConnected(
4894 _In_ NDIS_HANDLE NdisVcHandle
);
4896 _Must_inspect_result_
4897 _IRQL_requires_max_(DISPATCH_LEVEL
)
4901 NdisCmDispatchIncomingCall(
4902 _In_ NDIS_HANDLE NdisSapHandle
,
4903 _In_ NDIS_HANDLE NdisVcHandle
,
4904 _In_ PCO_CALL_PARAMETERS CallParameters
);
4906 _IRQL_requires_max_(DISPATCH_LEVEL
)
4910 NdisCmDispatchIncomingCallQoSChange(
4911 _In_ NDIS_HANDLE NdisVcHandle
,
4912 _In_ PCO_CALL_PARAMETERS CallParameters
);
4914 _IRQL_requires_max_(DISPATCH_LEVEL
)
4918 NdisCmDispatchIncomingCloseCall(
4919 _In_ NDIS_STATUS CloseStatus
,
4920 _In_ NDIS_HANDLE NdisVcHandle
,
4921 _In_reads_bytes_opt_(Size
) PVOID Buffer
,
4924 _IRQL_requires_max_(DISPATCH_LEVEL
)
4928 NdisCmDispatchIncomingDropParty(
4929 _In_ NDIS_STATUS DropStatus
,
4930 _In_ NDIS_HANDLE NdisPartyHandle
,
4931 _In_reads_bytes_opt_(Size
) PVOID Buffer
,
4934 _IRQL_requires_max_(DISPATCH_LEVEL
)
4938 NdisCmDropPartyComplete(
4939 _In_ NDIS_STATUS Status
,
4940 _In_ NDIS_HANDLE NdisPartyHandle
);
4942 _IRQL_requires_max_(DISPATCH_LEVEL
)
4946 NdisCmMakeCallComplete(
4947 _In_ NDIS_STATUS Status
,
4948 _In_ NDIS_HANDLE NdisVcHandle
,
4949 _In_opt_ NDIS_HANDLE NdisPartyHandle
,
4950 _In_opt_ NDIS_HANDLE CallMgrPartyContext
,
4951 _In_ PCO_CALL_PARAMETERS CallParameters
);
4953 _IRQL_requires_max_(DISPATCH_LEVEL
)
4957 NdisCmModifyCallQoSComplete(
4958 _In_ NDIS_STATUS Status
,
4959 _In_ NDIS_HANDLE NdisVcHandle
,
4960 _In_ PCO_CALL_PARAMETERS CallParameters
);
4962 _IRQL_requires_max_(DISPATCH_LEVEL
)
4966 NdisCmOpenAddressFamilyComplete(
4967 _In_ NDIS_STATUS Status
,
4968 _In_ NDIS_HANDLE NdisAfHandle
,
4969 _In_ NDIS_HANDLE CallMgrAfContext
);
4971 _Must_inspect_result_
4972 _IRQL_requires_(PASSIVE_LEVEL
)
4976 NdisCmRegisterAddressFamily(
4977 _In_ NDIS_HANDLE NdisBindingHandle
,
4978 _In_ PCO_ADDRESS_FAMILY AddressFamily
,
4979 _In_ PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics
,
4980 _In_ UINT SizeOfCmCharacteristics
);
4982 _IRQL_requires_max_(DISPATCH_LEVEL
)
4986 NdisCmRegisterSapComplete(
4987 _In_ NDIS_STATUS Status
,
4988 _In_ NDIS_HANDLE NdisSapHandle
,
4989 _In_ NDIS_HANDLE CallMgrSapContext
);
4991 _IRQL_requires_max_(DISPATCH_LEVEL
)
4996 _In_ NDIS_HANDLE NdisVcHandle
,
4997 _In_ PCO_CALL_PARAMETERS CallParameters
);
4999 _IRQL_requires_max_(DISPATCH_LEVEL
)
5004 _In_ NDIS_HANDLE MiniportAdapterHandle
,
5005 _In_ NDIS_HANDLE NdisAfHandle
,
5006 _In_ NDIS_HANDLE MiniportVcContext
,
5007 _Out_ PNDIS_HANDLE NdisVcHandle
);
5009 _IRQL_requires_max_(DISPATCH_LEVEL
)
5013 NdisMCmDeactivateVc(
5014 _In_ NDIS_HANDLE NdisVcHandle
);
5016 _IRQL_requires_max_(DISPATCH_LEVEL
)
5021 _In_ NDIS_HANDLE NdisVcHandle
);
5026 NdisMCmRegisterAddressFamily(
5027 IN NDIS_HANDLE MiniportAdapterHandle
,
5028 IN PCO_ADDRESS_FAMILY AddressFamily
,
5029 IN PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics
,
5030 IN UINT SizeOfCmCharacteristics
);
5032 _IRQL_requires_max_(DISPATCH_LEVEL
)
5037 _In_ NDIS_HANDLE NdisAfHandle
,
5038 _In_opt_ NDIS_HANDLE NdisVcHandle
,
5039 _In_opt_ NDIS_HANDLE NdisPartyHandle
,
5040 _Inout_ PNDIS_REQUEST NdisRequest
);
5043 /* Connection-oriented services */
5045 _Must_inspect_result_
5046 _IRQL_requires_max_(DISPATCH_LEVEL
)
5051 _In_ NDIS_HANDLE NdisBindingHandle
,
5052 _In_opt_ NDIS_HANDLE NdisAfHandle
,
5053 _In_ NDIS_HANDLE ProtocolVcContext
,
5054 _Inout_ PNDIS_HANDLE NdisVcHandle
);
5056 _Must_inspect_result_
5057 _IRQL_requires_max_(DISPATCH_LEVEL
)
5062 _In_ NDIS_HANDLE NdisVcHandle
);
5064 _Must_inspect_result_
5065 _IRQL_requires_max_(DISPATCH_LEVEL
)
5070 _In_ NDIS_HANDLE NdisBindingHandle
,
5071 _In_opt_ NDIS_HANDLE NdisAfHandle
,
5072 _In_opt_ NDIS_HANDLE NdisVcHandle
,
5073 _In_opt_ NDIS_HANDLE NdisPartyHandle
,
5074 _Inout_ PNDIS_REQUEST NdisRequest
);
5076 _IRQL_requires_max_(DISPATCH_LEVEL
)
5080 NdisCoRequestComplete(
5081 _In_ NDIS_STATUS Status
,
5082 _In_ NDIS_HANDLE NdisAfHandle
,
5083 _In_opt_ NDIS_HANDLE NdisVcHandle
,
5084 _In_opt_ NDIS_HANDLE NdisPartyHandle
,
5085 _In_ PNDIS_REQUEST NdisRequest
);
5087 _IRQL_requires_max_(DISPATCH_LEVEL
)
5092 _In_ NDIS_HANDLE NdisVcHandle
,
5093 _In_ PPNDIS_PACKET PacketArray
,
5094 _In_ UINT NumberOfPackets
);
5096 _IRQL_requires_max_(DISPATCH_LEVEL
)
5100 NdisMCoActivateVcComplete(
5101 _In_ NDIS_STATUS Status
,
5102 _In_ NDIS_HANDLE NdisVcHandle
,
5103 _In_ PCO_CALL_PARAMETERS CallParameters
);
5105 _IRQL_requires_max_(DISPATCH_LEVEL
)
5109 NdisMCoDeactivateVcComplete(
5110 _In_ NDIS_STATUS Status
,
5111 _In_ NDIS_HANDLE NdisVcHandle
);
5113 _IRQL_requires_(DISPATCH_LEVEL
)
5117 NdisMCoIndicateReceivePacket(
5118 _In_ NDIS_HANDLE NdisVcHandle
,
5119 _In_ PPNDIS_PACKET PacketArray
,
5120 _In_ UINT NumberOfPackets
);
5122 _IRQL_requires_max_(DISPATCH_LEVEL
)
5126 NdisMCoIndicateStatus(
5127 _In_ NDIS_HANDLE MiniportAdapterHandle
,
5128 _In_opt_ NDIS_HANDLE NdisVcHandle
,
5129 _In_ NDIS_STATUS GeneralStatus
,
5130 _In_reads_bytes_opt_(StatusBufferSize
) PVOID StatusBuffer
,
5131 _In_ ULONG StatusBufferSize
);
5133 _IRQL_requires_(DISPATCH_LEVEL
)
5137 NdisMCoReceiveComplete(
5138 _In_ NDIS_HANDLE MiniportAdapterHandle
);
5140 _IRQL_requires_max_(DISPATCH_LEVEL
)
5144 NdisMCoRequestComplete(
5145 _In_ NDIS_STATUS Status
,
5146 _In_ NDIS_HANDLE MiniportAdapterHandle
,
5147 _In_ PNDIS_REQUEST Request
);
5149 _IRQL_requires_(DISPATCH_LEVEL
)
5153 NdisMCoSendComplete(
5154 _In_ NDIS_STATUS Status
,
5155 _In_ NDIS_HANDLE NdisVcHandle
,
5156 _In_ PNDIS_PACKET Packet
);
5159 /* NDIS 5.0 extensions for intermediate drivers */
5161 _IRQL_requires_(PASSIVE_LEVEL
)
5165 NdisIMAssociateMiniport(
5166 _In_ NDIS_HANDLE DriverHandle
,
5167 _In_ NDIS_HANDLE ProtocolHandle
);
5169 _IRQL_requires_(PASSIVE_LEVEL
)
5173 NdisIMCancelInitializeDeviceInstance(
5174 _In_ NDIS_HANDLE DriverHandle
,
5175 _In_ PNDIS_STRING DeviceInstance
);
5180 NdisIMCopySendCompletePerPacketInfo(
5181 IN PNDIS_PACKET DstPacket
,
5182 IN PNDIS_PACKET SrcPacket
);
5187 NdisIMCopySendPerPacketInfo(
5188 IN PNDIS_PACKET DstPacket
,
5189 IN PNDIS_PACKET SrcPacket
);
5191 _IRQL_requires_(PASSIVE_LEVEL
)
5195 NdisIMDeregisterLayeredMiniport(
5196 _In_ NDIS_HANDLE DriverHandle
);
5198 _IRQL_requires_max_(APC_LEVEL
)
5202 NdisIMGetBindingContext(
5203 _In_ NDIS_HANDLE NdisBindingHandle
);
5205 _IRQL_requires_max_(DISPATCH_LEVEL
)
5209 NdisIMGetDeviceContext(
5210 _In_ NDIS_HANDLE MiniportAdapterHandle
);
5212 _IRQL_requires_(PASSIVE_LEVEL
)
5216 NdisIMInitializeDeviceInstanceEx(
5217 _In_ NDIS_HANDLE DriverHandle
,
5218 _In_ PNDIS_STRING DriverInstance
,
5219 _In_opt_ NDIS_HANDLE DeviceContext
);
5225 NdisInterlockedPopEntrySList(
5226 IN PSLIST_HEADER ListHead,
5227 IN PKSPIN_LOCK Lock);
5229 #define NdisInterlockedPopEntrySList(SListHead, Lock) \
5230 ExInterlockedPopEntrySList(SListHead, &(Lock)->SpinLock)
5236 NdisInterlockedPushEntrySList(
5237 IN PSLIST_HEADER ListHead,
5238 IN PSINGLE_LIST_ENTRY ListEntry,
5239 IN PKSPIN_LOCK Lock);
5241 #define NdisInterlockedPushEntrySList(SListHead, SListEntry, Lock) \
5242 ExInterlockedPushEntrySList(SListHead, SListEntry, &(Lock)->SpinLock)
5244 #define NdisInterlockedFlushSList(SListHead) ExInterlockedFlushSList(SListHead)
5250 NdisQueryBufferSafe(
5251 IN PNDIS_BUFFER Buffer,
5252 OUT PVOID *VirtualAddress OPTIONAL,
5256 #define NdisQueryBufferSafe(_Buffer, _VirtualAddress, _Length, _Priority) { \
5257 if (ARGUMENT_PRESENT(_VirtualAddress)) { \
5258 *(PVOID *)(_VirtualAddress) = MmGetSystemAddressForMdlSafe(_Buffer, _Priority); \
5260 *(_Length) = MmGetMdlByteCount(_Buffer); \
5263 /* Routines for NDIS miniport drivers */
5265 #if NDIS_SUPPORT_NDIS6
5268 PNDIS_GENERIC_OBJECT
5270 NdisAllocateGenericObject(
5271 PDRIVER_OBJECT DriverObject OPTIONAL
,
5278 NdisFreeGenericObject(
5279 IN PNDIS_GENERIC_OBJECT NdisObject
);
5281 #endif /* NDIS_SUPPORT_NDIS6 */
5286 NdisInitializeWrapper(
5287 OUT PNDIS_HANDLE NdisWrapperHandle
,
5288 IN PVOID SystemSpecific1
,
5289 IN PVOID SystemSpecific2
,
5290 IN PVOID SystemSpecific3
);
5292 _Must_inspect_result_
5293 _IRQL_requires_(PASSIVE_LEVEL
)
5294 __drv_preferredFunction("NdisMInitializeScatterGatherDma", "See details in NdisMAllocateMapRegisters documentation")
5298 NdisMAllocateMapRegisters(
5299 _In_ NDIS_HANDLE MiniportAdapterHandle
,
5300 _In_ UINT DmaChannel
,
5301 _In_ NDIS_DMA_SIZE DmaSize
,
5302 _In_ ULONG PhysicalMapRegistersNeeded
,
5303 _In_ ULONG MaximumPhysicalMapping
);
5307 * NdisMArcIndicateReceive(
5308 * IN NDIS_HANDLE MiniportAdapterHandle,
5309 * IN PUCHAR HeaderBuffer,
5310 * IN PUCHAR DataBuffer,
5313 #define NdisMArcIndicateReceive(MiniportAdapterHandle, \
5318 ArcFilterDprIndicateReceive( \
5319 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->ArcDB), \
5327 * NdisMArcIndicateReceiveComplete(
5328 * IN NDIS_HANDLE MiniportAdapterHandle);
5330 #define NdisMArcIndicateReceiveComplete(MiniportAdapterHandle) \
5332 if (((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->EthDB) \
5334 NdisMEthIndicateReceiveComplete(_H); \
5337 ArcFilterDprIndicateReceiveComplete( \
5338 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->ArcDB); \
5341 _IRQL_requires_(PASSIVE_LEVEL
)
5346 _In_ NDIS_HANDLE LogHandle
);
5348 _IRQL_requires_(PASSIVE_LEVEL
)
5353 _In_ NDIS_HANDLE MiniportAdapterHandle
,
5355 _Out_ PNDIS_HANDLE LogHandle
);
5360 NdisMDeregisterAdapterShutdownHandler(
5361 _In_ NDIS_HANDLE MiniportHandle
);
5363 #if NDIS_LEGACY_MINIPORT
5365 _IRQL_requires_(PASSIVE_LEVEL
)
5369 NdisMDeregisterInterrupt(
5370 _In_ PNDIS_MINIPORT_INTERRUPT Interrupt
);
5372 _IRQL_requires_(PASSIVE_LEVEL
)
5376 NdisMRegisterAdapterShutdownHandler(
5377 _In_ NDIS_HANDLE MiniportHandle
,
5378 _In_ PVOID ShutdownContext
,
5379 _In_ ADAPTER_SHUTDOWN_HANDLER ShutdownHandler
);
5384 NdisMRegisterInterrupt(
5385 OUT PNDIS_MINIPORT_INTERRUPT Interrupt
,
5386 IN NDIS_HANDLE MiniportAdapterHandle
,
5387 IN UINT InterruptVector
,
5388 IN UINT InterruptLevel
,
5389 IN BOOLEAN RequestIsr
,
5390 IN BOOLEAN SharedInterrupt
,
5391 IN NDIS_INTERRUPT_MODE InterruptMode
);
5396 NdisMRegisterMiniport(
5397 IN NDIS_HANDLE NdisWrapperHandle
,
5398 IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics
,
5399 IN UINT CharacteristicsLength
);
5404 NdisMSynchronizeWithInterrupt(
5405 IN PNDIS_MINIPORT_INTERRUPT Interrupt
,
5406 IN PVOID SynchronizeFunction
,
5407 IN PVOID SynchronizeContext
);
5408 #endif /* NDIS_LEGACY_MINIPORT */
5410 _IRQL_requires_(PASSIVE_LEVEL
)
5414 NdisMDeregisterIoPortRange(
5415 _In_ NDIS_HANDLE MiniportAdapterHandle
,
5416 _In_ UINT InitialPort
,
5417 _In_ UINT NumberOfPorts
,
5418 _In_ PVOID PortOffset
);
5422 * NdisMEthIndicateReceive(
5423 * IN NDIS_HANDLE MiniportAdapterHandle,
5424 * IN NDIS_HANDLE MiniportReceiveContext,
5425 * IN PVOID HeaderBuffer,
5426 * IN UINT HeaderBufferSize,
5427 * IN PVOID LookaheadBuffer,
5428 * IN UINT LookaheadBufferSize,
5429 * IN UINT PacketSize);
5431 #define NdisMEthIndicateReceive(MiniportAdapterHandle, \
5432 MiniportReceiveContext, \
5436 LookaheadBufferSize, \
5439 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxIndicateHandler)( \
5440 ((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthDB, \
5441 (MiniportReceiveContext), \
5444 (HeaderBufferSize), \
5445 (LookaheadBuffer), \
5446 (LookaheadBufferSize), \
5452 * NdisMEthIndicateReceiveComplete(
5453 * IN NDIS_HANDLE MiniportAdapterHandle);
5455 #define NdisMEthIndicateReceiveComplete(MiniportAdapterHandle) \
5457 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxCompleteHandler)( \
5458 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->EthDB); \
5463 * NdisMFddiIndicateReceive(
5464 * IN NDIS_HANDLE MiniportAdapterHandle,
5465 * IN NDIS_HANDLE MiniportReceiveContext,
5466 * IN PVOID HeaderBuffer,
5467 * IN UINT HeaderBufferSize,
5468 * IN PVOID LookaheadBuffer,
5469 * IN UINT LookaheadBufferSize,
5470 * IN UINT PacketSize);
5472 #define NdisMFddiIndicateReceive(MiniportAdapterHandle, \
5473 MiniportReceiveContext, \
5477 LookaheadBufferSize, \
5480 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxIndicateHandler)( \
5481 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiDB), \
5482 (MiniportReceiveContext), \
5483 (PUCHAR)(HeaderBuffer) + 1, \
5484 (((*(PUCHAR*)(HeaderBuffer)) & 0x40) ? \
5485 FDDI_LENGTH_OF_LONG_ADDRESS : \
5486 FDDI_LENGTH_OF_SHORT_ADDRESS), \
5488 (HeaderBufferSize), \
5489 (LookaheadBuffer), \
5490 (LookaheadBufferSize), \
5498 * NdisMFddiIndicateReceiveComplete(
5499 * IN NDIS_HANDLE MiniportAdapterHandle);
5501 #define NdisMFddiIndicateReceiveComplete(MiniportAdapterHandle) \
5503 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxCompleteHandler)( \
5504 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FddiDB); \
5507 _IRQL_requires_max_(DISPATCH_LEVEL
)
5512 _In_ NDIS_HANDLE LogHandle
);
5514 _IRQL_requires_(PASSIVE_LEVEL
)
5518 NdisMFreeMapRegisters(
5519 _In_ NDIS_HANDLE MiniportAdapterHandle
);
5524 * NdisMIndicateReceivePacket(
5525 * IN NDIS_HANDLE MiniportAdapterHandle,
5526 * IN PPNDIS_PACKET ReceivePackets,
5527 * IN UINT NumberOfPackets);
5529 #define NdisMIndicateReceivePacket(MiniportAdapterHandle, \
5530 ReceivePackets, NumberOfPackets) \
5531 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->PacketIndicateHandler)( \
5532 MiniportAdapterHandle, ReceivePackets, NumberOfPackets)
5536 * NdisMIndicateStatus(
5537 * IN NDIS_HANDLE MiniportAdapterHandle,
5538 * IN NDIS_STATUS GeneralStatus,
5539 * IN PVOID StatusBuffer,
5540 * IN UINT StatusBufferSize);
5543 #define NdisMIndicateStatus(MiniportAdapterHandle, \
5544 GeneralStatus, StatusBuffer, StatusBufferSize) \
5545 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->StatusHandler)( \
5546 MiniportAdapterHandle, GeneralStatus, StatusBuffer, StatusBufferSize)
5550 * NdisMIndicateStatusComplete(
5551 * IN NDIS_HANDLE MiniportAdapterHandle);
5553 #define NdisMIndicateStatusComplete(MiniportAdapterHandle) \
5554 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->StatusCompleteHandler)( \
5555 MiniportAdapterHandle)
5559 * NdisMInitializeWrapper(
5560 * OUT PNDIS_HANDLE NdisWrapperHandle,
5561 * IN PVOID SystemSpecific1,
5562 * IN PVOID SystemSpecific2,
5563 * IN PVOID SystemSpecific3);
5565 #define NdisMInitializeWrapper(NdisWrapperHandle, \
5569 NdisInitializeWrapper((NdisWrapperHandle), \
5570 (SystemSpecific1), \
5571 (SystemSpecific2), \
5574 _Must_inspect_result_
5575 _IRQL_requires_(PASSIVE_LEVEL
)
5580 _Outptr_result_bytebuffer_(Length
) PVOID
*VirtualAddress
,
5581 _In_ NDIS_HANDLE MiniportAdapterHandle
,
5582 _In_ NDIS_PHYSICAL_ADDRESS PhysicalAddress
,
5587 * NdisMQueryInformationComplete(
5588 * IN NDIS_HANDLE MiniportAdapterHandle,
5589 * IN NDIS_STATUS Status);
5591 #define NdisMQueryInformationComplete(MiniportAdapterHandle, Status) \
5592 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->QueryCompleteHandler)(MiniportAdapterHandle, Status)
5594 _Must_inspect_result_
5595 _IRQL_requires_(PASSIVE_LEVEL
)
5599 NdisMRegisterIoPortRange(
5600 _Out_ PVOID
*PortOffset
,
5601 _In_ NDIS_HANDLE MiniportAdapterHandle
,
5602 _In_ UINT InitialPort
,
5603 _In_ UINT NumberOfPorts
);
5609 IN PNDIS_MINIPORT_TIMER Timer
,
5610 IN UINT MillisecondsToDelay
);
5612 _IRQL_requires_max_(DISPATCH_LEVEL
)
5616 NdisMInitializeTimer(
5617 _Inout_ PNDIS_MINIPORT_TIMER Timer
,
5618 _In_ NDIS_HANDLE MiniportAdapterHandle
,
5619 _In_ PNDIS_TIMER_FUNCTION TimerFunction
,
5620 _In_ PVOID FunctionContext
);
5622 _IRQL_requires_max_(DISPATCH_LEVEL
)
5626 NdisMSetPeriodicTimer(
5627 _In_ PNDIS_MINIPORT_TIMER Timer
,
5628 _In_ UINT MillisecondPeriod
);
5630 _IRQL_requires_max_(DISPATCH_LEVEL
)
5635 _In_ PNDIS_MINIPORT_TIMER Timer
,
5636 _Out_
_At_(*TimerCancelled
, _Must_inspect_result_
) PBOOLEAN TimerCancelled
);
5638 #if !defined(NDIS_WRAPPER)
5642 * NdisMResetComplete(
5643 * IN NDIS_HANDLE MiniportAdapterHandle,
5644 * IN NDIS_STATUS Status,
5645 * IN BOOLEAN AddressingReset);
5647 #define NdisMResetComplete(MiniportAdapterHandle, \
5651 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->ResetCompleteHandler)( \
5652 MiniportAdapterHandle, Status, AddressingReset); \
5657 * NdisMSendComplete(
5658 * IN NDIS_HANDLE MiniportAdapterHandle,
5659 * IN PNDIS_PACKET Packet,
5660 * IN NDIS_STATUS Status);
5662 #define NdisMSendComplete(MiniportAdapterHandle, \
5666 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SendCompleteHandler)( \
5667 MiniportAdapterHandle, Packet, Status); \
5672 * NdisMSendResourcesAvailable(
5673 * IN NDIS_HANDLE MiniportAdapterHandle);
5675 #define NdisMSendResourcesAvailable(MiniportAdapterHandle) \
5677 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SendResourcesHandler)( \
5678 MiniportAdapterHandle); \
5683 * NdisMTransferDataComplete(
5684 * IN NDIS_HANDLE MiniportAdapterHandle,
5685 * IN PNDIS_PACKET Packet,
5686 * IN NDIS_STATUS Status,
5687 * IN UINT BytesTransferred);
5689 #define NdisMTransferDataComplete(MiniportAdapterHandle, \
5694 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TDCompleteHandler)( \
5695 MiniportAdapterHandle, Packet, Status, BytesTransferred) \
5698 #endif /* !_NDIS_ */
5703 * NdisMSetAttributes(
5704 * IN NDIS_HANDLE MiniportAdapterHandle,
5705 * IN NDIS_HANDLE MiniportAdapterContext,
5706 * IN BOOLEAN BusMaster,
5707 * IN NDIS_INTERFACE_TYPE AdapterType);
5709 #define NdisMSetAttributes(MiniportAdapterHandle, \
5710 MiniportAdapterContext, \
5713 NdisMSetAttributesEx(MiniportAdapterHandle, \
5714 MiniportAdapterContext, \
5716 (BusMaster) ? NDIS_ATTRIBUTE_BUS_MASTER : 0, \
5722 NdisMSetAttributesEx(
5723 IN NDIS_HANDLE MiniportAdapterHandle
,
5724 IN NDIS_HANDLE MiniportAdapterContext
,
5725 IN UINT CheckForHangTimeInSeconds OPTIONAL
,
5726 IN ULONG AttributeFlags
,
5727 IN NDIS_INTERFACE_TYPE AdapterType
);
5731 * NdisMSetInformationComplete(
5732 * IN NDIS_HANDLE MiniportAdapterHandle,
5733 * IN NDIS_STATUS Status);
5735 #define NdisMSetInformationComplete(MiniportAdapterHandle, \
5737 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SetCompleteHandler)( \
5738 MiniportAdapterHandle, Status)
5740 _IRQL_requires_max_(APC_LEVEL
)
5745 _In_ ULONG MicrosecondsToSleep
);
5749 * NdisMTrIndicateReceive(
5750 * IN NDIS_HANDLE MiniportAdapterHandle,
5751 * IN NDIS_HANDLE MiniportReceiveContext,
5752 * IN PVOID HeaderBuffer,
5753 * IN UINT HeaderBufferSize,
5754 * IN PVOID LookaheadBuffer,
5755 * IN UINT LookaheadBufferSize,
5756 * IN UINT PacketSize);
5758 #define NdisMTrIndicateReceive(MiniportAdapterHandle, \
5759 MiniportReceiveContext, \
5763 LookaheadBufferSize, \
5766 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxIndicateHandler)( \
5767 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrDB), \
5768 (MiniportReceiveContext), \
5771 (HeaderBufferSize), \
5772 (LookaheadBuffer), \
5773 (LookaheadBufferSize), \
5779 * NdisMTrIndicateReceiveComplete(
5780 * IN NDIS_HANDLE MiniportAdapterHandle);
5782 #define NdisMTrIndicateReceiveComplete(MiniportAdapterHandle) \
5784 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxCompleteHandler)( \
5785 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->TrDB); \
5788 _IRQL_requires_max_(DISPATCH_LEVEL
)
5793 _In_ NDIS_HANDLE LogHandle
,
5794 _In_reads_bytes_(LogBufferSize
) PVOID LogBuffer
,
5795 _In_ UINT LogBufferSize
);
5797 _IRQL_requires_(PASSIVE_LEVEL
)
5801 NdisMQueryAdapterResources(
5802 _Out_ PNDIS_STATUS Status
,
5803 _In_ NDIS_HANDLE WrapperConfigurationContext
,
5804 _Out_ PNDIS_RESOURCE_LIST ResourceList
,
5805 _Inout_ PUINT BufferSize
);
5807 _IRQL_requires_(PASSIVE_LEVEL
)
5811 NdisTerminateWrapper(
5812 _In_ NDIS_HANDLE NdisWrapperHandle
,
5813 _In_opt_ PVOID SystemSpecific
);
5815 _IRQL_requires_(PASSIVE_LEVEL
)
5820 _In_ NDIS_HANDLE MiniportAdapterHandle
,
5821 _In_reads_bytes_(Length
) PVOID VirtualAddress
,
5824 /* Event functions */
5826 _IRQL_requires_max_(DISPATCH_LEVEL
)
5830 NdisInitializeEvent(
5831 _Out_ PNDIS_EVENT Event
);
5833 _IRQL_requires_max_(DISPATCH_LEVEL
)
5838 _In_ PNDIS_EVENT Event
);
5840 _IRQL_requires_max_(DISPATCH_LEVEL
)
5845 _In_ PNDIS_EVENT Event
);
5847 _When_(MsToWait
!= 0, _Check_return_
)
5848 _IRQL_requires_(PASSIVE_LEVEL
)
5853 _In_ PNDIS_EVENT Event
,
5854 _In_ UINT MsToWait
);
5856 /* NDIS intermediate miniport structures */
5858 typedef VOID (NTAPI
*W_MINIPORT_CALLBACK
)(
5859 IN NDIS_HANDLE MiniportAdapterContext
,
5860 IN PVOID CallbackContext
);
5862 /* Routines for intermediate miniport drivers */
5864 _IRQL_requires_(PASSIVE_LEVEL
)
5868 NdisIMDeInitializeDeviceInstance(
5869 _In_ NDIS_HANDLE NdisMiniportHandle
);
5873 * NdisIMInitializeDeviceInstance(
5874 * IN NDIS_HANDLE DriverHandle,
5875 * IN PNDIS_STRING DeviceInstance);
5877 #define NdisIMInitializeDeviceInstance(DriverHandle, DeviceInstance) \
5878 NdisIMInitializeDeviceInstanceEx(DriverHandle, DeviceInstance, NULL)
5880 /* Functions obsoleted by NDIS 5.0 */
5886 IN PNDIS_HANDLE NdisDmaHandle
);
5891 NdisSetupDmaTransfer(
5892 OUT PNDIS_STATUS Status
,
5893 IN PNDIS_HANDLE NdisDmaHandle
,
5894 IN PNDIS_BUFFER Buffer
,
5897 IN BOOLEAN WriteToDevice
);
5903 NdisUpcaseUnicodeString(
5904 OUT PUNICODE_STRING DestinationString,
5905 IN PUNICODE_STRING SourceString);
5907 #define NdisUpcaseUnicodeString(_d, _s) RtlUpcaseUnicodeString(_d, _s, FALSE)
5910 /* Routines for NDIS protocol drivers */
5912 #if NDIS_LEGACY_PROTOCOL
5917 NdisIMRegisterLayeredMiniport(
5918 _In_ NDIS_HANDLE NdisWrapperHandle
,
5919 _In_ PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics
,
5920 _In_ UINT CharacteristicsLength
,
5921 _Out_ PNDIS_HANDLE DriverHandle
);
5927 OUT PNDIS_STATUS Status
,
5928 IN NDIS_HANDLE NdisBindingHandle
,
5929 IN NDIS_HANDLE MacReceiveContext
,
5931 IN UINT BytesToTransfer
,
5932 IN OUT PNDIS_PACKET Packet
,
5933 OUT PUINT BytesTransferred
);
5939 OUT PNDIS_STATUS Status
,
5940 IN NDIS_HANDLE NdisBindingHandle
,
5941 IN PNDIS_PACKET Packet
);
5947 IN NDIS_HANDLE NdisBindingHandle
,
5948 IN PPNDIS_PACKET PacketArray
,
5949 IN UINT NumberOfPackets
);
5951 _IRQL_requires_max_(DISPATCH_LEVEL
)
5956 _Out_ PNDIS_STATUS Status
,
5957 _In_ NDIS_HANDLE NdisBindingHandle
,
5958 _In_ PNDIS_REQUEST NdisRequest
);
5960 _IRQL_requires_max_(DISPATCH_LEVEL
)
5965 _Out_ PNDIS_STATUS Status
,
5966 _In_ NDIS_HANDLE NdisBindingHandle
);
5968 _IRQL_requires_max_(DISPATCH_LEVEL
)
5972 NdisDeregisterProtocol(
5973 _Out_ PNDIS_STATUS Status
,
5974 _In_ NDIS_HANDLE NdisProtocolHandle
);
5976 _IRQL_requires_(PASSIVE_LEVEL
)
5981 _At_(*Status
, _Must_inspect_result_
) _Out_ PNDIS_STATUS Status
,
5982 _Out_ PNDIS_STATUS OpenErrorStatus
,
5983 _Out_ PNDIS_HANDLE NdisBindingHandle
,
5984 _Out_ PUINT SelectedMediumIndex
,
5985 _In_reads_(MediumArraySize
) PNDIS_MEDIUM MediumArray
,
5986 _In_ UINT MediumArraySize
,
5987 _In_ NDIS_HANDLE NdisProtocolHandle
,
5988 _In_ NDIS_HANDLE ProtocolBindingContext
,
5989 _In_ PNDIS_STRING AdapterName
,
5990 _In_ UINT OpenOptions
,
5991 _In_opt_ PSTRING AddressingInformation
);
5993 _IRQL_requires_(PASSIVE_LEVEL
)
5998 _Out_ PNDIS_STATUS Status
,
5999 _In_ NDIS_HANDLE NdisBindingHandle
);
6001 _IRQL_requires_(PASSIVE_LEVEL
)
6005 NdisCompleteBindAdapter(
6006 _In_ NDIS_HANDLE BindAdapterContext
,
6007 _In_ NDIS_STATUS Status
,
6008 _In_ NDIS_STATUS OpenStatus
);
6010 _IRQL_requires_(PASSIVE_LEVEL
)
6014 NdisCompleteUnbindAdapter(
6015 _In_ NDIS_HANDLE UnbindAdapterContext
,
6016 _In_ NDIS_STATUS Status
);
6021 NdisSetProtocolFilter(
6022 _At_(*Status
, _Must_inspect_result_
) _Out_ PNDIS_STATUS Status
,
6023 _In_ NDIS_HANDLE NdisBindingHandle
,
6024 _In_ RECEIVE_HANDLER ReceiveHandler
,
6025 _In_ RECEIVE_PACKET_HANDLER ReceivePacketHandler
,
6026 _In_ NDIS_MEDIUM Medium
,
6029 _In_ PUCHAR Pattern
);
6031 _IRQL_requires_max_(DISPATCH_LEVEL
)
6035 NdisGetDriverHandle(
6036 _In_ PNDIS_HANDLE NdisBindingHandle
,
6037 _Out_ PNDIS_HANDLE NdisDriverHandle
);
6039 _IRQL_requires_(PASSIVE_LEVEL
)
6043 NdisOpenProtocolConfiguration(
6044 _Out_ PNDIS_STATUS Status
,
6045 _Out_ PNDIS_HANDLE ConfigurationHandle
,
6046 _In_ PNDIS_STRING ProtocolSection
);
6048 _IRQL_requires_(PASSIVE_LEVEL
)
6052 NdisCompletePnPEvent(
6053 _In_ NDIS_STATUS Status
,
6054 _In_ NDIS_HANDLE NdisBindingHandle
,
6055 _In_ PNET_PNP_EVENT NetPnPEvent
);
6060 * IN PNDIS_PACKET Packet,
6063 #define NdisSetSendFlags(_Packet,_Flags)(_Packet)->Private.Flags = (_Flags)
6065 #define NdisQuerySendFlags(_Packet,_Flags) *(_Flags) = (_Packet)->Private.Flags
6067 _IRQL_requires_max_(DISPATCH_LEVEL
)
6072 _In_reads_(NumberOfPackets
) PNDIS_PACKET
*PacketsToReturn
,
6073 _In_ UINT NumberOfPackets
);
6075 _Must_inspect_result_
6076 _IRQL_requires_max_(DISPATCH_LEVEL
)
6080 NdisGetReceivedPacket(
6081 _In_ PNDIS_HANDLE NdisBindingHandle
,
6082 _In_ PNDIS_HANDLE MacContext
);
6084 _IRQL_requires_max_(DISPATCH_LEVEL
)
6088 NdisCancelSendPackets(
6089 _In_ NDIS_HANDLE NdisBindingHandle
,
6090 _In_ _Points_to_data_ PVOID CancelId
);
6092 _Must_inspect_result_
6093 _IRQL_requires_max_(DISPATCH_LEVEL
)
6097 NdisQueryPendingIOCount(
6098 _In_ _Points_to_data_ PVOID NdisBindingHandle
,
6099 _Out_ PULONG IoCount
);
6101 _IRQL_requires_(PASSIVE_LEVEL
)
6105 NdisRegisterProtocol(
6106 _Out_ PNDIS_STATUS Status
,
6107 _Out_ PNDIS_HANDLE NdisProtocolHandle
,
6108 _In_ PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics
,
6109 _In_ UINT CharacteristicsLength
);
6111 #endif /* NDIS_LEGACY_PROTOCOL */
6113 _IRQL_requires_max_(DISPATCH_LEVEL
)
6117 NdisGeneratePartialCancelId(VOID
);
6119 _IRQL_requires_(PASSIVE_LEVEL
)
6123 NdisReEnumerateProtocolBindings(
6124 _In_ NDIS_HANDLE NdisProtocolHandle
);
6129 NdisRegisterTdiCallBack(
6130 _In_ TDI_REGISTER_CALLBACK RegisterCallback
,
6131 _In_ TDI_PNP_HANDLER PnPHandler
);
6136 NdisDeregisterTdiCallBack(VOID
);
6138 /* Obsoleted in Windows XP */
6140 /* Prototypes for NDIS_MAC_CHARACTERISTICS */
6142 typedef NDIS_STATUS (*OPEN_ADAPTER_HANDLER
)(
6143 OUT PNDIS_STATUS OpenErrorStatus
,
6144 OUT NDIS_HANDLE
*MacBindingHandle
,
6145 OUT PUINT SelectedMediumIndex
,
6146 IN PNDIS_MEDIUM MediumArray
,
6147 IN UINT MediumArraySize
,
6148 IN NDIS_HANDLE NdisBindingContext
,
6149 IN NDIS_HANDLE MacAdapterContext
,
6150 IN UINT OpenOptions
,
6151 IN PSTRING AddressingInformation OPTIONAL
);
6153 typedef NDIS_STATUS (NTAPI
*CLOSE_ADAPTER_HANDLER
)(
6154 IN NDIS_HANDLE MacBindingHandle
);
6156 typedef NDIS_STATUS (NTAPI
*WAN_TRANSFER_DATA_HANDLER
)(
6159 typedef NDIS_STATUS (NTAPI
*QUERY_GLOBAL_STATISTICS_HANDLER
)(
6160 IN NDIS_HANDLE MacAdapterContext
,
6161 IN PNDIS_REQUEST NdisRequest
);
6163 typedef VOID (NTAPI
*UNLOAD_MAC_HANDLER
)(
6164 IN NDIS_HANDLE MacMacContext
);
6166 typedef NDIS_STATUS (NTAPI
*ADD_ADAPTER_HANDLER
)(
6167 IN NDIS_HANDLE MacMacContext
,
6168 IN NDIS_HANDLE WrapperConfigurationContext
,
6169 IN PNDIS_STRING AdapterName
);
6171 typedef VOID (*REMOVE_ADAPTER_HANDLER
)(
6172 IN NDIS_HANDLE MacAdapterContext
);
6174 typedef struct _NDIS_MAC_CHARACTERISTICS
{
6175 UCHAR MajorNdisVersion
;
6176 UCHAR MinorNdisVersion
;
6179 OPEN_ADAPTER_HANDLER OpenAdapterHandler
;
6180 CLOSE_ADAPTER_HANDLER CloseAdapterHandler
;
6181 SEND_HANDLER SendHandler
;
6182 TRANSFER_DATA_HANDLER TransferDataHandler
;
6183 RESET_HANDLER ResetHandler
;
6184 REQUEST_HANDLER RequestHandler
;
6185 QUERY_GLOBAL_STATISTICS_HANDLER QueryGlobalStatisticsHandler
;
6186 UNLOAD_MAC_HANDLER UnloadMacHandler
;
6187 ADD_ADAPTER_HANDLER AddAdapterHandler
;
6188 REMOVE_ADAPTER_HANDLER RemoveAdapterHandler
;
6190 } NDIS_MAC_CHARACTERISTICS
, *PNDIS_MAC_CHARACTERISTICS
;
6192 typedef NDIS_MAC_CHARACTERISTICS NDIS_WAN_MAC_CHARACTERISTICS
;
6193 typedef NDIS_WAN_MAC_CHARACTERISTICS
*PNDIS_WAN_MAC_CHARACTERISTICS
;