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
39 /* Helper macro to enable gcc's extension. */
40 #ifndef __GNU_EXTENSION
42 #define __GNU_EXTENSION __extension__
44 #define __GNU_EXTENSION
54 typedef int NDIS_STATUS
, *PNDIS_STATUS
;
58 #if !defined(_WINDEF_H)
59 typedef unsigned int UINT
, *PUINT
;
69 typedef enum _NET_DEVICE_POWER_STATE
{
70 NetDeviceStateUnspecified
= 0,
76 } NET_DEVICE_POWER_STATE
, *PNET_DEVICE_POWER_STATE
;
78 typedef enum _NET_PNP_EVENT_CODE
{
81 NetEventQueryRemoveDevice
,
82 NetEventCancelRemoveDevice
,
85 NetEventBindsComplete
,
86 NetEventPnPCapabilities
,
89 NetEventPortActivation
,
90 NetEventPortDeactivation
,
91 NetEventIMReEnableDevice
,
93 } NET_PNP_EVENT_CODE
, *PNET_PNP_EVENT_CODE
;
95 typedef struct _NET_PNP_EVENT
{
96 NET_PNP_EVENT_CODE NetEvent
;
99 ULONG_PTR NdisReserved
[4];
100 ULONG_PTR TransportReserved
[4];
101 ULONG_PTR TdiReserved
[4];
102 ULONG_PTR TdiClientReserved
[4];
103 } NET_PNP_EVENT
, *PNET_PNP_EVENT
;
105 #endif /* __NET_PNP__ */
107 #if !defined(NDIS_WRAPPER)
109 #if (defined(NDIS_MINIPORT_MAJOR_VERSION) || \
110 (defined(NDIS_MINIPORT_MINOR_VERSION)) || \
111 (defined(NDIS_PROTOCOL_MAJOR_VERSION)) || \
112 (defined(NDIS_PROTOCOL_MINOR_VERSION)) || \
113 (defined(NDIS_FILTER_MAJOR_VERSION)) || \
114 (defined(NDIS_FILTER_MINOR_VERSION)))
115 #error "Driver should not redefine NDIS reserved macros"
118 #if defined(NDIS_MINIPORT_DRIVER)
120 #if defined(NDIS620_MINIPORT)
121 #define NDIS_MINIPORT_MAJOR_VERSION 6
122 #define NDIS_MINIPORT_MINOR_VERSION 20
123 #elif defined(NDIS61_MINIPORT)
124 #define NDIS_MINIPORT_MAJOR_VERSION 6
125 #define NDIS_MINIPORT_MINOR_VERSION 1
126 #elif defined(NDIS60_MINIPORT)
127 #define NDIS_MINIPORT_MAJOR_VERSION 6
128 #define NDIS_MINIPORT_MINOR_VERSION 0
129 #elif defined(NDIS51_MINIPORT)
130 #define NDIS_MINIPORT_MAJOR_VERSION 5
131 #define NDIS_MINIPORT_MINOR_VERSION 1
132 #elif defined(NDIS50_MINIPORT)
133 #define NDIS_MINIPORT_MAJOR_VERSION 5
134 #define NDIS_MINIPORT_MINOR_VERSION 0
136 #error "Only NDIS miniport drivers with version >= 5 are supported"
139 #if ((NDIS_MINIPORT_MAJOR_VERSION == 6) && \
140 (NDIS_MINIPORT_MINOR_VERSION != 20) && \
141 (NDIS_MINIPORT_MINOR_VERSION != 1) && \
142 (NDIS_MINIPORT_MINOR_VERSION != 0))
143 #error "Invalid miniport major/minor version combination"
144 #elif ((NDIS_MINIPORT_MAJOR_VERSION == 5) && \
145 (NDIS_MINIPORT_MINOR_VERSION != 1) && \
146 (NDIS_MINIPORT_MINOR_VERSION != 0))
147 #error "Invalid miniport major/minor version combination"
150 #if (NDIS_MINIPORT_MAJOR_VERSION == 6) && \
151 ((NDIS_MINIPORT_MINOR_VERSION == 20 && NTDDI_VERSION < NTDDI_WIN7) || \
152 (NDIS_MINIPORT_MINOR_VERSION == 1 && NTDDI_VERSION < NTDDI_VISTA) || \
153 (NDIS_MINIPORT_MINOR_VERSION == 0 && NTDDI_VERSION < NTDDI_VISTA))
154 #error "Wrong NDIS/DDI version"
155 #elif ((NDIS_MINIPORT_MAJOR_VERSION == 5) && \
156 (((NDIS_MINIPORT_MINOR_VERSION == 1) && (NTDDI_VERSION < NTDDI_WINXP)) || \
157 ((NDIS_MINIPORT_MINOR_VERSION == 0) && (NTDDI_VERSION < NTDDI_WIN2K))))
158 #error "Wrong NDIS/DDI version"
162 #endif /* defined(NDIS_MINIPORT_DRIVER) */
165 #error "Only NDIS Protocol drivers version 4 or later are supported"
169 #define NDIS_PROTOCOL_MAJOR_VERSION 6
170 #define NDIS_PROTOCOL_MINOR_VERSION 20
171 #define NDIS_FILTER_MAJOR_VERSION 6
172 #define NDIS_FILTER_MINOR_VERSION 20
173 #elif defined(NDIS61)
174 #define NDIS_PROTOCOL_MAJOR_VERSION 6
175 #define NDIS_PROTOCOL_MINOR_VERSION 1
176 #define NDIS_FILTER_MAJOR_VERSION 6
177 #define NDIS_FILTER_MINOR_VERSION 1
178 #elif defined(NDIS60)
179 #define NDIS_PROTOCOL_MAJOR_VERSION 6
180 #define NDIS_PROTOCOL_MINOR_VERSION 0
181 #define NDIS_FILTER_MAJOR_VERSION 6
182 #define NDIS_FILTER_MINOR_VERSION 0
183 #elif defined(NDIS51)
184 #define NDIS_PROTOCOL_MAJOR_VERSION 5
185 #define NDIS_PROTOCOL_MINOR_VERSION 1
186 #elif defined(NDIS50)
187 #define NDIS_PROTOCOL_MAJOR_VERSION 5
188 #define NDIS_PROTOCOL_MINOR_VERSION 0
189 #elif defined(NDIS40)
190 #define NDIS_PROTOCOL_MAJOR_VERSION 4
191 #define NDIS_PROTOCOL_MINOR_VERSION 0
194 #if !defined(NDIS_MINIPORT_DRIVER) && !defined(NDIS_PROTOCOL_MAJOR_VERSION)
196 #define NDIS_PROTOCOL_MAJOR_VERSION 4
197 #define NDIS_PROTOCOL_MINOR_VERSION 0
200 #if defined(NDIS_FILTER_MAJOR_VERSION)
202 #if ((NDIS_FILTER_MAJOR_VERSION == 6) && \
203 (NDIS_FILTER_MINOR_VERSION != 20) && \
204 (NDIS_FILTER_MINOR_VERSION != 1) && \
205 (NDIS_FILTER_MINOR_VERSION != 0))
206 #error "Invalid Filter version"
209 #endif /* defined(NDIS_FILTER_MAJOR_VERSION) */
212 #if defined(NDIS_PROTOCOL_MAJOR_VERSION)
214 #if ((NDIS_PROTOCOL_MAJOR_VERSION == 6) && \
215 (NDIS_PROTOCOL_MINOR_VERSION != 20) && \
216 (NDIS_PROTOCOL_MINOR_VERSION != 1) && \
217 (NDIS_PROTOCOL_MINOR_VERSION != 0))
218 #error "Invalid Protocol version"
219 #elif ((NDIS_PROTOCOL_MAJOR_VERSION == 5) && \
220 (NDIS_PROTOCOL_MINOR_VERSION != 1) && (NDIS_PROTOCOL_MINOR_VERSION != 0))
221 #error "Invalid Protocol version"
222 #elif ((NDIS_PROTOCOL_MAJOR_VERSION == 4) && (NDIS_PROTOCOL_MINOR_VERSION != 0))
223 #error "Invalid Protocol major/minor version"
226 #if ((NDIS_PROTOCOL_MAJOR_VERSION == 6) && (NTDDI_VERSION < NTDDI_VISTA))
227 #error "Wrong NDIS/DDI version"
230 #endif /* defined(NDIS_PROTOCOL_MAJOR_VERSION) */
232 #endif /* !defined(NDIS_WRAPPER) */
234 #if !defined(NDIS_LEGACY_MINIPORT)
236 #if ((defined(NDIS_MINIPORT_DRIVER) && (NDIS_MINIPORT_MAJOR_VERSION < 6)) || NDIS_WRAPPER)
237 #define NDIS_LEGACY_MINIPORT 1
239 #define NDIS_LEGACY_MINIPORT 0
242 #endif /* !defined(NDIS_LEGACY_MINIPORT) */
244 #if !defined(NDIS_LEGACY_PROTOCOL)
246 #if ((defined(NDIS_PROTOCOL_MAJOR_VERSION) && (NDIS_PROTOCOL_MAJOR_VERSION < 6)) || NDIS_WRAPPER)
247 #define NDIS_LEGACY_PROTOCOL 1
249 #define NDIS_LEGACY_PROTOCOL 0
252 #endif /* !defined(NDIS_LEGACY_PROTOCOL) */
254 #if !defined(NDIS_LEGACY_DRIVER)
256 #if (NDIS_LEGACY_MINIPORT || NDIS_LEGACY_PROTOCOL || NDIS_WRAPPER)
257 #define NDIS_LEGACY_DRIVER 1
259 #define NDIS_LEGACY_DRIVER 0
262 #endif /* !defined(NDIS_LEGACY_DRIVER) */
264 #if !defined(NDIS_SUPPORT_NDIS6)
266 #if ((defined (NDIS_MINIPORT_MAJOR_VERSION) && (NDIS_MINIPORT_MAJOR_VERSION >= 6)) || \
267 (defined (NDIS60)) || NDIS_WRAPPER)
268 #define NDIS_SUPPORT_NDIS6 1
270 #define NDIS_SUPPORT_NDIS6 0
273 #endif /* !defined(NDIS_SUPPORT_NDIS6) */
275 #if !defined(NDIS_SUPPORT_NDIS61)
276 #if (((defined (NDIS_MINIPORT_MAJOR_VERSION) && (NDIS_MINIPORT_MAJOR_VERSION >= 6)) && \
277 (defined (NDIS_MINIPORT_MINOR_VERSION) && (NDIS_MINIPORT_MINOR_VERSION >= 1))) || \
278 (defined (NDIS61)) || NDIS_WRAPPER)
279 #define NDIS_SUPPORT_NDIS61 1
281 #define NDIS_SUPPORT_NDIS61 0
283 #endif // !defined(NDIS_SUPPORT_NDIS61)
285 #if !defined(NDIS_SUPPORT_NDIS620)
287 #if (((defined (NDIS_MINIPORT_MAJOR_VERSION) && (NDIS_MINIPORT_MAJOR_VERSION >= 6)) && \
288 (defined (NDIS_MINIPORT_MINOR_VERSION) && (NDIS_MINIPORT_MINOR_VERSION >= 20))) || \
289 (defined (NDIS620)) || NDIS_WRAPPER)
290 #define NDIS_SUPPORT_NDIS620 1
292 #define NDIS_SUPPORT_NDIS620 0
295 #endif /* !defined(NDIS_SUPPORT_NDIS620) */
297 #if (NDIS_SUPPORT_NDIS620)
298 #undef NDIS_SUPPORT_NDIS61
299 #define NDIS_SUPPORT_NDIS61 1
302 #if (NDIS_SUPPORT_NDIS61)
303 #undef NDIS_SUPPORT_NDIS6
304 #define NDIS_SUPPORT_NDIS6 1
307 #if defined(NDIS61_MINIPORT) || defined(NDIS60_MINIPORT) || defined(NDIS61) || \
308 defined(NDIS60) || defined(NDIS_WRAPPER) || defined(NDIS_LEGACY_DRIVER)
309 #define NDIS_SUPPORT_60_COMPATIBLE_API 1
311 #define NDIS_SUPPORT_60_COMPATIBLE_API 0
314 #if defined(NDIS_WRAPPER)
317 #define NDISAPI DECLSPEC_IMPORT
320 typedef PVOID QUEUED_CLOSE
; //FIXME : Doesn't exist in public headers
322 typedef struct _X_FILTER FDDI_FILTER
, *PFDDI_FILTER
;
323 typedef struct _X_FILTER TR_FILTER
, *PTR_FILTER
;
324 typedef struct _X_FILTER NULL_FILTER
, *PNULL_FILTER
;
326 typedef struct _NDIS_MINIPORT_BLOCK NDIS_MINIPORT_BLOCK
, *PNDIS_MINIPORT_BLOCK
;
328 typedef struct _REFERENCE
{
330 USHORT ReferenceCount
;
332 } REFERENCE
, *PREFERENCE
;
334 /* NDIS base types */
336 typedef struct _NDIS_SPIN_LOCK
{
339 } NDIS_SPIN_LOCK
, *PNDIS_SPIN_LOCK
;
341 typedef struct _NDIS_EVENT
{
343 } NDIS_EVENT
, *PNDIS_EVENT
;
345 typedef PVOID NDIS_HANDLE
, *PNDIS_HANDLE
;
347 typedef ANSI_STRING NDIS_ANSI_STRING
, *PNDIS_ANSI_STRING
;
348 typedef UNICODE_STRING NDIS_STRING
, *PNDIS_STRING
;
350 typedef MDL NDIS_BUFFER
, *PNDIS_BUFFER
;
352 /* NDIS_STATUS constants */
353 #define NDIS_STATUS_SUCCESS ((NDIS_STATUS)STATUS_SUCCESS)
354 #define NDIS_STATUS_PENDING ((NDIS_STATUS)STATUS_PENDING)
355 #define NDIS_STATUS_NOT_RECOGNIZED ((NDIS_STATUS)0x00010001L)
356 #define NDIS_STATUS_NOT_COPIED ((NDIS_STATUS)0x00010002L)
357 #define NDIS_STATUS_NOT_ACCEPTED ((NDIS_STATUS)0x00010003L)
358 #define NDIS_STATUS_CALL_ACTIVE ((NDIS_STATUS)0x00010007L)
359 #define NDIS_STATUS_INDICATION_REQUIRED ((NDIS_STATUS)STATUS_NDIS_INDICATION_REQUIRED)
360 #define NDIS_STATUS_ONLINE ((NDIS_STATUS)0x40010003L)
361 #define NDIS_STATUS_RESET_START ((NDIS_STATUS)0x40010004L)
362 #define NDIS_STATUS_RESET_END ((NDIS_STATUS)0x40010005L)
363 #define NDIS_STATUS_RING_STATUS ((NDIS_STATUS)0x40010006L)
364 #define NDIS_STATUS_CLOSED ((NDIS_STATUS)0x40010007L)
365 #define NDIS_STATUS_WAN_LINE_UP ((NDIS_STATUS)0x40010008L)
366 #define NDIS_STATUS_WAN_LINE_DOWN ((NDIS_STATUS)0x40010009L)
367 #define NDIS_STATUS_WAN_FRAGMENT ((NDIS_STATUS)0x4001000AL)
368 #define NDIS_STATUS_MEDIA_CONNECT ((NDIS_STATUS)0x4001000BL)
369 #define NDIS_STATUS_MEDIA_DISCONNECT ((NDIS_STATUS)0x4001000CL)
370 #define NDIS_STATUS_HARDWARE_LINE_UP ((NDIS_STATUS)0x4001000DL)
371 #define NDIS_STATUS_HARDWARE_LINE_DOWN ((NDIS_STATUS)0x4001000EL)
372 #define NDIS_STATUS_INTERFACE_UP ((NDIS_STATUS)0x4001000FL)
373 #define NDIS_STATUS_INTERFACE_DOWN ((NDIS_STATUS)0x40010010L)
374 #define NDIS_STATUS_MEDIA_BUSY ((NDIS_STATUS)0x40010011L)
375 #define NDIS_STATUS_MEDIA_SPECIFIC_INDICATION ((NDIS_STATUS)0x40010012L)
376 #define NDIS_STATUS_WW_INDICATION NDIS_STATUS_MEDIA_SPECIFIC_INDICATION
377 #define NDIS_STATUS_LINK_SPEED_CHANGE ((NDIS_STATUS)0x40010013L)
378 #define NDIS_STATUS_WAN_GET_STATS ((NDIS_STATUS)0x40010014L)
379 #define NDIS_STATUS_WAN_CO_FRAGMENT ((NDIS_STATUS)0x40010015L)
380 #define NDIS_STATUS_WAN_CO_LINKPARAMS ((NDIS_STATUS)0x40010016L)
381 #if NDIS_SUPPORT_NDIS6
382 #define NDIS_STATUS_LINK_STATE ((NDIS_STATUS)0x40010017L)
383 #define NDIS_STATUS_NETWORK_CHANGE ((NDIS_STATUS)0x40010018L)
384 #define NDIS_STATUS_MEDIA_SPECIFIC_INDICATION_EX ((NDIS_STATUS)0x40010019L)
385 #define NDIS_STATUS_PORT_STATE ((NDIS_STATUS)0x40010022L)
386 #define NDIS_STATUS_OPER_STATUS ((NDIS_STATUS)0x40010023L)
387 #define NDIS_STATUS_PACKET_FILTER ((NDIS_STATUS)0x40010024L)
388 #endif /* NDIS_SUPPORT_NDIS6 */
389 #define NDIS_STATUS_WAN_CO_MTULINKPARAMS ((NDIS_STATUS)0x40010025L)
391 #if NDIS_SUPPORT_NDIS6
393 #define NDIS_STATUS_IP_OPER_STATUS ((NDIS_STATUS)0x40010026L)
395 #define NDIS_STATUS_OFFLOAD_PAUSE ((NDIS_STATUS)0x40020001L)
396 #define NDIS_STATUS_UPLOAD_ALL ((NDIS_STATUS)0x40020002L)
397 #define NDIS_STATUS_OFFLOAD_RESUME ((NDIS_STATUS)0x40020003L)
398 #define NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS ((NDIS_STATUS)0x40020004L)
399 #define NDIS_STATUS_OFFLOAD_STATE_INVALID ((NDIS_STATUS)0x40020005L)
400 #define NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG ((NDIS_STATUS)0x40020006L)
401 #define NDIS_STATUS_TASK_OFFLOAD_HARDWARE_CAPABILITIES ((NDIS_STATUS)0x40020007L)
402 #define NDIS_STATUS_OFFLOAD_ENCASPULATION_CHANGE ((NDIS_STATUS)0x40020008L)
403 #define NDIS_STATUS_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES ((NDIS_STATUS)0x4002000BL)
405 #if (NDIS_SUPPORT_NDIS61)
406 #define NDIS_STATUS_HD_SPLIT_CURRENT_CONFIG ((NDIS_STATUS)0x4002000CL)
409 #if (NDIS_SUPPORT_NDIS620)
410 #define NDIS_STATUS_RECEIVE_QUEUE_STATE ((NDIS_STATUS)0x4002000DL)
413 #define NDIS_STATUS_OFFLOAD_IM_RESERVED1 ((NDIS_STATUS)0x40020100L)
414 #define NDIS_STATUS_OFFLOAD_IM_RESERVED2 ((NDIS_STATUS)0x40020101L)
415 #define NDIS_STATUS_OFFLOAD_IM_RESERVED3 ((NDIS_STATUS)0x40020102L)
417 #define NDIS_STATUS_DOT11_SCAN_CONFIRM ((NDIS_STATUS)0x40030000L)
418 #define NDIS_STATUS_DOT11_MPDU_MAX_LENGTH_CHANGED ((NDIS_STATUS)0x40030001L)
419 #define NDIS_STATUS_DOT11_ASSOCIATION_START ((NDIS_STATUS)0x40030002L)
420 #define NDIS_STATUS_DOT11_ASSOCIATION_COMPLETION ((NDIS_STATUS)0x40030003L)
421 #define NDIS_STATUS_DOT11_CONNECTION_START ((NDIS_STATUS)0x40030004L)
422 #define NDIS_STATUS_DOT11_CONNECTION_COMPLETION ((NDIS_STATUS)0x40030005L)
423 #define NDIS_STATUS_DOT11_ROAMING_START ((NDIS_STATUS)0x40030006L)
424 #define NDIS_STATUS_DOT11_ROAMING_COMPLETION ((NDIS_STATUS)0x40030007L)
425 #define NDIS_STATUS_DOT11_DISASSOCIATION ((NDIS_STATUS)0x40030008L)
426 #define NDIS_STATUS_DOT11_TKIPMIC_FAILURE ((NDIS_STATUS)0x40030009L)
427 #define NDIS_STATUS_DOT11_PMKID_CANDIDATE_LIST ((NDIS_STATUS)0x4003000AL)
428 #define NDIS_STATUS_DOT11_PHY_STATE_CHANGED ((NDIS_STATUS)0x4003000BL)
429 #define NDIS_STATUS_DOT11_LINK_QUALITY ((NDIS_STATUS)0x4003000CL)
430 #define NDIS_STATUS_DOT11_INCOMING_ASSOC_STARTED ((NDIS_STATUS)0x4003000DL)
431 #define NDIS_STATUS_DOT11_INCOMING_ASSOC_REQUEST_RECEIVED ((NDIS_STATUS)0x4003000EL)
432 #define NDIS_STATUS_DOT11_INCOMING_ASSOC_COMPLETION ((NDIS_STATUS)0x4003000FL)
433 #define NDIS_STATUS_DOT11_STOP_AP ((NDIS_STATUS)0x40030010L)
434 #define NDIS_STATUS_DOT11_PHY_FREQUENCY_ADOPTED ((NDIS_STATUS)0x40030011L)
435 #define NDIS_STATUS_DOT11_CAN_SUSTAIN_AP ((NDIS_STATUS)0x40030012L)
437 #define NDIS_STATUS_WWAN_DEVICE_CAPS ((NDIS_STATUS)0x40041000)
438 #define NDIS_STATUS_WWAN_READY_INFO ((NDIS_STATUS)0x40041001)
439 #define NDIS_STATUS_WWAN_RADIO_STATE ((NDIS_STATUS)0x40041002)
440 #define NDIS_STATUS_WWAN_PIN_INFO ((NDIS_STATUS)0x40041003)
441 #define NDIS_STATUS_WWAN_PIN_LIST ((NDIS_STATUS)0x40041004)
442 #define NDIS_STATUS_WWAN_HOME_PROVIDER ((NDIS_STATUS)0x40041005)
443 #define NDIS_STATUS_WWAN_PREFERRED_PROVIDERS ((NDIS_STATUS)0x40041006)
444 #define NDIS_STATUS_WWAN_VISIBLE_PROVIDERS ((NDIS_STATUS)0x40041007)
445 #define NDIS_STATUS_WWAN_REGISTER_STATE ((NDIS_STATUS)0x40041008)
446 #define NDIS_STATUS_WWAN_PACKET_SERVICE ((NDIS_STATUS)0x40041009)
447 #define NDIS_STATUS_WWAN_SIGNAL_STATE ((NDIS_STATUS)0x4004100a)
448 #define NDIS_STATUS_WWAN_CONTEXT_STATE ((NDIS_STATUS)0x4004100b)
449 #define NDIS_STATUS_WWAN_PROVISIONED_CONTEXTS ((NDIS_STATUS)0x4004100c)
450 #define NDIS_STATUS_WWAN_SERVICE_ACTIVATION ((NDIS_STATUS)0x4004100d)
451 #define NDIS_STATUS_WWAN_SMS_CONFIGURATION ((NDIS_STATUS)0x4004100e)
452 #define NDIS_STATUS_WWAN_SMS_RECEIVE ((NDIS_STATUS)0x4004100f)
453 #define NDIS_STATUS_WWAN_SMS_SEND ((NDIS_STATUS)0x40041010)
454 #define NDIS_STATUS_WWAN_SMS_DELETE ((NDIS_STATUS)0x40041011)
455 #define NDIS_STATUS_WWAN_SMS_STATUS ((NDIS_STATUS)0x40041012)
456 #define NDIS_STATUS_WWAN_DNS_ADDRESS ((NDIS_STATUS)0x40041013)
458 #define NDIS_STATUS_WWAN_VENDOR_SPECIFIC ((NDIS_STATUS)0x40043000)
460 #endif /* NDIS_SUPPORT_NDIS6 */
462 #if (NDIS_SUPPORT_NDIS620)
463 #define NDIS_STATUS_PM_WOL_PATTERN_REJECTED ((NDIS_STATUS)0x40030051L)
464 #define NDIS_STATUS_PM_OFFLOAD_REJECTED ((NDIS_STATUS)0x40030052L)
465 #define NDIS_STATUS_PM_CAPABILITIES_CHANGE ((NDIS_STATUS)0x40030053L)
468 #define NDIS_STATUS_NOT_RESETTABLE ((NDIS_STATUS)0x80010001L)
469 #define NDIS_STATUS_SOFT_ERRORS ((NDIS_STATUS)0x80010003L)
470 #define NDIS_STATUS_HARD_ERRORS ((NDIS_STATUS)0x80010004L)
471 #define NDIS_STATUS_BUFFER_OVERFLOW ((NDIS_STATUS)STATUS_BUFFER_OVERFLOW)
472 #define NDIS_STATUS_FAILURE ((NDIS_STATUS)STATUS_UNSUCCESSFUL)
473 #define NDIS_STATUS_RESOURCES ((NDIS_STATUS)STATUS_INSUFFICIENT_RESOURCES)
474 #define NDIS_STATUS_CLOSING ((NDIS_STATUS)0xC0010002L)
475 #define NDIS_STATUS_BAD_VERSION ((NDIS_STATUS)0xC0010004L)
476 #define NDIS_STATUS_BAD_CHARACTERISTICS ((NDIS_STATUS)0xC0010005L)
477 #define NDIS_STATUS_ADAPTER_NOT_FOUND ((NDIS_STATUS)0xC0010006L)
478 #define NDIS_STATUS_OPEN_FAILED ((NDIS_STATUS)0xC0010007L)
479 #define NDIS_STATUS_DEVICE_FAILED ((NDIS_STATUS)0xC0010008L)
480 #define NDIS_STATUS_MULTICAST_FULL ((NDIS_STATUS)0xC0010009L)
481 #define NDIS_STATUS_MULTICAST_EXISTS ((NDIS_STATUS)0xC001000AL)
482 #define NDIS_STATUS_MULTICAST_NOT_FOUND ((NDIS_STATUS)0xC001000BL)
483 #define NDIS_STATUS_REQUEST_ABORTED ((NDIS_STATUS)0xC001000CL)
484 #define NDIS_STATUS_RESET_IN_PROGRESS ((NDIS_STATUS)0xC001000DL)
485 #define NDIS_STATUS_CLOSING_INDICATING ((NDIS_STATUS)0xC001000EL)
486 #define NDIS_STATUS_NOT_SUPPORTED ((NDIS_STATUS)STATUS_NOT_SUPPORTED)
487 #define NDIS_STATUS_INVALID_PACKET ((NDIS_STATUS)0xC001000FL)
488 #define NDIS_STATUS_OPEN_LIST_FULL ((NDIS_STATUS)0xC0010010L)
489 #define NDIS_STATUS_ADAPTER_NOT_READY ((NDIS_STATUS)0xC0010011L)
490 #define NDIS_STATUS_ADAPTER_NOT_OPEN ((NDIS_STATUS)0xC0010012L)
491 #define NDIS_STATUS_NOT_INDICATING ((NDIS_STATUS)0xC0010013L)
492 #define NDIS_STATUS_INVALID_LENGTH ((NDIS_STATUS)0xC0010014L)
493 #define NDIS_STATUS_INVALID_DATA ((NDIS_STATUS)0xC0010015L)
494 #define NDIS_STATUS_BUFFER_TOO_SHORT ((NDIS_STATUS)0xC0010016L)
495 #define NDIS_STATUS_INVALID_OID ((NDIS_STATUS)0xC0010017L)
496 #define NDIS_STATUS_ADAPTER_REMOVED ((NDIS_STATUS)0xC0010018L)
497 #define NDIS_STATUS_UNSUPPORTED_MEDIA ((NDIS_STATUS)0xC0010019L)
498 #define NDIS_STATUS_GROUP_ADDRESS_IN_USE ((NDIS_STATUS)0xC001001AL)
499 #define NDIS_STATUS_FILE_NOT_FOUND ((NDIS_STATUS)0xC001001BL)
500 #define NDIS_STATUS_ERROR_READING_FILE ((NDIS_STATUS)0xC001001CL)
501 #define NDIS_STATUS_ALREADY_MAPPED ((NDIS_STATUS)0xC001001DL)
502 #define NDIS_STATUS_RESOURCE_CONFLICT ((NDIS_STATUS)0xC001001EL)
503 #define NDIS_STATUS_NO_CABLE ((NDIS_STATUS)0xC001001FL)
505 #define NDIS_STATUS_INVALID_SAP ((NDIS_STATUS)0xC0010020L)
506 #define NDIS_STATUS_SAP_IN_USE ((NDIS_STATUS)0xC0010021L)
507 #define NDIS_STATUS_INVALID_ADDRESS ((NDIS_STATUS)0xC0010022L)
508 #define NDIS_STATUS_VC_NOT_ACTIVATED ((NDIS_STATUS)0xC0010023L)
509 #define NDIS_STATUS_DEST_OUT_OF_ORDER ((NDIS_STATUS)0xC0010024L)
510 #define NDIS_STATUS_VC_NOT_AVAILABLE ((NDIS_STATUS)0xC0010025L)
511 #define NDIS_STATUS_CELLRATE_NOT_AVAILABLE ((NDIS_STATUS)0xC0010026L)
512 #define NDIS_STATUS_INCOMPATABLE_QOS ((NDIS_STATUS)0xC0010027L)
513 #define NDIS_STATUS_AAL_PARAMS_UNSUPPORTED ((NDIS_STATUS)0xC0010028L)
514 #define NDIS_STATUS_NO_ROUTE_TO_DESTINATION ((NDIS_STATUS)0xC0010029L)
516 #define NDIS_STATUS_TOKEN_RING_OPEN_ERROR ((NDIS_STATUS)0xC0011000L)
517 #define NDIS_STATUS_INVALID_DEVICE_REQUEST ((NDIS_STATUS)STATUS_INVALID_DEVICE_REQUEST)
518 #define NDIS_STATUS_NETWORK_UNREACHABLE ((NDIS_STATUS)STATUS_NETWORK_UNREACHABLE)
520 #if NDIS_SUPPORT_NDIS6
522 #define NDIS_STATUS_SEND_ABORTED ((NDIS_STATUS)STATUS_NDIS_REQUEST_ABORTED)
523 #define NDIS_STATUS_PAUSED ((NDIS_STATUS)STATUS_NDIS_PAUSED)
524 #define NDIS_STATUS_INTERFACE_NOT_FOUND ((NDIS_STATUS)STATUS_NDIS_INTERFACE_NOT_FOUND)
525 #define NDIS_STATUS_INVALID_PARAMETER ((NDIS_STATUS)STATUS_INVALID_PARAMETER)
526 #define NDIS_STATUS_UNSUPPORTED_REVISION ((NDIS_STATUS)STATUS_NDIS_UNSUPPORTED_REVISION)
527 #define NDIS_STATUS_INVALID_PORT ((NDIS_STATUS)STATUS_NDIS_INVALID_PORT)
528 #define NDIS_STATUS_INVALID_PORT_STATE ((NDIS_STATUS)STATUS_NDIS_INVALID_PORT_STATE)
529 #define NDIS_STATUS_INVALID_STATE ((NDIS_STATUS)STATUS_INVALID_DEVICE_STATE)
530 #define NDIS_STATUS_MEDIA_DISCONNECTED ((NDIS_STATUS)STATUS_NDIS_MEDIA_DISCONNECTED)
531 #define NDIS_STATUS_LOW_POWER_STATE ((NDIS_STATUS)STATUS_NDIS_LOW_POWER_STATE)
532 #define NDIS_STATUS_DOT11_AUTO_CONFIG_ENABLED ((NDIS_STATUS)STATUS_NDIS_DOT11_AUTO_CONFIG_ENABLED)
533 #define NDIS_STATUS_DOT11_MEDIA_IN_USE ((NDIS_STATUS)STATUS_NDIS_DOT11_MEDIA_IN_USE)
534 #define NDIS_STATUS_DOT11_POWER_STATE_INVALID ((NDIS_STATUS)STATUS_NDIS_DOT11_POWER_STATE_INVALID)
535 #define NDIS_STATUS_UPLOAD_IN_PROGRESS ((NDIS_STATUS)0xC0231001L)
536 #define NDIS_STATUS_REQUEST_UPLOAD ((NDIS_STATUS)0xC0231002L)
537 #define NDIS_STATUS_UPLOAD_REQUESTED ((NDIS_STATUS)0xC0231003L)
538 #define NDIS_STATUS_OFFLOAD_TCP_ENTRIES ((NDIS_STATUS)0xC0231004L)
539 #define NDIS_STATUS_OFFLOAD_PATH_ENTRIES ((NDIS_STATUS)0xC0231005L)
540 #define NDIS_STATUS_OFFLOAD_NEIGHBOR_ENTRIES ((NDIS_STATUS)0xC0231006L)
541 #define NDIS_STATUS_OFFLOAD_IP_ADDRESS_ENTRIES ((NDIS_STATUS)0xC0231007L)
542 #define NDIS_STATUS_OFFLOAD_HW_ADDRESS_ENTRIES ((NDIS_STATUS)0xC0231008L)
543 #define NDIS_STATUS_OFFLOAD_VLAN_ENTRIES ((NDIS_STATUS)0xC0231009L)
544 #define NDIS_STATUS_OFFLOAD_TCP_XMIT_BUFFER ((NDIS_STATUS)0xC023100AL)
545 #define NDIS_STATUS_OFFLOAD_TCP_RCV_BUFFER ((NDIS_STATUS)0xC023100BL)
546 #define NDIS_STATUS_OFFLOAD_TCP_RCV_WINDOW ((NDIS_STATUS)0xC023100CL)
547 #define NDIS_STATUS_OFFLOAD_VLAN_MISMATCH ((NDIS_STATUS)0xC023100DL)
548 #define NDIS_STATUS_OFFLOAD_DATA_NOT_ACCEPTED ((NDIS_STATUS)0xC023100EL)
549 #define NDIS_STATUS_OFFLOAD_POLICY ((NDIS_STATUS)0xC023100FL)
550 #define NDIS_STATUS_OFFLOAD_DATA_PARTIALLY_ACCEPTED ((NDIS_STATUS)0xC0231010L)
551 #define NDIS_STATUS_OFFLOAD_REQUEST_RESET ((NDIS_STATUS)0xC0231011L)
553 #if NDIS_SUPPORT_NDIS620
554 #define NDIS_STATUS_PM_WOL_PATTERN_LIST_FULL ((NDIS_STATUS)STATUS_NDIS_PM_WOL_PATTERN_LIST_FULL)
555 #define NDIS_STATUS_PM_PROTOCOL_OFFLOAD_LIST_FULL ((NDIS_STATUS)STATUS_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL)
558 #endif /* NDIS_SUPPORT_NDIS6 */
560 #if (NDIS_SUPPORT_NDIS620)
561 #define NDIS_STATUS_OFFLOAD_CONNECTION_REJECTED ((NDIS_STATUS)STATUS_NDIS_OFFLOAD_CONNECTION_REJECTED)
564 /* NDIS error codes for error logging */
566 #define NDIS_ERROR_CODE ULONG
568 #define NDIS_ERROR_CODE_RESOURCE_CONFLICT EVENT_NDIS_RESOURCE_CONFLICT
569 #define NDIS_ERROR_CODE_OUT_OF_RESOURCES EVENT_NDIS_OUT_OF_RESOURCE
570 #define NDIS_ERROR_CODE_HARDWARE_FAILURE EVENT_NDIS_HARDWARE_FAILURE
571 #define NDIS_ERROR_CODE_ADAPTER_NOT_FOUND EVENT_NDIS_ADAPTER_NOT_FOUND
572 #define NDIS_ERROR_CODE_INTERRUPT_CONNECT EVENT_NDIS_INTERRUPT_CONNECT
573 #define NDIS_ERROR_CODE_DRIVER_FAILURE EVENT_NDIS_DRIVER_FAILURE
574 #define NDIS_ERROR_CODE_BAD_VERSION EVENT_NDIS_BAD_VERSION
575 #define NDIS_ERROR_CODE_TIMEOUT EVENT_NDIS_TIMEOUT
576 #define NDIS_ERROR_CODE_NETWORK_ADDRESS EVENT_NDIS_NETWORK_ADDRESS
577 #define NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION EVENT_NDIS_UNSUPPORTED_CONFIGURATION
578 #define NDIS_ERROR_CODE_INVALID_VALUE_FROM_ADAPTER EVENT_NDIS_INVALID_VALUE_FROM_ADAPTER
579 #define NDIS_ERROR_CODE_MISSING_CONFIGURATION_PARAMETER EVENT_NDIS_MISSING_CONFIGURATION_PARAMETER
580 #define NDIS_ERROR_CODE_BAD_IO_BASE_ADDRESS EVENT_NDIS_BAD_IO_BASE_ADDRESS
581 #define NDIS_ERROR_CODE_RECEIVE_SPACE_SMALL EVENT_NDIS_RECEIVE_SPACE_SMALL
582 #define NDIS_ERROR_CODE_ADAPTER_DISABLED EVENT_NDIS_ADAPTER_DISABLED
584 /* Memory allocation flags. Used by Ndis[Allocate|Free]Memory */
585 #define NDIS_MEMORY_CONTIGUOUS 0x00000001
586 #define NDIS_MEMORY_NONCACHED 0x00000002
588 /* NIC attribute flags. Used by NdisMSetAttributes(Ex) */
589 #define NDIS_ATTRIBUTE_IGNORE_PACKET_TIMEOUT 0x00000001
590 #define NDIS_ATTRIBUTE_IGNORE_REQUEST_TIMEOUT 0x00000002
591 #define NDIS_ATTRIBUTE_IGNORE_TOKEN_RING_ERRORS 0x00000004
592 #define NDIS_ATTRIBUTE_BUS_MASTER 0x00000008
593 #define NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER 0x00000010
594 #define NDIS_ATTRIBUTE_DESERIALIZE 0x00000020
595 #define NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND 0x00000040
596 #define NDIS_ATTRIBUTE_SURPRISE_REMOVE_OK 0x00000080
597 #define NDIS_ATTRIBUTE_NOT_CO_NDIS 0x00000100
598 #define NDIS_ATTRIBUTE_USES_SAFE_BUFFER_APIS 0x00000200
602 #if NDIS_SUPPORT_60_COMPATIBLE_API
604 typedef union _NDIS_RW_LOCK_REFCOUNT
{
607 } NDIS_RW_LOCK_REFCOUNT
;
609 typedef struct _NDIS_RW_LOCK
{
610 __MINGW_EXTENSION
union {
611 __MINGW_EXTENSION
struct {
617 __MINGW_EXTENSION
union {
618 NDIS_RW_LOCK_REFCOUNT RefCount
[MAXIMUM_PROCESSORS
];
619 ULONG RefCountEx
[sizeof(NDIS_RW_LOCK_REFCOUNT
)/sizeof(ULONG
) * MAXIMUM_PROCESSORS
];
620 __MINGW_EXTENSION
struct {
621 KSPIN_LOCK RefCountLock
;
622 volatile ULONG SharedRefCount
;
623 volatile BOOLEAN WriterWaiting
;
626 } NDIS_RW_LOCK
, *PNDIS_RW_LOCK
;
628 typedef struct _LOCK_STATE
{
631 } LOCK_STATE
, *PLOCK_STATE
;
633 #endif /* NDIS_SUPPORT_60_COMPATIBLE_API */
638 (NTAPI NDIS_TIMER_FUNCTION
)(
639 IN PVOID SystemSpecific1
,
640 IN PVOID FunctionContext
,
641 IN PVOID SystemSpecific2
,
642 IN PVOID SystemSpecific3
);
643 typedef NDIS_TIMER_FUNCTION
*PNDIS_TIMER_FUNCTION
;
645 typedef struct _NDIS_TIMER
{
648 } NDIS_TIMER
, *PNDIS_TIMER
;
652 typedef CM_MCA_POS_DATA NDIS_MCA_POS_DATA
, *PNDIS_MCA_POS_DATA
;
653 typedef CM_EISA_SLOT_INFORMATION NDIS_EISA_SLOT_INFORMATION
, *PNDIS_EISA_SLOT_INFORMATION
;
654 typedef CM_EISA_FUNCTION_INFORMATION NDIS_EISA_FUNCTION_INFORMATION
, *PNDIS_EISA_FUNCTION_INFORMATION
;
655 typedef CM_PARTIAL_RESOURCE_LIST NDIS_RESOURCE_LIST
, *PNDIS_RESOURCE_LIST
;
658 #define READABLE_LOCAL_CLOCK 0x00000001
659 #define CLOCK_NETWORK_DERIVED 0x00000002
660 #define CLOCK_PRECISION 0x00000004
661 #define RECEIVE_TIME_INDICATION_CAPABLE 0x00000008
662 #define TIMED_SEND_CAPABLE 0x00000010
663 #define TIME_STAMP_CAPABLE 0x00000020
665 /* NDIS packet filter bits (OID_GEN_CURRENT_PACKET_FILTER) */
666 #define NDIS_PACKET_TYPE_DIRECTED 0x00000001
667 #define NDIS_PACKET_TYPE_MULTICAST 0x00000002
668 #define NDIS_PACKET_TYPE_ALL_MULTICAST 0x00000004
669 #define NDIS_PACKET_TYPE_BROADCAST 0x00000008
670 #define NDIS_PACKET_TYPE_SOURCE_ROUTING 0x00000010
671 #define NDIS_PACKET_TYPE_PROMISCUOUS 0x00000020
672 #define NDIS_PACKET_TYPE_SMT 0x00000040
673 #define NDIS_PACKET_TYPE_ALL_LOCAL 0x00000080
674 #define NDIS_PACKET_TYPE_GROUP 0x00001000
675 #define NDIS_PACKET_TYPE_ALL_FUNCTIONAL 0x00002000
676 #define NDIS_PACKET_TYPE_FUNCTIONAL 0x00004000
677 #define NDIS_PACKET_TYPE_MAC_FRAME 0x00008000
679 /* NDIS protocol option bits (OID_GEN_PROTOCOL_OPTIONS) */
680 #define NDIS_PROT_OPTION_ESTIMATED_LENGTH 0x00000001
681 #define NDIS_PROT_OPTION_NO_LOOPBACK 0x00000002
682 #define NDIS_PROT_OPTION_NO_RSVD_ON_RCVPKT 0x00000004
684 /* NDIS MAC option bits (OID_GEN_MAC_OPTIONS) */
685 #define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA 0x00000001
686 #define NDIS_MAC_OPTION_RECEIVE_SERIALIZED 0x00000002
687 #define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND 0x00000004
688 #define NDIS_MAC_OPTION_NO_LOOPBACK 0x00000008
689 #define NDIS_MAC_OPTION_FULL_DUPLEX 0x00000010
690 #define NDIS_MAC_OPTION_EOTX_INDICATION 0x00000020
691 #define NDIS_MAC_OPTION_8021P_PRIORITY 0x00000040
692 #define NDIS_MAC_OPTION_RESERVED 0x80000000
694 #define NDIS_GUID_TO_OID 0x00000001
695 #define NDIS_GUID_TO_STATUS 0x00000002
696 #define NDIS_GUID_ANSI_STRING 0x00000004
697 #define NDIS_GUID_UNICODE_STRING 0x00000008
698 #define NDIS_GUID_ARRAY 0x00000010
700 #if NDIS_LEGACY_DRIVER
702 /* NDIS_PACKET_PRIVATE.Flags constants */
703 #define fPACKET_WRAPPER_RESERVED 0x3f
704 #define fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO 0x40
705 #define fPACKET_ALLOCATED_BY_NDIS 0x80
707 #define NDIS_FLAGS_PROTOCOL_ID_MASK 0x0000000f
708 #define NDIS_FLAGS_MULTICAST_PACKET 0x00000010
709 #define NDIS_FLAGS_RESERVED2 0x00000020
710 #define NDIS_FLAGS_RESERVED3 0x00000040
711 #define NDIS_FLAGS_DONT_LOOPBACK 0x00000080
712 #define NDIS_FLAGS_IS_LOOPBACK_PACKET 0x00000100
713 #define NDIS_FLAGS_LOOPBACK_ONLY 0x00000200
714 #define NDIS_FLAGS_RESERVED4 0x00000400
715 #define NDIS_FLAGS_DOUBLE_BUFFERED 0x00000800
716 #define NDIS_FLAGS_SENT_AT_DPC 0x00001000
717 #define NDIS_FLAGS_USES_SG_BUFFER_LIST 0x00002000
718 #define NDIS_FLAGS_USES_ORIGINAL_PACKET 0x00004000
719 #define NDIS_FLAGS_PADDED 0x00010000
720 #define NDIS_FLAGS_XLATE_AT_TOP 0x00020000
722 typedef NDIS_HANDLE PNDIS_PACKET_POOL
;
724 typedef struct _NDIS_PACKET_PRIVATE
{
729 PNDIS_PACKET_POOL Pool
;
733 UCHAR NdisPacketFlags
;
734 USHORT NdisPacketOobOffset
;
735 } NDIS_PACKET_PRIVATE
, *PNDIS_PACKET_PRIVATE
;
737 typedef struct _NDIS_PACKET
{
738 NDIS_PACKET_PRIVATE Private
;
739 __MINGW_EXTENSION
union {
740 __MINGW_EXTENSION
struct {
741 UCHAR MiniportReserved
[2 * sizeof(PVOID
)];
742 UCHAR WrapperReserved
[2 * sizeof(PVOID
)];
744 __MINGW_EXTENSION
struct {
745 UCHAR MiniportReservedEx
[3 * sizeof(PVOID
)];
746 UCHAR WrapperReservedEx
[sizeof(PVOID
)];
748 __MINGW_EXTENSION
struct {
749 UCHAR MacReserved
[4 * sizeof(PVOID
)];
752 ULONG_PTR Reserved
[2];
753 UCHAR ProtocolReserved
[1];
754 } NDIS_PACKET
, *PNDIS_PACKET
, **PPNDIS_PACKET
;
756 typedef struct _NDIS_PACKET_STACK
{
757 ULONG_PTR IMReserved
[2];
758 ULONG_PTR NdisReserved
[4];
759 } NDIS_PACKET_STACK
, *PNDIS_PACKET_STACK
;
761 #endif /* NDIS_LEGACY_DRIVER */
763 typedef enum _NDIS_CLASS_ID
{
764 NdisClass802_3Priority
,
765 NdisClassWirelessWanMbxMailbox
,
766 NdisClassIrdaPacketInfo
,
770 typedef struct _MEDIA_SPECIFIC_INFORMATION
{
771 UINT NextEntryOffset
;
772 NDIS_CLASS_ID ClassId
;
774 UCHAR ClassInformation
[1];
775 } MEDIA_SPECIFIC_INFORMATION
, *PMEDIA_SPECIFIC_INFORMATION
;
777 #if NDIS_LEGACY_DRIVER
778 typedef struct _NDIS_PACKET_OOB_DATA
{
779 __MINGW_EXTENSION
union {
780 ULONGLONG TimeToSend
;
783 ULONGLONG TimeReceived
;
785 UINT SizeMediaSpecificInfo
;
786 PVOID MediaSpecificInformation
;
788 } NDIS_PACKET_OOB_DATA
, *PNDIS_PACKET_OOB_DATA
;
791 /* Request types used by NdisRequest */
792 typedef enum _NDIS_REQUEST_TYPE
{
793 NdisRequestQueryInformation
,
794 NdisRequestSetInformation
,
795 NdisRequestQueryStatistics
,
799 NdisRequestTransferData
,
805 #if NDIS_SUPPORT_NDIS6
808 } NDIS_REQUEST_TYPE
, *PNDIS_REQUEST_TYPE
;
810 #if NDIS_LEGACY_DRIVER
811 typedef struct _NDIS_REQUEST
{
812 UCHAR MacReserved
[4 * sizeof(PVOID
)];
813 NDIS_REQUEST_TYPE RequestType
;
815 struct QUERY_INFORMATION
{
817 PVOID InformationBuffer
;
818 UINT InformationBufferLength
;
822 struct SET_INFORMATION
{
824 PVOID InformationBuffer
;
825 UINT InformationBufferLength
;
830 #if (defined(NDIS50) || defined(NDIS51) || defined(NDIS50_MINIPORT) || defined(NDIS51_MINIPORT))
831 UCHAR NdisReserved
[9 * sizeof(PVOID
)];
832 __MINGW_EXTENSION
union {
833 UCHAR CallMgrReserved
[2 * sizeof(PVOID
)];
834 UCHAR ProtocolReserved
[2 * sizeof(PVOID
)];
836 UCHAR MiniportReserved
[2 * sizeof(PVOID
)];
838 } NDIS_REQUEST
, *PNDIS_REQUEST
;
839 #endif /* NDIS_LEGACY_DRIVER */
841 /* Wide Area Networks definitions */
843 #if NDIS_LEGACY_DRIVER
844 typedef struct _NDIS_WAN_PACKET
{
845 LIST_ENTRY WanPacketQueue
;
846 PUCHAR CurrentBuffer
;
850 PVOID ProtocolReserved1
;
851 PVOID ProtocolReserved2
;
852 PVOID ProtocolReserved3
;
853 PVOID ProtocolReserved4
;
858 } NDIS_WAN_PACKET
, *PNDIS_WAN_PACKET
;
861 /* DMA channel information */
863 typedef struct _NDIS_DMA_DESCRIPTION
{
865 BOOLEAN AutoInitialize
;
866 BOOLEAN DmaChannelSpecified
;
871 } NDIS_DMA_DESCRIPTION
, *PNDIS_DMA_DESCRIPTION
;
873 typedef struct _NDIS_DMA_BLOCK
{
874 PVOID MapRegisterBase
;
875 KEVENT AllocationEvent
;
876 PADAPTER_OBJECT SystemAdapterObject
;
879 } NDIS_DMA_BLOCK
, *PNDIS_DMA_BLOCK
;
881 typedef UCHAR NDIS_DMA_SIZE
;
883 #define NDIS_DMA_24BITS ((NDIS_DMA_SIZE)0)
884 #define NDIS_DMA_32BITS ((NDIS_DMA_SIZE)1)
885 #define NDIS_DMA_64BITS ((NDIS_DMA_SIZE)2)
887 typedef enum _NDIS_PROCESSOR_TYPE
{
894 } NDIS_PROCESSOR_TYPE
, *PNDIS_PROCESSOR_TYPE
;
896 typedef enum _NDIS_ENVIRONMENT_TYPE
{
897 NdisEnvironmentWindows
,
898 NdisEnvironmentWindowsNt
899 } NDIS_ENVIRONMENT_TYPE
, *PNDIS_ENVIRONMENT_TYPE
;
901 /* Possible hardware architecture */
902 typedef enum _NDIS_INTERFACE_TYPE
{
903 NdisInterfaceInternal
= Internal
,
904 NdisInterfaceIsa
= Isa
,
905 NdisInterfaceEisa
= Eisa
,
906 NdisInterfaceMca
= MicroChannel
,
907 NdisInterfaceTurboChannel
= TurboChannel
,
908 NdisInterfacePci
= PCIBus
,
909 NdisInterfacePcMcia
= PCMCIABus
,
910 NdisInterfaceCBus
= CBus
,
911 NdisInterfaceMPIBus
= MPIBus
,
912 NdisInterfaceMPSABus
= MPSABus
,
913 NdisInterfaceProcessorInternal
= ProcessorInternal
,
914 NdisInterfaceInternalPowerBus
= InternalPowerBus
,
915 NdisInterfacePNPISABus
= PNPISABus
,
916 NdisInterfacePNPBus
= PNPBus
,
920 NdisMaximumInterfaceType
921 } NDIS_INTERFACE_TYPE
, *PNDIS_INTERFACE_TYPE
;
923 #define NdisInterruptLevelSensitive LevelSensitive
924 #define NdisInterruptLatched Latched
926 typedef KINTERRUPT_MODE NDIS_INTERRUPT_MODE
, *PNDIS_INTERRUPT_MODE
;
928 typedef enum _NDIS_PARAMETER_TYPE
{
929 NdisParameterInteger
,
930 NdisParameterHexInteger
,
932 NdisParameterMultiString
,
934 } NDIS_PARAMETER_TYPE
, *PNDIS_PARAMETER_TYPE
;
936 typedef struct _BINARY_DATA
{
941 typedef struct _NDIS_CONFIGURATION_PARAMETER
{
942 NDIS_PARAMETER_TYPE ParameterType
;
945 NDIS_STRING StringData
;
946 BINARY_DATA BinaryData
;
948 } NDIS_CONFIGURATION_PARAMETER
, *PNDIS_CONFIGURATION_PARAMETER
;
950 typedef PHYSICAL_ADDRESS NDIS_PHYSICAL_ADDRESS
, *PNDIS_PHYSICAL_ADDRESS
;
952 typedef struct _NDIS_PHYSICAL_ADDRESS_UNIT
{
953 NDIS_PHYSICAL_ADDRESS PhysicalAddress
;
955 } NDIS_PHYSICAL_ADDRESS_UNIT
, *PNDIS_PHYSICAL_ADDRESS_UNIT
;
957 typedef struct _NDIS_WAN_LINE_DOWN
{
958 UCHAR RemoteAddress
[6];
959 UCHAR LocalAddress
[6];
960 } NDIS_WAN_LINE_DOWN
, *PNDIS_WAN_LINE_DOWN
;
962 typedef struct _NDIS_WAN_LINE_UP
{
964 ULONG MaximumTotalSize
;
965 NDIS_WAN_QUALITY Quality
;
967 UCHAR RemoteAddress
[6];
968 OUT UCHAR LocalAddress
[6];
969 ULONG ProtocolBufferLength
;
970 PUCHAR ProtocolBuffer
;
972 NDIS_STRING DeviceName
;
973 } NDIS_WAN_LINE_UP
, *PNDIS_WAN_LINE_UP
;
976 (NTAPI
*TDI_REGISTER_CALLBACK
)(
977 IN PUNICODE_STRING DeviceName
,
978 OUT HANDLE
*TdiHandle
);
981 (NTAPI
*TDI_PNP_HANDLER
)(
982 IN PUNICODE_STRING UpperComponent
,
983 IN PUNICODE_STRING LowerComponent
,
984 IN PUNICODE_STRING BindList
,
985 IN PVOID ReconfigBuffer
,
986 IN UINT ReconfigBufferSize
,
989 typedef struct _OID_LIST OID_LIST
, *POID_LIST
;
993 typedef enum _NDIS_PNP_DEVICE_STATE
{
995 NdisPnPDeviceStarted
,
996 NdisPnPDeviceQueryStopped
,
997 NdisPnPDeviceStopped
,
998 NdisPnPDeviceQueryRemoved
,
999 NdisPnPDeviceRemoved
,
1000 NdisPnPDeviceSurpriseRemoved
1001 } NDIS_PNP_DEVICE_STATE
;
1003 #define NDIS_DEVICE_NOT_STOPPABLE 0x00000001
1004 #define NDIS_DEVICE_NOT_REMOVEABLE 0x00000002
1005 #define NDIS_DEVICE_NOT_SUSPENDABLE 0x00000004
1006 #define NDIS_DEVICE_DISABLE_PM 0x00000008
1007 #define NDIS_DEVICE_DISABLE_WAKE_UP 0x00000010
1008 #define NDIS_DEVICE_DISABLE_WAKE_ON_RECONNECT 0x00000020
1009 #define NDIS_DEVICE_RESERVED 0x00000040
1010 #define NDIS_DEVICE_DISABLE_WAKE_ON_MAGIC_PACKET 0x00000080
1011 #define NDIS_DEVICE_DISABLE_WAKE_ON_PATTERN_MATCH 0x00000100
1013 /* Protocol types supported by NDIS */
1014 #define NDIS_PROTOCOL_ID_DEFAULT 0x00
1015 #define NDIS_PROTOCOL_ID_TCP_IP 0x02
1016 #define NDIS_PROTOCOL_ID_IPX 0x06
1017 #define NDIS_PROTOCOL_ID_NBF 0x07
1018 #define NDIS_PROTOCOL_ID_MAX 0x0F
1019 #define NDIS_PROTOCOL_ID_MASK 0x0F
1021 typedef ULONG NDIS_AF
, *PNDIS_AF
;
1023 #define CO_ADDRESS_FAMILY_Q2931 ((NDIS_AF)0x1)
1024 #define CO_ADDRESS_FAMILY_PSCHED ((NDIS_AF)0x2)
1025 #define CO_ADDRESS_FAMILY_L2TP ((NDIS_AF)0x3)
1026 #define CO_ADDRESS_FAMILY_IRDA ((NDIS_AF)0x4)
1027 #define CO_ADDRESS_FAMILY_1394 ((NDIS_AF)0x5)
1028 #define CO_ADDRESS_FAMILY_PPP ((NDIS_AF)0x6)
1029 #define CO_ADDRESS_FAMILY_INFINIBAND ((NDIS_AF)0x7)
1030 #define CO_ADDRESS_FAMILY_TAPI ((NDIS_AF)0x800)
1031 #define CO_ADDRESS_FAMILY_TAPI_PROXY ((NDIS_AF)0x801)
1033 #define CO_ADDRESS_FAMILY_PROXY 0x80000000
1035 typedef struct _CO_ADDRESS_FAMILY
{
1036 NDIS_AF AddressFamily
;
1039 } CO_ADDRESS_FAMILY
, *PCO_ADDRESS_FAMILY
;
1041 typedef struct _CO_SPECIFIC_PARAMETERS
{
1044 UCHAR Parameters
[1];
1045 } CO_SPECIFIC_PARAMETERS
, *PCO_SPECIFIC_PARAMETERS
;
1047 typedef struct _CO_CALL_MANAGER_PARAMETERS
{
1050 CO_SPECIFIC_PARAMETERS CallMgrSpecific
;
1051 } CO_CALL_MANAGER_PARAMETERS
, *PCO_CALL_MANAGER_PARAMETERS
;
1053 /* CO_MEDIA_PARAMETERS.Flags constants */
1054 #define RECEIVE_TIME_INDICATION 0x00000001
1055 #define USE_TIME_STAMPS 0x00000002
1056 #define TRANSMIT_VC 0x00000004
1057 #define RECEIVE_VC 0x00000008
1058 #define INDICATE_ERRED_PACKETS 0x00000010
1059 #define INDICATE_END_OF_TX 0x00000020
1060 #define RESERVE_RESOURCES_VC 0x00000040
1061 #define ROUND_DOWN_FLOW 0x00000080
1062 #define ROUND_UP_FLOW 0x00000100
1064 typedef struct _CO_MEDIA_PARAMETERS
{
1066 ULONG ReceivePriority
;
1067 ULONG ReceiveSizeHint
;
1068 CO_SPECIFIC_PARAMETERS MediaSpecific
;
1069 } CO_MEDIA_PARAMETERS
, *PCO_MEDIA_PARAMETERS
;
1071 /* CO_CALL_PARAMETERS.Flags constants */
1072 #define PERMANENT_VC 0x00000001
1073 #define CALL_PARAMETERS_CHANGED 0x00000002
1074 #define QUERY_CALL_PARAMETERS 0x00000004
1075 #define BROADCAST_VC 0x00000008
1076 #define MULTIPOINT_VC 0x00000010
1078 typedef struct _CO_CALL_PARAMETERS
{
1080 PCO_CALL_MANAGER_PARAMETERS CallMgrParameters
;
1081 PCO_MEDIA_PARAMETERS MediaParameters
;
1082 } CO_CALL_PARAMETERS
, *PCO_CALL_PARAMETERS
;
1084 typedef struct _CO_SAP
{
1090 #if NDIS_LEGACY_DRIVER
1091 typedef struct _NDIS_IPSEC_PACKET_INFO
{
1092 __MINGW_EXTENSION
union {
1094 NDIS_HANDLE OffloadHandle
;
1095 NDIS_HANDLE NextOffloadHandle
;
1098 ULONG SA_DELETE_REQ
:1;
1099 ULONG CRYPTO_DONE
:1;
1100 ULONG NEXT_CRYPTO_DONE
:1;
1104 } NDIS_IPSEC_PACKET_INFO
, *PNDIS_IPSEC_PACKET_INFO
;
1107 #if (NDIS_SUPPORT_NDIS6 || NDIS60)
1108 typedef struct _NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO
{
1109 __MINGW_EXTENSION
union {
1111 NDIS_HANDLE OffloadHandle
;
1114 USHORT SaDeleteReq
:1;
1115 USHORT CryptoDone
:1;
1116 USHORT NextCryptoDone
:1;
1118 USHORT CryptoStatus
;
1121 } NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO
, *PNDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO
;
1124 /* NDIS_MAC_FRAGMENT.Errors constants */
1125 #define WAN_ERROR_CRC 0x00000001
1126 #define WAN_ERROR_FRAMING 0x00000002
1127 #define WAN_ERROR_HARDWAREOVERRUN 0x00000004
1128 #define WAN_ERROR_BUFFEROVERRUN 0x00000008
1129 #define WAN_ERROR_TIMEOUT 0x00000010
1130 #define WAN_ERROR_ALIGNMENT 0x00000020
1132 typedef struct _NDIS_MAC_FRAGMENT
{
1133 NDIS_HANDLE NdisLinkContext
;
1135 } NDIS_MAC_FRAGMENT
, *PNDIS_MAC_FRAGMENT
;
1137 typedef struct _NDIS_MAC_LINE_DOWN
{
1138 NDIS_HANDLE NdisLinkContext
;
1139 } NDIS_MAC_LINE_DOWN
, *PNDIS_MAC_LINE_DOWN
;
1141 typedef struct _NDIS_MAC_LINE_UP
{
1143 NDIS_WAN_QUALITY Quality
;
1145 NDIS_HANDLE ConnectionWrapperID
;
1146 NDIS_HANDLE NdisLinkHandle
;
1147 NDIS_HANDLE NdisLinkContext
;
1148 } NDIS_MAC_LINE_UP
, *PNDIS_MAC_LINE_UP
;
1150 typedef struct _NDIS_PACKET_8021Q_INFO
{
1151 __MINGW_EXTENSION
union {
1153 UINT32 UserPriority
:3;
1154 UINT32 CanonicalFormatId
:1;
1160 } NDIS_PACKET_8021Q_INFO
, *PNDIS_PACKET_8021Q_INFO
;
1162 typedef enum _NDIS_PER_PACKET_INFO
{
1163 TcpIpChecksumPacketInfo
,
1165 TcpLargeSendPacketInfo
,
1166 ClassificationHandlePacketInfo
,
1168 ScatterGatherListPacketInfo
,
1172 OriginalNetBufferList
,
1173 CachedNetBufferList
,
1174 ShortPacketPaddingInfo
,
1176 } NDIS_PER_PACKET_INFO
, *PNDIS_PER_PACKET_INFO
;
1178 #if NDIS_LEGACY_DRIVER
1180 typedef struct _NDIS_PACKET_EXTENSION
{
1181 PVOID NdisPacketInfo
[MaxPerPacketInfo
];
1182 } NDIS_PACKET_EXTENSION
, *PNDIS_PACKET_EXTENSION
;
1184 typedef enum _NDIS_TASK
{
1185 TcpIpChecksumNdisTask
,
1187 TcpLargeSendNdisTask
,
1189 } NDIS_TASK
, *PNDIS_TASK
;
1191 typedef enum _NDIS_ENCAPSULATION
{
1192 UNSPECIFIED_Encapsulation
,
1194 IEEE_802_3_Encapsulation
,
1195 IEEE_802_5_Encapsulation
,
1196 LLC_SNAP_ROUTED_Encapsulation
,
1197 LLC_SNAP_BRIDGED_Encapsulation
1198 } NDIS_ENCAPSULATION
;
1200 typedef struct _NDIS_ENCAPSULATION_FORMAT
{
1201 NDIS_ENCAPSULATION Encapsulation
;
1203 ULONG FixedHeaderSize
:1;
1206 ULONG EncapsulationHeaderSize
;
1207 } NDIS_ENCAPSULATION_FORMAT
, *PNDIS_ENCAPSULATION_FORMAT
;
1209 typedef struct _NDIS_TASK_OFFLOAD_HEADER
{
1213 ULONG OffsetFirstTask
;
1214 NDIS_ENCAPSULATION_FORMAT EncapsulationFormat
;
1215 } NDIS_TASK_OFFLOAD_HEADER
, *PNDIS_TASK_OFFLOAD_HEADER
;
1217 typedef struct _NDIS_TASK_OFFLOAD
{
1221 ULONG OffsetNextTask
;
1222 ULONG TaskBufferLength
;
1223 UCHAR TaskBuffer
[1];
1224 } NDIS_TASK_OFFLOAD
, *PNDIS_TASK_OFFLOAD
;
1226 typedef struct _NDIS_TASK_TCP_IP_CHECKSUM
{
1228 ULONG IpOptionsSupported
:1;
1229 ULONG TcpOptionsSupported
:1;
1230 ULONG TcpChecksum
:1;
1231 ULONG UdpChecksum
:1;
1235 ULONG IpOptionsSupported
:1;
1236 ULONG TcpOptionsSupported
:1;
1237 ULONG TcpChecksum
:1;
1238 ULONG UdpChecksum
:1;
1242 ULONG IpOptionsSupported
:1;
1243 ULONG TcpOptionsSupported
:1;
1244 ULONG TcpChecksum
:1;
1245 ULONG UdpChecksum
:1;
1248 ULONG IpOptionsSupported
:1;
1249 ULONG TcpOptionsSupported
:1;
1250 ULONG TcpChecksum
:1;
1251 ULONG UdpChecksum
:1;
1253 } NDIS_TASK_TCP_IP_CHECKSUM
, *PNDIS_TASK_TCP_IP_CHECKSUM
;
1255 #define NDIS_TASK_TCP_LARGE_SEND_V0 0
1257 typedef struct _NDIS_TASK_TCP_LARGE_SEND
{
1259 ULONG MaxOffLoadSize
;
1260 ULONG MinSegmentCount
;
1263 } NDIS_TASK_TCP_LARGE_SEND
, *PNDIS_TASK_TCP_LARGE_SEND
;
1265 typedef struct _NDIS_TASK_IPSEC
{
1267 ULONG AH_ESP_COMBINED
;
1268 ULONG TRANSPORT_TUNNEL_COMBINED
;
1290 } NDIS_TASK_IPSEC
, *PNDIS_TASK_IPSEC
;
1292 #endif /* NDIS_LEGACY_DRIVER */
1294 #define IPSEC_TPT_UDPESP_ENCAPTYPE_IKE 0x00000001
1295 #define IPSEC_TUN_UDPESP_ENCAPTYPE_IKE 0x00000002
1296 #define IPSEC_TPTOVERTUN_UDPESP_ENCAPTYPE_IKE 0x00000004
1297 #define IPSEC_TPT_UDPESP_OVER_PURE_TUN_ENCAPTYPE_IKE 0x00000008
1298 #define IPSEC_TPT_UDPESP_ENCAPTYPE_OTHER 0x00000010
1299 #define IPSEC_TUN_UDPESP_ENCAPTYPE_OTHER 0x00000020
1300 #define IPSEC_TPTOVERTUN_UDPESP_ENCAPTYPE_OTHER 0x00000040
1301 #define IPSEC_TPT_UDPESP_OVER_PURE_TUN_ENCAPTYPE_OTHER 0x00000080
1303 #if NDIS_LEGACY_DRIVER
1307 * NDIS_GET_ORIGINAL_PACKET(
1308 * IN PNDIS_PACKET Packet);
1310 #define NDIS_GET_ORIGINAL_PACKET(Packet) \
1311 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, OriginalPacketInfo)
1315 * NDIS_GET_PACKET_CANCEL_ID(
1316 * IN PNDIS_PACKET Packet);
1318 #define NDIS_GET_PACKET_CANCEL_ID(Packet) \
1319 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, PacketCancelId)
1322 * PNDIS_PACKET_EXTENSION
1323 * NDIS_PACKET_EXTENSION_FROM_PACKET(
1324 * IN PNDIS_PACKET Packet);
1326 #define NDIS_PACKET_EXTENSION_FROM_PACKET(Packet) \
1327 ((PNDIS_PACKET_EXTENSION)((PUCHAR)(Packet) \
1328 + (Packet)->Private.NdisPacketOobOffset + sizeof(NDIS_PACKET_OOB_DATA)))
1332 * NDIS_PER_PACKET_INFO_FROM_PACKET(
1333 * IN OUT PNDIS_PACKET Packet,
1334 * IN NDIS_PER_PACKET_INFO InfoType);
1336 #define NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, InfoType) \
1337 ((PNDIS_PACKET_EXTENSION)((PUCHAR)(Packet) + (Packet)->Private.NdisPacketOobOffset \
1338 + sizeof(NDIS_PACKET_OOB_DATA)))->NdisPacketInfo[(InfoType)]
1342 * NDIS_SET_ORIGINAL_PACKET(
1343 * IN OUT PNDIS_PACKET Packet,
1344 * IN PNDIS_PACKET OriginalPacket);
1346 #define NDIS_SET_ORIGINAL_PACKET(Packet, OriginalPacket) \
1347 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, OriginalPacketInfo) = (OriginalPacket)
1351 * NDIS_SET_PACKET_CANCEL_ID(
1352 * IN PNDIS_PACKET Packet
1353 * IN ULONG_PTR CancelId);
1355 #define NDIS_SET_PACKET_CANCEL_ID(Packet, CancelId) \
1356 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, PacketCancelId) = (CancelId)
1358 #define NdisSetPacketCancelId(_Packet, _CancelId) NDIS_SET_PACKET_CANCEL_ID(_Packet, _CancelId)
1359 #define NdisGetPacketCancelId(_Packet) NDIS_GET_PACKET_CANCEL_ID(_Packet)
1361 #endif /* NDIS_LEGACY_DRIVER */
1363 #if NDIS_SUPPORT_NDIS6
1364 typedef struct _NDIS_GENERIC_OBJECT
{
1365 NDIS_OBJECT_HEADER Header
;
1367 PVOID CallersCaller
;
1368 PDRIVER_OBJECT DriverObject
;
1369 } NDIS_GENERIC_OBJECT
, *PNDIS_GENERIC_OBJECT
;
1372 /* NDIS_TASK_OFFLOAD_HEADER.Version constants */
1373 #define NDIS_TASK_OFFLOAD_VERSION 1
1375 #define MAX_HASHES 4
1376 #define TRUNCATED_HASH_LEN 12
1378 #define CRYPTO_SUCCESS 0
1379 #define CRYPTO_GENERIC_ERROR 1
1380 #define CRYPTO_TRANSPORT_AH_AUTH_FAILED 2
1381 #define CRYPTO_TRANSPORT_ESP_AUTH_FAILED 3
1382 #define CRYPTO_TUNNEL_AH_AUTH_FAILED 4
1383 #define CRYPTO_TUNNEL_ESP_AUTH_FAILED 5
1384 #define CRYPTO_INVALID_PACKET_SYNTAX 6
1385 #define CRYPTO_INVALID_PROTOCOL 7
1387 typedef struct _NDIS_TCP_IP_CHECKSUM_PACKET_INFO
{
1388 __MINGW_EXTENSION
union {
1390 ULONG NdisPacketChecksumV4
:1;
1391 ULONG NdisPacketChecksumV6
:1;
1392 ULONG NdisPacketTcpChecksum
:1;
1393 ULONG NdisPacketUdpChecksum
:1;
1394 ULONG NdisPacketIpChecksum
:1;
1397 ULONG NdisPacketTcpChecksumFailed
:1;
1398 ULONG NdisPacketUdpChecksumFailed
:1;
1399 ULONG NdisPacketIpChecksumFailed
:1;
1400 ULONG NdisPacketTcpChecksumSucceeded
:1;
1401 ULONG NdisPacketUdpChecksumSucceeded
:1;
1402 ULONG NdisPacketIpChecksumSucceeded
:1;
1403 ULONG NdisPacketLoopback
:1;
1407 } NDIS_TCP_IP_CHECKSUM_PACKET_INFO
, *PNDIS_TCP_IP_CHECKSUM_PACKET_INFO
;
1409 typedef struct _NDIS_WAN_CO_FRAGMENT
{
1411 } NDIS_WAN_CO_FRAGMENT
, *PNDIS_WAN_CO_FRAGMENT
;
1413 typedef struct _NDIS_WAN_FRAGMENT
{
1414 UCHAR RemoteAddress
[6];
1415 UCHAR LocalAddress
[6];
1416 } NDIS_WAN_FRAGMENT
, *PNDIS_WAN_FRAGMENT
;
1418 typedef struct _WAN_CO_LINKPARAMS
{
1419 ULONG TransmitSpeed
;
1422 } WAN_CO_LINKPARAMS
, *PWAN_CO_LINKPARAMS
;
1424 typedef struct _NDIS_WAN_GET_STATS
{
1425 UCHAR LocalAddress
[6];
1431 ULONG TimeoutErrors
;
1432 ULONG AlignmentErrors
;
1433 ULONG SerialOverrunErrors
;
1434 ULONG FramingErrors
;
1435 ULONG BufferOverrunErrors
;
1436 ULONG BytesTransmittedUncompressed
;
1437 ULONG BytesReceivedUncompressed
;
1438 ULONG BytesTransmittedCompressed
;
1439 ULONG BytesReceivedCompressed
;
1440 } NDIS_WAN_GET_STATS
, *PNDIS_WAN_GET_STATS
;
1445 (NTAPI
*CM_ACTIVATE_VC_COMPLETE_HANDLER
)(
1446 IN NDIS_STATUS Status
,
1447 IN NDIS_HANDLE CallMgrVcContext
,
1448 IN PCO_CALL_PARAMETERS CallParameters
);
1451 (NTAPI
*CM_ADD_PARTY_HANDLER
)(
1452 IN NDIS_HANDLE CallMgrVcContext
,
1453 IN OUT PCO_CALL_PARAMETERS CallParameters
,
1454 IN NDIS_HANDLE NdisPartyHandle
,
1455 OUT PNDIS_HANDLE CallMgrPartyContext
);
1458 (NTAPI
*CM_CLOSE_AF_HANDLER
)(
1459 IN NDIS_HANDLE CallMgrAfContext
);
1462 (NTAPI
*CM_CLOSE_CALL_HANDLER
)(
1463 IN NDIS_HANDLE CallMgrVcContext
,
1464 IN NDIS_HANDLE CallMgrPartyContext OPTIONAL
,
1465 IN PVOID CloseData OPTIONAL
,
1466 IN UINT Size OPTIONAL
);
1469 (NTAPI
*CM_DEREG_SAP_HANDLER
)(
1470 IN NDIS_HANDLE CallMgrSapContext
);
1473 (NTAPI
*CM_DEACTIVATE_VC_COMPLETE_HANDLER
)(
1474 IN NDIS_STATUS Status
,
1475 IN NDIS_HANDLE CallMgrVcContext
);
1478 (NTAPI
*CM_DROP_PARTY_HANDLER
)(
1479 IN NDIS_HANDLE CallMgrPartyContext
,
1480 IN PVOID CloseData OPTIONAL
,
1481 IN UINT Size OPTIONAL
);
1484 (NTAPI
*CM_INCOMING_CALL_COMPLETE_HANDLER
)(
1485 IN NDIS_STATUS Status
,
1486 IN NDIS_HANDLE CallMgrVcContext
,
1487 IN PCO_CALL_PARAMETERS CallParameters
);
1490 (NTAPI
*CM_MAKE_CALL_HANDLER
)(
1491 IN NDIS_HANDLE CallMgrVcContext
,
1492 IN OUT PCO_CALL_PARAMETERS CallParameters
,
1493 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
1494 OUT PNDIS_HANDLE CallMgrPartyContext OPTIONAL
);
1497 (NTAPI
*CM_MODIFY_CALL_QOS_HANDLER
)(
1498 IN NDIS_HANDLE CallMgrVcContext
,
1499 IN PCO_CALL_PARAMETERS CallParameters
);
1502 (NTAPI
*CM_OPEN_AF_HANDLER
)(
1503 IN NDIS_HANDLE CallMgrBindingContext
,
1504 IN PCO_ADDRESS_FAMILY AddressFamily
,
1505 IN NDIS_HANDLE NdisAfHandle
,
1506 OUT PNDIS_HANDLE CallMgrAfContext
);
1509 (NTAPI
*CM_REG_SAP_HANDLER
)(
1510 IN NDIS_HANDLE CallMgrAfContext
,
1512 IN NDIS_HANDLE NdisSapHandle
,
1513 OUT PNDIS_HANDLE CallMgrSapContext
);
1516 (NTAPI
*CO_CREATE_VC_HANDLER
)(
1517 IN NDIS_HANDLE ProtocolAfContext
,
1518 IN NDIS_HANDLE NdisVcHandle
,
1519 OUT PNDIS_HANDLE ProtocolVcContext
);
1522 (NTAPI
*CO_DELETE_VC_HANDLER
)(
1523 IN NDIS_HANDLE ProtocolVcContext
);
1525 #define PROTOCOL_RESERVED_SIZE_IN_PACKET (4 * sizeof(PVOID))
1527 /* Prototypes for NDIS 5.0 protocol characteristics */
1530 (NTAPI
*CO_SEND_COMPLETE_HANDLER
)(
1531 IN NDIS_STATUS Status
,
1532 IN NDIS_HANDLE ProtocolVcContext
,
1533 IN PNDIS_PACKET Packet
);
1536 (NTAPI
*CO_STATUS_HANDLER
)(
1537 IN NDIS_HANDLE ProtocolBindingContext
,
1538 IN NDIS_HANDLE ProtocolVcContext OPTIONAL
,
1539 IN NDIS_STATUS GeneralStatus
,
1540 IN PVOID StatusBuffer
,
1541 IN UINT StatusBufferSize
);
1544 (NTAPI
*CO_RECEIVE_PACKET_HANDLER
)(
1545 IN NDIS_HANDLE ProtocolBindingContext
,
1546 IN NDIS_HANDLE ProtocolVcContext
,
1547 IN PNDIS_PACKET Packet
);
1550 (NTAPI
*CO_REQUEST_HANDLER
)(
1551 IN NDIS_HANDLE ProtocolAfContext
,
1552 IN NDIS_HANDLE ProtocolVcContext OPTIONAL
,
1553 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
,
1554 IN OUT PNDIS_REQUEST NdisRequest
);
1557 (NTAPI
*CO_REQUEST_COMPLETE_HANDLER
)(
1558 IN NDIS_STATUS Status
,
1559 IN NDIS_HANDLE ProtocolAfContext OPTIONAL
,
1560 IN NDIS_HANDLE ProtocolVcContext OPTIONAL
,
1561 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
,
1562 IN PNDIS_REQUEST NdisRequest
);
1564 typedef struct _NDIS_CALL_MANAGER_CHARACTERISTICS
{
1569 CO_CREATE_VC_HANDLER CmCreateVcHandler
;
1570 CO_DELETE_VC_HANDLER CmDeleteVcHandler
;
1571 CM_OPEN_AF_HANDLER CmOpenAfHandler
;
1572 CM_CLOSE_AF_HANDLER CmCloseAfHandler
;
1573 CM_REG_SAP_HANDLER CmRegisterSapHandler
;
1574 CM_DEREG_SAP_HANDLER CmDeregisterSapHandler
;
1575 CM_MAKE_CALL_HANDLER CmMakeCallHandler
;
1576 CM_CLOSE_CALL_HANDLER CmCloseCallHandler
;
1577 CM_INCOMING_CALL_COMPLETE_HANDLER CmIncomingCallCompleteHandler
;
1578 CM_ADD_PARTY_HANDLER CmAddPartyHandler
;
1579 CM_DROP_PARTY_HANDLER CmDropPartyHandler
;
1580 CM_ACTIVATE_VC_COMPLETE_HANDLER CmActivateVcCompleteHandler
;
1581 CM_DEACTIVATE_VC_COMPLETE_HANDLER CmDeactivateVcCompleteHandler
;
1582 CM_MODIFY_CALL_QOS_HANDLER CmModifyCallQoSHandler
;
1583 CO_REQUEST_HANDLER CmRequestHandler
;
1584 CO_REQUEST_COMPLETE_HANDLER CmRequestCompleteHandler
;
1585 } NDIS_CALL_MANAGER_CHARACTERISTICS
, *PNDIS_CALL_MANAGER_CHARACTERISTICS
;
1589 /* Call Manager clients */
1591 typedef VOID (*CL_OPEN_AF_COMPLETE_HANDLER
)(
1592 IN NDIS_STATUS Status
,
1593 IN NDIS_HANDLE ProtocolAfContext
,
1594 IN NDIS_HANDLE NdisAfHandle
);
1597 (NTAPI
*CL_CLOSE_AF_COMPLETE_HANDLER
)(
1598 IN NDIS_STATUS Status
,
1599 IN NDIS_HANDLE ProtocolAfContext
);
1602 (NTAPI
*CL_REG_SAP_COMPLETE_HANDLER
)(
1603 IN NDIS_STATUS Status
,
1604 IN NDIS_HANDLE ProtocolSapContext
,
1606 IN NDIS_HANDLE NdisSapHandle
);
1609 (NTAPI
*CL_DEREG_SAP_COMPLETE_HANDLER
)(
1610 IN NDIS_STATUS Status
,
1611 IN NDIS_HANDLE ProtocolSapContext
);
1614 (NTAPI
*CL_MAKE_CALL_COMPLETE_HANDLER
)(
1615 IN NDIS_STATUS Status
,
1616 IN NDIS_HANDLE ProtocolVcContext
,
1617 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
1618 IN PCO_CALL_PARAMETERS CallParameters
);
1621 (NTAPI
*CL_MODIFY_CALL_QOS_COMPLETE_HANDLER
)(
1622 IN NDIS_STATUS Status
,
1623 IN NDIS_HANDLE ProtocolVcContext
,
1624 IN PCO_CALL_PARAMETERS CallParameters
);
1627 (NTAPI
*CL_CLOSE_CALL_COMPLETE_HANDLER
)(
1628 IN NDIS_STATUS Status
,
1629 IN NDIS_HANDLE ProtocolVcContext
,
1630 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
);
1633 (NTAPI
*CL_ADD_PARTY_COMPLETE_HANDLER
)(
1634 IN NDIS_STATUS Status
,
1635 IN NDIS_HANDLE ProtocolPartyContext
,
1636 IN NDIS_HANDLE NdisPartyHandle
,
1637 IN PCO_CALL_PARAMETERS CallParameters
);
1640 (NTAPI
*CL_DROP_PARTY_COMPLETE_HANDLER
)(
1641 IN NDIS_STATUS Status
,
1642 IN NDIS_HANDLE ProtocolPartyContext
);
1645 (NTAPI
*CL_INCOMING_CALL_HANDLER
)(
1646 IN NDIS_HANDLE ProtocolSapContext
,
1647 IN NDIS_HANDLE ProtocolVcContext
,
1648 IN OUT PCO_CALL_PARAMETERS CallParameters
);
1651 (NTAPI
*CL_INCOMING_CALL_QOS_CHANGE_HANDLER
)(
1652 IN NDIS_HANDLE ProtocolVcContext
,
1653 IN PCO_CALL_PARAMETERS CallParameters
);
1656 (NTAPI
*CL_INCOMING_CLOSE_CALL_HANDLER
)(
1657 IN NDIS_STATUS CloseStatus
,
1658 IN NDIS_HANDLE ProtocolVcContext
,
1659 IN PVOID CloseData OPTIONAL
,
1660 IN UINT Size OPTIONAL
);
1663 (NTAPI
*CL_INCOMING_DROP_PARTY_HANDLER
)(
1664 IN NDIS_STATUS DropStatus
,
1665 IN NDIS_HANDLE ProtocolPartyContext
,
1666 IN PVOID CloseData OPTIONAL
,
1667 IN UINT Size OPTIONAL
);
1670 (NTAPI
*CL_CALL_CONNECTED_HANDLER
)(
1671 IN NDIS_HANDLE ProtocolVcContext
);
1674 typedef struct _NDIS_CLIENT_CHARACTERISTICS
{
1679 CO_CREATE_VC_HANDLER ClCreateVcHandler
;
1680 CO_DELETE_VC_HANDLER ClDeleteVcHandler
;
1681 CO_REQUEST_HANDLER ClRequestHandler
;
1682 CO_REQUEST_COMPLETE_HANDLER ClRequestCompleteHandler
;
1683 CL_OPEN_AF_COMPLETE_HANDLER ClOpenAfCompleteHandler
;
1684 CL_CLOSE_AF_COMPLETE_HANDLER ClCloseAfCompleteHandler
;
1685 CL_REG_SAP_COMPLETE_HANDLER ClRegisterSapCompleteHandler
;
1686 CL_DEREG_SAP_COMPLETE_HANDLER ClDeregisterSapCompleteHandler
;
1687 CL_MAKE_CALL_COMPLETE_HANDLER ClMakeCallCompleteHandler
;
1688 CL_MODIFY_CALL_QOS_COMPLETE_HANDLER ClModifyCallQoSCompleteHandler
;
1689 CL_CLOSE_CALL_COMPLETE_HANDLER ClCloseCallCompleteHandler
;
1690 CL_ADD_PARTY_COMPLETE_HANDLER ClAddPartyCompleteHandler
;
1691 CL_DROP_PARTY_COMPLETE_HANDLER ClDropPartyCompleteHandler
;
1692 CL_INCOMING_CALL_HANDLER ClIncomingCallHandler
;
1693 CL_INCOMING_CALL_QOS_CHANGE_HANDLER ClIncomingCallQoSChangeHandler
;
1694 CL_INCOMING_CLOSE_CALL_HANDLER ClIncomingCloseCallHandler
;
1695 CL_INCOMING_DROP_PARTY_HANDLER ClIncomingDropPartyHandler
;
1696 CL_CALL_CONNECTED_HANDLER ClCallConnectedHandler
;
1697 } NDIS_CLIENT_CHARACTERISTICS
, *PNDIS_CLIENT_CHARACTERISTICS
;
1700 /* NDIS protocol structures */
1702 /* Prototypes for NDIS 3.0 protocol characteristics */
1705 (NTAPI
*OPEN_ADAPTER_COMPLETE_HANDLER
)(
1706 IN NDIS_HANDLE ProtocolBindingContext
,
1707 IN NDIS_STATUS Status
,
1708 IN NDIS_STATUS OpenErrorStatus
);
1711 (NTAPI
*CLOSE_ADAPTER_COMPLETE_HANDLER
)(
1712 IN NDIS_HANDLE ProtocolBindingContext
,
1713 IN NDIS_STATUS Status
);
1716 (NTAPI
*RESET_COMPLETE_HANDLER
)(
1717 IN NDIS_HANDLE ProtocolBindingContext
,
1718 IN NDIS_STATUS Status
);
1721 (NTAPI
*REQUEST_COMPLETE_HANDLER
)(
1722 IN NDIS_HANDLE ProtocolBindingContext
,
1723 IN PNDIS_REQUEST NdisRequest
,
1724 IN NDIS_STATUS Status
);
1727 (NTAPI
*STATUS_HANDLER
)(
1728 IN NDIS_HANDLE ProtocolBindingContext
,
1729 IN NDIS_STATUS GeneralStatus
,
1730 IN PVOID StatusBuffer
,
1731 IN UINT StatusBufferSize
);
1734 (NTAPI
*STATUS_COMPLETE_HANDLER
)(
1735 IN NDIS_HANDLE ProtocolBindingContext
);
1738 (NTAPI
*SEND_COMPLETE_HANDLER
)(
1739 IN NDIS_HANDLE ProtocolBindingContext
,
1740 IN PNDIS_PACKET Packet
,
1741 IN NDIS_STATUS Status
);
1744 (NTAPI
*WAN_SEND_COMPLETE_HANDLER
)(
1745 IN NDIS_HANDLE ProtocolBindingContext
,
1746 IN PNDIS_WAN_PACKET Packet
,
1747 IN NDIS_STATUS Status
);
1750 (NTAPI
*TRANSFER_DATA_COMPLETE_HANDLER
)(
1751 IN NDIS_HANDLE ProtocolBindingContext
,
1752 IN PNDIS_PACKET Packet
,
1753 IN NDIS_STATUS Status
,
1754 IN UINT BytesTransferred
);
1757 (NTAPI
*WAN_TRANSFER_DATA_COMPLETE_HANDLER
)(
1761 (NTAPI
*RECEIVE_HANDLER
)(
1762 IN NDIS_HANDLE ProtocolBindingContext
,
1763 IN NDIS_HANDLE MacReceiveContext
,
1764 IN PVOID HeaderBuffer
,
1765 IN UINT HeaderBufferSize
,
1766 IN PVOID LookAheadBuffer
,
1767 IN UINT LookaheadBufferSize
,
1768 IN UINT PacketSize
);
1771 (NTAPI
*WAN_RECEIVE_HANDLER
)(
1772 IN NDIS_HANDLE NdisLinkHandle
,
1774 IN ULONG PacketSize
);
1777 (NTAPI
*RECEIVE_COMPLETE_HANDLER
)(
1778 IN NDIS_HANDLE ProtocolBindingContext
);
1780 /* Protocol characteristics for NDIS 3.0 protocols */
1782 #define NDIS30_PROTOCOL_CHARACTERISTICS_S \
1783 UCHAR MajorNdisVersion; \
1784 UCHAR MinorNdisVersion; \
1786 _ANONYMOUS_UNION union { \
1790 OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler; \
1791 CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler; \
1792 _ANONYMOUS_UNION union { \
1793 SEND_COMPLETE_HANDLER SendCompleteHandler; \
1794 WAN_SEND_COMPLETE_HANDLER WanSendCompleteHandler; \
1795 } DUMMYUNIONNAME2; \
1796 _ANONYMOUS_UNION union { \
1797 TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; \
1798 WAN_TRANSFER_DATA_COMPLETE_HANDLER WanTransferDataCompleteHandler; \
1799 } DUMMYUNIONNAME3; \
1800 RESET_COMPLETE_HANDLER ResetCompleteHandler; \
1801 REQUEST_COMPLETE_HANDLER RequestCompleteHandler; \
1802 _ANONYMOUS_UNION union { \
1803 RECEIVE_HANDLER ReceiveHandler; \
1804 WAN_RECEIVE_HANDLER WanReceiveHandler; \
1805 } DUMMYUNIONNAME4; \
1806 RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; \
1807 STATUS_HANDLER StatusHandler; \
1808 STATUS_COMPLETE_HANDLER StatusCompleteHandler; \
1811 typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS
{
1812 NDIS30_PROTOCOL_CHARACTERISTICS_S
1813 } NDIS30_PROTOCOL_CHARACTERISTICS
, *PNDIS30_PROTOCOL_CHARACTERISTICS
;
1816 /* Prototypes for NDIS 4.0 protocol characteristics */
1819 (NTAPI
*RECEIVE_PACKET_HANDLER
)(
1820 IN NDIS_HANDLE ProtocolBindingContext
,
1821 IN PNDIS_PACKET Packet
);
1824 (NTAPI
*BIND_HANDLER
)(
1825 OUT PNDIS_STATUS Status
,
1826 IN NDIS_HANDLE BindContext
,
1827 IN PNDIS_STRING DeviceName
,
1828 IN PVOID SystemSpecific1
,
1829 IN PVOID SystemSpecific2
);
1832 (NTAPI
*UNBIND_HANDLER
)(
1833 OUT PNDIS_STATUS Status
,
1834 IN NDIS_HANDLE ProtocolBindingContext
,
1835 IN NDIS_HANDLE UnbindContext
);
1838 (NTAPI
*PNP_EVENT_HANDLER
)(
1839 IN NDIS_HANDLE ProtocolBindingContext
,
1840 IN PNET_PNP_EVENT NetPnPEvent
);
1843 (NTAPI
*UNLOAD_PROTOCOL_HANDLER
)(
1846 /* Protocol characteristics for NDIS 4.0 protocols */
1848 typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS
{
1849 UCHAR MajorNdisVersion
;
1850 UCHAR MinorNdisVersion
;
1852 __MINGW_EXTENSION
union {
1856 OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler
;
1857 CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler
;
1858 __MINGW_EXTENSION
union {
1859 SEND_COMPLETE_HANDLER SendCompleteHandler
;
1860 WAN_SEND_COMPLETE_HANDLER WanSendCompleteHandler
;
1862 __MINGW_EXTENSION
union {
1863 TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler
;
1864 WAN_TRANSFER_DATA_COMPLETE_HANDLER WanTransferDataCompleteHandler
;
1866 RESET_COMPLETE_HANDLER ResetCompleteHandler
;
1867 REQUEST_COMPLETE_HANDLER RequestCompleteHandler
;
1868 __MINGW_EXTENSION
union {
1869 RECEIVE_HANDLER ReceiveHandler
;
1870 WAN_RECEIVE_HANDLER WanReceiveHandler
;
1872 RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler
;
1873 STATUS_HANDLER StatusHandler
;
1874 STATUS_COMPLETE_HANDLER StatusCompleteHandler
;
1876 RECEIVE_PACKET_HANDLER ReceivePacketHandler
;
1877 BIND_HANDLER BindAdapterHandler
;
1878 UNBIND_HANDLER UnbindAdapterHandler
;
1879 PNP_EVENT_HANDLER PnPEventHandler
;
1880 UNLOAD_PROTOCOL_HANDLER UnloadHandler
;
1881 } NDIS40_PROTOCOL_CHARACTERISTICS
;
1884 (NTAPI PROTCOL_CO_AF_REGISTER_NOTIFY
)(
1885 IN NDIS_HANDLE ProtocolBindingContext
,
1886 IN PCO_ADDRESS_FAMILY AddressFamily
);
1887 typedef PROTCOL_CO_AF_REGISTER_NOTIFY
*CO_AF_REGISTER_NOTIFY_HANDLER
;
1889 #if NDIS_LEGACY_PROTOCOL
1891 typedef struct _NDIS50_PROTOCOL_CHARACTERISTICS
{
1893 NDIS40_PROTOCOL_CHARACTERISTICS Ndis40Chars
;
1895 NDIS40_PROTOCOL_CHARACTERISTICS
;
1897 PVOID ReservedHandlers
[4];
1898 CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler
;
1899 CO_STATUS_HANDLER CoStatusHandler
;
1900 CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler
;
1901 CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler
;
1902 } NDIS50_PROTOCOL_CHARACTERISTICS
;
1904 #if (defined(NDIS50) || defined(NDIS51))
1905 typedef NDIS50_PROTOCOL_CHARACTERISTICS NDIS_PROTOCOL_CHARACTERISTICS
;
1907 typedef NDIS40_PROTOCOL_CHARACTERISTICS NDIS_PROTOCOL_CHARACTERISTICS
;
1910 typedef NDIS_PROTOCOL_CHARACTERISTICS
*PNDIS_PROTOCOL_CHARACTERISTICS
;
1912 #endif /* NDIS_LEGACY_PROTOCOL */
1914 /* Prototypes for NDIS_MINIPORT_CHARACTERISTICS */
1917 (NTAPI
*W_CHECK_FOR_HANG_HANDLER
)(
1918 IN NDIS_HANDLE MiniportAdapterContext
);
1921 (NTAPI
*W_DISABLE_INTERRUPT_HANDLER
)(
1922 IN NDIS_HANDLE MiniportAdapterContext
);
1925 (NTAPI
*W_ENABLE_INTERRUPT_HANDLER
)(
1926 IN NDIS_HANDLE MiniportAdapterContext
);
1929 (NTAPI
*W_HALT_HANDLER
)(
1930 IN NDIS_HANDLE MiniportAdapterContext
);
1933 (NTAPI
*W_HANDLE_INTERRUPT_HANDLER
)(
1934 IN NDIS_HANDLE MiniportAdapterContext
);
1937 (NTAPI
*W_INITIALIZE_HANDLER
)(
1938 OUT PNDIS_STATUS OpenErrorStatus
,
1939 OUT PUINT SelectedMediumIndex
,
1940 IN PNDIS_MEDIUM MediumArray
,
1941 IN UINT MediumArraySize
,
1942 IN NDIS_HANDLE MiniportAdapterContext
,
1943 IN NDIS_HANDLE WrapperConfigurationContext
);
1946 (NTAPI
*W_ISR_HANDLER
)(
1947 OUT PBOOLEAN InterruptRecognized
,
1948 OUT PBOOLEAN QueueMiniportHandleInterrupt
,
1949 IN NDIS_HANDLE MiniportAdapterContext
);
1952 (NTAPI
*W_QUERY_INFORMATION_HANDLER
)(
1953 IN NDIS_HANDLE MiniportAdapterContext
,
1955 IN PVOID InformationBuffer
,
1956 IN ULONG InformationBufferLength
,
1957 OUT PULONG BytesWritten
,
1958 OUT PULONG BytesNeeded
);
1961 (NTAPI
*W_RECONFIGURE_HANDLER
)(
1962 OUT PNDIS_STATUS OpenErrorStatus
,
1963 IN NDIS_HANDLE MiniportAdapterContext
,
1964 IN NDIS_HANDLE WrapperConfigurationContext
);
1967 (NTAPI
*W_RESET_HANDLER
)(
1968 OUT PBOOLEAN AddressingReset
,
1969 IN NDIS_HANDLE MiniportAdapterContext
);
1972 (NTAPI
*W_SEND_HANDLER
)(
1973 IN NDIS_HANDLE MiniportAdapterContext
,
1974 IN PNDIS_PACKET Packet
,
1978 (NTAPI
*WM_SEND_HANDLER
)(
1979 IN NDIS_HANDLE MiniportAdapterContext
,
1980 IN NDIS_HANDLE NdisLinkHandle
,
1981 IN PNDIS_WAN_PACKET Packet
);
1984 (NTAPI
*W_SET_INFORMATION_HANDLER
)(
1985 IN NDIS_HANDLE MiniportAdapterContext
,
1987 IN PVOID InformationBuffer
,
1988 IN ULONG InformationBufferLength
,
1989 OUT PULONG BytesRead
,
1990 OUT PULONG BytesNeeded
);
1993 (NTAPI
*W_TRANSFER_DATA_HANDLER
)(
1994 OUT PNDIS_PACKET Packet
,
1995 OUT PUINT BytesTransferred
,
1996 IN NDIS_HANDLE MiniportAdapterContext
,
1997 IN NDIS_HANDLE MiniportReceiveContext
,
1999 IN UINT BytesToTransfer
);
2002 (NTAPI
*WM_TRANSFER_DATA_HANDLER
)(
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
,
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 */
2077 (NTAPI MINIPORT_CO_CREATE_VC
)(
2078 IN NDIS_HANDLE MiniportAdapterContext
,
2079 IN NDIS_HANDLE NdisVcHandle
,
2080 OUT PNDIS_HANDLE MiniportVcContext
);
2081 typedef MINIPORT_CO_CREATE_VC
*W_CO_CREATE_VC_HANDLER
;
2084 (NTAPI MINIPORT_CO_DELETE_VC
)(
2085 IN NDIS_HANDLE MiniportVcContext
);
2086 typedef MINIPORT_CO_DELETE_VC
*W_CO_DELETE_VC_HANDLER
;
2089 (NTAPI MINIPORT_CO_ACTIVATE_VC
)(
2090 IN NDIS_HANDLE MiniportVcContext
,
2091 IN OUT PCO_CALL_PARAMETERS CallParameters
);
2092 typedef MINIPORT_CO_ACTIVATE_VC
*W_CO_ACTIVATE_VC_HANDLER
;
2095 (NTAPI MINIPORT_CO_DEACTIVATE_VC
)(
2096 IN NDIS_HANDLE MiniportVcContext
);
2097 typedef MINIPORT_CO_DEACTIVATE_VC
*W_CO_DEACTIVATE_VC_HANDLER
;
2100 (NTAPI
*W_CO_SEND_PACKETS_HANDLER
)(
2101 IN NDIS_HANDLE MiniportVcContext
,
2102 IN PPNDIS_PACKET PacketArray
,
2103 IN UINT NumberOfPackets
);
2106 (NTAPI
*W_CO_REQUEST_HANDLER
)(
2107 IN NDIS_HANDLE MiniportAdapterContext
,
2108 IN NDIS_HANDLE MiniportVcContext OPTIONAL
,
2109 IN OUT PNDIS_REQUEST NdisRequest
);
2113 #define NDIS50_MINIPORT_CHARACTERISTICS_S \
2114 NDIS40_MINIPORT_CHARACTERISTICS Ndis40Chars; \
2115 W_CO_CREATE_VC_HANDLER CoCreateVcHandler; \
2116 W_CO_DELETE_VC_HANDLER CoDeleteVcHandler; \
2117 W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler; \
2118 W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler; \
2119 W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler; \
2120 W_CO_REQUEST_HANDLER CoRequestHandler;
2122 #else /* !__cplusplus */
2124 #define NDIS50_MINIPORT_CHARACTERISTICS_S \
2125 NDIS40_MINIPORT_CHARACTERISTICS_S \
2126 W_CO_CREATE_VC_HANDLER CoCreateVcHandler; \
2127 W_CO_DELETE_VC_HANDLER CoDeleteVcHandler; \
2128 W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler; \
2129 W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler; \
2130 W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler; \
2131 W_CO_REQUEST_HANDLER CoRequestHandler;
2133 #endif /* !__cplusplus */
2135 typedef struct _NDIS50_MINIPORT_CHARACTERISTICS
{
2136 NDIS50_MINIPORT_CHARACTERISTICS_S
2137 } NDIS50_MINIPORT_CHARACTERISTICS
, *PSNDIS50_MINIPORT_CHARACTERISTICS
;
2139 /* Extensions for NDIS 5.1 miniports */
2142 (NTAPI
*W_CANCEL_SEND_PACKETS_HANDLER
)(
2143 IN NDIS_HANDLE MiniportAdapterContext
,
2147 (NTAPI
*W_PNP_EVENT_NOTIFY_HANDLER
)(
2148 IN NDIS_HANDLE MiniportAdapterContext
,
2149 IN NDIS_DEVICE_PNP_EVENT PnPEvent
,
2150 IN PVOID InformationBuffer
,
2151 IN ULONG InformationBufferLength
);
2154 (NTAPI
*W_MINIPORT_SHUTDOWN_HANDLER
)(
2155 IN PVOID ShutdownContext
);
2159 #define NDIS51_MINIPORT_CHARACTERISTICS_S \
2160 NDIS50_MINIPORT_CHARACTERISTICS Ndis50Chars; \
2161 W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler; \
2162 W_PNP_EVENT_NOTIFY_HANDLER PnPEventNotifyHandler; \
2163 W_MINIPORT_SHUTDOWN_HANDLER AdapterShutdownHandler;
2167 #define NDIS51_MINIPORT_CHARACTERISTICS_S \
2168 NDIS50_MINIPORT_CHARACTERISTICS_S \
2169 W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler; \
2170 W_PNP_EVENT_NOTIFY_HANDLER PnPEventNotifyHandler; \
2171 W_MINIPORT_SHUTDOWN_HANDLER AdapterShutdownHandler;
2175 typedef struct _NDIS51_MINIPORT_CHARACTERISTICS
{
2176 NDIS51_MINIPORT_CHARACTERISTICS_S
2177 } NDIS51_MINIPORT_CHARACTERISTICS
, *PSNDIS51_MINIPORT_CHARACTERISTICS
;
2179 #if defined(NDIS51_MINIPORT)
2180 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
2181 NDIS51_MINIPORT_CHARACTERISTICS_S
2182 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
2183 #elif defined(NDIS50_MINIPORT)
2184 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
2185 NDIS50_MINIPORT_CHARACTERISTICS_S
2186 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
2187 #elif defined(NDIS40_MINIPORT)
2188 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
2189 NDIS40_MINIPORT_CHARACTERISTICS_S
2190 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
2192 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
2193 NDIS30_MINIPORT_CHARACTERISTICS_S
2194 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
2197 typedef struct _NDIS_MINIPORT_INTERRUPT
{
2198 PKINTERRUPT InterruptObject
;
2199 KSPIN_LOCK DpcCountLock
;
2201 W_ISR_HANDLER MiniportIsr
;
2202 W_HANDLE_INTERRUPT_HANDLER MiniportDpc
;
2204 PNDIS_MINIPORT_BLOCK Miniport
;
2207 KEVENT DpcsCompletedEvent
;
2208 BOOLEAN SharedInterrupt
;
2209 BOOLEAN IsrRequested
;
2210 } NDIS_MINIPORT_INTERRUPT
, *PNDIS_MINIPORT_INTERRUPT
;
2212 /* Structures available only to full MAC drivers */
2215 (NTAPI
*PNDIS_INTERRUPT_SERVICE
)(
2216 IN PVOID InterruptContext
);
2219 (NTAPI
*PNDIS_DEFERRED_PROCESSING
)(
2220 IN PVOID SystemSpecific1
,
2221 IN PVOID InterruptContext
,
2222 IN PVOID SystemSpecific2
,
2223 IN PVOID SystemSpecific3
);
2225 typedef struct _NDIS_WRAPPER_HANDLE NDIS_WRAPPER_HANDLE
, *PNDIS_WRAPPER_HANDLE
;
2226 typedef struct _NDIS_PROTOCOL_BLOCK NDIS_PROTOCOL_BLOCK
, *PNDIS_PROTOCOL_BLOCK
;
2227 typedef struct _NDIS_OPEN_BLOCK NDIS_OPEN_BLOCK
, *PNDIS_OPEN_BLOCK
;
2228 typedef struct _NDIS_M_DRIVER_BLOCK NDIS_M_DRIVER_BLOCK
, *PNDIS_M_DRIVER_BLOCK
;
2229 typedef struct _NDIS_OFFLOAD NDIS_OFFLOAD
, *PNDIS_OFFLOAD
;
2230 typedef struct _NDIS_AF_LIST NDIS_AF_LIST
, *PNDIS_AF_LIST
;
2231 typedef struct _X_FILTER ETH_FILTER
, *PETH_FILTER
;
2232 #if NDIS_SUPPORT_NDIS6
2233 typedef USHORT NET_FRAME_TYPE
, *PNET_FRAME_TYPE
;
2236 typedef struct _NDIS_MINIPORT_TIMER
{
2239 PNDIS_TIMER_FUNCTION MiniportTimerFunction
;
2240 PVOID MiniportTimerContext
;
2241 PNDIS_MINIPORT_BLOCK Miniport
;
2242 struct _NDIS_MINIPORT_TIMER
*NextDeferredTimer
;
2243 } NDIS_MINIPORT_TIMER
, *PNDIS_MINIPORT_TIMER
;
2245 typedef struct _NDIS_INTERRUPT
{
2246 PKINTERRUPT InterruptObject
;
2247 KSPIN_LOCK DpcCountLock
;
2248 PNDIS_INTERRUPT_SERVICE MacIsr
;
2249 PNDIS_DEFERRED_PROCESSING MacDpc
;
2251 PVOID InterruptContext
;
2254 KEVENT DpcsCompletedEvent
;
2255 } NDIS_INTERRUPT
, *PNDIS_INTERRUPT
;
2258 typedef enum _NDIS_WORK_ITEM_TYPE
{
2259 NdisWorkItemRequest
,
2261 NdisWorkItemReturnPackets
,
2262 NdisWorkItemResetRequested
,
2263 NdisWorkItemResetInProgress
,
2265 NdisWorkItemSendLoopback
,
2266 NdisWorkItemMiniportCallback
,
2268 } NDIS_WORK_ITEM_TYPE
, *PNDIS_WORK_ITEM_TYPE
;
2270 #define NUMBER_OF_WORK_ITEM_TYPES NdisMaxWorkItems
2271 #define NUMBER_OF_SINGLE_WORK_ITEMS 6
2273 typedef struct _NDIS_MINIPORT_WORK_ITEM
{
2274 SINGLE_LIST_ENTRY Link
;
2275 NDIS_WORK_ITEM_TYPE WorkItemType
;
2276 PVOID WorkItemContext
;
2277 } NDIS_MINIPORT_WORK_ITEM
, *PNDIS_MINIPORT_WORK_ITEM
;
2279 struct _NDIS_WORK_ITEM
;
2280 typedef VOID (*NDIS_PROC
)(struct _NDIS_WORK_ITEM
*, PVOID
);
2282 typedef struct _NDIS_WORK_ITEM
{
2285 UCHAR WrapperReserved
[8*sizeof(PVOID
)];
2286 } NDIS_WORK_ITEM
, *PNDIS_WORK_ITEM
;
2288 typedef struct _NDIS_BIND_PATHS
{
2290 NDIS_STRING Paths
[1];
2291 } NDIS_BIND_PATHS
, *PNDIS_BIND_PATHS
;
2295 (NTAPI
*ETH_RCV_COMPLETE_HANDLER
)(
2296 IN PETH_FILTER Filter
);
2299 (NTAPI
*ETH_RCV_INDICATE_HANDLER
)(
2300 IN PETH_FILTER Filter
,
2301 IN NDIS_HANDLE MacReceiveContext
,
2303 IN PVOID HeaderBuffer
,
2304 IN UINT HeaderBufferSize
,
2305 IN PVOID LookaheadBuffer
,
2306 IN UINT LookaheadBufferSize
,
2307 IN UINT PacketSize
);
2310 (NTAPI
*FDDI_RCV_COMPLETE_HANDLER
)(
2311 IN PFDDI_FILTER Filter
);
2314 (NTAPI
*FDDI_RCV_INDICATE_HANDLER
)(
2315 IN PFDDI_FILTER Filter
,
2316 IN NDIS_HANDLE MacReceiveContext
,
2318 IN UINT AddressLength
,
2319 IN PVOID HeaderBuffer
,
2320 IN UINT HeaderBufferSize
,
2321 IN PVOID LookaheadBuffer
,
2322 IN UINT LookaheadBufferSize
,
2323 IN UINT PacketSize
);
2326 (NTAPI
*FILTER_PACKET_INDICATION_HANDLER
)(
2327 IN NDIS_HANDLE Miniport
,
2328 IN PPNDIS_PACKET PacketArray
,
2329 IN UINT NumberOfPackets
);
2332 (NTAPI
*TR_RCV_COMPLETE_HANDLER
)(
2333 IN PTR_FILTER Filter
);
2336 (NTAPI
*TR_RCV_INDICATE_HANDLER
)(
2337 IN PTR_FILTER Filter
,
2338 IN NDIS_HANDLE MacReceiveContext
,
2339 IN PVOID HeaderBuffer
,
2340 IN UINT HeaderBufferSize
,
2341 IN PVOID LookaheadBuffer
,
2342 IN UINT LookaheadBufferSize
,
2343 IN UINT PacketSize
);
2346 (NTAPI
*WAN_RCV_COMPLETE_HANDLER
)(
2347 IN NDIS_HANDLE MiniportAdapterHandle
,
2348 IN NDIS_HANDLE NdisLinkContext
);
2351 (NTAPI
*WAN_RCV_HANDLER
)(
2352 OUT PNDIS_STATUS Status
,
2353 IN NDIS_HANDLE MiniportAdapterHandle
,
2354 IN NDIS_HANDLE NdisLinkContext
,
2356 IN ULONG PacketSize
);
2359 (FASTCALL
*NDIS_M_DEQUEUE_WORK_ITEM
)(
2360 IN PNDIS_MINIPORT_BLOCK Miniport
,
2361 IN NDIS_WORK_ITEM_TYPE WorkItemType
,
2362 OUT PVOID
*WorkItemContext
);
2365 (FASTCALL
*NDIS_M_QUEUE_NEW_WORK_ITEM
)(
2366 IN PNDIS_MINIPORT_BLOCK Miniport
,
2367 IN NDIS_WORK_ITEM_TYPE WorkItemType
,
2368 IN PVOID WorkItemContext
);
2371 (FASTCALL
*NDIS_M_QUEUE_WORK_ITEM
)(
2372 IN PNDIS_MINIPORT_BLOCK Miniport
,
2373 IN NDIS_WORK_ITEM_TYPE WorkItemType
,
2374 IN PVOID WorkItemContext
);
2377 (NTAPI
*NDIS_M_REQ_COMPLETE_HANDLER
)(
2378 IN NDIS_HANDLE MiniportAdapterHandle
,
2379 IN NDIS_STATUS Status
);
2382 (NTAPI
*NDIS_M_RESET_COMPLETE_HANDLER
)(
2383 IN NDIS_HANDLE MiniportAdapterHandle
,
2384 IN NDIS_STATUS Status
,
2385 IN BOOLEAN AddressingReset
);
2388 (NTAPI
*NDIS_M_SEND_COMPLETE_HANDLER
)(
2389 IN NDIS_HANDLE MiniportAdapterHandle
,
2390 IN PNDIS_PACKET Packet
,
2391 IN NDIS_STATUS Status
);
2394 (NTAPI
*NDIS_M_SEND_RESOURCES_HANDLER
)(
2395 IN NDIS_HANDLE MiniportAdapterHandle
);
2398 (FASTCALL
*NDIS_M_START_SENDS
)(
2399 IN PNDIS_MINIPORT_BLOCK Miniport
);
2402 (NTAPI
*NDIS_M_STATUS_HANDLER
)(
2403 IN NDIS_HANDLE MiniportHandle
,
2404 IN NDIS_STATUS GeneralStatus
,
2405 IN PVOID StatusBuffer
,
2406 IN UINT StatusBufferSize
);
2409 (NTAPI
*NDIS_M_STS_COMPLETE_HANDLER
)(
2410 IN NDIS_HANDLE MiniportAdapterHandle
);
2413 (NTAPI
*NDIS_M_TD_COMPLETE_HANDLER
)(
2414 IN NDIS_HANDLE MiniportAdapterHandle
,
2415 IN PNDIS_PACKET Packet
,
2416 IN NDIS_STATUS Status
,
2417 IN UINT BytesTransferred
);
2419 typedef VOID (NTAPI
*NDIS_WM_SEND_COMPLETE_HANDLER
)(
2420 IN NDIS_HANDLE MiniportAdapterHandle
,
2422 IN NDIS_STATUS Status
);
2427 #define ARC_SEND_BUFFERS 8
2428 #define ARC_HEADER_SIZE 4
2430 typedef struct _NDIS_ARC_BUF
{
2431 NDIS_HANDLE ArcnetBufferPool
;
2432 PUCHAR ArcnetLookaheadBuffer
;
2434 ARC_BUFFER_LIST ArcnetBuffers
[ARC_SEND_BUFFERS
];
2435 } NDIS_ARC_BUF
, *PNDIS_ARC_BUF
;
2439 typedef struct _NDIS_LOG
{
2440 PNDIS_MINIPORT_BLOCK Miniport
;
2448 } NDIS_LOG
, *PNDIS_LOG
;
2451 #define FILTERDBS_ARCNET_S \
2454 #define FILTERDBS_ARCNET_S \
2456 #endif /* !ARCNET */
2458 #define FILTERDBS_S \
2459 _ANONYMOUS_UNION union { \
2460 PETH_FILTER EthDB; \
2461 PNULL_FILTER NullDB; \
2464 PFDDI_FILTER FddiDB; \
2467 typedef struct _FILTERDBS
{
2469 } FILTERDBS
, *PFILTERDBS
;
2471 struct _NDIS_MINIPORT_BLOCK
{
2472 NDIS_OBJECT_HEADER Header
;
2473 PNDIS_MINIPORT_BLOCK NextMiniport
;
2474 PNDIS_M_DRIVER_BLOCK DriverHandle
;
2475 NDIS_HANDLE MiniportAdapterContext
;
2476 UNICODE_STRING MiniportName
;
2477 PNDIS_BIND_PATHS BindPaths
;
2478 NDIS_HANDLE OpenQueue
;
2480 NDIS_HANDLE DeviceContext
;
2484 UCHAR AssignedProcessor
;
2486 PNDIS_REQUEST MediaRequest
;
2487 PNDIS_MINIPORT_INTERRUPT Interrupt
;
2490 LIST_ENTRY PacketList
;
2491 PNDIS_PACKET FirstPendingPacket
;
2492 PNDIS_PACKET ReturnPacketsQueue
;
2493 ULONG RequestBuffer
;
2494 PVOID SetMCastBuffer
;
2495 PNDIS_MINIPORT_BLOCK PrimaryMiniport
;
2496 PVOID WrapperContext
;
2497 PVOID BusDataContext
;
2498 ULONG PnPCapabilities
;
2499 PCM_RESOURCE_LIST Resources
;
2500 NDIS_TIMER WakeUpDpcTimer
;
2501 UNICODE_STRING BaseName
;
2502 UNICODE_STRING SymbolicLinkName
;
2503 ULONG CheckForHangSeconds
;
2505 USHORT CFHangCurrentTick
;
2506 NDIS_STATUS ResetStatus
;
2507 NDIS_HANDLE ResetOpen
;
2509 FILTER_PACKET_INDICATION_HANDLER PacketIndicateHandler
;
2510 NDIS_M_SEND_COMPLETE_HANDLER SendCompleteHandler
;
2511 NDIS_M_SEND_RESOURCES_HANDLER SendResourcesHandler
;
2512 NDIS_M_RESET_COMPLETE_HANDLER ResetCompleteHandler
;
2513 NDIS_MEDIUM MediaType
;
2515 NDIS_INTERFACE_TYPE BusType
;
2516 NDIS_INTERFACE_TYPE AdapterType
;
2517 PDEVICE_OBJECT DeviceObject
;
2518 PDEVICE_OBJECT PhysicalDeviceObject
;
2519 PDEVICE_OBJECT NextDeviceObject
;
2520 PMAP_REGISTER_ENTRY MapRegisters
;
2521 PNDIS_AF_LIST CallMgrAfList
;
2522 PVOID MiniportThread
;
2524 USHORT SetInfoBufLen
;
2525 USHORT MaxSendPackets
;
2526 NDIS_STATUS FakeStatus
;
2528 PUNICODE_STRING pAdapterInstanceName
;
2529 PNDIS_MINIPORT_TIMER TimerQueue
;
2531 PNDIS_REQUEST PendingRequest
;
2532 UINT MaximumLongAddresses
;
2533 UINT MaximumShortAddresses
;
2534 UINT CurrentLookahead
;
2535 UINT MaximumLookahead
;
2536 W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler
;
2537 W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler
;
2538 W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler
;
2539 W_SEND_PACKETS_HANDLER SendPacketsHandler
;
2540 NDIS_M_START_SENDS DeferredSendHandler
;
2541 ETH_RCV_INDICATE_HANDLER EthRxIndicateHandler
;
2542 TR_RCV_INDICATE_HANDLER TrRxIndicateHandler
;
2543 FDDI_RCV_INDICATE_HANDLER FddiRxIndicateHandler
;
2544 ETH_RCV_COMPLETE_HANDLER EthRxCompleteHandler
;
2545 TR_RCV_COMPLETE_HANDLER TrRxCompleteHandler
;
2546 FDDI_RCV_COMPLETE_HANDLER FddiRxCompleteHandler
;
2547 NDIS_M_STATUS_HANDLER StatusHandler
;
2548 NDIS_M_STS_COMPLETE_HANDLER StatusCompleteHandler
;
2549 NDIS_M_TD_COMPLETE_HANDLER TDCompleteHandler
;
2550 NDIS_M_REQ_COMPLETE_HANDLER QueryCompleteHandler
;
2551 NDIS_M_REQ_COMPLETE_HANDLER SetCompleteHandler
;
2552 NDIS_WM_SEND_COMPLETE_HANDLER WanSendCompleteHandler
;
2553 WAN_RCV_HANDLER WanRcvHandler
;
2554 WAN_RCV_COMPLETE_HANDLER WanRcvCompleteHandler
;
2555 #if defined(NDIS_WRAPPER)
2556 PNDIS_MINIPORT_BLOCK NextGlobalMiniport
;
2557 SINGLE_LIST_ENTRY WorkQueue
[NUMBER_OF_WORK_ITEM_TYPES
];
2558 SINGLE_LIST_ENTRY SingleWorkItems
[NUMBER_OF_SINGLE_WORK_ITEMS
];
2561 UCHAR ArcnetAddress
;
2563 _ANONYMOUS_UNION
union {
2565 PNDIS_ARC_BUF ArcBuf
;
2571 PCM_RESOURCE_LIST AllocatedResources
;
2572 PCM_RESOURCE_LIST AllocatedResourcesTranslated
;
2573 SINGLE_LIST_ENTRY PatternList
;
2574 NDIS_PNP_CAPABILITIES PMCapabilities
;
2575 DEVICE_CAPABILITIES DeviceCaps
;
2577 DEVICE_POWER_STATE CurrentDevicePowerState
;
2579 SYSTEM_POWER_STATE WaitWakeSystemState
;
2580 LARGE_INTEGER VcIndex
;
2581 KSPIN_LOCK VcCountLock
;
2582 LIST_ENTRY WmiEnabledVcs
;
2583 PNDIS_GUID pNdisGuidMap
;
2584 PNDIS_GUID pCustomGuidMap
;
2586 USHORT cNdisGuidMap
;
2587 USHORT cCustomGuidMap
;
2588 USHORT CurrentMapRegister
;
2589 PKEVENT AllocationEvent
;
2590 USHORT BaseMapRegistersNeeded
;
2591 USHORT SGMapRegistersNeeded
;
2592 ULONG MaximumPhysicalMapping
;
2593 NDIS_TIMER MediaDisconnectTimer
;
2594 USHORT MediaDisconnectTimeOut
;
2595 USHORT InstanceNumber
;
2596 NDIS_EVENT OpenReadyEvent
;
2597 NDIS_PNP_DEVICE_STATE PnPDeviceState
;
2598 NDIS_PNP_DEVICE_STATE OldPnPDeviceState
;
2599 PGET_SET_DEVICE_DATA SetBusData
;
2600 PGET_SET_DEVICE_DATA GetBusData
;
2604 NDIS_STATS NdisStats
;
2608 PNDIS_PACKET IndicatedPacket
[MAXIMUM_PROCESSORS
];
2609 PKEVENT RemoveReadyEvent
;
2610 PKEVENT AllOpensClosedEvent
;
2611 PKEVENT AllRequestsCompletedEvent
;
2613 NDIS_MINIPORT_WORK_ITEM WorkItemBuffer
[NUMBER_OF_SINGLE_WORK_ITEMS
];
2614 PDMA_ADAPTER SystemAdapterObject
;
2615 ULONG DriverVerifyFlags
;
2617 USHORT InternalResetCount
;
2618 USHORT MiniportResetCount
;
2619 USHORT MediaSenseConnectCount
;
2620 USHORT MediaSenseDisconnectCount
;
2621 PNDIS_PACKET
*xPackets
;
2622 ULONG UserModeOpenReferences
;
2623 _ANONYMOUS_UNION
union {
2624 PVOID SavedSendHandler
;
2625 PVOID SavedWanSendHandler
;
2627 PVOID SavedSendPacketsHandler
;
2628 PVOID SavedCancelSendPacketsHandler
;
2629 W_SEND_PACKETS_HANDLER WSendPacketsHandler
;
2630 ULONG MiniportAttributes
;
2631 PDMA_ADAPTER SavedSystemAdapterObject
;
2633 USHORT CFHangXTicks
;
2635 ULONG IndicatedPacketsCount
;
2636 ULONG PhysicalMediumType
;
2637 PNDIS_REQUEST LastRequest
;
2638 LONG DmaAdapterRefCount
;
2644 KSPIN_LOCK TimerQueueLock
;
2645 PKEVENT ResetCompletedEvent
;
2646 PKEVENT QueuedBindingCompletedEvent
;
2647 PKEVENT DmaResourcesReleasedEvent
;
2648 FILTER_PACKET_INDICATION_HANDLER SavedPacketIndicateHandler
;
2649 ULONG RegisteredInterrupts
;
2650 PNPAGED_LOOKASIDE_LIST SGListLookasideList
;
2651 ULONG ScatterGatherListSize
;
2655 #if NDIS_LEGACY_DRIVER
2658 (NTAPI
*WAN_SEND_HANDLER
)(
2659 IN NDIS_HANDLE MacBindingHandle
,
2660 IN NDIS_HANDLE LinkHandle
,
2664 (NTAPI
*SEND_PACKETS_HANDLER
)(
2665 IN NDIS_HANDLE MiniportAdapterContext
,
2666 IN PPNDIS_PACKET PacketArray
,
2667 IN UINT NumberOfPackets
);
2670 (NTAPI
*SEND_HANDLER
)(
2671 IN NDIS_HANDLE NdisBindingHandle
,
2672 IN PNDIS_PACKET Packet
);
2675 (NTAPI
*TRANSFER_DATA_HANDLER
)(
2676 IN NDIS_HANDLE NdisBindingHandle
,
2677 IN NDIS_HANDLE MacReceiveContext
,
2679 IN UINT BytesToTransfer
,
2680 OUT PNDIS_PACKET Packet
,
2681 OUT PUINT BytesTransferred
);
2684 (NTAPI
*RESET_HANDLER
)(
2685 IN NDIS_HANDLE NdisBindingHandle
);
2688 (NTAPI
*REQUEST_HANDLER
)(
2689 IN NDIS_HANDLE NdisBindingHandle
,
2690 IN PNDIS_REQUEST NdisRequest
);
2692 #endif /* NDIS_LEGACY_DRIVER */
2694 #if defined(NDIS_WRAPPER)
2695 #define NDIS_COMMON_OPEN_BLOCK_WRAPPER_S \
2698 KSPIN_LOCK SpinLock; \
2699 NDIS_HANDLE FilterHandle; \
2700 ULONG ProtocolOptions; \
2701 USHORT CurrentLookahead; \
2702 USHORT ConnectDampTicks; \
2703 USHORT DisconnectDampTicks; \
2704 W_SEND_HANDLER WSendHandler; \
2705 W_TRANSFER_DATA_HANDLER WTransferDataHandler; \
2706 W_SEND_PACKETS_HANDLER WSendPacketsHandler; \
2707 W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler; \
2708 ULONG WakeUpEnable; \
2709 PKEVENT CloseCompleteEvent; \
2711 ULONG AfReferences; \
2712 PNDIS_OPEN_BLOCK NextGlobalOpen;
2714 #define NDIS_COMMON_OPEN_BLOCK_WRAPPER_S
2717 #define NDIS_COMMON_OPEN_BLOCK_S \
2719 NDIS_HANDLE BindingHandle; \
2720 PNDIS_MINIPORT_BLOCK MiniportHandle; \
2721 PNDIS_PROTOCOL_BLOCK ProtocolHandle; \
2722 NDIS_HANDLE ProtocolBindingContext; \
2723 PNDIS_OPEN_BLOCK MiniportNextOpen; \
2724 PNDIS_OPEN_BLOCK ProtocolNextOpen; \
2725 NDIS_HANDLE MiniportAdapterContext; \
2726 BOOLEAN Reserved1; \
2727 BOOLEAN Reserved2; \
2728 BOOLEAN Reserved3; \
2729 BOOLEAN Reserved4; \
2730 PNDIS_STRING BindDeviceName; \
2731 KSPIN_LOCK Reserved5; \
2732 PNDIS_STRING RootDeviceName; \
2733 _ANONYMOUS_UNION union { \
2734 SEND_HANDLER SendHandler; \
2735 WAN_SEND_HANDLER WanSendHandler; \
2737 TRANSFER_DATA_HANDLER TransferDataHandler; \
2738 SEND_COMPLETE_HANDLER SendCompleteHandler; \
2739 TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; \
2740 RECEIVE_HANDLER ReceiveHandler; \
2741 RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; \
2742 WAN_RECEIVE_HANDLER WanReceiveHandler; \
2743 REQUEST_COMPLETE_HANDLER RequestCompleteHandler; \
2744 RECEIVE_PACKET_HANDLER ReceivePacketHandler; \
2745 SEND_PACKETS_HANDLER SendPacketsHandler; \
2746 RESET_HANDLER ResetHandler; \
2747 REQUEST_HANDLER RequestHandler; \
2748 RESET_COMPLETE_HANDLER ResetCompleteHandler; \
2749 STATUS_HANDLER StatusHandler; \
2750 STATUS_COMPLETE_HANDLER StatusCompleteHandler; \
2751 NDIS_COMMON_OPEN_BLOCK_WRAPPER_S
2753 typedef struct _NDIS_COMMON_OPEN_BLOCK
{
2754 NDIS_COMMON_OPEN_BLOCK_S
2755 } NDIS_COMMON_OPEN_BLOCK
;
2757 struct _NDIS_OPEN_BLOCK
2760 NDIS_COMMON_OPEN_BLOCK NdisCommonOpenBlock
;
2762 NDIS_COMMON_OPEN_BLOCK_S
2766 #include <xfilter.h>
2768 #define NDIS_M_MAX_LOOKAHEAD 526
2773 NdisInitializeTimer(
2775 PNDIS_TIMER_FUNCTION TimerFunction
,
2776 PVOID FunctionContext
);
2783 PBOOLEAN TimerCancelled
);
2790 UINT MillisecondsToDelay
);
2795 NdisSetPeriodicTimer(
2796 PNDIS_TIMER NdisTimer
,
2797 UINT MillisecondsPeriod
);
2803 PNDIS_TIMER NdisTimer
,
2804 UINT MillisecondsToDelay
,
2805 PVOID FunctionContext
);
2810 NdisGetRoutineAddress(
2811 PNDIS_STRING NdisRoutineName
);
2816 NdisGetVersion(VOID
);
2818 #if NDIS_LEGACY_DRIVER
2824 OUT PNDIS_STATUS Status
,
2825 OUT PNDIS_BUFFER
*Buffer
,
2826 IN NDIS_HANDLE PoolHandle OPTIONAL
,
2827 IN PVOID VirtualAddress
,
2833 NdisAllocateBufferPool(
2834 OUT PNDIS_STATUS Status
,
2835 OUT PNDIS_HANDLE PoolHandle
,
2836 IN UINT NumberOfDescriptors
);
2842 IN NDIS_HANDLE PoolHandle
);
2849 IN PNDIS_BUFFER Buffer);
2851 #define NdisFreeBuffer IoFreeMdl
2856 NdisAllocatePacketPool(
2857 OUT PNDIS_STATUS Status
,
2858 OUT PNDIS_HANDLE PoolHandle
,
2859 IN UINT NumberOfDescriptors
,
2860 IN UINT ProtocolReservedLength
);
2865 NdisAllocatePacketPoolEx(
2866 OUT PNDIS_STATUS Status
,
2867 OUT PNDIS_HANDLE PoolHandle
,
2868 IN UINT NumberOfDescriptors
,
2869 IN UINT NumberOfOverflowDescriptors
,
2870 IN UINT ProtocolReservedLength
);
2875 NdisSetPacketPoolProtocolId(
2876 IN NDIS_HANDLE PacketPoolHandle
,
2877 IN UINT ProtocolId
);
2882 NdisPacketPoolUsage(
2883 IN NDIS_HANDLE PoolHandle
);
2889 IN UINT ProtocolReservedSize
);
2894 NdisGetPoolFromPacket(
2895 IN PNDIS_PACKET Packet
);
2900 NdisIMGetCurrentPacketStack(
2901 IN PNDIS_PACKET Packet
,
2902 OUT BOOLEAN
* StacksRemaining
);
2908 IN NDIS_HANDLE PoolHandle
);
2914 IN PNDIS_PACKET Packet
);
2920 IN PNDIS_PACKET Packet
);
2925 NdisDprFreePacketNonInterlocked(
2926 IN PNDIS_PACKET Packet
);
2932 OUT PNDIS_STATUS Status
,
2933 OUT PNDIS_PACKET
*Packet
,
2934 IN NDIS_HANDLE PoolHandle
);
2939 NdisDprAllocatePacket(
2940 OUT PNDIS_STATUS Status
,
2941 OUT PNDIS_PACKET
*Packet
,
2942 IN NDIS_HANDLE PoolHandle
);
2947 NdisDprAllocatePacketNonInterlocked(
2948 OUT PNDIS_STATUS Status
,
2949 OUT PNDIS_PACKET
*Packet
,
2950 IN NDIS_HANDLE PoolHandle
);
2954 * NdisReinitializePacket(
2955 * IN OUT PNDIS_PACKET Packet);
2957 #define NdisReinitializePacket(Packet) { \
2958 (Packet)->Private.Head = (PNDIS_BUFFER)NULL; \
2959 (Packet)->Private.ValidCounts = FALSE; \
2967 IN PNDIS_BUFFER Buffer,
2968 OUT PVOID *VirtualAddress OPTIONAL,
2971 #define NdisQueryBuffer(_Buffer, _VirtualAddress, _Length) { \
2972 if (ARGUMENT_PRESENT(_VirtualAddress)) { \
2973 *(PVOID *)(_VirtualAddress) = MmGetSystemAddressForMdl(_Buffer); \
2975 *(_Length) = MmGetMdlByteCount(_Buffer); \
2981 NdisGetFirstBufferFromPacket(
2982 IN PNDIS_PACKET _Packet
,
2983 OUT PNDIS_BUFFER
*_FirstBuffer
,
2984 OUT PVOID
*_FirstBufferVA
,
2985 OUT PUINT _FirstBufferLength
,
2986 OUT PUINT _TotalBufferLength
);
2990 * NdisGetFirstBufferFromPacketSafe(
2991 * IN PNDIS_PACKET _Packet,
2992 * OUT PNDIS_BUFFER * _FirstBuffer,
2993 * OUT PVOID * _FirstBufferVA,
2994 * OUT PUINT _FirstBufferLength,
2995 * OUT PUINT _TotalBufferLength),
2996 * IN MM_PAGE_PRIORITY _Priority)
2998 #define NdisGetFirstBufferFromPacketSafe(_Packet, \
3001 _FirstBufferLength, \
3002 _TotalBufferLength, \
3005 PNDIS_BUFFER _Buffer; \
3007 _Buffer = (_Packet)->Private.Head; \
3008 *(_FirstBuffer) = _Buffer; \
3009 if (_Buffer != NULL) { \
3010 *(_FirstBufferVA) = MmGetSystemAddressForMdlSafe(_Buffer, _Priority); \
3011 *(_FirstBufferLength) = MmGetMdlByteCount(_Buffer); \
3012 _Buffer = _Buffer->Next; \
3013 *(_TotalBufferLength) = *(_FirstBufferLength); \
3014 while (_Buffer != NULL) { \
3015 *(_TotalBufferLength) += MmGetMdlByteCount(_Buffer); \
3016 _Buffer = _Buffer->Next; \
3020 *(_FirstBufferVA) = 0; \
3021 *(_FirstBufferLength) = 0; \
3022 *(_TotalBufferLength) = 0; \
3028 * NdisRecalculatePacketCounts(
3029 * IN OUT PNDIS_PACKET Packet);
3031 #define NdisRecalculatePacketCounts(Packet) { \
3032 PNDIS_BUFFER _Buffer = (Packet)->Private.Head; \
3033 if (_Buffer != NULL) { \
3034 while (_Buffer->Next != NULL) { \
3035 _Buffer = _Buffer->Next; \
3037 (Packet)->Private.Tail = _Buffer; \
3039 (Packet)->Private.ValidCounts = FALSE; \
3044 * NdisChainBufferAtFront(
3045 * IN OUT PNDIS_PACKET Packet,
3046 * IN OUT PNDIS_BUFFER Buffer)
3048 #define NdisChainBufferAtFront(Packet, \
3051 PNDIS_BUFFER _NdisBuffer = (Buffer); \
3053 while (_NdisBuffer->Next != NULL) \
3054 _NdisBuffer = _NdisBuffer->Next; \
3056 if ((Packet)->Private.Head == NULL) \
3057 (Packet)->Private.Tail = _NdisBuffer; \
3059 _NdisBuffer->Next = (Packet)->Private.Head; \
3060 (Packet)->Private.Head = (Buffer); \
3061 (Packet)->Private.ValidCounts = FALSE; \
3066 * NdisChainBufferAtBack(
3067 * IN OUT PNDIS_PACKET Packet,
3068 * IN OUT PNDIS_BUFFER Buffer)
3070 #define NdisChainBufferAtBack(Packet, \
3073 PNDIS_BUFFER NdisBuffer = (Buffer); \
3075 while (NdisBuffer->Next != NULL) \
3076 NdisBuffer = NdisBuffer->Next; \
3078 NdisBuffer->Next = NULL; \
3080 if ((Packet)->Private.Head != NULL) \
3081 (Packet)->Private.Tail->Next = (Buffer); \
3083 (Packet)->Private.Head = (Buffer); \
3085 (Packet)->Private.Tail = NdisBuffer; \
3086 (Packet)->Private.ValidCounts = FALSE; \
3092 NdisUnchainBufferAtFront(
3093 IN OUT PNDIS_PACKET Packet
,
3094 OUT PNDIS_BUFFER
*Buffer
);
3099 NdisUnchainBufferAtBack(
3100 IN OUT PNDIS_PACKET Packet
,
3101 OUT PNDIS_BUFFER
*Buffer
);
3106 NdisCopyFromPacketToPacket(
3107 IN PNDIS_PACKET Destination
,
3108 IN UINT DestinationOffset
,
3109 IN UINT BytesToCopy
,
3110 IN PNDIS_PACKET Source
,
3111 IN UINT SourceOffset
,
3112 OUT PUINT BytesCopied
);
3117 NdisCopyFromPacketToPacketSafe(
3118 IN PNDIS_PACKET Destination
,
3119 IN UINT DestinationOffset
,
3120 IN UINT BytesToCopy
,
3121 IN PNDIS_PACKET Source
,
3122 IN UINT SourceOffset
,
3123 OUT PUINT BytesCopied
,
3124 IN MM_PAGE_PRIORITY Priority
);
3130 OUT PVOID
*VirtualAddress
,
3132 IN UINT MemoryFlags
,
3133 IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress
);
3135 #define NdisInitializeWorkItem(_WI_, _R_, _C_) { \
3136 (_WI_)->Context = _C_; \
3137 (_WI_)->Routine = _R_; \
3143 NdisScheduleWorkItem(
3144 IN PNDIS_WORK_ITEM WorkItem
);
3149 NdisSetPacketStatus(
3150 IN PNDIS_PACKET Packet
,
3151 IN NDIS_STATUS Status
,
3152 IN NDIS_HANDLE Handle
,
3155 #endif /* NDIS_LEGACY_DRIVER */
3161 OUT PNDIS_STATUS Status
,
3162 OUT PNDIS_HANDLE FileHandle
,
3163 OUT PUINT FileLength
,
3164 IN PNDIS_STRING FileName
,
3165 IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress
);
3171 IN NDIS_HANDLE FileHandle
);
3177 OUT PNDIS_STATUS Status
,
3178 OUT PVOID
*MappedBuffer
,
3179 IN NDIS_HANDLE FileHandle
);
3185 IN NDIS_HANDLE FileHandle
);
3190 NdisGetSharedDataAlignment(VOID
);
3192 #define NdisFlushBuffer(Buffer,WriteToDevice) \
3193 KeFlushIoBuffers((Buffer),!(WriteToDevice), TRUE)
3199 OUT PNDIS_STATUS Status
,
3200 OUT PNDIS_BUFFER
*Buffer
,
3201 IN NDIS_HANDLE PoolHandle
,
3202 IN PVOID MemoryDescriptor
,
3208 * NdisCopyLookaheadData(
3209 * IN PVOID Destination,
3212 * IN ULONG ReceiveFlags);
3215 #if defined(_M_IX86) || defined(_M_AMD64)
3216 #define NdisCopyLookaheadData(Destination, Source, Length, MacOptions) \
3217 RtlCopyMemory(Destination, Source, Length)
3219 #define NdisCopyLookaheadData(Destination, Source, Length, MacOptions) \
3221 if ((MacOptions) & NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA) \
3223 RtlCopyMemory(_Destination, _Source, _Length); \
3227 PUCHAR _Src = (PUCHAR)(Source); \
3228 PUCHAR _Dest = (PUCHAR)(Destination); \
3229 PUCHAR _End = _Dest + (Length); \
3230 while (_Dest < _End) \
3231 *_Dest++ = *_Src++; \
3240 NdisAdjustBufferLength(
3241 IN PNDIS_BUFFER Buffer,
3244 #define NdisAdjustBufferLength(Buffer, Length) \
3245 (((Buffer)->ByteCount) = (Length))
3247 #if NDIS_SUPPORT_NDIS6
3248 #define NdisAdjustMdlLength(_Mdl, _Length) \
3249 (((_Mdl)->ByteCount) = (_Length))
3257 IN PNDIS_BUFFER Buffer);
3259 #define NdisBufferLength MmGetMdlByteCount
3265 NdisBufferVirtualAddress(
3266 IN PNDIS_BUFFER Buffer);
3268 #define NdisBufferVirtualAddress MmGetSystemAddressForMdl
3270 #define NdisBufferVirtualAddressSafe MmGetSystemAddressForMdlSafe
3275 NDIS_BUFFER_TO_SPAN_PAGES(
3276 IN PNDIS_BUFFER Buffer
);
3282 NdisGetBufferPhysicalArraySize(
3283 IN PNDIS_BUFFER Buffer,
3284 OUT PUINT ArraySize);
3286 #define NdisGetBufferPhysicalArraySize(Buffer, ArraySize) \
3287 (*(ArraySize) = NDIS_BUFFER_TO_SPAN_PAGES(Buffer))
3293 NdisQueryBufferOffset(
3294 IN PNDIS_BUFFER Buffer,
3298 #define NdisQueryBufferOffset(_Buffer, _Offset, _Length) { \
3299 *(_Offset) = MmGetMdlByteOffset(_Buffer); \
3300 *(_Length) = MmGetMdlByteCount(_Buffer); \
3305 * NDIS_BUFFER_LINKAGE(
3306 * IN PNDIS_BUFFER Buffer);
3308 #define NDIS_BUFFER_LINKAGE(Buffer)(Buffer)->Next;
3312 * NdisGetNextBuffer(
3313 * IN PNDIS_BUFFER CurrentBuffer,
3314 * OUT PNDIS_BUFFER * NextBuffer)
3316 #define NdisGetNextBuffer(CurrentBuffer, \
3319 *(NextBuffer) = (CurrentBuffer)->Next; \
3322 #if NDIS_LEGACY_DRIVER
3324 #define NDIS_PACKET_FIRST_NDIS_BUFFER(_Packet) ((_Packet)->Private.Head)
3325 #define NDIS_PACKET_LAST_NDIS_BUFFER(_Packet) ((_Packet)->Private.Tail)
3326 #define NDIS_PACKET_VALID_COUNTS(_Packet) ((_Packet)->Private.ValidCounts)
3330 * NdisGetPacketFlags(
3331 * IN PNDIS_PACKET Packet);
3333 #define NdisGetPacketFlags(Packet)(Packet)->Private.Flags;
3337 * NDIS_GET_PACKET_PROTOCOL_TYPE(
3338 * IN PNDIS_PACKET Packet);
3340 #define NDIS_GET_PACKET_PROTOCOL_TYPE(_Packet) \
3341 ((_Packet)->Private.Flags & NDIS_PROTOCOL_ID_MASK)
3344 * PNDIS_PACKET_OOB_DATA
3345 * NDIS_OOB_DATA_FROM_PACKET(
3346 * IN PNDIS_PACKET Packet);
3348 #define NDIS_OOB_DATA_FROM_PACKET(_Packet) \
3349 (PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3350 (_Packet)->Private.NdisPacketOobOffset)
3354 * NDIS_GET_PACKET_HEADER_SIZE(
3355 * IN PNDIS_PACKET Packet);
3357 #define NDIS_GET_PACKET_HEADER_SIZE(_Packet) \
3358 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3359 (_Packet)->Private.NdisPacketOobOffset))->HeaderSize
3363 * NDIS_GET_PACKET_STATUS(
3364 * IN PNDIS_PACKET Packet);
3366 #define NDIS_GET_PACKET_STATUS(_Packet) \
3367 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3368 (_Packet)->Private.NdisPacketOobOffset))->Status
3372 * NDIS_GET_PACKET_TIME_TO_SEND(
3373 * IN PNDIS_PACKET Packet);
3375 #define NDIS_GET_PACKET_TIME_TO_SEND(_Packet) \
3376 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3377 (_Packet)->Private.NdisPacketOobOffset))->TimeToSend
3381 * NDIS_GET_PACKET_TIME_SENT(
3382 * IN PNDIS_PACKET Packet);
3384 #define NDIS_GET_PACKET_TIME_SENT(_Packet) \
3385 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3386 (_Packet)->Private.NdisPacketOobOffset))->TimeSent
3390 * NDIS_GET_PACKET_TIME_RECEIVED(
3391 * IN PNDIS_PACKET Packet);
3393 #define NDIS_GET_PACKET_TIME_RECEIVED(_Packet) \
3394 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3395 (_Packet)->Private.NdisPacketOobOffset))->TimeReceived
3399 * NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(
3400 * IN PNDIS_PACKET Packet,
3401 * IN PPVOID pMediaSpecificInfo,
3402 * IN PUINT pSizeMediaSpecificInfo);
3404 #define NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(_Packet, \
3405 _pMediaSpecificInfo, \
3406 _pSizeMediaSpecificInfo) \
3408 if (!((_Packet)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS) || \
3409 !((_Packet)->Private.NdisPacketFlags & fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO)) \
3411 *(_pMediaSpecificInfo) = NULL; \
3412 *(_pSizeMediaSpecificInfo) = 0; \
3416 *(_pMediaSpecificInfo) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3417 (_Packet)->Private.NdisPacketOobOffset))->MediaSpecificInformation; \
3418 *(_pSizeMediaSpecificInfo) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3419 (_Packet)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo; \
3425 * NDIS_SET_PACKET_HEADER_SIZE(
3426 * IN PNDIS_PACKET Packet,
3429 #define NDIS_SET_PACKET_HEADER_SIZE(_Packet, _HdrSize) \
3430 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3431 (_Packet)->Private.NdisPacketOobOffset))->HeaderSize = (_HdrSize)
3435 * NDIS_SET_PACKET_STATUS(
3436 * IN PNDIS_PACKET Packet,
3437 * IN NDIS_STATUS Status);
3439 #define NDIS_SET_PACKET_STATUS(_Packet, _Status) \
3440 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3441 (_Packet)->Private.NdisPacketOobOffset))->Status = (_Status)
3445 * NDIS_SET_PACKET_TIME_TO_SEND(
3446 * IN PNDIS_PACKET Packet,
3447 * IN ULONGLONG TimeToSend);
3449 #define NDIS_SET_PACKET_TIME_TO_SEND(_Packet, _TimeToSend) \
3450 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3451 (_Packet)->Private.NdisPacketOobOffset))->TimeToSend = (_TimeToSend)
3455 * NDIS_SET_PACKET_TIME_SENT(
3456 * IN PNDIS_PACKET Packet,
3457 * IN ULONGLONG TimeSent);
3459 #define NDIS_SET_PACKET_TIME_SENT(_Packet, _TimeSent) \
3460 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3461 (_Packet)->Private.NdisPacketOobOffset))->TimeSent = (_TimeSent)
3465 * NDIS_SET_PACKET_TIME_RECEIVED(
3466 * IN PNDIS_PACKET Packet,
3467 * IN ULONGLONG TimeReceived);
3469 #define NDIS_SET_PACKET_TIME_RECEIVED(_Packet, _TimeReceived) \
3470 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3471 (_Packet)->Private.NdisPacketOobOffset))->TimeReceived = (_TimeReceived)
3475 * NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(
3476 * IN PNDIS_PACKET Packet,
3477 * IN PVOID MediaSpecificInfo,
3478 * IN UINT SizeMediaSpecificInfo);
3480 #define NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(_Packet, \
3481 _MediaSpecificInfo, \
3482 _SizeMediaSpecificInfo) \
3484 if ((_Packet)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS) \
3486 (_Packet)->Private.NdisPacketFlags |= fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO; \
3487 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3488 (_Packet)->Private.NdisPacketOobOffset))->MediaSpecificInformation = \
3489 (_MediaSpecificInfo); \
3490 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3491 (_Packet)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo = \
3492 (_SizeMediaSpecificInfo); \
3498 * NdisSetPacketFlags(
3499 * IN PNDIS_PACKET Packet,
3502 #define NdisSetPacketFlags(Packet, Flags) (Packet)->Private.Flags |= (Flags)
3506 * NdisClearPacketFlags(
3507 * IN PNDIS_PACKET Packet,
3510 #define NdisClearPacketFlags(Packet, Flags) (Packet)->Private.Flags &= ~(Flags)
3515 * IN PNDIS_PACKET Packet,
3516 * OUT PUINT PhysicalBufferCount OPTIONAL,
3517 * OUT PUINT BufferCount OPTIONAL,
3518 * OUT PNDIS_BUFFER *FirstBuffer OPTIONAL,
3519 * OUT PUINT TotalPacketLength OPTIONAL);
3524 IN PNDIS_PACKET Packet
,
3525 OUT PUINT PhysicalBufferCount OPTIONAL
,
3526 OUT PUINT BufferCount OPTIONAL
,
3527 OUT PNDIS_BUFFER
*FirstBuffer OPTIONAL
,
3528 OUT PUINT TotalPacketLength OPTIONAL
)
3531 *FirstBuffer
= Packet
->Private
.Head
;
3532 if (TotalPacketLength
|| BufferCount
|| PhysicalBufferCount
) {
3533 if (!Packet
->Private
.ValidCounts
) {
3536 PNDIS_BUFFER NdisBuffer
;
3537 UINT PhysicalBufferCount
= 0;
3538 UINT TotalPacketLength
= 0;
3541 for (NdisBuffer
= Packet
->Private
.Head
;
3542 NdisBuffer
!= (PNDIS_BUFFER
)NULL
;
3543 NdisBuffer
= NdisBuffer
->Next
) {
3544 PhysicalBufferCount
+= NDIS_BUFFER_TO_SPAN_PAGES(NdisBuffer
);
3545 NdisQueryBufferOffset(NdisBuffer
, &Offset
, &PacketLength
);
3546 TotalPacketLength
+= PacketLength
;
3549 Packet
->Private
.PhysicalCount
= PhysicalBufferCount
;
3550 Packet
->Private
.TotalLength
= TotalPacketLength
;
3551 Packet
->Private
.Count
= Count
;
3552 Packet
->Private
.ValidCounts
= TRUE
;
3555 if (PhysicalBufferCount
)
3556 *PhysicalBufferCount
= Packet
->Private
.PhysicalCount
;
3559 *BufferCount
= Packet
->Private
.Count
;
3561 if (TotalPacketLength
)
3562 *TotalPacketLength
= Packet
->Private
.TotalLength
;
3568 * NdisQueryPacketLength(
3569 * IN PNDIS_PACKET Packet,
3570 * OUT PUINT PhysicalBufferCount OPTIONAL,
3571 * OUT PUINT BufferCount OPTIONAL,
3572 * OUT PNDIS_BUFFER *FirstBuffer OPTIONAL,
3573 * OUT PUINT TotalPacketLength OPTIONAL);
3575 #define NdisQueryPacketLength(_Packet, \
3576 _TotalPacketLength) \
3578 if (!(_Packet)->Private.ValidCounts) { \
3579 NdisQueryPacket(_Packet, NULL, NULL, NULL, _TotalPacketLength); \
3581 else *(_TotalPacketLength) = (_Packet)->Private.TotalLength; \
3584 #endif /* NDIS_LEGACY_DRIVER */
3586 /* Memory management routines */
3592 NdisCreateLookaheadBufferFromSharedMemory(
3593 IN PVOID pSharedMemory,
3594 IN UINT LookaheadLength,
3595 OUT PVOID *pLookaheadBuffer);
3597 #define NdisCreateLookaheadBufferFromSharedMemory(_S, _L, _B) ((*(_B)) = (_S))
3602 NdisDestroyLookaheadBufferFromSharedMemory(
3603 IN PVOID pLookaheadBuffer
);
3605 #if defined(_M_IX86) || defined(_M_AMD64) || defined(_M_ARM) || defined(_M_PPC)
3609 * NdisMoveMappedMemory(
3610 * OUT PVOID Destination,
3614 #define NdisMoveMappedMemory(Destination, Source, Length) \
3615 RtlCopyMemory(Destination, Source, Length)
3619 * NdisZeroMappedMemory(
3620 * IN PVOID Destination,
3623 #define NdisZeroMappedMemory(Destination, Length) \
3624 RtlZeroMemory(Destination, Length)
3628 #define NdisMoveMappedMemory(Destination, Source, Length) \
3630 PUCHAR _Dest = Destination, _Src = Source, _End = _Dest + Length; \
3631 while (_Dest < _End) \
3632 *_Dest++ = _Src++; \
3635 #define NdisZeroMappedMemory(Destination, Length) \
3637 PUCHAR _Dest = Destination, _End = _Dest + Length; \
3638 while (_Dest < _End) \
3642 #endif /* _M_IX86 or _M_AMD64 */
3646 * NdisMoveFromMappedMemory(
3647 * OUT PVOID Destination,
3651 #define NdisMoveFromMappedMemory(Destination, Source, Length) \
3652 NdisMoveMappedMemory(Destination, Source, Length)
3656 * NdisMoveToMappedMemory(
3657 * OUT PVOID Destination,
3661 #define NdisMoveToMappedMemory(Destination, Source, Length) \
3662 NdisMoveMappedMemory(Destination, Source, Length)
3666 * NdisMUpdateSharedMemory(
3667 * IN NDIS_HANDLE MiniportAdapterHandle,
3669 * IN PVOID VirtualAddress,
3670 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
3672 #define NdisMUpdateSharedMemory(_H, _L, _V, _P) \
3673 NdisUpdateSharedMemory(_H, _L, _V, _P)
3679 IN PVOID VirtualAddress
,
3681 IN UINT MemoryFlags
);
3686 NdisFreeMemoryWithTag(
3687 IN PVOID VirtualAddress
,
3693 NdisImmediateReadSharedMemory(
3694 IN NDIS_HANDLE WrapperConfigurationContext
,
3695 IN ULONG SharedMemoryAddress
,
3702 NdisImmediateWriteSharedMemory(
3703 IN NDIS_HANDLE WrapperConfigurationContext
,
3704 IN ULONG SharedMemoryAddress
,
3711 NdisMAllocateSharedMemory(
3712 IN NDIS_HANDLE MiniportAdapterHandle
,
3715 OUT PVOID
*VirtualAddress
,
3716 OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress
);
3721 NdisMAllocateSharedMemoryAsync(
3722 IN NDIS_HANDLE MiniportAdapterHandle
,
3729 #define NdisUpdateSharedMemory(NdisAdapterHandle, \
3739 NdisUpdateSharedMemory(
3740 IN NDIS_HANDLE NdisAdapterHandle
,
3742 IN PVOID VirtualAddress
,
3743 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
3745 #endif /* defined(NDIS50) */
3749 * NdisGetPhysicalAddressHigh(
3750 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
3752 #define NdisGetPhysicalAddressHigh(PhysicalAddress) \
3753 ((PhysicalAddress).HighPart)
3757 * NdisSetPhysicalAddressHigh(
3758 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
3761 #define NdisSetPhysicalAddressHigh(PhysicalAddress, Value) \
3762 ((PhysicalAddress).HighPart) = (Value)
3766 * NdisGetPhysicalAddressLow(
3767 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
3769 #define NdisGetPhysicalAddressLow(PhysicalAddress) \
3770 ((PhysicalAddress).LowPart)
3775 * NdisSetPhysicalAddressLow(
3776 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
3779 #define NdisSetPhysicalAddressLow(PhysicalAddress, Value) \
3780 ((PhysicalAddress).LowPart) = (Value)
3784 * NDIS_PHYSICAL_ADDRESS_CONST(
3788 #define NDIS_PHYSICAL_ADDRESS_CONST(Low, High) \
3789 { {(ULONG)(Low), (LONG)(High)} }
3794 * IN CONST VOID *Source1,
3795 * IN CONST VOID *Source2,
3798 #define NdisEqualMemory(Source1, Source2, Length) \
3799 RtlEqualMemory(Source1, Source2, Length)
3804 * IN PVOID Destination,
3808 #define NdisFillMemory(Destination, Length, Fill) \
3809 RtlFillMemory(Destination, Length, Fill)
3814 * OUT PVOID Destination,
3818 #define NdisMoveMemory(Destination, Source, Length) \
3819 RtlCopyMemory(Destination, Source, Length)
3824 * NdisRetrieveUlong(
3825 * IN PULONG DestinationAddress,
3826 * IN PULONG SourceAddress);
3828 #define NdisRetrieveUlong(DestinationAddress, SourceAddress) \
3829 RtlRetrieveUlong(DestinationAddress, SourceAddress)
3835 * IN PULONG DestinationAddress,
3838 #define NdisStoreUlong(DestinationAddress, Value) \
3839 RtlStoreUlong(DestinationAddress, Value)
3845 * IN PVOID Destination,
3848 #define NdisZeroMemory(Destination, Length) \
3849 RtlZeroMemory(Destination, Length)
3852 (NTAPI
*NDIS_BLOCK_INITIALIZER
) (
3854 IN SIZE_T NumberOfBytes
3857 /* Configuration routines */
3859 #if NDIS_LEGACY_DRIVER
3863 NdisOpenConfiguration(
3864 OUT PNDIS_STATUS Status
,
3865 OUT PNDIS_HANDLE ConfigurationHandle
,
3866 IN NDIS_HANDLE WrapperConfigurationContext
);
3872 NdisReadNetworkAddress(
3873 OUT PNDIS_STATUS Status
,
3874 OUT PVOID
*NetworkAddress
,
3875 OUT PUINT NetworkAddressLength
,
3876 IN NDIS_HANDLE ConfigurationHandle
);
3881 NdisReadEisaSlotInformation(
3882 OUT PNDIS_STATUS Status
,
3883 IN NDIS_HANDLE WrapperConfigurationContext
,
3884 OUT PUINT SlotNumber
,
3885 OUT PNDIS_EISA_FUNCTION_INFORMATION EisaData
);
3890 NdisReadEisaSlotInformationEx(
3891 OUT PNDIS_STATUS Status
,
3892 IN NDIS_HANDLE WrapperConfigurationContext
,
3893 OUT PUINT SlotNumber
,
3894 OUT PNDIS_EISA_FUNCTION_INFORMATION
*EisaData
,
3895 OUT PUINT NumberOfFunctions
);
3897 #if NDIS_LEGACY_MINIPORT
3902 NdisReadPciSlotInformation(
3903 IN NDIS_HANDLE NdisAdapterHandle
,
3904 IN ULONG SlotNumber
,
3912 NdisWritePciSlotInformation(
3913 IN NDIS_HANDLE NdisAdapterHandle
,
3914 IN ULONG SlotNumber
,
3922 NdisReadPcmciaAttributeMemory(
3923 IN NDIS_HANDLE NdisAdapterHandle
,
3931 NdisWritePcmciaAttributeMemory(
3932 IN NDIS_HANDLE NdisAdapterHandle
,
3937 #endif /* NDIS_LEGACY_MINIPORT */
3939 /* String management routines */
3945 NdisAnsiStringToUnicodeString(
3946 IN OUT PNDIS_STRING DestinationString,
3947 IN PNDIS_ANSI_STRING SourceString);
3949 #define NdisAnsiStringToUnicodeString(_us, _as) RtlAnsiStringToUnicodeString(_us, _as, FALSE)
3954 * IN PNDIS_STRING String1,
3955 * IN PNDIS_STRING String2,
3956 * IN BOOLEAN CaseInsensitive);
3958 #define NdisEqualString RtlEqualString
3960 #define NdisEqualUnicodeString RtlEqualUnicodeString
3967 IN OUT PNDIS_ANSI_STRING DestinationString,
3968 IN PCSTR SourceString);
3970 #define NdisInitAnsiString RtlInitString
3975 NdisInitUnicodeString(
3976 IN OUT PNDIS_STRING DestinationString
,
3977 IN PCWSTR SourceString
);
3983 NdisUnicodeStringToAnsiString(
3984 IN OUT PNDIS_ANSI_STRING DestinationString,
3985 IN PNDIS_STRING SourceString);
3987 #define NdisUnicodeStringToAnsiString(_as, _us) RtlUnicodeStringToAnsiString(_as, _us, FALSE)
3989 #define NdisFreeString(_s) NdisFreeMemory((_s).Buffer, (_s).MaximumLength, 0)
3990 #define NdisPrintString(_s) DbgPrint("%ls", (_s).Buffer)
3992 /* Spin lock reoutines */
3998 NdisAllocateSpinLock(
3999 IN PNDIS_SPIN_LOCK SpinLock);
4001 #define NdisAllocateSpinLock(_SpinLock) KeInitializeSpinLock(&(_SpinLock)->SpinLock)
4008 IN PNDIS_SPIN_LOCK SpinLock);
4010 #define NdisFreeSpinLock(_SpinLock)
4016 NdisAcquireSpinLock(
4017 IN PNDIS_SPIN_LOCK SpinLock);
4019 #define NdisAcquireSpinLock(_SpinLock) KeAcquireSpinLock(&(_SpinLock)->SpinLock, &(_SpinLock)->OldIrql)
4025 NdisReleaseSpinLock(
4026 IN PNDIS_SPIN_LOCK SpinLock);
4028 #define NdisReleaseSpinLock(_SpinLock) KeReleaseSpinLock(&(_SpinLock)->SpinLock,(_SpinLock)->OldIrql)
4034 NdisDprAcquireSpinLock(
4035 IN PNDIS_SPIN_LOCK SpinLock);
4037 #define NdisDprAcquireSpinLock(_SpinLock) KeAcquireSpinLockAtDpcLevel(&(_SpinLock)->SpinLock)
4043 NdisDprReleaseSpinLock(
4044 IN PNDIS_SPIN_LOCK SpinLock);
4046 #define NdisDprReleaseSpinLock(_SpinLock) KeReleaseSpinLockFromDpcLevel(&(_SpinLock)->SpinLock)
4052 * NdisRawReadPortBufferUchar(
4054 * OUT PUCHAR Buffer,
4057 #define NdisRawReadPortBufferUchar(Port, Buffer, Length) \
4058 READ_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length))
4062 * NdisRawReadPortBufferUlong(
4064 * OUT PULONG Buffer,
4067 #define NdisRawReadPortBufferUlong(Port, Buffer, Length) \
4068 READ_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length))
4072 * NdisRawReadPortBufferUshort(
4074 * OUT PUSHORT Buffer,
4077 #define NdisRawReadPortBufferUshort(Port, Buffer, Length) \
4078 READ_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length))
4082 * NdisRawReadPortUchar(
4086 #define NdisRawReadPortUchar(Port, Data) \
4087 *(Data) = READ_PORT_UCHAR((PUCHAR)(Port))
4091 * NdisRawReadPortUlong(
4095 #define NdisRawReadPortUlong(Port, Data) \
4096 *(Data) = READ_PORT_ULONG((PULONG)(Port))
4100 * NdisRawReadPortUshort(
4102 * OUT PUSHORT Data);
4104 #define NdisRawReadPortUshort(Port, Data) \
4105 *(Data) = READ_PORT_USHORT((PUSHORT)(Port))
4109 * NdisRawWritePortBufferUchar(
4114 #define NdisRawWritePortBufferUchar(Port, Buffer, Length) \
4115 WRITE_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length))
4119 * NdisRawWritePortBufferUlong(
4124 #define NdisRawWritePortBufferUlong(Port, Buffer, Length) \
4125 WRITE_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length))
4129 * NdisRawWritePortBufferUshort(
4131 * IN PUSHORT Buffer,
4134 #define NdisRawWritePortBufferUshort(Port, Buffer, Length) \
4135 WRITE_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length))
4139 * NdisRawWritePortUchar(
4143 #define NdisRawWritePortUchar(Port, Data) \
4144 WRITE_PORT_UCHAR((PUCHAR)(Port), (UCHAR)(Data))
4148 * NdisRawWritePortUlong(
4152 #define NdisRawWritePortUlong(Port, Data) \
4153 WRITE_PORT_ULONG((PULONG)(Port), (ULONG)(Data))
4157 * NdisRawWritePortUshort(
4161 #define NdisRawWritePortUshort(Port, Data) \
4162 WRITE_PORT_USHORT((PUSHORT)(Port), (USHORT)(Data))
4167 * NdisReadRegisterUchar(
4168 * IN PUCHAR Register,
4171 #define NdisReadRegisterUchar(Register, Data) \
4172 *(Data) = *(Register)
4176 * NdisReadRegisterUlong(
4177 * IN PULONG Register,
4180 #define NdisReadRegisterUlong(Register, Data) \
4181 *(Data) = *(Register)
4185 * NdisReadRegisterUshort(
4186 * IN PUSHORT Register,
4187 * OUT PUSHORT Data);
4189 #define NdisReadRegisterUshort(Register, Data) \
4190 *(Data) = *(Register)
4194 * NdisReadRegisterUchar(
4195 * IN PUCHAR Register,
4198 #define NdisWriteRegisterUchar(Register, Data) \
4199 WRITE_REGISTER_UCHAR((Register), (Data))
4203 * NdisReadRegisterUlong(
4204 * IN PULONG Register,
4207 #define NdisWriteRegisterUlong(Register, Data) \
4208 WRITE_REGISTER_ULONG((Register), (Data))
4212 * NdisReadRegisterUshort(
4213 * IN PUSHORT Register,
4216 #define NdisWriteRegisterUshort(Register, Data) \
4217 WRITE_REGISTER_USHORT((Register), (Data))
4224 * NdisInitializeListHead(
4225 * IN PLIST_ENTRY ListHead);
4227 #define NdisInitializeListHead InitializeListHead
4231 * NdisInterlockedInsertHeadList(
4232 * IN PLIST_ENTRY ListHead,
4233 * IN PLIST_ENTRY ListEntry,
4234 * IN PNDIS_SPIN_LOCK SpinLock);
4236 #define NdisInterlockedInsertHeadList(_ListHead, _ListEntry, _SpinLock) \
4237 ExInterlockedInsertHeadList(_ListHead, _ListEntry, &(_SpinLock)->SpinLock)
4241 * NdisInterlockedInsertTailList(
4242 * IN PLIST_ENTRY ListHead,
4243 * IN PLIST_ENTRY ListEntry,
4244 * IN PNDIS_SPIN_LOCK SpinLock);
4246 #define NdisInterlockedInsertTailList(_ListHead, _ListEntry, _SpinLock) \
4247 ExInterlockedInsertTailList(_ListHead, _ListEntry, &(_SpinLock)->SpinLock)
4251 * NdisInterlockedRemoveHeadList(
4252 * IN PLIST_ENTRY ListHead,
4253 * IN PNDIS_SPIN_LOCK SpinLock);
4255 #define NdisInterlockedRemoveHeadList(_ListHead, _SpinLock) \
4256 ExInterlockedRemoveHeadList(_ListHead, &(_SpinLock)->SpinLock)
4260 * NdisInitializeSListHead(
4261 * IN PSLIST_HEADER SListHead);
4263 #define NdisInitializeSListHead(SListHead) ExInitializeSListHead(SListHead)
4266 * USHORT NdisQueryDepthSList(
4267 * IN PSLIST_HEADER SListHead);
4269 #define NdisQueryDepthSList(SListHead) ExQueryDepthSList(SListHead)
4271 #define NdisInterlockedPushEntryList(ListHead, ListEntry, Lock) \
4272 ExInterlockedPushEntryList(ListHead, ListEntry, &(Lock)->SpinLock)
4274 #define NdisInterlockedPopEntryList(ListHead, Lock) \
4275 ExInterlockedPopEntryList(ListHead, &(Lock)->SpinLock)
4277 /* Non-paged lookaside lists */
4279 #define NdisInitializeNPagedLookasideList(_L, _AR, _FR, _Fl, _S, _T, _D) \
4280 ExInitializeNPagedLookasideList(_L, _AR, _FR, _Fl, _S, _T, _D)
4281 #define NdisDeleteNPagedLookasideList(_L) ExDeleteNPagedLookasideList(_L)
4282 #define NdisAllocateFromNPagedLookasideList(_L) ExAllocateFromNPagedLookasideList(_L)
4283 #define NdisFreeToNPagedLookasideList(_L, _E) ExFreeToNPagedLookasideList(_L, _E)
4285 /* Interlocked routines */
4289 * NdisInterlockedDecrement(
4292 #define NdisInterlockedDecrement(Addend) InterlockedDecrement(Addend)
4296 * NdisInterlockedIncrement(
4299 #define NdisInterlockedIncrement(Addend) InterlockedIncrement(Addend)
4303 * NdisInterlockedAddUlong(
4305 * IN ULONG Increment,
4306 * IN PNDIS_SPIN_LOCK SpinLock);
4308 #define NdisInterlockedAddUlong(_Addend, _Increment, _SpinLock) \
4309 ExInterlockedAddUlong(_Addend, _Increment, &(_SpinLock)->SpinLock)
4311 /* Miscellaneous routines */
4316 NdisCloseConfiguration(
4317 IN NDIS_HANDLE ConfigurationHandle
);
4322 NdisReadConfiguration(
4323 OUT PNDIS_STATUS Status
,
4324 OUT PNDIS_CONFIGURATION_PARAMETER
*ParameterValue
,
4325 IN NDIS_HANDLE ConfigurationHandle
,
4326 IN PNDIS_STRING Keyword
,
4327 IN NDIS_PARAMETER_TYPE ParameterType
);
4332 NdisWriteConfiguration(
4333 OUT PNDIS_STATUS Status
,
4334 IN NDIS_HANDLE WrapperConfigurationContext
,
4335 IN PNDIS_STRING Keyword
,
4336 IN PNDIS_CONFIGURATION_PARAMETER ParameterValue
);
4341 NdisWriteErrorLogEntry(
4342 IN NDIS_HANDLE NdisAdapterHandle
,
4343 IN NDIS_ERROR_CODE ErrorCode
,
4344 IN ULONG NumberOfErrorValues
,
4350 NdisInitializeString(
4351 OUT PNDIS_STRING Destination
,
4356 * NdisStallExecution(
4357 * IN UINT MicrosecondsToStall)
4359 #define NdisStallExecution KeStallExecutionProcessor
4365 NdisGetCurrentSystemTime(
4366 IN PLARGE_INTEGER pSystemTime);
4368 #define NdisGetCurrentSystemTime KeQuerySystemTime
4370 #if NDIS_SUPPORT_60_COMPATIBLE_API
4374 NdisSystemProcessorCount(VOID
);
4380 NdisGetCurrentProcessorCpuUsage(
4381 OUT PULONG pCpuUsage
);
4383 /* NDIS helper macros */
4387 * NDIS_INIT_FUNCTION(FunctionName)
4389 #define NDIS_INIT_FUNCTION(FunctionName) \
4390 alloc_text(init, FunctionName)
4394 * NDIS_PAGABLE_FUNCTION(FunctionName)
4396 #define NDIS_PAGEABLE_FUNCTION(FunctionName) \
4397 alloc_text(page, FunctionName)
4399 #define NDIS_PAGABLE_FUNCTION NDIS_PAGEABLE_FUNCTION
4402 /* NDIS 4.0 extensions */
4407 NdisMFreeSharedMemory(
4408 IN NDIS_HANDLE MiniportAdapterHandle
,
4411 IN PVOID VirtualAddress
,
4412 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
4417 NdisMWanIndicateReceive(
4418 OUT PNDIS_STATUS Status
,
4419 IN NDIS_HANDLE MiniportAdapterHandle
,
4420 IN NDIS_HANDLE NdisLinkContext
,
4421 IN PUCHAR PacketBuffer
,
4422 IN UINT PacketSize
);
4427 NdisMWanIndicateReceiveComplete(
4428 IN NDIS_HANDLE MiniportAdapterHandle
);
4433 NdisMWanSendComplete(
4434 IN NDIS_HANDLE MiniportAdapterHandle
,
4435 IN PNDIS_WAN_PACKET Packet
,
4436 IN NDIS_STATUS Status
);
4441 NdisPciAssignResources(
4442 IN NDIS_HANDLE NdisMacHandle
,
4443 IN NDIS_HANDLE NdisWrapperHandle
,
4444 IN NDIS_HANDLE WrapperConfigurationContext
,
4445 IN ULONG SlotNumber
,
4446 OUT PNDIS_RESOURCE_LIST
*AssignedResources
);
4449 /* NDIS 5.0 extensions */
4454 NdisAllocateMemoryWithTag(
4455 OUT PVOID
*VirtualAddress
,
4462 NdisGetCurrentProcessorCounts(
4463 OUT PULONG pIdleCount
,
4464 OUT PULONG pKernelAndUser
,
4467 #if NDIS_LEGACY_DRIVER
4471 NdisGetSystemUpTime(
4472 OUT PULONG pSystemUpTime
);
4475 #if NDIS_SUPPORT_60_COMPATIBLE_API
4480 NdisAcquireReadWriteLock(
4481 IN OUT PNDIS_RW_LOCK Lock
,
4483 OUT PLOCK_STATE LockState
);
4488 NdisInitializeReadWriteLock(
4489 OUT PNDIS_RW_LOCK Lock
);
4494 NdisReleaseReadWriteLock(
4495 IN OUT PNDIS_RW_LOCK Lock
,
4496 IN PLOCK_STATE LockState
);
4498 #if NDIS_SUPPORT_NDIS6
4503 NdisDprAcquireReadWriteLock(
4504 IN PNDIS_RW_LOCK Lock
,
4506 IN PLOCK_STATE LockState
);
4511 NdisDprReleaseReadWriteLock(
4512 IN PNDIS_RW_LOCK Lock
,
4513 IN PLOCK_STATE LockState
);
4515 #endif /* NDIS_SUPPORT_NDIS6 */
4517 #endif /* NDIS_SUPPORT_60_COMPATIBLE_API */
4522 NdisMDeregisterDevice(
4523 IN NDIS_HANDLE NdisDeviceHandle
);
4528 NdisMGetDeviceProperty(
4529 IN NDIS_HANDLE MiniportAdapterHandle
,
4530 IN OUT PDEVICE_OBJECT
*PhysicalDeviceObject OPTIONAL
,
4531 IN OUT PDEVICE_OBJECT
*FunctionalDeviceObject OPTIONAL
,
4532 IN OUT PDEVICE_OBJECT
*NextDeviceObject OPTIONAL
,
4533 IN OUT PCM_RESOURCE_LIST
*AllocatedResources OPTIONAL
,
4534 IN OUT PCM_RESOURCE_LIST
*AllocatedResourcesTranslated OPTIONAL
);
4539 NdisMInitializeScatterGatherDma(
4540 IN NDIS_HANDLE MiniportAdapterHandle
,
4541 IN BOOLEAN Dma64BitAddresses
,
4542 IN ULONG MaximumPhysicalMapping
);
4547 NdisMPromoteMiniport(
4548 IN NDIS_HANDLE MiniportAdapterHandle
);
4553 NdisMQueryAdapterInstanceName(
4554 OUT PNDIS_STRING AdapterInstanceName
,
4555 IN NDIS_HANDLE MiniportAdapterHandle
);
4560 NdisMRegisterDevice(
4561 IN NDIS_HANDLE NdisWrapperHandle
,
4562 IN PNDIS_STRING DeviceName
,
4563 IN PNDIS_STRING SymbolicName
,
4564 IN PDRIVER_DISPATCH MajorFunctions
[],
4565 OUT PDEVICE_OBJECT
*pDeviceObject
,
4566 OUT NDIS_HANDLE
*NdisDeviceHandle
);
4571 NdisMRegisterUnloadHandler(
4572 IN NDIS_HANDLE NdisWrapperHandle
,
4573 IN PDRIVER_UNLOAD UnloadHandler
);
4578 NdisMRemoveMiniport(
4579 IN NDIS_HANDLE MiniportAdapterHandle
);
4584 NdisMSetMiniportSecondary(
4585 IN NDIS_HANDLE MiniportAdapterHandle
,
4586 IN NDIS_HANDLE PrimaryMiniportAdapterHandle
);
4591 NdisOpenConfigurationKeyByIndex(
4592 OUT PNDIS_STATUS Status
,
4593 IN NDIS_HANDLE ConfigurationHandle
,
4595 OUT PNDIS_STRING KeyName
,
4596 OUT PNDIS_HANDLE KeyHandle
);
4601 NdisOpenConfigurationKeyByName(
4602 OUT PNDIS_STATUS Status
,
4603 IN NDIS_HANDLE ConfigurationHandle
,
4604 IN PNDIS_STRING SubKeyName
,
4605 OUT PNDIS_HANDLE SubKeyHandle
);
4610 NdisQueryAdapterInstanceName(
4611 OUT PNDIS_STRING AdapterInstanceName
,
4612 IN NDIS_HANDLE NdisBindingHandle
);
4617 NdisQueryBindInstanceName(
4618 OUT PNDIS_STRING pAdapterInstanceName
,
4619 IN NDIS_HANDLE BindingContext
);
4624 NdisWriteEventLogEntry(
4626 IN NDIS_STATUS EventCode
,
4627 IN ULONG UniqueEventValue
,
4628 IN USHORT NumStrings
,
4629 IN PVOID StringsList OPTIONAL
,
4631 IN PVOID Data OPTIONAL
);
4633 /* Connectionless services */
4639 IN NDIS_HANDLE NdisVcHandle
,
4640 IN NDIS_HANDLE ProtocolPartyContext
,
4641 IN OUT PCO_CALL_PARAMETERS CallParameters
,
4642 OUT PNDIS_HANDLE NdisPartyHandle
);
4647 NdisClCloseAddressFamily(
4648 IN NDIS_HANDLE NdisAfHandle
);
4654 IN NDIS_HANDLE NdisVcHandle
,
4655 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
4656 IN PVOID Buffer OPTIONAL
,
4662 NdisClDeregisterSap(
4663 IN NDIS_HANDLE NdisSapHandle
);
4669 IN NDIS_HANDLE NdisPartyHandle
,
4670 IN PVOID Buffer OPTIONAL
,
4676 NdisClIncomingCallComplete(
4677 IN NDIS_STATUS Status
,
4678 IN NDIS_HANDLE NdisVcHandle
,
4679 IN PCO_CALL_PARAMETERS CallParameters
);
4685 IN NDIS_HANDLE NdisVcHandle
,
4686 IN OUT PCO_CALL_PARAMETERS CallParameters
,
4687 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
,
4688 OUT PNDIS_HANDLE NdisPartyHandle OPTIONAL
);
4693 NdisClModifyCallQoS(
4694 IN NDIS_HANDLE NdisVcHandle
,
4695 IN PCO_CALL_PARAMETERS CallParameters
);
4701 NdisClOpenAddressFamily(
4702 IN NDIS_HANDLE NdisBindingHandle
,
4703 IN PCO_ADDRESS_FAMILY AddressFamily
,
4704 IN NDIS_HANDLE ProtocolAfContext
,
4705 IN PNDIS_CLIENT_CHARACTERISTICS ClCharacteristics
,
4706 IN UINT SizeOfClCharacteristics
,
4707 OUT PNDIS_HANDLE NdisAfHandle
);
4713 IN NDIS_HANDLE NdisAfHandle
,
4714 IN NDIS_HANDLE ProtocolSapContext
,
4716 OUT PNDIS_HANDLE NdisSapHandle
);
4719 /* Call Manager services */
4725 IN NDIS_HANDLE NdisVcHandle
,
4726 IN OUT PCO_CALL_PARAMETERS CallParameters
);
4731 NdisCmAddPartyComplete(
4732 IN NDIS_STATUS Status
,
4733 IN NDIS_HANDLE NdisPartyHandle
,
4734 IN NDIS_HANDLE CallMgrPartyContext OPTIONAL
,
4735 IN PCO_CALL_PARAMETERS CallParameters
);
4740 NdisCmCloseAddressFamilyComplete(
4741 IN NDIS_STATUS Status
,
4742 IN NDIS_HANDLE NdisAfHandle
);
4747 NdisCmCloseCallComplete(
4748 IN NDIS_STATUS Status
,
4749 IN NDIS_HANDLE NdisVcHandle
,
4750 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
);
4756 IN NDIS_HANDLE NdisVcHandle
);
4761 NdisCmDeregisterSapComplete(
4762 IN NDIS_STATUS Status
,
4763 IN NDIS_HANDLE NdisSapHandle
);
4768 NdisCmDispatchCallConnected(
4769 IN NDIS_HANDLE NdisVcHandle
);
4774 NdisCmDispatchIncomingCall(
4775 IN NDIS_HANDLE NdisSapHandle
,
4776 IN NDIS_HANDLE NdisVcHandle
,
4777 IN PCO_CALL_PARAMETERS CallParameters
);
4782 NdisCmDispatchIncomingCallQoSChange(
4783 IN NDIS_HANDLE NdisVcHandle
,
4784 IN PCO_CALL_PARAMETERS CallParameters
);
4789 NdisCmDispatchIncomingCloseCall(
4790 IN NDIS_STATUS CloseStatus
,
4791 IN NDIS_HANDLE NdisVcHandle
,
4792 IN PVOID Buffer OPTIONAL
,
4798 NdisCmDispatchIncomingDropParty(
4799 IN NDIS_STATUS DropStatus
,
4800 IN NDIS_HANDLE NdisPartyHandle
,
4801 IN PVOID Buffer OPTIONAL
,
4807 NdisCmDropPartyComplete(
4808 IN NDIS_STATUS Status
,
4809 IN NDIS_HANDLE NdisPartyHandle
);
4814 NdisCmMakeCallComplete(
4815 IN NDIS_STATUS Status
,
4816 IN NDIS_HANDLE NdisVcHandle
,
4817 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
4818 IN NDIS_HANDLE CallMgrPartyContext OPTIONAL
,
4819 IN PCO_CALL_PARAMETERS CallParameters
);
4824 NdisCmModifyCallQoSComplete(
4825 IN NDIS_STATUS Status
,
4826 IN NDIS_HANDLE NdisVcHandle
,
4827 IN PCO_CALL_PARAMETERS CallParameters
);
4832 NdisCmOpenAddressFamilyComplete(
4833 IN NDIS_STATUS Status
,
4834 IN NDIS_HANDLE NdisAfHandle
,
4835 IN NDIS_HANDLE CallMgrAfContext
);
4840 NdisCmRegisterAddressFamily(
4841 IN NDIS_HANDLE NdisBindingHandle
,
4842 IN PCO_ADDRESS_FAMILY AddressFamily
,
4843 IN PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics
,
4844 IN UINT SizeOfCmCharacteristics
);
4849 NdisCmRegisterSapComplete(
4850 IN NDIS_STATUS Status
,
4851 IN NDIS_HANDLE NdisSapHandle
,
4852 IN NDIS_HANDLE CallMgrSapContext
);
4859 IN NDIS_HANDLE NdisVcHandle
,
4860 IN PCO_CALL_PARAMETERS CallParameters
);
4866 IN NDIS_HANDLE MiniportAdapterHandle
,
4867 IN NDIS_HANDLE NdisAfHandle
,
4868 IN NDIS_HANDLE MiniportVcContext
,
4869 OUT PNDIS_HANDLE NdisVcHandle
);
4874 NdisMCmDeactivateVc(
4875 IN NDIS_HANDLE NdisVcHandle
);
4881 IN NDIS_HANDLE NdisVcHandle
);
4886 NdisMCmRegisterAddressFamily(
4887 IN NDIS_HANDLE MiniportAdapterHandle
,
4888 IN PCO_ADDRESS_FAMILY AddressFamily
,
4889 IN PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics
,
4890 IN UINT SizeOfCmCharacteristics
);
4896 IN NDIS_HANDLE NdisAfHandle
,
4897 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
4898 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
4899 IN OUT PNDIS_REQUEST NdisRequest
);
4902 /* Connection-oriented services */
4908 IN NDIS_HANDLE NdisBindingHandle
,
4909 IN NDIS_HANDLE NdisAfHandle OPTIONAL
,
4910 IN NDIS_HANDLE ProtocolVcContext
,
4911 IN OUT PNDIS_HANDLE NdisVcHandle
);
4917 IN NDIS_HANDLE NdisVcHandle
);
4923 IN NDIS_HANDLE NdisBindingHandle
,
4924 IN NDIS_HANDLE NdisAfHandle OPTIONAL
,
4925 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
4926 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
4927 IN OUT PNDIS_REQUEST NdisRequest
);
4932 NdisCoRequestComplete(
4933 IN NDIS_STATUS Status
,
4934 IN NDIS_HANDLE NdisAfHandle
,
4935 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
4936 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
4937 IN PNDIS_REQUEST NdisRequest
);
4943 IN NDIS_HANDLE NdisVcHandle
,
4944 IN PPNDIS_PACKET PacketArray
,
4945 IN UINT NumberOfPackets
);
4950 NdisMCoActivateVcComplete(
4951 IN NDIS_STATUS Status
,
4952 IN NDIS_HANDLE NdisVcHandle
,
4953 IN PCO_CALL_PARAMETERS CallParameters
);
4958 NdisMCoDeactivateVcComplete(
4959 IN NDIS_STATUS Status
,
4960 IN NDIS_HANDLE NdisVcHandle
);
4965 NdisMCoIndicateReceivePacket(
4966 IN NDIS_HANDLE NdisVcHandle
,
4967 IN PPNDIS_PACKET PacketArray
,
4968 IN UINT NumberOfPackets
);
4973 NdisMCoIndicateStatus(
4974 IN NDIS_HANDLE MiniportAdapterHandle
,
4975 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
4976 IN NDIS_STATUS GeneralStatus
,
4977 IN PVOID StatusBuffer OPTIONAL
,
4978 IN ULONG StatusBufferSize
);
4983 NdisMCoReceiveComplete(
4984 IN NDIS_HANDLE MiniportAdapterHandle
);
4989 NdisMCoRequestComplete(
4990 IN NDIS_STATUS Status
,
4991 IN NDIS_HANDLE MiniportAdapterHandle
,
4992 IN PNDIS_REQUEST Request
);
4997 NdisMCoSendComplete(
4998 IN NDIS_STATUS Status
,
4999 IN NDIS_HANDLE NdisVcHandle
,
5000 IN PNDIS_PACKET Packet
);
5003 /* NDIS 5.0 extensions for intermediate drivers */
5008 NdisIMAssociateMiniport(
5009 IN NDIS_HANDLE DriverHandle
,
5010 IN NDIS_HANDLE ProtocolHandle
);
5015 NdisIMCancelInitializeDeviceInstance(
5016 IN NDIS_HANDLE DriverHandle
,
5017 IN PNDIS_STRING DeviceInstance
);
5022 NdisIMCopySendCompletePerPacketInfo(
5023 IN PNDIS_PACKET DstPacket
,
5024 IN PNDIS_PACKET SrcPacket
);
5029 NdisIMCopySendPerPacketInfo(
5030 IN PNDIS_PACKET DstPacket
,
5031 IN PNDIS_PACKET SrcPacket
);
5036 NdisIMDeregisterLayeredMiniport(
5037 IN NDIS_HANDLE DriverHandle
);
5042 NdisIMGetBindingContext(
5043 IN NDIS_HANDLE NdisBindingHandle
);
5048 NdisIMGetDeviceContext(
5049 IN NDIS_HANDLE MiniportAdapterHandle
);
5054 NdisIMInitializeDeviceInstanceEx(
5055 IN NDIS_HANDLE DriverHandle
,
5056 IN PNDIS_STRING DriverInstance
,
5057 IN NDIS_HANDLE DeviceContext OPTIONAL
);
5063 NdisInterlockedPopEntrySList(
5064 IN PSLIST_HEADER ListHead,
5065 IN PKSPIN_LOCK Lock);
5067 #define NdisInterlockedPopEntrySList(SListHead, Lock) \
5068 ExInterlockedPopEntrySList(SListHead, &(Lock)->SpinLock)
5074 NdisInterlockedPushEntrySList(
5075 IN PSLIST_HEADER ListHead,
5076 IN PSINGLE_LIST_ENTRY ListEntry,
5077 IN PKSPIN_LOCK Lock);
5079 #define NdisInterlockedPushEntrySList(SListHead, SListEntry, Lock) \
5080 ExInterlockedPushEntrySList(SListHead, SListEntry, &(Lock)->SpinLock)
5082 #define NdisInterlockedFlushSList(SListHead) ExInterlockedFlushSList(SListHead)
5088 NdisQueryBufferSafe(
5089 IN PNDIS_BUFFER Buffer,
5090 OUT PVOID *VirtualAddress OPTIONAL,
5094 #define NdisQueryBufferSafe(_Buffer, _VirtualAddress, _Length, _Priority) { \
5095 if (ARGUMENT_PRESENT(_VirtualAddress)) { \
5096 *(PVOID *)(_VirtualAddress) = MmGetSystemAddressForMdlSafe(_Buffer, _Priority); \
5098 *(_Length) = MmGetMdlByteCount(_Buffer); \
5101 /* Routines for NDIS miniport drivers */
5103 #if NDIS_SUPPORT_NDIS6
5106 PNDIS_GENERIC_OBJECT
5108 NdisAllocateGenericObject(
5109 PDRIVER_OBJECT DriverObject OPTIONAL
,
5116 NdisFreeGenericObject(
5117 IN PNDIS_GENERIC_OBJECT NdisObject
);
5119 #endif /* NDIS_SUPPORT_NDIS6 */
5124 NdisInitializeWrapper(
5125 OUT PNDIS_HANDLE NdisWrapperHandle
,
5126 IN PVOID SystemSpecific1
,
5127 IN PVOID SystemSpecific2
,
5128 IN PVOID SystemSpecific3
);
5133 NdisMAllocateMapRegisters(
5134 IN NDIS_HANDLE MiniportAdapterHandle
,
5136 IN NDIS_DMA_SIZE DmaSize
,
5137 IN ULONG PhysicalMapRegistersNeeded
,
5138 IN ULONG MaximumPhysicalMapping
);
5142 * NdisMArcIndicateReceive(
5143 * IN NDIS_HANDLE MiniportAdapterHandle,
5144 * IN PUCHAR HeaderBuffer,
5145 * IN PUCHAR DataBuffer,
5148 #define NdisMArcIndicateReceive(MiniportAdapterHandle, \
5153 ArcFilterDprIndicateReceive( \
5154 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->ArcDB), \
5162 * NdisMArcIndicateReceiveComplete(
5163 * IN NDIS_HANDLE MiniportAdapterHandle);
5165 #define NdisMArcIndicateReceiveComplete(MiniportAdapterHandle) \
5167 if (((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->EthDB) \
5169 NdisMEthIndicateReceiveComplete(_H); \
5172 ArcFilterDprIndicateReceiveComplete( \
5173 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->ArcDB); \
5180 IN NDIS_HANDLE LogHandle
);
5186 IN NDIS_HANDLE MiniportAdapterHandle
,
5188 OUT PNDIS_HANDLE LogHandle
);
5193 NdisMDeregisterAdapterShutdownHandler(
5194 IN NDIS_HANDLE MiniportHandle
);
5196 #if NDIS_LEGACY_MINIPORT
5201 NdisMDeregisterInterrupt(
5202 IN PNDIS_MINIPORT_INTERRUPT Interrupt
);
5207 NdisMRegisterAdapterShutdownHandler(
5208 IN NDIS_HANDLE MiniportHandle
,
5209 IN PVOID ShutdownContext
,
5210 IN ADAPTER_SHUTDOWN_HANDLER ShutdownHandler
);
5215 NdisMRegisterInterrupt(
5216 OUT PNDIS_MINIPORT_INTERRUPT Interrupt
,
5217 IN NDIS_HANDLE MiniportAdapterHandle
,
5218 IN UINT InterruptVector
,
5219 IN UINT InterruptLevel
,
5220 IN BOOLEAN RequestIsr
,
5221 IN BOOLEAN SharedInterrupt
,
5222 IN NDIS_INTERRUPT_MODE InterruptMode
);
5227 NdisMRegisterMiniport(
5228 IN NDIS_HANDLE NdisWrapperHandle
,
5229 IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics
,
5230 IN UINT CharacteristicsLength
);
5235 NdisMSynchronizeWithInterrupt(
5236 IN PNDIS_MINIPORT_INTERRUPT Interrupt
,
5237 IN PVOID SynchronizeFunction
,
5238 IN PVOID SynchronizeContext
);
5239 #endif /* NDIS_LEGACY_MINIPORT */
5244 NdisMDeregisterIoPortRange(
5245 IN NDIS_HANDLE MiniportAdapterHandle
,
5246 IN UINT InitialPort
,
5247 IN UINT NumberOfPorts
,
5248 IN PVOID PortOffset
);
5252 * NdisMEthIndicateReceive(
5253 * IN NDIS_HANDLE MiniportAdapterHandle,
5254 * IN NDIS_HANDLE MiniportReceiveContext,
5255 * IN PVOID HeaderBuffer,
5256 * IN UINT HeaderBufferSize,
5257 * IN PVOID LookaheadBuffer,
5258 * IN UINT LookaheadBufferSize,
5259 * IN UINT PacketSize);
5261 #define NdisMEthIndicateReceive(MiniportAdapterHandle, \
5262 MiniportReceiveContext, \
5266 LookaheadBufferSize, \
5269 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxIndicateHandler)( \
5270 ((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthDB, \
5271 (MiniportReceiveContext), \
5274 (HeaderBufferSize), \
5275 (LookaheadBuffer), \
5276 (LookaheadBufferSize), \
5282 * NdisMEthIndicateReceiveComplete(
5283 * IN NDIS_HANDLE MiniportAdapterHandle);
5285 #define NdisMEthIndicateReceiveComplete(MiniportAdapterHandle) \
5287 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxCompleteHandler)( \
5288 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->EthDB); \
5293 * NdisMFddiIndicateReceive(
5294 * IN NDIS_HANDLE MiniportAdapterHandle,
5295 * IN NDIS_HANDLE MiniportReceiveContext,
5296 * IN PVOID HeaderBuffer,
5297 * IN UINT HeaderBufferSize,
5298 * IN PVOID LookaheadBuffer,
5299 * IN UINT LookaheadBufferSize,
5300 * IN UINT PacketSize);
5302 #define NdisMFddiIndicateReceive(MiniportAdapterHandle, \
5303 MiniportReceiveContext, \
5307 LookaheadBufferSize, \
5310 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxIndicateHandler)( \
5311 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiDB), \
5312 (MiniportReceiveContext), \
5313 (PUCHAR)(HeaderBuffer) + 1, \
5314 (((*(PUCHAR*)(HeaderBuffer)) & 0x40) ? \
5315 FDDI_LENGTH_OF_LONG_ADDRESS : \
5316 FDDI_LENGTH_OF_SHORT_ADDRESS), \
5318 (HeaderBufferSize), \
5319 (LookaheadBuffer), \
5320 (LookaheadBufferSize), \
5328 * NdisMFddiIndicateReceiveComplete(
5329 * IN NDIS_HANDLE MiniportAdapterHandle);
5331 #define NdisMFddiIndicateReceiveComplete(MiniportAdapterHandle) \
5333 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxCompleteHandler)( \
5334 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FddiDB); \
5341 IN NDIS_HANDLE LogHandle
);
5346 NdisMFreeMapRegisters(
5347 IN NDIS_HANDLE MiniportAdapterHandle
);
5352 * NdisMIndicateReceivePacket(
5353 * IN NDIS_HANDLE MiniportAdapterHandle,
5354 * IN PPNDIS_PACKET ReceivePackets,
5355 * IN UINT NumberOfPackets);
5357 #define NdisMIndicateReceivePacket(MiniportAdapterHandle, \
5358 ReceivePackets, NumberOfPackets) \
5359 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->PacketIndicateHandler)( \
5360 MiniportAdapterHandle, ReceivePackets, NumberOfPackets)
5364 * NdisMIndicateStatus(
5365 * IN NDIS_HANDLE MiniportAdapterHandle,
5366 * IN NDIS_STATUS GeneralStatus,
5367 * IN PVOID StatusBuffer,
5368 * IN UINT StatusBufferSize);
5371 #define NdisMIndicateStatus(MiniportAdapterHandle, \
5372 GeneralStatus, StatusBuffer, StatusBufferSize) \
5373 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->StatusHandler)( \
5374 MiniportAdapterHandle, GeneralStatus, StatusBuffer, StatusBufferSize)
5378 * NdisMIndicateStatusComplete(
5379 * IN NDIS_HANDLE MiniportAdapterHandle);
5381 #define NdisMIndicateStatusComplete(MiniportAdapterHandle) \
5382 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->StatusCompleteHandler)( \
5383 MiniportAdapterHandle)
5387 * NdisMInitializeWrapper(
5388 * OUT PNDIS_HANDLE NdisWrapperHandle,
5389 * IN PVOID SystemSpecific1,
5390 * IN PVOID SystemSpecific2,
5391 * IN PVOID SystemSpecific3);
5393 #define NdisMInitializeWrapper(NdisWrapperHandle, \
5397 NdisInitializeWrapper((NdisWrapperHandle), \
5398 (SystemSpecific1), \
5399 (SystemSpecific2), \
5406 OUT PVOID
*VirtualAddress
,
5407 IN NDIS_HANDLE MiniportAdapterHandle
,
5408 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
,
5413 * NdisMQueryInformationComplete(
5414 * IN NDIS_HANDLE MiniportAdapterHandle,
5415 * IN NDIS_STATUS Status);
5417 #define NdisMQueryInformationComplete(MiniportAdapterHandle, Status) \
5418 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->QueryCompleteHandler)(MiniportAdapterHandle, Status)
5423 NdisMRegisterIoPortRange(
5424 OUT PVOID
*PortOffset
,
5425 IN NDIS_HANDLE MiniportAdapterHandle
,
5426 IN UINT InitialPort
,
5427 IN UINT NumberOfPorts
);
5433 IN PNDIS_MINIPORT_TIMER Timer
,
5434 IN UINT MillisecondsToDelay
);
5439 NdisMInitializeTimer(
5440 IN OUT PNDIS_MINIPORT_TIMER Timer
,
5441 IN NDIS_HANDLE MiniportAdapterHandle
,
5442 IN PNDIS_TIMER_FUNCTION TimerFunction
,
5443 IN PVOID FunctionContext
);
5448 NdisMSetPeriodicTimer(
5449 IN PNDIS_MINIPORT_TIMER Timer
,
5450 IN UINT MillisecondPeriod
);
5456 IN PNDIS_MINIPORT_TIMER Timer
,
5457 OUT PBOOLEAN TimerCancelled
);
5459 #if !defined(NDIS_WRAPPER)
5463 * NdisMResetComplete(
5464 * IN NDIS_HANDLE MiniportAdapterHandle,
5465 * IN NDIS_STATUS Status,
5466 * IN BOOLEAN AddressingReset);
5468 #define NdisMResetComplete(MiniportAdapterHandle, \
5472 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->ResetCompleteHandler)( \
5473 MiniportAdapterHandle, Status, AddressingReset); \
5478 * NdisMSendComplete(
5479 * IN NDIS_HANDLE MiniportAdapterHandle,
5480 * IN PNDIS_PACKET Packet,
5481 * IN NDIS_STATUS Status);
5483 #define NdisMSendComplete(MiniportAdapterHandle, \
5487 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SendCompleteHandler)( \
5488 MiniportAdapterHandle, Packet, Status); \
5493 * NdisMSendResourcesAvailable(
5494 * IN NDIS_HANDLE MiniportAdapterHandle);
5496 #define NdisMSendResourcesAvailable(MiniportAdapterHandle) \
5498 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SendResourcesHandler)( \
5499 MiniportAdapterHandle); \
5504 * NdisMTransferDataComplete(
5505 * IN NDIS_HANDLE MiniportAdapterHandle,
5506 * IN PNDIS_PACKET Packet,
5507 * IN NDIS_STATUS Status,
5508 * IN UINT BytesTransferred);
5510 #define NdisMTransferDataComplete(MiniportAdapterHandle, \
5515 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TDCompleteHandler)( \
5516 MiniportAdapterHandle, Packet, Status, BytesTransferred) \
5519 #endif /* !_NDIS_ */
5524 * NdisMSetAttributes(
5525 * IN NDIS_HANDLE MiniportAdapterHandle,
5526 * IN NDIS_HANDLE MiniportAdapterContext,
5527 * IN BOOLEAN BusMaster,
5528 * IN NDIS_INTERFACE_TYPE AdapterType);
5530 #define NdisMSetAttributes(MiniportAdapterHandle, \
5531 MiniportAdapterContext, \
5534 NdisMSetAttributesEx(MiniportAdapterHandle, \
5535 MiniportAdapterContext, \
5537 (BusMaster) ? NDIS_ATTRIBUTE_BUS_MASTER : 0, \
5543 NdisMSetAttributesEx(
5544 IN NDIS_HANDLE MiniportAdapterHandle
,
5545 IN NDIS_HANDLE MiniportAdapterContext
,
5546 IN UINT CheckForHangTimeInSeconds OPTIONAL
,
5547 IN ULONG AttributeFlags
,
5548 IN NDIS_INTERFACE_TYPE AdapterType
);
5552 * NdisMSetInformationComplete(
5553 * IN NDIS_HANDLE MiniportAdapterHandle,
5554 * IN NDIS_STATUS Status);
5556 #define NdisMSetInformationComplete(MiniportAdapterHandle, \
5558 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SetCompleteHandler)( \
5559 MiniportAdapterHandle, Status)
5565 IN ULONG MicrosecondsToSleep
);
5569 * NdisMTrIndicateReceive(
5570 * IN NDIS_HANDLE MiniportAdapterHandle,
5571 * IN NDIS_HANDLE MiniportReceiveContext,
5572 * IN PVOID HeaderBuffer,
5573 * IN UINT HeaderBufferSize,
5574 * IN PVOID LookaheadBuffer,
5575 * IN UINT LookaheadBufferSize,
5576 * IN UINT PacketSize);
5578 #define NdisMTrIndicateReceive(MiniportAdapterHandle, \
5579 MiniportReceiveContext, \
5583 LookaheadBufferSize, \
5586 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxIndicateHandler)( \
5587 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrDB), \
5588 (MiniportReceiveContext), \
5591 (HeaderBufferSize), \
5592 (LookaheadBuffer), \
5593 (LookaheadBufferSize), \
5599 * NdisMTrIndicateReceiveComplete(
5600 * IN NDIS_HANDLE MiniportAdapterHandle);
5602 #define NdisMTrIndicateReceiveComplete(MiniportAdapterHandle) \
5604 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxCompleteHandler)( \
5605 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->TrDB); \
5612 IN NDIS_HANDLE LogHandle
,
5614 IN UINT LogBufferSize
);
5619 NdisMQueryAdapterResources(
5620 OUT PNDIS_STATUS Status
,
5621 IN NDIS_HANDLE WrapperConfigurationContext
,
5622 OUT PNDIS_RESOURCE_LIST ResourceList
,
5623 IN OUT PUINT BufferSize
);
5628 NdisTerminateWrapper(
5629 IN NDIS_HANDLE NdisWrapperHandle
,
5630 IN PVOID SystemSpecific
);
5636 IN NDIS_HANDLE MiniportAdapterHandle
,
5637 IN PVOID VirtualAddress
,
5640 /* Event functions */
5645 NdisInitializeEvent(
5646 OUT PNDIS_EVENT Event
);
5652 IN PNDIS_EVENT Event
);
5658 IN PNDIS_EVENT Event
);
5664 IN PNDIS_EVENT Event
,
5667 /* NDIS intermediate miniport structures */
5669 typedef VOID (NTAPI
*W_MINIPORT_CALLBACK
)(
5670 IN NDIS_HANDLE MiniportAdapterContext
,
5671 IN PVOID CallbackContext
);
5673 /* Routines for intermediate miniport drivers */
5678 NdisIMDeInitializeDeviceInstance(
5679 IN NDIS_HANDLE NdisMiniportHandle
);
5683 * NdisIMInitializeDeviceInstance(
5684 * IN NDIS_HANDLE DriverHandle,
5685 * IN PNDIS_STRING DeviceInstance);
5687 #define NdisIMInitializeDeviceInstance(DriverHandle, DeviceInstance) \
5688 NdisIMInitializeDeviceInstanceEx(DriverHandle, DeviceInstance, NULL)
5690 /* Functions obsoleted by NDIS 5.0 */
5696 IN PNDIS_HANDLE NdisDmaHandle
);
5701 NdisSetupDmaTransfer(
5702 OUT PNDIS_STATUS Status
,
5703 IN PNDIS_HANDLE NdisDmaHandle
,
5704 IN PNDIS_BUFFER Buffer
,
5707 IN BOOLEAN WriteToDevice
);
5713 NdisUpcaseUnicodeString(
5714 OUT PUNICODE_STRING DestinationString,
5715 IN PUNICODE_STRING SourceString);
5717 #define NdisUpcaseUnicodeString(_d, _s) RtlUpcaseUnicodeString(_d, _s, FALSE)
5720 /* Routines for NDIS protocol drivers */
5722 #if NDIS_LEGACY_PROTOCOL
5727 NdisIMRegisterLayeredMiniport(
5728 IN NDIS_HANDLE NdisWrapperHandle
,
5729 IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics
,
5730 IN UINT CharacteristicsLength
,
5731 OUT PNDIS_HANDLE DriverHandle
);
5737 OUT PNDIS_STATUS Status
,
5738 IN NDIS_HANDLE NdisBindingHandle
,
5739 IN NDIS_HANDLE MacReceiveContext
,
5741 IN UINT BytesToTransfer
,
5742 IN OUT PNDIS_PACKET Packet
,
5743 OUT PUINT BytesTransferred
);
5749 OUT PNDIS_STATUS Status
,
5750 IN NDIS_HANDLE NdisBindingHandle
,
5751 IN PNDIS_PACKET Packet
);
5757 IN NDIS_HANDLE NdisBindingHandle
,
5758 IN PPNDIS_PACKET PacketArray
,
5759 IN UINT NumberOfPackets
);
5765 OUT PNDIS_STATUS Status
,
5766 IN NDIS_HANDLE NdisBindingHandle
,
5767 IN PNDIS_REQUEST NdisRequest
);
5773 OUT PNDIS_STATUS Status
,
5774 IN NDIS_HANDLE NdisBindingHandle
);
5779 NdisDeregisterProtocol(
5780 OUT PNDIS_STATUS Status
,
5781 IN NDIS_HANDLE NdisProtocolHandle
);
5787 OUT PNDIS_STATUS Status
,
5788 OUT PNDIS_STATUS OpenErrorStatus
,
5789 OUT PNDIS_HANDLE NdisBindingHandle
,
5790 OUT PUINT SelectedMediumIndex
,
5791 IN PNDIS_MEDIUM MediumArray
,
5792 IN UINT MediumArraySize
,
5793 IN NDIS_HANDLE NdisProtocolHandle
,
5794 IN NDIS_HANDLE ProtocolBindingContext
,
5795 IN PNDIS_STRING AdapterName
,
5796 IN UINT OpenOptions
,
5797 IN PSTRING AddressingInformation OPTIONAL
);
5803 OUT PNDIS_STATUS Status
,
5804 IN NDIS_HANDLE NdisBindingHandle
);
5809 NdisCompleteBindAdapter(
5810 IN NDIS_HANDLE BindAdapterContext
,
5811 IN NDIS_STATUS Status
,
5812 IN NDIS_STATUS OpenStatus
);
5817 NdisCompleteUnbindAdapter(
5818 IN NDIS_HANDLE UnbindAdapterContext
,
5819 IN NDIS_STATUS Status
);
5824 NdisSetProtocolFilter(
5825 OUT PNDIS_STATUS Status
,
5826 IN NDIS_HANDLE NdisBindingHandle
,
5827 IN RECEIVE_HANDLER ReceiveHandler
,
5828 IN RECEIVE_PACKET_HANDLER ReceivePacketHandler
,
5829 IN NDIS_MEDIUM Medium
,
5837 NdisGetDriverHandle(
5838 IN PNDIS_HANDLE NdisBindingHandle
,
5839 OUT PNDIS_HANDLE NdisDriverHandle
);
5844 NdisOpenProtocolConfiguration(
5845 OUT PNDIS_STATUS Status
,
5846 OUT PNDIS_HANDLE ConfigurationHandle
,
5847 IN PNDIS_STRING ProtocolSection
);
5852 NdisCompletePnPEvent(
5853 IN NDIS_STATUS Status
,
5854 IN NDIS_HANDLE NdisBindingHandle
,
5855 IN PNET_PNP_EVENT NetPnPEvent
);
5860 * IN PNDIS_PACKET Packet,
5863 #define NdisSetSendFlags(_Packet,_Flags)(_Packet)->Private.Flags = (_Flags)
5865 #define NdisQuerySendFlags(_Packet,_Flags) *(_Flags) = (_Packet)->Private.Flags
5871 IN PNDIS_PACKET
*PacketsToReturn
,
5872 IN UINT NumberOfPackets
);
5877 NdisGetReceivedPacket(
5878 IN PNDIS_HANDLE NdisBindingHandle
,
5879 IN PNDIS_HANDLE MacContext
);
5884 NdisCancelSendPackets(
5885 IN NDIS_HANDLE NdisBindingHandle
,
5891 NdisQueryPendingIOCount(
5892 IN PVOID NdisBindingHandle
,
5893 OUT PULONG IoCount
);
5898 NdisRegisterProtocol(
5899 OUT PNDIS_STATUS Status
,
5900 OUT PNDIS_HANDLE NdisProtocolHandle
,
5901 IN PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics
,
5902 IN UINT CharacteristicsLength
);
5904 #endif /* NDIS_LEGACY_PROTOCOL */
5909 NdisGeneratePartialCancelId(VOID
);
5914 NdisReEnumerateProtocolBindings(
5915 IN NDIS_HANDLE NdisProtocolHandle
);
5920 NdisRegisterTdiCallBack(
5921 IN TDI_REGISTER_CALLBACK RegisterCallback
,
5922 IN TDI_PNP_HANDLER PnPHandler
);
5927 NdisDeregisterTdiCallBack(VOID
);
5929 /* Obsoleted in Windows XP */
5931 /* Prototypes for NDIS_MAC_CHARACTERISTICS */
5933 typedef NDIS_STATUS (*OPEN_ADAPTER_HANDLER
)(
5934 OUT PNDIS_STATUS OpenErrorStatus
,
5935 OUT NDIS_HANDLE
*MacBindingHandle
,
5936 OUT PUINT SelectedMediumIndex
,
5937 IN PNDIS_MEDIUM MediumArray
,
5938 IN UINT MediumArraySize
,
5939 IN NDIS_HANDLE NdisBindingContext
,
5940 IN NDIS_HANDLE MacAdapterContext
,
5941 IN UINT OpenOptions
,
5942 IN PSTRING AddressingInformation OPTIONAL
);
5944 typedef NDIS_STATUS (NTAPI
*CLOSE_ADAPTER_HANDLER
)(
5945 IN NDIS_HANDLE MacBindingHandle
);
5947 typedef NDIS_STATUS (NTAPI
*WAN_TRANSFER_DATA_HANDLER
)(
5950 typedef NDIS_STATUS (NTAPI
*QUERY_GLOBAL_STATISTICS_HANDLER
)(
5951 IN NDIS_HANDLE MacAdapterContext
,
5952 IN PNDIS_REQUEST NdisRequest
);
5954 typedef VOID (NTAPI
*UNLOAD_MAC_HANDLER
)(
5955 IN NDIS_HANDLE MacMacContext
);
5957 typedef NDIS_STATUS (NTAPI
*ADD_ADAPTER_HANDLER
)(
5958 IN NDIS_HANDLE MacMacContext
,
5959 IN NDIS_HANDLE WrapperConfigurationContext
,
5960 IN PNDIS_STRING AdapterName
);
5962 typedef VOID (*REMOVE_ADAPTER_HANDLER
)(
5963 IN NDIS_HANDLE MacAdapterContext
);
5965 typedef struct _NDIS_MAC_CHARACTERISTICS
{
5966 UCHAR MajorNdisVersion
;
5967 UCHAR MinorNdisVersion
;
5970 OPEN_ADAPTER_HANDLER OpenAdapterHandler
;
5971 CLOSE_ADAPTER_HANDLER CloseAdapterHandler
;
5972 SEND_HANDLER SendHandler
;
5973 TRANSFER_DATA_HANDLER TransferDataHandler
;
5974 RESET_HANDLER ResetHandler
;
5975 REQUEST_HANDLER RequestHandler
;
5976 QUERY_GLOBAL_STATISTICS_HANDLER QueryGlobalStatisticsHandler
;
5977 UNLOAD_MAC_HANDLER UnloadMacHandler
;
5978 ADD_ADAPTER_HANDLER AddAdapterHandler
;
5979 REMOVE_ADAPTER_HANDLER RemoveAdapterHandler
;
5981 } NDIS_MAC_CHARACTERISTICS
, *PNDIS_MAC_CHARACTERISTICS
;
5983 typedef NDIS_MAC_CHARACTERISTICS NDIS_WAN_MAC_CHARACTERISTICS
;
5984 typedef NDIS_WAN_MAC_CHARACTERISTICS
*PNDIS_WAN_MAC_CHARACTERISTICS
;
5990 #endif /* __NDIS_H */