4 * Network Device Interface Specification definitions
6 * This file is part of the w32api 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 _REFERENCE
{
328 USHORT ReferenceCount
;
330 } REFERENCE
, *PREFERENCE
;
332 /* NDIS base types */
334 typedef struct _NDIS_SPIN_LOCK
{
337 } NDIS_SPIN_LOCK
, *PNDIS_SPIN_LOCK
;
339 typedef struct _NDIS_EVENT
{
341 } NDIS_EVENT
, *PNDIS_EVENT
;
343 typedef PVOID NDIS_HANDLE
, *PNDIS_HANDLE
;
345 typedef ANSI_STRING NDIS_ANSI_STRING
, *PNDIS_ANSI_STRING
;
346 typedef UNICODE_STRING NDIS_STRING
, *PNDIS_STRING
;
348 typedef MDL NDIS_BUFFER
, *PNDIS_BUFFER
;
350 /* NDIS_STATUS constants */
351 #define NDIS_STATUS_SUCCESS ((NDIS_STATUS)STATUS_SUCCESS)
352 #define NDIS_STATUS_PENDING ((NDIS_STATUS)STATUS_PENDING)
353 #define NDIS_STATUS_NOT_RECOGNIZED ((NDIS_STATUS)0x00010001L)
354 #define NDIS_STATUS_NOT_COPIED ((NDIS_STATUS)0x00010002L)
355 #define NDIS_STATUS_NOT_ACCEPTED ((NDIS_STATUS)0x00010003L)
356 #define NDIS_STATUS_CALL_ACTIVE ((NDIS_STATUS)0x00010007L)
357 #define NDIS_STATUS_INDICATION_REQUIRED ((NDIS_STATUS)STATUS_NDIS_INDICATION_REQUIRED)
358 #define NDIS_STATUS_ONLINE ((NDIS_STATUS)0x40010003L)
359 #define NDIS_STATUS_RESET_START ((NDIS_STATUS)0x40010004L)
360 #define NDIS_STATUS_RESET_END ((NDIS_STATUS)0x40010005L)
361 #define NDIS_STATUS_RING_STATUS ((NDIS_STATUS)0x40010006L)
362 #define NDIS_STATUS_CLOSED ((NDIS_STATUS)0x40010007L)
363 #define NDIS_STATUS_WAN_LINE_UP ((NDIS_STATUS)0x40010008L)
364 #define NDIS_STATUS_WAN_LINE_DOWN ((NDIS_STATUS)0x40010009L)
365 #define NDIS_STATUS_WAN_FRAGMENT ((NDIS_STATUS)0x4001000AL)
366 #define NDIS_STATUS_MEDIA_CONNECT ((NDIS_STATUS)0x4001000BL)
367 #define NDIS_STATUS_MEDIA_DISCONNECT ((NDIS_STATUS)0x4001000CL)
368 #define NDIS_STATUS_HARDWARE_LINE_UP ((NDIS_STATUS)0x4001000DL)
369 #define NDIS_STATUS_HARDWARE_LINE_DOWN ((NDIS_STATUS)0x4001000EL)
370 #define NDIS_STATUS_INTERFACE_UP ((NDIS_STATUS)0x4001000FL)
371 #define NDIS_STATUS_INTERFACE_DOWN ((NDIS_STATUS)0x40010010L)
372 #define NDIS_STATUS_MEDIA_BUSY ((NDIS_STATUS)0x40010011L)
373 #define NDIS_STATUS_MEDIA_SPECIFIC_INDICATION ((NDIS_STATUS)0x40010012L)
374 #define NDIS_STATUS_WW_INDICATION NDIS_STATUS_MEDIA_SPECIFIC_INDICATION
375 #define NDIS_STATUS_LINK_SPEED_CHANGE ((NDIS_STATUS)0x40010013L)
376 #define NDIS_STATUS_WAN_GET_STATS ((NDIS_STATUS)0x40010014L)
377 #define NDIS_STATUS_WAN_CO_FRAGMENT ((NDIS_STATUS)0x40010015L)
378 #define NDIS_STATUS_WAN_CO_LINKPARAMS ((NDIS_STATUS)0x40010016L)
379 #if NDIS_SUPPORT_NDIS6
380 #define NDIS_STATUS_LINK_STATE ((NDIS_STATUS)0x40010017L)
381 #define NDIS_STATUS_NETWORK_CHANGE ((NDIS_STATUS)0x40010018L)
382 #define NDIS_STATUS_MEDIA_SPECIFIC_INDICATION_EX ((NDIS_STATUS)0x40010019L)
383 #define NDIS_STATUS_PORT_STATE ((NDIS_STATUS)0x40010022L)
384 #define NDIS_STATUS_OPER_STATUS ((NDIS_STATUS)0x40010023L)
385 #define NDIS_STATUS_PACKET_FILTER ((NDIS_STATUS)0x40010024L)
386 #endif /* NDIS_SUPPORT_NDIS6 */
387 #define NDIS_STATUS_WAN_CO_MTULINKPARAMS ((NDIS_STATUS)0x40010025L)
389 #if NDIS_SUPPORT_NDIS6
391 #define NDIS_STATUS_IP_OPER_STATUS ((NDIS_STATUS)0x40010026L)
393 #define NDIS_STATUS_OFFLOAD_PAUSE ((NDIS_STATUS)0x40020001L)
394 #define NDIS_STATUS_UPLOAD_ALL ((NDIS_STATUS)0x40020002L)
395 #define NDIS_STATUS_OFFLOAD_RESUME ((NDIS_STATUS)0x40020003L)
396 #define NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS ((NDIS_STATUS)0x40020004L)
397 #define NDIS_STATUS_OFFLOAD_STATE_INVALID ((NDIS_STATUS)0x40020005L)
398 #define NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG ((NDIS_STATUS)0x40020006L)
399 #define NDIS_STATUS_TASK_OFFLOAD_HARDWARE_CAPABILITIES ((NDIS_STATUS)0x40020007L)
400 #define NDIS_STATUS_OFFLOAD_ENCASPULATION_CHANGE ((NDIS_STATUS)0x40020008L)
401 #define NDIS_STATUS_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES ((NDIS_STATUS)0x4002000BL)
403 #if (NDIS_SUPPORT_NDIS61)
404 #define NDIS_STATUS_HD_SPLIT_CURRENT_CONFIG ((NDIS_STATUS)0x4002000CL)
407 #if (NDIS_SUPPORT_NDIS620)
408 #define NDIS_STATUS_RECEIVE_QUEUE_STATE ((NDIS_STATUS)0x4002000DL)
411 #define NDIS_STATUS_OFFLOAD_IM_RESERVED1 ((NDIS_STATUS)0x40020100L)
412 #define NDIS_STATUS_OFFLOAD_IM_RESERVED2 ((NDIS_STATUS)0x40020101L)
413 #define NDIS_STATUS_OFFLOAD_IM_RESERVED3 ((NDIS_STATUS)0x40020102L)
415 #define NDIS_STATUS_DOT11_SCAN_CONFIRM ((NDIS_STATUS)0x40030000L)
416 #define NDIS_STATUS_DOT11_MPDU_MAX_LENGTH_CHANGED ((NDIS_STATUS)0x40030001L)
417 #define NDIS_STATUS_DOT11_ASSOCIATION_START ((NDIS_STATUS)0x40030002L)
418 #define NDIS_STATUS_DOT11_ASSOCIATION_COMPLETION ((NDIS_STATUS)0x40030003L)
419 #define NDIS_STATUS_DOT11_CONNECTION_START ((NDIS_STATUS)0x40030004L)
420 #define NDIS_STATUS_DOT11_CONNECTION_COMPLETION ((NDIS_STATUS)0x40030005L)
421 #define NDIS_STATUS_DOT11_ROAMING_START ((NDIS_STATUS)0x40030006L)
422 #define NDIS_STATUS_DOT11_ROAMING_COMPLETION ((NDIS_STATUS)0x40030007L)
423 #define NDIS_STATUS_DOT11_DISASSOCIATION ((NDIS_STATUS)0x40030008L)
424 #define NDIS_STATUS_DOT11_TKIPMIC_FAILURE ((NDIS_STATUS)0x40030009L)
425 #define NDIS_STATUS_DOT11_PMKID_CANDIDATE_LIST ((NDIS_STATUS)0x4003000AL)
426 #define NDIS_STATUS_DOT11_PHY_STATE_CHANGED ((NDIS_STATUS)0x4003000BL)
427 #define NDIS_STATUS_DOT11_LINK_QUALITY ((NDIS_STATUS)0x4003000CL)
428 #define NDIS_STATUS_DOT11_INCOMING_ASSOC_STARTED ((NDIS_STATUS)0x4003000DL)
429 #define NDIS_STATUS_DOT11_INCOMING_ASSOC_REQUEST_RECEIVED ((NDIS_STATUS)0x4003000EL)
430 #define NDIS_STATUS_DOT11_INCOMING_ASSOC_COMPLETION ((NDIS_STATUS)0x4003000FL)
431 #define NDIS_STATUS_DOT11_STOP_AP ((NDIS_STATUS)0x40030010L)
432 #define NDIS_STATUS_DOT11_PHY_FREQUENCY_ADOPTED ((NDIS_STATUS)0x40030011L)
433 #define NDIS_STATUS_DOT11_CAN_SUSTAIN_AP ((NDIS_STATUS)0x40030012L)
435 #define NDIS_STATUS_WWAN_DEVICE_CAPS ((NDIS_STATUS)0x40041000)
436 #define NDIS_STATUS_WWAN_READY_INFO ((NDIS_STATUS)0x40041001)
437 #define NDIS_STATUS_WWAN_RADIO_STATE ((NDIS_STATUS)0x40041002)
438 #define NDIS_STATUS_WWAN_PIN_INFO ((NDIS_STATUS)0x40041003)
439 #define NDIS_STATUS_WWAN_PIN_LIST ((NDIS_STATUS)0x40041004)
440 #define NDIS_STATUS_WWAN_HOME_PROVIDER ((NDIS_STATUS)0x40041005)
441 #define NDIS_STATUS_WWAN_PREFERRED_PROVIDERS ((NDIS_STATUS)0x40041006)
442 #define NDIS_STATUS_WWAN_VISIBLE_PROVIDERS ((NDIS_STATUS)0x40041007)
443 #define NDIS_STATUS_WWAN_REGISTER_STATE ((NDIS_STATUS)0x40041008)
444 #define NDIS_STATUS_WWAN_PACKET_SERVICE ((NDIS_STATUS)0x40041009)
445 #define NDIS_STATUS_WWAN_SIGNAL_STATE ((NDIS_STATUS)0x4004100a)
446 #define NDIS_STATUS_WWAN_CONTEXT_STATE ((NDIS_STATUS)0x4004100b)
447 #define NDIS_STATUS_WWAN_PROVISIONED_CONTEXTS ((NDIS_STATUS)0x4004100c)
448 #define NDIS_STATUS_WWAN_SERVICE_ACTIVATION ((NDIS_STATUS)0x4004100d)
449 #define NDIS_STATUS_WWAN_SMS_CONFIGURATION ((NDIS_STATUS)0x4004100e)
450 #define NDIS_STATUS_WWAN_SMS_RECEIVE ((NDIS_STATUS)0x4004100f)
451 #define NDIS_STATUS_WWAN_SMS_SEND ((NDIS_STATUS)0x40041010)
452 #define NDIS_STATUS_WWAN_SMS_DELETE ((NDIS_STATUS)0x40041011)
453 #define NDIS_STATUS_WWAN_SMS_STATUS ((NDIS_STATUS)0x40041012)
454 #define NDIS_STATUS_WWAN_DNS_ADDRESS ((NDIS_STATUS)0x40041013)
456 #define NDIS_STATUS_WWAN_VENDOR_SPECIFIC ((NDIS_STATUS)0x40043000)
458 #endif /* NDIS_SUPPORT_NDIS6 */
460 #if (NDIS_SUPPORT_NDIS620)
461 #define NDIS_STATUS_PM_WOL_PATTERN_REJECTED ((NDIS_STATUS)0x40030051L)
462 #define NDIS_STATUS_PM_OFFLOAD_REJECTED ((NDIS_STATUS)0x40030052L)
463 #define NDIS_STATUS_PM_CAPABILITIES_CHANGE ((NDIS_STATUS)0x40030053L)
466 #define NDIS_STATUS_NOT_RESETTABLE ((NDIS_STATUS)0x80010001L)
467 #define NDIS_STATUS_SOFT_ERRORS ((NDIS_STATUS)0x80010003L)
468 #define NDIS_STATUS_HARD_ERRORS ((NDIS_STATUS)0x80010004L)
469 #define NDIS_STATUS_BUFFER_OVERFLOW ((NDIS_STATUS)STATUS_BUFFER_OVERFLOW)
470 #define NDIS_STATUS_FAILURE ((NDIS_STATUS)STATUS_UNSUCCESSFUL)
471 #define NDIS_STATUS_RESOURCES ((NDIS_STATUS)STATUS_INSUFFICIENT_RESOURCES)
472 #define NDIS_STATUS_CLOSING ((NDIS_STATUS)0xC0010002L)
473 #define NDIS_STATUS_BAD_VERSION ((NDIS_STATUS)0xC0010004L)
474 #define NDIS_STATUS_BAD_CHARACTERISTICS ((NDIS_STATUS)0xC0010005L)
475 #define NDIS_STATUS_ADAPTER_NOT_FOUND ((NDIS_STATUS)0xC0010006L)
476 #define NDIS_STATUS_OPEN_FAILED ((NDIS_STATUS)0xC0010007L)
477 #define NDIS_STATUS_DEVICE_FAILED ((NDIS_STATUS)0xC0010008L)
478 #define NDIS_STATUS_MULTICAST_FULL ((NDIS_STATUS)0xC0010009L)
479 #define NDIS_STATUS_MULTICAST_EXISTS ((NDIS_STATUS)0xC001000AL)
480 #define NDIS_STATUS_MULTICAST_NOT_FOUND ((NDIS_STATUS)0xC001000BL)
481 #define NDIS_STATUS_REQUEST_ABORTED ((NDIS_STATUS)0xC001000CL)
482 #define NDIS_STATUS_RESET_IN_PROGRESS ((NDIS_STATUS)0xC001000DL)
483 #define NDIS_STATUS_CLOSING_INDICATING ((NDIS_STATUS)0xC001000EL)
484 #define NDIS_STATUS_NOT_SUPPORTED ((NDIS_STATUS)STATUS_NOT_SUPPORTED)
485 #define NDIS_STATUS_INVALID_PACKET ((NDIS_STATUS)0xC001000FL)
486 #define NDIS_STATUS_OPEN_LIST_FULL ((NDIS_STATUS)0xC0010010L)
487 #define NDIS_STATUS_ADAPTER_NOT_READY ((NDIS_STATUS)0xC0010011L)
488 #define NDIS_STATUS_ADAPTER_NOT_OPEN ((NDIS_STATUS)0xC0010012L)
489 #define NDIS_STATUS_NOT_INDICATING ((NDIS_STATUS)0xC0010013L)
490 #define NDIS_STATUS_INVALID_LENGTH ((NDIS_STATUS)0xC0010014L)
491 #define NDIS_STATUS_INVALID_DATA ((NDIS_STATUS)0xC0010015L)
492 #define NDIS_STATUS_BUFFER_TOO_SHORT ((NDIS_STATUS)0xC0010016L)
493 #define NDIS_STATUS_INVALID_OID ((NDIS_STATUS)0xC0010017L)
494 #define NDIS_STATUS_ADAPTER_REMOVED ((NDIS_STATUS)0xC0010018L)
495 #define NDIS_STATUS_UNSUPPORTED_MEDIA ((NDIS_STATUS)0xC0010019L)
496 #define NDIS_STATUS_GROUP_ADDRESS_IN_USE ((NDIS_STATUS)0xC001001AL)
497 #define NDIS_STATUS_FILE_NOT_FOUND ((NDIS_STATUS)0xC001001BL)
498 #define NDIS_STATUS_ERROR_READING_FILE ((NDIS_STATUS)0xC001001CL)
499 #define NDIS_STATUS_ALREADY_MAPPED ((NDIS_STATUS)0xC001001DL)
500 #define NDIS_STATUS_RESOURCE_CONFLICT ((NDIS_STATUS)0xC001001EL)
501 #define NDIS_STATUS_NO_CABLE ((NDIS_STATUS)0xC001001FL)
503 #define NDIS_STATUS_INVALID_SAP ((NDIS_STATUS)0xC0010020L)
504 #define NDIS_STATUS_SAP_IN_USE ((NDIS_STATUS)0xC0010021L)
505 #define NDIS_STATUS_INVALID_ADDRESS ((NDIS_STATUS)0xC0010022L)
506 #define NDIS_STATUS_VC_NOT_ACTIVATED ((NDIS_STATUS)0xC0010023L)
507 #define NDIS_STATUS_DEST_OUT_OF_ORDER ((NDIS_STATUS)0xC0010024L)
508 #define NDIS_STATUS_VC_NOT_AVAILABLE ((NDIS_STATUS)0xC0010025L)
509 #define NDIS_STATUS_CELLRATE_NOT_AVAILABLE ((NDIS_STATUS)0xC0010026L)
510 #define NDIS_STATUS_INCOMPATABLE_QOS ((NDIS_STATUS)0xC0010027L)
511 #define NDIS_STATUS_AAL_PARAMS_UNSUPPORTED ((NDIS_STATUS)0xC0010028L)
512 #define NDIS_STATUS_NO_ROUTE_TO_DESTINATION ((NDIS_STATUS)0xC0010029L)
514 #define NDIS_STATUS_TOKEN_RING_OPEN_ERROR ((NDIS_STATUS)0xC0011000L)
515 #define NDIS_STATUS_INVALID_DEVICE_REQUEST ((NDIS_STATUS)STATUS_INVALID_DEVICE_REQUEST)
516 #define NDIS_STATUS_NETWORK_UNREACHABLE ((NDIS_STATUS)STATUS_NETWORK_UNREACHABLE)
518 #if NDIS_SUPPORT_NDIS6
520 #define NDIS_STATUS_SEND_ABORTED ((NDIS_STATUS)STATUS_NDIS_REQUEST_ABORTED)
521 #define NDIS_STATUS_PAUSED ((NDIS_STATUS)STATUS_NDIS_PAUSED)
522 #define NDIS_STATUS_INTERFACE_NOT_FOUND ((NDIS_STATUS)STATUS_NDIS_INTERFACE_NOT_FOUND)
523 #define NDIS_STATUS_INVALID_PARAMETER ((NDIS_STATUS)STATUS_INVALID_PARAMETER)
524 #define NDIS_STATUS_UNSUPPORTED_REVISION ((NDIS_STATUS)STATUS_NDIS_UNSUPPORTED_REVISION)
525 #define NDIS_STATUS_INVALID_PORT ((NDIS_STATUS)STATUS_NDIS_INVALID_PORT)
526 #define NDIS_STATUS_INVALID_PORT_STATE ((NDIS_STATUS)STATUS_NDIS_INVALID_PORT_STATE)
527 #define NDIS_STATUS_INVALID_STATE ((NDIS_STATUS)STATUS_INVALID_DEVICE_STATE)
528 #define NDIS_STATUS_MEDIA_DISCONNECTED ((NDIS_STATUS)STATUS_NDIS_MEDIA_DISCONNECTED)
529 #define NDIS_STATUS_LOW_POWER_STATE ((NDIS_STATUS)STATUS_NDIS_LOW_POWER_STATE)
530 #define NDIS_STATUS_DOT11_AUTO_CONFIG_ENABLED ((NDIS_STATUS)STATUS_NDIS_DOT11_AUTO_CONFIG_ENABLED)
531 #define NDIS_STATUS_DOT11_MEDIA_IN_USE ((NDIS_STATUS)STATUS_NDIS_DOT11_MEDIA_IN_USE)
532 #define NDIS_STATUS_DOT11_POWER_STATE_INVALID ((NDIS_STATUS)STATUS_NDIS_DOT11_POWER_STATE_INVALID)
533 #define NDIS_STATUS_UPLOAD_IN_PROGRESS ((NDIS_STATUS)0xC0231001L)
534 #define NDIS_STATUS_REQUEST_UPLOAD ((NDIS_STATUS)0xC0231002L)
535 #define NDIS_STATUS_UPLOAD_REQUESTED ((NDIS_STATUS)0xC0231003L)
536 #define NDIS_STATUS_OFFLOAD_TCP_ENTRIES ((NDIS_STATUS)0xC0231004L)
537 #define NDIS_STATUS_OFFLOAD_PATH_ENTRIES ((NDIS_STATUS)0xC0231005L)
538 #define NDIS_STATUS_OFFLOAD_NEIGHBOR_ENTRIES ((NDIS_STATUS)0xC0231006L)
539 #define NDIS_STATUS_OFFLOAD_IP_ADDRESS_ENTRIES ((NDIS_STATUS)0xC0231007L)
540 #define NDIS_STATUS_OFFLOAD_HW_ADDRESS_ENTRIES ((NDIS_STATUS)0xC0231008L)
541 #define NDIS_STATUS_OFFLOAD_VLAN_ENTRIES ((NDIS_STATUS)0xC0231009L)
542 #define NDIS_STATUS_OFFLOAD_TCP_XMIT_BUFFER ((NDIS_STATUS)0xC023100AL)
543 #define NDIS_STATUS_OFFLOAD_TCP_RCV_BUFFER ((NDIS_STATUS)0xC023100BL)
544 #define NDIS_STATUS_OFFLOAD_TCP_RCV_WINDOW ((NDIS_STATUS)0xC023100CL)
545 #define NDIS_STATUS_OFFLOAD_VLAN_MISMATCH ((NDIS_STATUS)0xC023100DL)
546 #define NDIS_STATUS_OFFLOAD_DATA_NOT_ACCEPTED ((NDIS_STATUS)0xC023100EL)
547 #define NDIS_STATUS_OFFLOAD_POLICY ((NDIS_STATUS)0xC023100FL)
548 #define NDIS_STATUS_OFFLOAD_DATA_PARTIALLY_ACCEPTED ((NDIS_STATUS)0xC0231010L)
549 #define NDIS_STATUS_OFFLOAD_REQUEST_RESET ((NDIS_STATUS)0xC0231011L)
551 #if NDIS_SUPPORT_NDIS620
552 #define NDIS_STATUS_PM_WOL_PATTERN_LIST_FULL ((NDIS_STATUS)STATUS_NDIS_PM_WOL_PATTERN_LIST_FULL)
553 #define NDIS_STATUS_PM_PROTOCOL_OFFLOAD_LIST_FULL ((NDIS_STATUS)STATUS_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL)
556 #endif /* NDIS_SUPPORT_NDIS6 */
558 #if (NDIS_SUPPORT_NDIS620)
559 #define NDIS_STATUS_OFFLOAD_CONNECTION_REJECTED ((NDIS_STATUS)STATUS_NDIS_OFFLOAD_CONNECTION_REJECTED)
562 /* NDIS error codes for error logging */
564 #define NDIS_ERROR_CODE ULONG
566 #define NDIS_ERROR_CODE_RESOURCE_CONFLICT EVENT_NDIS_RESOURCE_CONFLICT
567 #define NDIS_ERROR_CODE_OUT_OF_RESOURCES EVENT_NDIS_OUT_OF_RESOURCE
568 #define NDIS_ERROR_CODE_HARDWARE_FAILURE EVENT_NDIS_HARDWARE_FAILURE
569 #define NDIS_ERROR_CODE_ADAPTER_NOT_FOUND EVENT_NDIS_ADAPTER_NOT_FOUND
570 #define NDIS_ERROR_CODE_INTERRUPT_CONNECT EVENT_NDIS_INTERRUPT_CONNECT
571 #define NDIS_ERROR_CODE_DRIVER_FAILURE EVENT_NDIS_DRIVER_FAILURE
572 #define NDIS_ERROR_CODE_BAD_VERSION EVENT_NDIS_BAD_VERSION
573 #define NDIS_ERROR_CODE_TIMEOUT EVENT_NDIS_TIMEOUT
574 #define NDIS_ERROR_CODE_NETWORK_ADDRESS EVENT_NDIS_NETWORK_ADDRESS
575 #define NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION EVENT_NDIS_UNSUPPORTED_CONFIGURATION
576 #define NDIS_ERROR_CODE_INVALID_VALUE_FROM_ADAPTER EVENT_NDIS_INVALID_VALUE_FROM_ADAPTER
577 #define NDIS_ERROR_CODE_MISSING_CONFIGURATION_PARAMETER EVENT_NDIS_MISSING_CONFIGURATION_PARAMETER
578 #define NDIS_ERROR_CODE_BAD_IO_BASE_ADDRESS EVENT_NDIS_BAD_IO_BASE_ADDRESS
579 #define NDIS_ERROR_CODE_RECEIVE_SPACE_SMALL EVENT_NDIS_RECEIVE_SPACE_SMALL
580 #define NDIS_ERROR_CODE_ADAPTER_DISABLED EVENT_NDIS_ADAPTER_DISABLED
582 /* Memory allocation flags. Used by Ndis[Allocate|Free]Memory */
583 #define NDIS_MEMORY_CONTIGUOUS 0x00000001
584 #define NDIS_MEMORY_NONCACHED 0x00000002
586 /* NIC attribute flags. Used by NdisMSetAttributes(Ex) */
587 #define NDIS_ATTRIBUTE_IGNORE_PACKET_TIMEOUT 0x00000001
588 #define NDIS_ATTRIBUTE_IGNORE_REQUEST_TIMEOUT 0x00000002
589 #define NDIS_ATTRIBUTE_IGNORE_TOKEN_RING_ERRORS 0x00000004
590 #define NDIS_ATTRIBUTE_BUS_MASTER 0x00000008
591 #define NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER 0x00000010
592 #define NDIS_ATTRIBUTE_DESERIALIZE 0x00000020
593 #define NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND 0x00000040
594 #define NDIS_ATTRIBUTE_SURPRISE_REMOVE_OK 0x00000080
595 #define NDIS_ATTRIBUTE_NOT_CO_NDIS 0x00000100
596 #define NDIS_ATTRIBUTE_USES_SAFE_BUFFER_APIS 0x00000200
600 #if NDIS_SUPPORT_60_COMPATIBLE_API
602 typedef union _NDIS_RW_LOCK_REFCOUNT
{
605 } NDIS_RW_LOCK_REFCOUNT
;
607 typedef struct _NDIS_RW_LOCK
{
608 __MINGW_EXTENSION
union {
609 __MINGW_EXTENSION
struct {
615 __MINGW_EXTENSION
union {
616 NDIS_RW_LOCK_REFCOUNT RefCount
[MAXIMUM_PROCESSORS
];
617 ULONG RefCountEx
[sizeof(NDIS_RW_LOCK_REFCOUNT
)/sizeof(ULONG
) * MAXIMUM_PROCESSORS
];
618 __MINGW_EXTENSION
struct {
619 KSPIN_LOCK RefCountLock
;
620 volatile ULONG SharedRefCount
;
621 volatile BOOLEAN WriterWaiting
;
624 } NDIS_RW_LOCK
, *PNDIS_RW_LOCK
;
626 typedef struct _LOCK_STATE
{
629 } LOCK_STATE
, *PLOCK_STATE
;
631 #endif /* NDIS_SUPPORT_60_COMPATIBLE_API */
636 (NTAPI NDIS_TIMER_FUNCTION
)(
637 IN PVOID SystemSpecific1
,
638 IN PVOID FunctionContext
,
639 IN PVOID SystemSpecific2
,
640 IN PVOID SystemSpecific3
);
641 typedef NDIS_TIMER_FUNCTION
*PNDIS_TIMER_FUNCTION
;
643 typedef struct _NDIS_TIMER
{
646 } NDIS_TIMER
, *PNDIS_TIMER
;
650 typedef CM_MCA_POS_DATA NDIS_MCA_POS_DATA
, *PNDIS_MCA_POS_DATA
;
651 typedef CM_EISA_SLOT_INFORMATION NDIS_EISA_SLOT_INFORMATION
, *PNDIS_EISA_SLOT_INFORMATION
;
652 typedef CM_EISA_FUNCTION_INFORMATION NDIS_EISA_FUNCTION_INFORMATION
, *PNDIS_EISA_FUNCTION_INFORMATION
;
653 typedef CM_PARTIAL_RESOURCE_LIST NDIS_RESOURCE_LIST
, *PNDIS_RESOURCE_LIST
;
655 /* Hardware status codes (OID_GEN_HARDWARE_STATUS) */
656 typedef enum _NDIS_HARDWARE_STATUS
{
657 NdisHardwareStatusReady
,
658 NdisHardwareStatusInitializing
,
659 NdisHardwareStatusReset
,
660 NdisHardwareStatusClosing
,
661 NdisHardwareStatusNotReady
662 } NDIS_HARDWARE_STATUS
, *PNDIS_HARDWARE_STATUS
;
664 /* OID_GEN_GET_TIME_CAPS */
665 typedef struct _GEN_GET_TIME_CAPS
{
667 ULONG ClockPrecision
;
668 } GEN_GET_TIME_CAPS
, *PGEN_GET_TIME_CAPS
;
671 #define READABLE_LOCAL_CLOCK 0x00000001
672 #define CLOCK_NETWORK_DERIVED 0x00000002
673 #define CLOCK_PRECISION 0x00000004
674 #define RECEIVE_TIME_INDICATION_CAPABLE 0x00000008
675 #define TIMED_SEND_CAPABLE 0x00000010
676 #define TIME_STAMP_CAPABLE 0x00000020
678 /* OID_GEN_GET_NETCARD_TIME */
679 typedef struct _GEN_GET_NETCARD_TIME
{
681 } GEN_GET_NETCARD_TIME
, *PGEN_GET_NETCARD_TIME
;
683 /* NDIS packet filter bits (OID_GEN_CURRENT_PACKET_FILTER) */
684 #define NDIS_PACKET_TYPE_DIRECTED 0x00000001
685 #define NDIS_PACKET_TYPE_MULTICAST 0x00000002
686 #define NDIS_PACKET_TYPE_ALL_MULTICAST 0x00000004
687 #define NDIS_PACKET_TYPE_BROADCAST 0x00000008
688 #define NDIS_PACKET_TYPE_SOURCE_ROUTING 0x00000010
689 #define NDIS_PACKET_TYPE_PROMISCUOUS 0x00000020
690 #define NDIS_PACKET_TYPE_SMT 0x00000040
691 #define NDIS_PACKET_TYPE_ALL_LOCAL 0x00000080
692 #define NDIS_PACKET_TYPE_GROUP 0x00001000
693 #define NDIS_PACKET_TYPE_ALL_FUNCTIONAL 0x00002000
694 #define NDIS_PACKET_TYPE_FUNCTIONAL 0x00004000
695 #define NDIS_PACKET_TYPE_MAC_FRAME 0x00008000
697 /* NDIS protocol option bits (OID_GEN_PROTOCOL_OPTIONS) */
698 #define NDIS_PROT_OPTION_ESTIMATED_LENGTH 0x00000001
699 #define NDIS_PROT_OPTION_NO_LOOPBACK 0x00000002
700 #define NDIS_PROT_OPTION_NO_RSVD_ON_RCVPKT 0x00000004
702 /* NDIS MAC option bits (OID_GEN_MAC_OPTIONS) */
703 #define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA 0x00000001
704 #define NDIS_MAC_OPTION_RECEIVE_SERIALIZED 0x00000002
705 #define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND 0x00000004
706 #define NDIS_MAC_OPTION_NO_LOOPBACK 0x00000008
707 #define NDIS_MAC_OPTION_FULL_DUPLEX 0x00000010
708 #define NDIS_MAC_OPTION_EOTX_INDICATION 0x00000020
709 #define NDIS_MAC_OPTION_8021P_PRIORITY 0x00000040
710 #define NDIS_MAC_OPTION_RESERVED 0x80000000
712 /* State of the LAN media (OID_GEN_MEDIA_CONNECT_STATUS) */
713 typedef enum _NDIS_MEDIA_STATE
{
714 NdisMediaStateConnected
,
715 NdisMediaStateDisconnected
716 } NDIS_MEDIA_STATE
, *PNDIS_MEDIA_STATE
;
718 /* OID_GEN_SUPPORTED_GUIDS */
719 typedef struct _NDIS_GUID
{
727 } NDIS_GUID
, *PNDIS_GUID
;
729 #define NDIS_GUID_TO_OID 0x00000001
730 #define NDIS_GUID_TO_STATUS 0x00000002
731 #define NDIS_GUID_ANSI_STRING 0x00000004
732 #define NDIS_GUID_UNICODE_STRING 0x00000008
733 #define NDIS_GUID_ARRAY 0x00000010
735 #if NDIS_LEGACY_DRIVER
737 /* NDIS_PACKET_PRIVATE.Flags constants */
738 #define fPACKET_WRAPPER_RESERVED 0x3f
739 #define fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO 0x40
740 #define fPACKET_ALLOCATED_BY_NDIS 0x80
742 #define NDIS_FLAGS_PROTOCOL_ID_MASK 0x0000000f
743 #define NDIS_FLAGS_MULTICAST_PACKET 0x00000010
744 #define NDIS_FLAGS_RESERVED2 0x00000020
745 #define NDIS_FLAGS_RESERVED3 0x00000040
746 #define NDIS_FLAGS_DONT_LOOPBACK 0x00000080
747 #define NDIS_FLAGS_IS_LOOPBACK_PACKET 0x00000100
748 #define NDIS_FLAGS_LOOPBACK_ONLY 0x00000200
749 #define NDIS_FLAGS_RESERVED4 0x00000400
750 #define NDIS_FLAGS_DOUBLE_BUFFERED 0x00000800
751 #define NDIS_FLAGS_SENT_AT_DPC 0x00001000
752 #define NDIS_FLAGS_USES_SG_BUFFER_LIST 0x00002000
753 #define NDIS_FLAGS_USES_ORIGINAL_PACKET 0x00004000
754 #define NDIS_FLAGS_PADDED 0x00010000
755 #define NDIS_FLAGS_XLATE_AT_TOP 0x00020000
757 typedef NDIS_HANDLE PNDIS_PACKET_POOL
;
759 typedef struct _NDIS_PACKET_PRIVATE
{
764 PNDIS_PACKET_POOL Pool
;
768 UCHAR NdisPacketFlags
;
769 USHORT NdisPacketOobOffset
;
770 } NDIS_PACKET_PRIVATE
, *PNDIS_PACKET_PRIVATE
;
772 typedef struct _NDIS_PACKET
{
773 NDIS_PACKET_PRIVATE Private
;
774 __MINGW_EXTENSION
union {
775 __MINGW_EXTENSION
struct {
776 UCHAR MiniportReserved
[2 * sizeof(PVOID
)];
777 UCHAR WrapperReserved
[2 * sizeof(PVOID
)];
779 __MINGW_EXTENSION
struct {
780 UCHAR MiniportReservedEx
[3 * sizeof(PVOID
)];
781 UCHAR WrapperReservedEx
[sizeof(PVOID
)];
783 __MINGW_EXTENSION
struct {
784 UCHAR MacReserved
[4 * sizeof(PVOID
)];
787 ULONG_PTR Reserved
[2];
788 UCHAR ProtocolReserved
[1];
789 } NDIS_PACKET
, *PNDIS_PACKET
, **PPNDIS_PACKET
;
791 typedef struct _NDIS_PACKET_STACK
{
792 ULONG_PTR IMReserved
[2];
793 ULONG_PTR NdisReserved
[4];
794 } NDIS_PACKET_STACK
, *PNDIS_PACKET_STACK
;
796 #endif /* NDIS_LEGACY_DRIVER */
798 typedef enum _NDIS_CLASS_ID
{
799 NdisClass802_3Priority
,
800 NdisClassWirelessWanMbxMailbox
,
801 NdisClassIrdaPacketInfo
,
805 typedef struct _MEDIA_SPECIFIC_INFORMATION
{
806 UINT NextEntryOffset
;
807 NDIS_CLASS_ID ClassId
;
809 UCHAR ClassInformation
[1];
810 } MEDIA_SPECIFIC_INFORMATION
, *PMEDIA_SPECIFIC_INFORMATION
;
812 #if NDIS_LEGACY_DRIVER
813 typedef struct _NDIS_PACKET_OOB_DATA
{
814 __MINGW_EXTENSION
union {
815 ULONGLONG TimeToSend
;
818 ULONGLONG TimeReceived
;
820 UINT SizeMediaSpecificInfo
;
821 PVOID MediaSpecificInformation
;
823 } NDIS_PACKET_OOB_DATA
, *PNDIS_PACKET_OOB_DATA
;
826 typedef struct _NDIS_PM_PACKET_PATTERN
{
833 } NDIS_PM_PACKET_PATTERN
, *PNDIS_PM_PACKET_PATTERN
;
835 /* Request types used by NdisRequest */
836 typedef enum _NDIS_REQUEST_TYPE
{
837 NdisRequestQueryInformation
,
838 NdisRequestSetInformation
,
839 NdisRequestQueryStatistics
,
843 NdisRequestTransferData
,
849 #if NDIS_SUPPORT_NDIS6
852 } NDIS_REQUEST_TYPE
, *PNDIS_REQUEST_TYPE
;
854 #if NDIS_LEGACY_DRIVER
855 typedef struct _NDIS_REQUEST
{
856 UCHAR MacReserved
[4 * sizeof(PVOID
)];
857 NDIS_REQUEST_TYPE RequestType
;
859 struct QUERY_INFORMATION
{
861 PVOID InformationBuffer
;
862 UINT InformationBufferLength
;
866 struct SET_INFORMATION
{
868 PVOID InformationBuffer
;
869 UINT InformationBufferLength
;
874 #if (defined(NDIS50) || defined(NDIS51) || defined(NDIS50_MINIPORT) || defined(NDIS51_MINIPORT))
875 UCHAR NdisReserved
[9 * sizeof(PVOID
)];
876 __MINGW_EXTENSION
union {
877 UCHAR CallMgrReserved
[2 * sizeof(PVOID
)];
878 UCHAR ProtocolReserved
[2 * sizeof(PVOID
)];
880 UCHAR MiniportReserved
[2 * sizeof(PVOID
)];
882 } NDIS_REQUEST
, *PNDIS_REQUEST
;
883 #endif /* NDIS_LEGACY_DRIVER */
885 /* Wide Area Networks definitions */
887 #if NDIS_LEGACY_DRIVER
888 typedef struct _NDIS_WAN_PACKET
{
889 LIST_ENTRY WanPacketQueue
;
890 PUCHAR CurrentBuffer
;
894 PVOID ProtocolReserved1
;
895 PVOID ProtocolReserved2
;
896 PVOID ProtocolReserved3
;
897 PVOID ProtocolReserved4
;
902 } NDIS_WAN_PACKET
, *PNDIS_WAN_PACKET
;
905 /* DMA channel information */
907 typedef struct _NDIS_DMA_DESCRIPTION
{
909 BOOLEAN AutoInitialize
;
910 BOOLEAN DmaChannelSpecified
;
915 } NDIS_DMA_DESCRIPTION
, *PNDIS_DMA_DESCRIPTION
;
917 typedef struct _NDIS_DMA_BLOCK
{
918 PVOID MapRegisterBase
;
919 KEVENT AllocationEvent
;
920 PADAPTER_OBJECT SystemAdapterObject
;
923 } NDIS_DMA_BLOCK
, *PNDIS_DMA_BLOCK
;
925 typedef UCHAR NDIS_DMA_SIZE
;
927 #define NDIS_DMA_24BITS ((NDIS_DMA_SIZE)0)
928 #define NDIS_DMA_32BITS ((NDIS_DMA_SIZE)1)
929 #define NDIS_DMA_64BITS ((NDIS_DMA_SIZE)2)
931 typedef enum _NDIS_PROCESSOR_TYPE
{
938 } NDIS_PROCESSOR_TYPE
, *PNDIS_PROCESSOR_TYPE
;
940 typedef enum _NDIS_ENVIRONMENT_TYPE
{
941 NdisEnvironmentWindows
,
942 NdisEnvironmentWindowsNt
943 } NDIS_ENVIRONMENT_TYPE
, *PNDIS_ENVIRONMENT_TYPE
;
945 /* Possible hardware architecture */
946 typedef enum _NDIS_INTERFACE_TYPE
{
947 NdisInterfaceInternal
= Internal
,
948 NdisInterfaceIsa
= Isa
,
949 NdisInterfaceEisa
= Eisa
,
950 NdisInterfaceMca
= MicroChannel
,
951 NdisInterfaceTurboChannel
= TurboChannel
,
952 NdisInterfacePci
= PCIBus
,
953 NdisInterfacePcMcia
= PCMCIABus
,
954 NdisInterfaceCBus
= CBus
,
955 NdisInterfaceMPIBus
= MPIBus
,
956 NdisInterfaceMPSABus
= MPSABus
,
957 NdisInterfaceProcessorInternal
= ProcessorInternal
,
958 NdisInterfaceInternalPowerBus
= InternalPowerBus
,
959 NdisInterfacePNPISABus
= PNPISABus
,
960 NdisInterfacePNPBus
= PNPBus
,
964 NdisMaximumInterfaceType
965 } NDIS_INTERFACE_TYPE
, *PNDIS_INTERFACE_TYPE
;
967 #define NdisInterruptLevelSensitive LevelSensitive
968 #define NdisInterruptLatched Latched
970 typedef KINTERRUPT_MODE NDIS_INTERRUPT_MODE
, *PNDIS_INTERRUPT_MODE
;
972 typedef enum _NDIS_PARAMETER_TYPE
{
973 NdisParameterInteger
,
974 NdisParameterHexInteger
,
976 NdisParameterMultiString
,
978 } NDIS_PARAMETER_TYPE
, *PNDIS_PARAMETER_TYPE
;
980 typedef struct _BINARY_DATA
{
985 typedef struct _NDIS_CONFIGURATION_PARAMETER
{
986 NDIS_PARAMETER_TYPE ParameterType
;
989 NDIS_STRING StringData
;
990 BINARY_DATA BinaryData
;
992 } NDIS_CONFIGURATION_PARAMETER
, *PNDIS_CONFIGURATION_PARAMETER
;
994 typedef PHYSICAL_ADDRESS NDIS_PHYSICAL_ADDRESS
, *PNDIS_PHYSICAL_ADDRESS
;
996 typedef struct _NDIS_PHYSICAL_ADDRESS_UNIT
{
997 NDIS_PHYSICAL_ADDRESS PhysicalAddress
;
999 } NDIS_PHYSICAL_ADDRESS_UNIT
, *PNDIS_PHYSICAL_ADDRESS_UNIT
;
1001 typedef struct _NDIS_WAN_LINE_DOWN
{
1002 UCHAR RemoteAddress
[6];
1003 UCHAR LocalAddress
[6];
1004 } NDIS_WAN_LINE_DOWN
, *PNDIS_WAN_LINE_DOWN
;
1006 typedef struct _NDIS_WAN_LINE_UP
{
1008 ULONG MaximumTotalSize
;
1009 NDIS_WAN_QUALITY Quality
;
1011 UCHAR RemoteAddress
[6];
1012 OUT UCHAR LocalAddress
[6];
1013 ULONG ProtocolBufferLength
;
1014 PUCHAR ProtocolBuffer
;
1015 USHORT ProtocolType
;
1016 NDIS_STRING DeviceName
;
1017 } NDIS_WAN_LINE_UP
, *PNDIS_WAN_LINE_UP
;
1020 (NTAPI
*ADAPTER_SHUTDOWN_HANDLER
)(
1021 IN PVOID ShutdownContext
);
1024 (NTAPI
*TDI_REGISTER_CALLBACK
)(
1025 IN PUNICODE_STRING DeviceName
,
1026 OUT HANDLE
* TdiHandle
);
1029 (NTAPI
*TDI_PNP_HANDLER
)(
1030 IN PUNICODE_STRING UpperComponent
,
1031 IN PUNICODE_STRING LowerComponent
,
1032 IN PUNICODE_STRING BindList
,
1033 IN PVOID ReconfigBuffer
,
1034 IN UINT ReconfigBufferSize
,
1037 typedef struct _OID_LIST OID_LIST
, *POID_LIST
;
1041 typedef enum _NDIS_PNP_DEVICE_STATE
{
1043 NdisPnPDeviceStarted
,
1044 NdisPnPDeviceQueryStopped
,
1045 NdisPnPDeviceStopped
,
1046 NdisPnPDeviceQueryRemoved
,
1047 NdisPnPDeviceRemoved
,
1048 NdisPnPDeviceSurpriseRemoved
1049 } NDIS_PNP_DEVICE_STATE
;
1051 #define NDIS_DEVICE_NOT_STOPPABLE 0x00000001
1052 #define NDIS_DEVICE_NOT_REMOVEABLE 0x00000002
1053 #define NDIS_DEVICE_NOT_SUSPENDABLE 0x00000004
1054 #define NDIS_DEVICE_DISABLE_PM 0x00000008
1055 #define NDIS_DEVICE_DISABLE_WAKE_UP 0x00000010
1056 #define NDIS_DEVICE_DISABLE_WAKE_ON_RECONNECT 0x00000020
1057 #define NDIS_DEVICE_RESERVED 0x00000040
1058 #define NDIS_DEVICE_DISABLE_WAKE_ON_MAGIC_PACKET 0x00000080
1059 #define NDIS_DEVICE_DISABLE_WAKE_ON_PATTERN_MATCH 0x00000100
1062 /* OID_GEN_NETWORK_LAYER_ADDRESSES */
1063 typedef struct _NETWORK_ADDRESS
{
1064 USHORT AddressLength
;
1067 } NETWORK_ADDRESS
, *PNETWORK_ADDRESS
;
1069 typedef struct _NETWORK_ADDRESS_LIST
{
1072 NETWORK_ADDRESS Address
[1];
1073 } NETWORK_ADDRESS_LIST
, *PNETWORK_ADDRESS_LIST
;
1075 /* Protocol types supported by NDIS */
1076 #define NDIS_PROTOCOL_ID_DEFAULT 0x00
1077 #define NDIS_PROTOCOL_ID_TCP_IP 0x02
1078 #define NDIS_PROTOCOL_ID_IPX 0x06
1079 #define NDIS_PROTOCOL_ID_NBF 0x07
1080 #define NDIS_PROTOCOL_ID_MAX 0x0F
1081 #define NDIS_PROTOCOL_ID_MASK 0x0F
1083 /* OID_GEN_TRANSPORT_HEADER_OFFSET */
1084 typedef struct _TRANSPORT_HEADER_OFFSET
{
1085 USHORT ProtocolType
;
1086 USHORT HeaderOffset
;
1087 } TRANSPORT_HEADER_OFFSET
, *PTRANSPORT_HEADER_OFFSET
;
1089 /* OID_GEN_CO_LINK_SPEED / OID_GEN_CO_MINIMUM_LINK_SPEED */
1090 typedef struct _NDIS_CO_LINK_SPEED
{
1093 } NDIS_CO_LINK_SPEED
, *PNDIS_CO_LINK_SPEED
;
1095 typedef ULONG NDIS_AF
, *PNDIS_AF
;
1097 #define CO_ADDRESS_FAMILY_Q2931 ((NDIS_AF)0x1)
1098 #define CO_ADDRESS_FAMILY_PSCHED ((NDIS_AF)0x2)
1099 #define CO_ADDRESS_FAMILY_L2TP ((NDIS_AF)0x3)
1100 #define CO_ADDRESS_FAMILY_IRDA ((NDIS_AF)0x4)
1101 #define CO_ADDRESS_FAMILY_1394 ((NDIS_AF)0x5)
1102 #define CO_ADDRESS_FAMILY_PPP ((NDIS_AF)0x6)
1103 #define CO_ADDRESS_FAMILY_INFINIBAND ((NDIS_AF)0x7)
1104 #define CO_ADDRESS_FAMILY_TAPI ((NDIS_AF)0x800)
1105 #define CO_ADDRESS_FAMILY_TAPI_PROXY ((NDIS_AF)0x801)
1107 #define CO_ADDRESS_FAMILY_PROXY 0x80000000
1109 typedef struct _CO_ADDRESS_FAMILY
{
1110 NDIS_AF AddressFamily
;
1113 } CO_ADDRESS_FAMILY
, *PCO_ADDRESS_FAMILY
;
1115 typedef struct _CO_SPECIFIC_PARAMETERS
{
1118 UCHAR Parameters
[1];
1119 } CO_SPECIFIC_PARAMETERS
, *PCO_SPECIFIC_PARAMETERS
;
1121 typedef struct _CO_CALL_MANAGER_PARAMETERS
{
1124 CO_SPECIFIC_PARAMETERS CallMgrSpecific
;
1125 } CO_CALL_MANAGER_PARAMETERS
, *PCO_CALL_MANAGER_PARAMETERS
;
1127 /* CO_MEDIA_PARAMETERS.Flags constants */
1128 #define RECEIVE_TIME_INDICATION 0x00000001
1129 #define USE_TIME_STAMPS 0x00000002
1130 #define TRANSMIT_VC 0x00000004
1131 #define RECEIVE_VC 0x00000008
1132 #define INDICATE_ERRED_PACKETS 0x00000010
1133 #define INDICATE_END_OF_TX 0x00000020
1134 #define RESERVE_RESOURCES_VC 0x00000040
1135 #define ROUND_DOWN_FLOW 0x00000080
1136 #define ROUND_UP_FLOW 0x00000100
1138 typedef struct _CO_MEDIA_PARAMETERS
{
1140 ULONG ReceivePriority
;
1141 ULONG ReceiveSizeHint
;
1142 CO_SPECIFIC_PARAMETERS MediaSpecific
;
1143 } CO_MEDIA_PARAMETERS
, *PCO_MEDIA_PARAMETERS
;
1145 /* CO_CALL_PARAMETERS.Flags constants */
1146 #define PERMANENT_VC 0x00000001
1147 #define CALL_PARAMETERS_CHANGED 0x00000002
1148 #define QUERY_CALL_PARAMETERS 0x00000004
1149 #define BROADCAST_VC 0x00000008
1150 #define MULTIPOINT_VC 0x00000010
1152 typedef struct _CO_CALL_PARAMETERS
{
1154 PCO_CALL_MANAGER_PARAMETERS CallMgrParameters
;
1155 PCO_MEDIA_PARAMETERS MediaParameters
;
1156 } CO_CALL_PARAMETERS
, *PCO_CALL_PARAMETERS
;
1158 typedef struct _CO_SAP
{
1164 typedef struct _NDIS_IPSEC_PACKET_INFO
{
1165 _ANONYMOUS_UNION
union {
1167 NDIS_HANDLE OffloadHandle
;
1168 NDIS_HANDLE NextOffloadHandle
;
1171 ULONG SA_DELETE_REQ
: 1;
1172 ULONG CRYPTO_DONE
: 1;
1173 ULONG NEXT_CRYPTO_DONE
: 1;
1177 } NDIS_IPSEC_PACKET_INFO
, *PNDIS_IPSEC_PACKET_INFO
;
1179 /* NDIS_MAC_FRAGMENT.Errors constants */
1180 #define WAN_ERROR_CRC 0x00000001
1181 #define WAN_ERROR_FRAMING 0x00000002
1182 #define WAN_ERROR_HARDWAREOVERRUN 0x00000004
1183 #define WAN_ERROR_BUFFEROVERRUN 0x00000008
1184 #define WAN_ERROR_TIMEOUT 0x00000010
1185 #define WAN_ERROR_ALIGNMENT 0x00000020
1187 typedef struct _NDIS_MAC_FRAGMENT
{
1188 NDIS_HANDLE NdisLinkContext
;
1190 } NDIS_MAC_FRAGMENT
, *PNDIS_MAC_FRAGMENT
;
1192 typedef struct _NDIS_MAC_LINE_DOWN
{
1193 NDIS_HANDLE NdisLinkContext
;
1194 } NDIS_MAC_LINE_DOWN
, *PNDIS_MAC_LINE_DOWN
;
1196 typedef struct _NDIS_MAC_LINE_UP
{
1198 NDIS_WAN_QUALITY Quality
;
1200 NDIS_HANDLE ConnectionWrapperID
;
1201 NDIS_HANDLE NdisLinkHandle
;
1202 NDIS_HANDLE NdisLinkContext
;
1203 } NDIS_MAC_LINE_UP
, *PNDIS_MAC_LINE_UP
;
1205 typedef struct _NDIS_PACKET_8021Q_INFO
{
1206 __MINGW_EXTENSION
union {
1208 UINT32 UserPriority
:3;
1209 UINT32 CanonicalFormatId
:1;
1215 } NDIS_PACKET_8021Q_INFO
, *PNDIS_PACKET_8021Q_INFO
;
1217 typedef enum _NDIS_PER_PACKET_INFO
{
1218 TcpIpChecksumPacketInfo
,
1220 TcpLargeSendPacketInfo
,
1221 ClassificationHandlePacketInfo
,
1223 ScatterGatherListPacketInfo
,
1227 OriginalNetBufferList
,
1228 CachedNetBufferList
,
1229 ShortPacketPaddingInfo
,
1231 } NDIS_PER_PACKET_INFO
, *PNDIS_PER_PACKET_INFO
;
1233 #if NDIS_LEGACY_DRIVER
1235 typedef struct _NDIS_PACKET_EXTENSION
{
1236 PVOID NdisPacketInfo
[MaxPerPacketInfo
];
1237 } NDIS_PACKET_EXTENSION
, *PNDIS_PACKET_EXTENSION
;
1241 * NDIS_GET_ORIGINAL_PACKET(
1242 * IN PNDIS_PACKET Packet);
1244 #define NDIS_GET_ORIGINAL_PACKET(Packet) \
1245 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, OriginalPacketInfo)
1249 * NDIS_GET_PACKET_CANCEL_ID(
1250 * IN PNDIS_PACKET Packet);
1252 #define NDIS_GET_PACKET_CANCEL_ID(Packet) \
1253 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, PacketCancelId)
1256 * PNDIS_PACKET_EXTENSION
1257 * NDIS_PACKET_EXTENSION_FROM_PACKET(
1258 * IN PNDIS_PACKET Packet);
1260 #define NDIS_PACKET_EXTENSION_FROM_PACKET(Packet) \
1261 ((PNDIS_PACKET_EXTENSION)((PUCHAR)(Packet) \
1262 + (Packet)->Private.NdisPacketOobOffset + sizeof(NDIS_PACKET_OOB_DATA)))
1266 * NDIS_PER_PACKET_INFO_FROM_PACKET(
1267 * IN OUT PNDIS_PACKET Packet,
1268 * IN NDIS_PER_PACKET_INFO InfoType);
1270 #define NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, InfoType) \
1271 ((PNDIS_PACKET_EXTENSION)((PUCHAR)(Packet) + (Packet)->Private.NdisPacketOobOffset \
1272 + sizeof(NDIS_PACKET_OOB_DATA)))->NdisPacketInfo[(InfoType)]
1276 * NDIS_SET_ORIGINAL_PACKET(
1277 * IN OUT PNDIS_PACKET Packet,
1278 * IN PNDIS_PACKET OriginalPacket);
1280 #define NDIS_SET_ORIGINAL_PACKET(Packet, OriginalPacket) \
1281 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, OriginalPacketInfo) = (OriginalPacket)
1285 * NDIS_SET_PACKET_CANCEL_ID(
1286 * IN PNDIS_PACKET Packet
1287 * IN ULONG_PTR CancelId);
1289 #define NDIS_SET_PACKET_CANCEL_ID(Packet, CancelId) \
1290 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, PacketCancelId) = (CancelId)
1292 #define NdisSetPacketCancelId(_Packet, _CancelId) NDIS_SET_PACKET_CANCEL_ID(_Packet, _CancelId)
1293 #define NdisGetPacketCancelId(_Packet) NDIS_GET_PACKET_CANCEL_ID(_Packet)
1295 #endif /* NDIS_LEGACY_DRIVER */
1297 #if NDIS_SUPPORT_NDIS6
1298 typedef struct _NDIS_GENERIC_OBJECT
{
1299 NDIS_OBJECT_HEADER Header
;
1301 PVOID CallersCaller
;
1302 PDRIVER_OBJECT DriverObject
;
1303 } NDIS_GENERIC_OBJECT
, *PNDIS_GENERIC_OBJECT
;
1306 typedef enum _NDIS_TASK
{
1307 TcpIpChecksumNdisTask
,
1309 TcpLargeSendNdisTask
,
1311 } NDIS_TASK
, *PNDIS_TASK
;
1313 typedef struct _NDIS_TASK_IPSEC
{
1315 ULONG AH_ESP_COMBINED
;
1316 ULONG TRANSPORT_TUNNEL_COMBINED
;
1324 ULONG Transport
: 1;
1333 ULONG TRIPLE_DES
: 1;
1335 ULONG Transport
: 1;
1340 } NDIS_TASK_IPSEC
, *PNDIS_TASK_IPSEC
;
1342 typedef enum _NDIS_ENCAPSULATION
{
1343 UNSPECIFIED_Encapsulation
,
1345 IEEE_802_3_Encapsulation
,
1346 IEEE_802_5_Encapsulation
,
1347 LLC_SNAP_ROUTED_Encapsulation
,
1348 LLC_SNAP_BRIDGED_Encapsulation
1349 } NDIS_ENCAPSULATION
;
1351 typedef struct _NDIS_ENCAPSULATION_FORMAT
{
1352 NDIS_ENCAPSULATION Encapsulation
;
1354 ULONG FixedHeaderSize
: 1;
1355 ULONG Reserved
: 31;
1357 ULONG EncapsulationHeaderSize
;
1358 } NDIS_ENCAPSULATION_FORMAT
, *PNDIS_ENCAPSULATION_FORMAT
;
1360 typedef struct _NDIS_TASK_OFFLOAD_HEADER
{
1364 ULONG OffsetFirstTask
;
1365 NDIS_ENCAPSULATION_FORMAT EncapsulationFormat
;
1366 } NDIS_TASK_OFFLOAD_HEADER
, *PNDIS_TASK_OFFLOAD_HEADER
;
1368 typedef struct _NDIS_TASK_OFFLOAD
{
1372 ULONG OffsetNextTask
;
1373 ULONG TaskBufferLength
;
1374 UCHAR TaskBuffer
[1];
1375 } NDIS_TASK_OFFLOAD
, *PNDIS_TASK_OFFLOAD
;
1377 /* NDIS_TASK_OFFLOAD_HEADER.Version constants */
1378 #define NDIS_TASK_OFFLOAD_VERSION 1
1380 typedef struct _NDIS_TASK_TCP_IP_CHECKSUM
{
1382 ULONG IpOptionsSupported
:1;
1383 ULONG TcpOptionsSupported
:1;
1384 ULONG TcpChecksum
:1;
1385 ULONG UdpChecksum
:1;
1390 ULONG IpOptionsSupported
: 1;
1391 ULONG TcpOptionsSupported
: 1;
1392 ULONG TcpChecksum
: 1;
1393 ULONG UdpChecksum
: 1;
1394 ULONG IpChecksum
: 1;
1398 ULONG IpOptionsSupported
: 1;
1399 ULONG TcpOptionsSupported
: 1;
1400 ULONG TcpChecksum
: 1;
1401 ULONG UdpChecksum
: 1;
1405 ULONG IpOptionsSupported
: 1;
1406 ULONG TcpOptionsSupported
: 1;
1407 ULONG TcpChecksum
: 1;
1408 ULONG UdpChecksum
: 1;
1410 } NDIS_TASK_TCP_IP_CHECKSUM
, *PNDIS_TASK_TCP_IP_CHECKSUM
;
1412 typedef struct _NDIS_TASK_TCP_LARGE_SEND
{
1414 ULONG MaxOffLoadSize
;
1415 ULONG MinSegmentCount
;
1418 } NDIS_TASK_TCP_LARGE_SEND
, *PNDIS_TASK_TCP_LARGE_SEND
;
1420 typedef struct _NDIS_TCP_IP_CHECKSUM_PACKET_INFO
{
1421 __MINGW_EXTENSION
union {
1423 ULONG NdisPacketChecksumV4
:1;
1424 ULONG NdisPacketChecksumV6
:1;
1425 ULONG NdisPacketTcpChecksum
:1;
1426 ULONG NdisPacketUdpChecksum
:1;
1427 ULONG NdisPacketIpChecksum
:1;
1430 ULONG NdisPacketTcpChecksumFailed
:1;
1431 ULONG NdisPacketUdpChecksumFailed
:1;
1432 ULONG NdisPacketIpChecksumFailed
:1;
1433 ULONG NdisPacketTcpChecksumSucceeded
:1;
1434 ULONG NdisPacketUdpChecksumSucceeded
:1;
1435 ULONG NdisPacketIpChecksumSucceeded
:1;
1436 ULONG NdisPacketLoopback
:1;
1440 } NDIS_TCP_IP_CHECKSUM_PACKET_INFO
, *PNDIS_TCP_IP_CHECKSUM_PACKET_INFO
;
1442 typedef struct _NDIS_WAN_CO_FRAGMENT
{
1444 } NDIS_WAN_CO_FRAGMENT
, *PNDIS_WAN_CO_FRAGMENT
;
1446 typedef struct _NDIS_WAN_FRAGMENT
{
1447 UCHAR RemoteAddress
[6];
1448 UCHAR LocalAddress
[6];
1449 } NDIS_WAN_FRAGMENT
, *PNDIS_WAN_FRAGMENT
;
1451 typedef struct _WAN_CO_LINKPARAMS
{
1452 ULONG TransmitSpeed
;
1455 } WAN_CO_LINKPARAMS
, *PWAN_CO_LINKPARAMS
;
1457 typedef struct _NDIS_WAN_GET_STATS
{
1458 UCHAR LocalAddress
[6];
1464 ULONG TimeoutErrors
;
1465 ULONG AlignmentErrors
;
1466 ULONG SerialOverrunErrors
;
1467 ULONG FramingErrors
;
1468 ULONG BufferOverrunErrors
;
1469 ULONG BytesTransmittedUncompressed
;
1470 ULONG BytesReceivedUncompressed
;
1471 ULONG BytesTransmittedCompressed
;
1472 ULONG BytesReceivedCompressed
;
1473 } NDIS_WAN_GET_STATS
, *PNDIS_WAN_GET_STATS
;
1478 (NTAPI
*CM_ACTIVATE_VC_COMPLETE_HANDLER
)(
1479 IN NDIS_STATUS Status
,
1480 IN NDIS_HANDLE CallMgrVcContext
,
1481 IN PCO_CALL_PARAMETERS CallParameters
);
1484 (NTAPI
*CM_ADD_PARTY_HANDLER
)(
1485 IN NDIS_HANDLE CallMgrVcContext
,
1486 IN OUT PCO_CALL_PARAMETERS CallParameters
,
1487 IN NDIS_HANDLE NdisPartyHandle
,
1488 OUT PNDIS_HANDLE CallMgrPartyContext
);
1491 (NTAPI
*CM_CLOSE_AF_HANDLER
)(
1492 IN NDIS_HANDLE CallMgrAfContext
);
1495 (NTAPI
*CM_CLOSE_CALL_HANDLER
)(
1496 IN NDIS_HANDLE CallMgrVcContext
,
1497 IN NDIS_HANDLE CallMgrPartyContext OPTIONAL
,
1498 IN PVOID CloseData OPTIONAL
,
1499 IN UINT Size OPTIONAL
);
1502 (NTAPI
*CM_DEREG_SAP_HANDLER
)(
1503 IN NDIS_HANDLE CallMgrSapContext
);
1506 (NTAPI
*CM_DEACTIVATE_VC_COMPLETE_HANDLER
)(
1507 IN NDIS_STATUS Status
,
1508 IN NDIS_HANDLE CallMgrVcContext
);
1511 (NTAPI
*CM_DROP_PARTY_HANDLER
)(
1512 IN NDIS_HANDLE CallMgrPartyContext
,
1513 IN PVOID CloseData OPTIONAL
,
1514 IN UINT Size OPTIONAL
);
1517 (NTAPI
*CM_INCOMING_CALL_COMPLETE_HANDLER
)(
1518 IN NDIS_STATUS Status
,
1519 IN NDIS_HANDLE CallMgrVcContext
,
1520 IN PCO_CALL_PARAMETERS CallParameters
);
1523 (NTAPI
*CM_MAKE_CALL_HANDLER
)(
1524 IN NDIS_HANDLE CallMgrVcContext
,
1525 IN OUT PCO_CALL_PARAMETERS CallParameters
,
1526 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
1527 OUT PNDIS_HANDLE CallMgrPartyContext OPTIONAL
);
1530 (NTAPI
*CM_MODIFY_CALL_QOS_HANDLER
)(
1531 IN NDIS_HANDLE CallMgrVcContext
,
1532 IN PCO_CALL_PARAMETERS CallParameters
);
1535 (NTAPI
*CM_OPEN_AF_HANDLER
)(
1536 IN NDIS_HANDLE CallMgrBindingContext
,
1537 IN PCO_ADDRESS_FAMILY AddressFamily
,
1538 IN NDIS_HANDLE NdisAfHandle
,
1539 OUT PNDIS_HANDLE CallMgrAfContext
);
1542 (NTAPI
*CM_REG_SAP_HANDLER
)(
1543 IN NDIS_HANDLE CallMgrAfContext
,
1545 IN NDIS_HANDLE NdisSapHandle
,
1546 OUT PNDIS_HANDLE CallMgrSapContext
);
1549 (NTAPI
*CO_CREATE_VC_HANDLER
)(
1550 IN NDIS_HANDLE ProtocolAfContext
,
1551 IN NDIS_HANDLE NdisVcHandle
,
1552 OUT PNDIS_HANDLE ProtocolVcContext
);
1555 (NTAPI
*CO_DELETE_VC_HANDLER
)(
1556 IN NDIS_HANDLE ProtocolVcContext
);
1559 (NTAPI
*CO_REQUEST_COMPLETE_HANDLER
)(
1560 IN NDIS_STATUS Status
,
1561 IN NDIS_HANDLE ProtocolAfContext OPTIONAL
,
1562 IN NDIS_HANDLE ProtocolVcContext OPTIONAL
,
1563 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
,
1564 IN PNDIS_REQUEST NdisRequest
);
1567 (NTAPI
*CO_REQUEST_HANDLER
)(
1568 IN NDIS_HANDLE ProtocolAfContext
,
1569 IN NDIS_HANDLE ProtocolVcContext OPTIONAL
,
1570 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
,
1571 IN OUT PNDIS_REQUEST NdisRequest
);
1573 typedef struct _NDIS_CALL_MANAGER_CHARACTERISTICS
{
1578 CO_CREATE_VC_HANDLER CmCreateVcHandler
;
1579 CO_DELETE_VC_HANDLER CmDeleteVcHandler
;
1580 CM_OPEN_AF_HANDLER CmOpenAfHandler
;
1581 CM_CLOSE_AF_HANDLER CmCloseAfHandler
;
1582 CM_REG_SAP_HANDLER CmRegisterSapHandler
;
1583 CM_DEREG_SAP_HANDLER CmDeregisterSapHandler
;
1584 CM_MAKE_CALL_HANDLER CmMakeCallHandler
;
1585 CM_CLOSE_CALL_HANDLER CmCloseCallHandler
;
1586 CM_INCOMING_CALL_COMPLETE_HANDLER CmIncomingCallCompleteHandler
;
1587 CM_ADD_PARTY_HANDLER CmAddPartyHandler
;
1588 CM_DROP_PARTY_HANDLER CmDropPartyHandler
;
1589 CM_ACTIVATE_VC_COMPLETE_HANDLER CmActivateVcCompleteHandler
;
1590 CM_DEACTIVATE_VC_COMPLETE_HANDLER CmDeactivateVcCompleteHandler
;
1591 CM_MODIFY_CALL_QOS_HANDLER CmModifyCallQoSHandler
;
1592 CO_REQUEST_HANDLER CmRequestHandler
;
1593 CO_REQUEST_COMPLETE_HANDLER CmRequestCompleteHandler
;
1594 } NDIS_CALL_MANAGER_CHARACTERISTICS
, *PNDIS_CALL_MANAGER_CHARACTERISTICS
;
1598 /* Call Manager clients */
1600 typedef VOID (*CL_OPEN_AF_COMPLETE_HANDLER
)(
1601 IN NDIS_STATUS Status
,
1602 IN NDIS_HANDLE ProtocolAfContext
,
1603 IN NDIS_HANDLE NdisAfHandle
);
1606 (NTAPI
*CL_CLOSE_AF_COMPLETE_HANDLER
)(
1607 IN NDIS_STATUS Status
,
1608 IN NDIS_HANDLE ProtocolAfContext
);
1611 (NTAPI
*CL_REG_SAP_COMPLETE_HANDLER
)(
1612 IN NDIS_STATUS Status
,
1613 IN NDIS_HANDLE ProtocolSapContext
,
1615 IN NDIS_HANDLE NdisSapHandle
);
1618 (NTAPI
*CL_DEREG_SAP_COMPLETE_HANDLER
)(
1619 IN NDIS_STATUS Status
,
1620 IN NDIS_HANDLE ProtocolSapContext
);
1623 (NTAPI
*CL_MAKE_CALL_COMPLETE_HANDLER
)(
1624 IN NDIS_STATUS Status
,
1625 IN NDIS_HANDLE ProtocolVcContext
,
1626 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
1627 IN PCO_CALL_PARAMETERS CallParameters
);
1630 (NTAPI
*CL_MODIFY_CALL_QOS_COMPLETE_HANDLER
)(
1631 IN NDIS_STATUS Status
,
1632 IN NDIS_HANDLE ProtocolVcContext
,
1633 IN PCO_CALL_PARAMETERS CallParameters
);
1636 (NTAPI
*CL_CLOSE_CALL_COMPLETE_HANDLER
)(
1637 IN NDIS_STATUS Status
,
1638 IN NDIS_HANDLE ProtocolVcContext
,
1639 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
);
1642 (NTAPI
*CL_ADD_PARTY_COMPLETE_HANDLER
)(
1643 IN NDIS_STATUS Status
,
1644 IN NDIS_HANDLE ProtocolPartyContext
,
1645 IN NDIS_HANDLE NdisPartyHandle
,
1646 IN PCO_CALL_PARAMETERS CallParameters
);
1649 (NTAPI
*CL_DROP_PARTY_COMPLETE_HANDLER
)(
1650 IN NDIS_STATUS Status
,
1651 IN NDIS_HANDLE ProtocolPartyContext
);
1654 (NTAPI
*CL_INCOMING_CALL_HANDLER
)(
1655 IN NDIS_HANDLE ProtocolSapContext
,
1656 IN NDIS_HANDLE ProtocolVcContext
,
1657 IN OUT PCO_CALL_PARAMETERS CallParameters
);
1660 (NTAPI
*CL_INCOMING_CALL_QOS_CHANGE_HANDLER
)(
1661 IN NDIS_HANDLE ProtocolVcContext
,
1662 IN PCO_CALL_PARAMETERS CallParameters
);
1665 (NTAPI
*CL_INCOMING_CLOSE_CALL_HANDLER
)(
1666 IN NDIS_STATUS CloseStatus
,
1667 IN NDIS_HANDLE ProtocolVcContext
,
1668 IN PVOID CloseData OPTIONAL
,
1669 IN UINT Size OPTIONAL
);
1672 (NTAPI
*CL_INCOMING_DROP_PARTY_HANDLER
)(
1673 IN NDIS_STATUS DropStatus
,
1674 IN NDIS_HANDLE ProtocolPartyContext
,
1675 IN PVOID CloseData OPTIONAL
,
1676 IN UINT Size OPTIONAL
);
1679 (NTAPI
*CL_CALL_CONNECTED_HANDLER
)(
1680 IN NDIS_HANDLE ProtocolVcContext
);
1683 typedef struct _NDIS_CLIENT_CHARACTERISTICS
{
1688 CO_CREATE_VC_HANDLER ClCreateVcHandler
;
1689 CO_DELETE_VC_HANDLER ClDeleteVcHandler
;
1690 CO_REQUEST_HANDLER ClRequestHandler
;
1691 CO_REQUEST_COMPLETE_HANDLER ClRequestCompleteHandler
;
1692 CL_OPEN_AF_COMPLETE_HANDLER ClOpenAfCompleteHandler
;
1693 CL_CLOSE_AF_COMPLETE_HANDLER ClCloseAfCompleteHandler
;
1694 CL_REG_SAP_COMPLETE_HANDLER ClRegisterSapCompleteHandler
;
1695 CL_DEREG_SAP_COMPLETE_HANDLER ClDeregisterSapCompleteHandler
;
1696 CL_MAKE_CALL_COMPLETE_HANDLER ClMakeCallCompleteHandler
;
1697 CL_MODIFY_CALL_QOS_COMPLETE_HANDLER ClModifyCallQoSCompleteHandler
;
1698 CL_CLOSE_CALL_COMPLETE_HANDLER ClCloseCallCompleteHandler
;
1699 CL_ADD_PARTY_COMPLETE_HANDLER ClAddPartyCompleteHandler
;
1700 CL_DROP_PARTY_COMPLETE_HANDLER ClDropPartyCompleteHandler
;
1701 CL_INCOMING_CALL_HANDLER ClIncomingCallHandler
;
1702 CL_INCOMING_CALL_QOS_CHANGE_HANDLER ClIncomingCallQoSChangeHandler
;
1703 CL_INCOMING_CLOSE_CALL_HANDLER ClIncomingCloseCallHandler
;
1704 CL_INCOMING_DROP_PARTY_HANDLER ClIncomingDropPartyHandler
;
1705 CL_CALL_CONNECTED_HANDLER ClCallConnectedHandler
;
1706 } NDIS_CLIENT_CHARACTERISTICS
, *PNDIS_CLIENT_CHARACTERISTICS
;
1709 /* NDIS protocol structures */
1711 /* Prototypes for NDIS 3.0 protocol characteristics */
1714 (NTAPI
*OPEN_ADAPTER_COMPLETE_HANDLER
)(
1715 IN NDIS_HANDLE ProtocolBindingContext
,
1716 IN NDIS_STATUS Status
,
1717 IN NDIS_STATUS OpenErrorStatus
);
1720 (NTAPI
*CLOSE_ADAPTER_COMPLETE_HANDLER
)(
1721 IN NDIS_HANDLE ProtocolBindingContext
,
1722 IN NDIS_STATUS Status
);
1725 (NTAPI
*RESET_COMPLETE_HANDLER
)(
1726 IN NDIS_HANDLE ProtocolBindingContext
,
1727 IN NDIS_STATUS Status
);
1730 (NTAPI
*REQUEST_COMPLETE_HANDLER
)(
1731 IN NDIS_HANDLE ProtocolBindingContext
,
1732 IN PNDIS_REQUEST NdisRequest
,
1733 IN NDIS_STATUS Status
);
1736 (NTAPI
*STATUS_HANDLER
)(
1737 IN NDIS_HANDLE ProtocolBindingContext
,
1738 IN NDIS_STATUS GeneralStatus
,
1739 IN PVOID StatusBuffer
,
1740 IN UINT StatusBufferSize
);
1743 (NTAPI
*STATUS_COMPLETE_HANDLER
)(
1744 IN NDIS_HANDLE ProtocolBindingContext
);
1747 (NTAPI
*SEND_COMPLETE_HANDLER
)(
1748 IN NDIS_HANDLE ProtocolBindingContext
,
1749 IN PNDIS_PACKET Packet
,
1750 IN NDIS_STATUS Status
);
1753 (NTAPI
*WAN_SEND_COMPLETE_HANDLER
)(
1754 IN NDIS_HANDLE ProtocolBindingContext
,
1755 IN PNDIS_WAN_PACKET Packet
,
1756 IN NDIS_STATUS Status
);
1759 (NTAPI
*TRANSFER_DATA_COMPLETE_HANDLER
)(
1760 IN NDIS_HANDLE ProtocolBindingContext
,
1761 IN PNDIS_PACKET Packet
,
1762 IN NDIS_STATUS Status
,
1763 IN UINT BytesTransferred
);
1766 (NTAPI
*WAN_TRANSFER_DATA_COMPLETE_HANDLER
)(
1771 (NTAPI
*RECEIVE_HANDLER
)(
1772 IN NDIS_HANDLE ProtocolBindingContext
,
1773 IN NDIS_HANDLE MacReceiveContext
,
1774 IN PVOID HeaderBuffer
,
1775 IN UINT HeaderBufferSize
,
1776 IN PVOID LookAheadBuffer
,
1777 IN UINT LookaheadBufferSize
,
1778 IN UINT PacketSize
);
1781 (NTAPI
*WAN_RECEIVE_HANDLER
)(
1782 IN NDIS_HANDLE NdisLinkHandle
,
1784 IN ULONG PacketSize
);
1787 (NTAPI
*RECEIVE_COMPLETE_HANDLER
)(
1788 IN NDIS_HANDLE ProtocolBindingContext
);
1791 /* Protocol characteristics for NDIS 3.0 protocols */
1793 #define NDIS30_PROTOCOL_CHARACTERISTICS_S \
1794 UCHAR MajorNdisVersion; \
1795 UCHAR MinorNdisVersion; \
1797 _ANONYMOUS_UNION union { \
1801 OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler; \
1802 CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler; \
1803 _ANONYMOUS_UNION union { \
1804 SEND_COMPLETE_HANDLER SendCompleteHandler; \
1805 WAN_SEND_COMPLETE_HANDLER WanSendCompleteHandler; \
1806 } DUMMYUNIONNAME2; \
1807 _ANONYMOUS_UNION union { \
1808 TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; \
1809 WAN_TRANSFER_DATA_COMPLETE_HANDLER WanTransferDataCompleteHandler; \
1810 } DUMMYUNIONNAME3; \
1811 RESET_COMPLETE_HANDLER ResetCompleteHandler; \
1812 REQUEST_COMPLETE_HANDLER RequestCompleteHandler; \
1813 _ANONYMOUS_UNION union { \
1814 RECEIVE_HANDLER ReceiveHandler; \
1815 WAN_RECEIVE_HANDLER WanReceiveHandler; \
1816 } DUMMYUNIONNAME4; \
1817 RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; \
1818 STATUS_HANDLER StatusHandler; \
1819 STATUS_COMPLETE_HANDLER StatusCompleteHandler; \
1822 typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS
{
1823 NDIS30_PROTOCOL_CHARACTERISTICS_S
1824 } NDIS30_PROTOCOL_CHARACTERISTICS
, *PNDIS30_PROTOCOL_CHARACTERISTICS
;
1827 /* Prototypes for NDIS 4.0 protocol characteristics */
1830 (NTAPI
*RECEIVE_PACKET_HANDLER
)(
1831 IN NDIS_HANDLE ProtocolBindingContext
,
1832 IN PNDIS_PACKET Packet
);
1835 (NTAPI
*BIND_HANDLER
)(
1836 OUT PNDIS_STATUS Status
,
1837 IN NDIS_HANDLE BindContext
,
1838 IN PNDIS_STRING DeviceName
,
1839 IN PVOID SystemSpecific1
,
1840 IN PVOID SystemSpecific2
);
1843 (NTAPI
*UNBIND_HANDLER
)(
1844 OUT PNDIS_STATUS Status
,
1845 IN NDIS_HANDLE ProtocolBindingContext
,
1846 IN NDIS_HANDLE UnbindContext
);
1849 (NTAPI
*PNP_EVENT_HANDLER
)(
1850 IN NDIS_HANDLE ProtocolBindingContext
,
1851 IN PNET_PNP_EVENT NetPnPEvent
);
1854 (NTAPI
*UNLOAD_PROTOCOL_HANDLER
)(
1858 /* Protocol characteristics for NDIS 4.0 protocols */
1862 #define NDIS40_PROTOCOL_CHARACTERISTICS_S \
1863 NDIS30_PROTOCOL_CHARACTERISTICS Ndis30Chars; \
1864 RECEIVE_PACKET_HANDLER ReceivePacketHandler; \
1865 BIND_HANDLER BindAdapterHandler; \
1866 UNBIND_HANDLER UnbindAdapterHandler; \
1867 PNP_EVENT_HANDLER PnPEventHandler; \
1868 UNLOAD_PROTOCOL_HANDLER UnloadHandler;
1870 #else /* !__cplusplus */
1872 #define NDIS40_PROTOCOL_CHARACTERISTICS_S \
1873 NDIS30_PROTOCOL_CHARACTERISTICS_S \
1874 RECEIVE_PACKET_HANDLER ReceivePacketHandler; \
1875 BIND_HANDLER BindAdapterHandler; \
1876 UNBIND_HANDLER UnbindAdapterHandler; \
1877 PNP_EVENT_HANDLER PnPEventHandler; \
1878 UNLOAD_PROTOCOL_HANDLER UnloadHandler;
1880 #endif /* __cplusplus */
1882 typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS
{
1883 NDIS40_PROTOCOL_CHARACTERISTICS_S
1884 } NDIS40_PROTOCOL_CHARACTERISTICS
, *PNDIS40_PROTOCOL_CHARACTERISTICS
;
1886 /* Prototypes for NDIS 5.0 protocol characteristics */
1889 (NTAPI
*CO_SEND_COMPLETE_HANDLER
)(
1890 IN NDIS_STATUS Status
,
1891 IN NDIS_HANDLE ProtocolVcContext
,
1892 IN PNDIS_PACKET Packet
);
1895 (NTAPI
*CO_STATUS_HANDLER
)(
1896 IN NDIS_HANDLE ProtocolBindingContext
,
1897 IN NDIS_HANDLE ProtocolVcContext OPTIONAL
,
1898 IN NDIS_STATUS GeneralStatus
,
1899 IN PVOID StatusBuffer
,
1900 IN UINT StatusBufferSize
);
1903 (NTAPI
*CO_RECEIVE_PACKET_HANDLER
)(
1904 IN NDIS_HANDLE ProtocolBindingContext
,
1905 IN NDIS_HANDLE ProtocolVcContext
,
1906 IN PNDIS_PACKET Packet
);
1909 (NTAPI
*CO_AF_REGISTER_NOTIFY_HANDLER
)(
1910 IN NDIS_HANDLE ProtocolBindingContext
,
1911 IN PCO_ADDRESS_FAMILY AddressFamily
);
1913 #ifdef __cplusplus \
1915 #define NDIS50_PROTOCOL_CHARACTERISTICS_S \
1916 NDIS40_PROTOCOL_CHARACTERISTICS Ndis40Chars; \
1917 PVOID ReservedHandlers[4]; \
1918 CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler; \
1919 CO_STATUS_HANDLER CoStatusHandler; \
1920 CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler; \
1921 CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler;
1923 #else /* !__cplusplus */
1925 #define NDIS50_PROTOCOL_CHARACTERISTICS_S \
1926 NDIS40_PROTOCOL_CHARACTERISTICS_S \
1927 PVOID ReservedHandlers[4]; \
1928 CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler; \
1929 CO_STATUS_HANDLER CoStatusHandler; \
1930 CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler; \
1931 CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler;
1933 #endif /* !__cplusplus */
1935 typedef struct _NDIS50_PROTOCOL_CHARACTERISTICS
{
1936 NDIS50_PROTOCOL_CHARACTERISTICS_S
1937 } NDIS50_PROTOCOL_CHARACTERISTICS
, *PNDIS50_PROTOCOL_CHARACTERISTICS
;
1939 #if defined(NDIS50) || defined(NDIS51)
1940 typedef struct _NDIS_PROTOCOL_CHARACTERISTICS
{
1941 NDIS50_PROTOCOL_CHARACTERISTICS_S
1942 } NDIS_PROTOCOL_CHARACTERISTICS
, *PNDIS_PROTOCOL_CHARACTERISTICS
;
1943 #elif defined(NDIS40)
1944 typedef struct _NDIS_PROTOCOL_CHARACTERISTICS
{
1945 NDIS40_PROTOCOL_CHARACTERISTICS_S
1946 } NDIS_PROTOCOL_CHARACTERISTICS
, *PNDIS_PROTOCOL_CHARACTERISTICS
;
1948 typedef struct _NDIS_PROTOCOL_CHARACTERISTICS
{
1949 NDIS30_PROTOCOL_CHARACTERISTICS_S
1950 } NDIS_PROTOCOL_CHARACTERISTICS
, *PNDIS_PROTOCOL_CHARACTERISTICS
;
1953 #define PROTOCOL_RESERVED_SIZE_IN_PACKET (4 * sizeof(PVOID))
1955 /* Prototypes for NDIS_MINIPORT_CHARACTERISTICS */
1958 (NTAPI
*W_CHECK_FOR_HANG_HANDLER
)(
1959 IN NDIS_HANDLE MiniportAdapterContext
);
1962 (NTAPI
*W_DISABLE_INTERRUPT_HANDLER
)(
1963 IN NDIS_HANDLE MiniportAdapterContext
);
1966 (NTAPI
*W_ENABLE_INTERRUPT_HANDLER
)(
1967 IN NDIS_HANDLE MiniportAdapterContext
);
1970 (NTAPI
*W_HALT_HANDLER
)(
1971 IN NDIS_HANDLE MiniportAdapterContext
);
1974 (NTAPI
*W_HANDLE_INTERRUPT_HANDLER
)(
1975 IN NDIS_HANDLE MiniportAdapterContext
);
1978 (NTAPI
*W_INITIALIZE_HANDLER
)(
1979 OUT PNDIS_STATUS OpenErrorStatus
,
1980 OUT PUINT SelectedMediumIndex
,
1981 IN PNDIS_MEDIUM MediumArray
,
1982 IN UINT MediumArraySize
,
1983 IN NDIS_HANDLE MiniportAdapterContext
,
1984 IN NDIS_HANDLE WrapperConfigurationContext
);
1987 (NTAPI
*W_ISR_HANDLER
)(
1988 OUT PBOOLEAN InterruptRecognized
,
1989 OUT PBOOLEAN QueueMiniportHandleInterrupt
,
1990 IN NDIS_HANDLE MiniportAdapterContext
);
1993 (NTAPI
*W_QUERY_INFORMATION_HANDLER
)(
1994 IN NDIS_HANDLE MiniportAdapterContext
,
1996 IN PVOID InformationBuffer
,
1997 IN ULONG InformationBufferLength
,
1998 OUT PULONG BytesWritten
,
1999 OUT PULONG BytesNeeded
);
2002 (NTAPI
*W_RECONFIGURE_HANDLER
)(
2003 OUT PNDIS_STATUS OpenErrorStatus
,
2004 IN NDIS_HANDLE MiniportAdapterContext
,
2005 IN NDIS_HANDLE WrapperConfigurationContext
);
2008 (NTAPI
*W_RESET_HANDLER
)(
2009 OUT PBOOLEAN AddressingReset
,
2010 IN NDIS_HANDLE MiniportAdapterContext
);
2013 (NTAPI
*W_SEND_HANDLER
)(
2014 IN NDIS_HANDLE MiniportAdapterContext
,
2015 IN PNDIS_PACKET Packet
,
2019 (NTAPI
*WM_SEND_HANDLER
)(
2020 IN NDIS_HANDLE MiniportAdapterContext
,
2021 IN NDIS_HANDLE NdisLinkHandle
,
2022 IN PNDIS_WAN_PACKET Packet
);
2025 (NTAPI
*W_SET_INFORMATION_HANDLER
)(
2026 IN NDIS_HANDLE MiniportAdapterContext
,
2028 IN PVOID InformationBuffer
,
2029 IN ULONG InformationBufferLength
,
2030 OUT PULONG BytesRead
,
2031 OUT PULONG BytesNeeded
);
2034 (NTAPI
*W_TRANSFER_DATA_HANDLER
)(
2035 OUT PNDIS_PACKET Packet
,
2036 OUT PUINT BytesTransferred
,
2037 IN NDIS_HANDLE MiniportAdapterContext
,
2038 IN NDIS_HANDLE MiniportReceiveContext
,
2040 IN UINT BytesToTransfer
);
2043 (NTAPI
*WM_TRANSFER_DATA_HANDLER
)(
2047 /* NDIS structures available only to miniport drivers */
2049 #define NDIS30_MINIPORT_CHARACTERISTICS_S \
2050 UCHAR MajorNdisVersion; \
2051 UCHAR MinorNdisVersion; \
2053 W_CHECK_FOR_HANG_HANDLER CheckForHangHandler; \
2054 W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler; \
2055 W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler; \
2056 W_HALT_HANDLER HaltHandler; \
2057 W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler; \
2058 W_INITIALIZE_HANDLER InitializeHandler; \
2059 W_ISR_HANDLER ISRHandler; \
2060 W_QUERY_INFORMATION_HANDLER QueryInformationHandler; \
2061 W_RECONFIGURE_HANDLER ReconfigureHandler; \
2062 W_RESET_HANDLER ResetHandler; \
2063 W_SEND_HANDLER SendHandler; \
2064 W_SET_INFORMATION_HANDLER SetInformationHandler; \
2065 W_TRANSFER_DATA_HANDLER TransferDataHandler;
2067 typedef struct _NDIS30_MINIPORT_CHARACTERISTICS
{
2068 NDIS30_MINIPORT_CHARACTERISTICS_S
2069 } NDIS30_MINIPORT_CHARACTERISTICS
, *PSNDIS30_MINIPORT_CHARACTERISTICS
;
2072 /* Extensions for NDIS 4.0 miniports */
2075 (NTAPI
*W_SEND_PACKETS_HANDLER
)(
2076 IN NDIS_HANDLE MiniportAdapterContext
,
2077 IN PPNDIS_PACKET PacketArray
,
2078 IN UINT NumberOfPackets
);
2081 (NTAPI
*W_RETURN_PACKET_HANDLER
)(
2082 IN NDIS_HANDLE MiniportAdapterContext
,
2083 IN PNDIS_PACKET Packet
);
2086 (NTAPI
*W_ALLOCATE_COMPLETE_HANDLER
)(
2087 IN NDIS_HANDLE MiniportAdapterContext
,
2088 IN PVOID VirtualAddress
,
2089 IN PNDIS_PHYSICAL_ADDRESS PhysicalAddress
,
2095 #define NDIS40_MINIPORT_CHARACTERISTICS_S \
2096 NDIS30_MINIPORT_CHARACTERISTICS Ndis30Chars; \
2097 W_RETURN_PACKET_HANDLER ReturnPacketHandler; \
2098 W_SEND_PACKETS_HANDLER SendPacketsHandler; \
2099 W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler;
2101 #else /* !__cplusplus */
2103 #define NDIS40_MINIPORT_CHARACTERISTICS_S \
2104 NDIS30_MINIPORT_CHARACTERISTICS_S \
2105 W_RETURN_PACKET_HANDLER ReturnPacketHandler; \
2106 W_SEND_PACKETS_HANDLER SendPacketsHandler; \
2107 W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler;
2109 #endif /* !__cplusplus */
2111 typedef struct _NDIS40_MINIPORT_CHARACTERISTICS
{
2112 NDIS40_MINIPORT_CHARACTERISTICS_S
2113 } NDIS40_MINIPORT_CHARACTERISTICS
, *PNDIS40_MINIPORT_CHARACTERISTICS
;
2116 /* Extensions for NDIS 5.0 miniports */
2119 (NTAPI
*W_CO_CREATE_VC_HANDLER
)(
2120 IN NDIS_HANDLE MiniportAdapterContext
,
2121 IN NDIS_HANDLE NdisVcHandle
,
2122 OUT PNDIS_HANDLE MiniportVcContext
);
2125 (NTAPI
*W_CO_DELETE_VC_HANDLER
)(
2126 IN NDIS_HANDLE MiniportVcContext
);
2129 (NTAPI
*W_CO_ACTIVATE_VC_HANDLER
)(
2130 IN NDIS_HANDLE MiniportVcContext
,
2131 IN OUT PCO_CALL_PARAMETERS CallParameters
);
2134 (NTAPI
*W_CO_DEACTIVATE_VC_HANDLER
)(
2135 IN NDIS_HANDLE MiniportVcContext
);
2138 (NTAPI
*W_CO_SEND_PACKETS_HANDLER
)(
2139 IN NDIS_HANDLE MiniportVcContext
,
2140 IN PPNDIS_PACKET PacketArray
,
2141 IN UINT NumberOfPackets
);
2144 (NTAPI
*W_CO_REQUEST_HANDLER
)(
2145 IN NDIS_HANDLE MiniportAdapterContext
,
2146 IN NDIS_HANDLE MiniportVcContext OPTIONAL
,
2147 IN OUT PNDIS_REQUEST NdisRequest
);
2151 #define NDIS50_MINIPORT_CHARACTERISTICS_S \
2152 NDIS40_MINIPORT_CHARACTERISTICS Ndis40Chars; \
2153 W_CO_CREATE_VC_HANDLER CoCreateVcHandler; \
2154 W_CO_DELETE_VC_HANDLER CoDeleteVcHandler; \
2155 W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler; \
2156 W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler; \
2157 W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler; \
2158 W_CO_REQUEST_HANDLER CoRequestHandler;
2160 #else /* !__cplusplus */
2162 #define NDIS50_MINIPORT_CHARACTERISTICS_S \
2163 NDIS40_MINIPORT_CHARACTERISTICS_S \
2164 W_CO_CREATE_VC_HANDLER CoCreateVcHandler; \
2165 W_CO_DELETE_VC_HANDLER CoDeleteVcHandler; \
2166 W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler; \
2167 W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler; \
2168 W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler; \
2169 W_CO_REQUEST_HANDLER CoRequestHandler;
2171 #endif /* !__cplusplus */
2173 typedef struct _NDIS50_MINIPORT_CHARACTERISTICS
{
2174 NDIS50_MINIPORT_CHARACTERISTICS_S
2175 } NDIS50_MINIPORT_CHARACTERISTICS
, *PSNDIS50_MINIPORT_CHARACTERISTICS
;
2178 /* Extensions for NDIS 5.1 miniports */
2181 (NTAPI
*W_CANCEL_SEND_PACKETS_HANDLER
)(
2182 IN NDIS_HANDLE MiniportAdapterContext
,
2186 (NTAPI
*W_PNP_EVENT_NOTIFY_HANDLER
)(
2187 IN NDIS_HANDLE MiniportAdapterContext
,
2188 IN NDIS_DEVICE_PNP_EVENT PnPEvent
,
2189 IN PVOID InformationBuffer
,
2190 IN ULONG InformationBufferLength
);
2193 (NTAPI
*W_MINIPORT_SHUTDOWN_HANDLER
)(
2194 IN PVOID ShutdownContext
);
2198 #define NDIS51_MINIPORT_CHARACTERISTICS_S \
2199 NDIS50_MINIPORT_CHARACTERISTICS Ndis50Chars; \
2200 W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler; \
2201 W_PNP_EVENT_NOTIFY_HANDLER PnPEventNotifyHandler; \
2202 W_MINIPORT_SHUTDOWN_HANDLER AdapterShutdownHandler;
2206 #define NDIS51_MINIPORT_CHARACTERISTICS_S \
2207 NDIS50_MINIPORT_CHARACTERISTICS_S \
2208 W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler; \
2209 W_PNP_EVENT_NOTIFY_HANDLER PnPEventNotifyHandler; \
2210 W_MINIPORT_SHUTDOWN_HANDLER AdapterShutdownHandler;
2214 typedef struct _NDIS51_MINIPORT_CHARACTERISTICS
{
2215 NDIS51_MINIPORT_CHARACTERISTICS_S
2216 } NDIS51_MINIPORT_CHARACTERISTICS
, *PSNDIS51_MINIPORT_CHARACTERISTICS
;
2218 #if defined(NDIS51_MINIPORT)
2219 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
2220 NDIS51_MINIPORT_CHARACTERISTICS_S
2221 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
2222 #elif defined(NDIS50_MINIPORT)
2223 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
2224 NDIS50_MINIPORT_CHARACTERISTICS_S
2225 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
2226 #elif defined(NDIS40_MINIPORT)
2227 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
2228 NDIS40_MINIPORT_CHARACTERISTICS_S
2229 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
2231 typedef struct _NDIS_MINIPORT_CHARACTERISTICS
{
2232 NDIS30_MINIPORT_CHARACTERISTICS_S
2233 } NDIS_MINIPORT_CHARACTERISTICS
, *PNDIS_MINIPORT_CHARACTERISTICS
;
2236 /* Structures available only to full MAC drivers */
2239 (NTAPI
*PNDIS_INTERRUPT_SERVICE
)(
2240 IN PVOID InterruptContext
);
2243 (NTAPI
*PNDIS_DEFERRED_PROCESSING
)(
2244 IN PVOID SystemSpecific1
,
2245 IN PVOID InterruptContext
,
2246 IN PVOID SystemSpecific2
,
2247 IN PVOID SystemSpecific3
);
2249 typedef struct _NDIS_WRAPPER_HANDLE NDIS_WRAPPER_HANDLE
, *PNDIS_WRAPPER_HANDLE
;
2250 typedef struct _NDIS_PROTOCOL_BLOCK NDIS_PROTOCOL_BLOCK
, *PNDIS_PROTOCOL_BLOCK
;
2251 typedef struct _NDIS_OPEN_BLOCK NDIS_OPEN_BLOCK
, *PNDIS_OPEN_BLOCK
;
2252 typedef struct _NDIS_M_DRIVER_BLOCK NDIS_M_DRIVER_BLOCK
, *PNDIS_M_DRIVER_BLOCK
;
2253 typedef struct _NDIS_MINIPORT_BLOCK NDIS_MINIPORT_BLOCK
,*PNDIS_MINIPORT_BLOCK
;
2254 typedef struct _NDIS_OFFLOAD NDIS_OFFLOAD
, *PNDIS_OFFLOAD
;
2255 typedef struct _NDIS_AF_LIST NDIS_AF_LIST
, *PNDIS_AF_LIST
;
2256 typedef struct _X_FILTER ETH_FILTER
, *PETH_FILTER
;
2257 #if NDIS_SUPPORT_NDIS6
2258 typedef USHORT NET_FRAME_TYPE
, *PNET_FRAME_TYPE
;
2261 typedef struct _NDIS_MINIPORT_INTERRUPT
{
2262 PKINTERRUPT InterruptObject
;
2263 KSPIN_LOCK DpcCountLock
;
2264 PVOID MiniportIdField
;
2265 W_ISR_HANDLER MiniportIsr
;
2266 W_HANDLE_INTERRUPT_HANDLER MiniportDpc
;
2268 PNDIS_MINIPORT_BLOCK Miniport
;
2271 KEVENT DpcsCompletedEvent
;
2272 BOOLEAN SharedInterrupt
;
2273 BOOLEAN IsrRequested
;
2274 } NDIS_MINIPORT_INTERRUPT
, *PNDIS_MINIPORT_INTERRUPT
;
2276 typedef struct _NDIS_MINIPORT_TIMER
{
2279 PNDIS_TIMER_FUNCTION MiniportTimerFunction
;
2280 PVOID MiniportTimerContext
;
2281 PNDIS_MINIPORT_BLOCK Miniport
;
2282 struct _NDIS_MINIPORT_TIMER
*NextDeferredTimer
;
2283 } NDIS_MINIPORT_TIMER
, *PNDIS_MINIPORT_TIMER
;
2285 typedef struct _NDIS_INTERRUPT
{
2286 PKINTERRUPT InterruptObject
;
2287 KSPIN_LOCK DpcCountLock
;
2288 PNDIS_INTERRUPT_SERVICE MacIsr
;
2289 PNDIS_DEFERRED_PROCESSING MacDpc
;
2291 PVOID InterruptContext
;
2294 KEVENT DpcsCompletedEvent
;
2295 } NDIS_INTERRUPT
, *PNDIS_INTERRUPT
;
2298 typedef enum _NDIS_WORK_ITEM_TYPE
{
2299 NdisWorkItemRequest
,
2301 NdisWorkItemReturnPackets
,
2302 NdisWorkItemResetRequested
,
2303 NdisWorkItemResetInProgress
,
2305 NdisWorkItemSendLoopback
,
2306 NdisWorkItemMiniportCallback
,
2308 } NDIS_WORK_ITEM_TYPE
, *PNDIS_WORK_ITEM_TYPE
;
2310 #define NUMBER_OF_WORK_ITEM_TYPES NdisMaxWorkItems
2311 #define NUMBER_OF_SINGLE_WORK_ITEMS 6
2313 typedef struct _NDIS_MINIPORT_WORK_ITEM
{
2314 SINGLE_LIST_ENTRY Link
;
2315 NDIS_WORK_ITEM_TYPE WorkItemType
;
2316 PVOID WorkItemContext
;
2317 } NDIS_MINIPORT_WORK_ITEM
, *PNDIS_MINIPORT_WORK_ITEM
;
2319 struct _NDIS_WORK_ITEM
;
2320 typedef VOID (*NDIS_PROC
)(struct _NDIS_WORK_ITEM
*, PVOID
);
2322 typedef struct _NDIS_WORK_ITEM
{
2325 UCHAR WrapperReserved
[8*sizeof(PVOID
)];
2326 } NDIS_WORK_ITEM
, *PNDIS_WORK_ITEM
;
2328 typedef struct _NDIS_BIND_PATHS
{
2330 NDIS_STRING Paths
[1];
2331 } NDIS_BIND_PATHS
, *PNDIS_BIND_PATHS
;
2335 (NTAPI
*ETH_RCV_COMPLETE_HANDLER
)(
2336 IN PETH_FILTER Filter
);
2339 (NTAPI
*ETH_RCV_INDICATE_HANDLER
)(
2340 IN PETH_FILTER Filter
,
2341 IN NDIS_HANDLE MacReceiveContext
,
2343 IN PVOID HeaderBuffer
,
2344 IN UINT HeaderBufferSize
,
2345 IN PVOID LookaheadBuffer
,
2346 IN UINT LookaheadBufferSize
,
2347 IN UINT PacketSize
);
2350 (NTAPI
*FDDI_RCV_COMPLETE_HANDLER
)(
2351 IN PFDDI_FILTER Filter
);
2354 (NTAPI
*FDDI_RCV_INDICATE_HANDLER
)(
2355 IN PFDDI_FILTER Filter
,
2356 IN NDIS_HANDLE MacReceiveContext
,
2358 IN UINT AddressLength
,
2359 IN PVOID HeaderBuffer
,
2360 IN UINT HeaderBufferSize
,
2361 IN PVOID LookaheadBuffer
,
2362 IN UINT LookaheadBufferSize
,
2363 IN UINT PacketSize
);
2366 (NTAPI
*FILTER_PACKET_INDICATION_HANDLER
)(
2367 IN NDIS_HANDLE Miniport
,
2368 IN PPNDIS_PACKET PacketArray
,
2369 IN UINT NumberOfPackets
);
2372 (NTAPI
*TR_RCV_COMPLETE_HANDLER
)(
2373 IN PTR_FILTER Filter
);
2376 (NTAPI
*TR_RCV_INDICATE_HANDLER
)(
2377 IN PTR_FILTER Filter
,
2378 IN NDIS_HANDLE MacReceiveContext
,
2379 IN PVOID HeaderBuffer
,
2380 IN UINT HeaderBufferSize
,
2381 IN PVOID LookaheadBuffer
,
2382 IN UINT LookaheadBufferSize
,
2383 IN UINT PacketSize
);
2386 (NTAPI
*WAN_RCV_COMPLETE_HANDLER
)(
2387 IN NDIS_HANDLE MiniportAdapterHandle
,
2388 IN NDIS_HANDLE NdisLinkContext
);
2391 (NTAPI
*WAN_RCV_HANDLER
)(
2392 OUT PNDIS_STATUS Status
,
2393 IN NDIS_HANDLE MiniportAdapterHandle
,
2394 IN NDIS_HANDLE NdisLinkContext
,
2396 IN ULONG PacketSize
);
2399 (FASTCALL
*NDIS_M_DEQUEUE_WORK_ITEM
)(
2400 IN PNDIS_MINIPORT_BLOCK Miniport
,
2401 IN NDIS_WORK_ITEM_TYPE WorkItemType
,
2402 OUT PVOID
*WorkItemContext
);
2405 (FASTCALL
*NDIS_M_QUEUE_NEW_WORK_ITEM
)(
2406 IN PNDIS_MINIPORT_BLOCK Miniport
,
2407 IN NDIS_WORK_ITEM_TYPE WorkItemType
,
2408 IN PVOID WorkItemContext
);
2411 (FASTCALL
*NDIS_M_QUEUE_WORK_ITEM
)(
2412 IN PNDIS_MINIPORT_BLOCK Miniport
,
2413 IN NDIS_WORK_ITEM_TYPE WorkItemType
,
2414 IN PVOID WorkItemContext
);
2417 (NTAPI
*NDIS_M_REQ_COMPLETE_HANDLER
)(
2418 IN NDIS_HANDLE MiniportAdapterHandle
,
2419 IN NDIS_STATUS Status
);
2422 (NTAPI
*NDIS_M_RESET_COMPLETE_HANDLER
)(
2423 IN NDIS_HANDLE MiniportAdapterHandle
,
2424 IN NDIS_STATUS Status
,
2425 IN BOOLEAN AddressingReset
);
2428 (NTAPI
*NDIS_M_SEND_COMPLETE_HANDLER
)(
2429 IN NDIS_HANDLE MiniportAdapterHandle
,
2430 IN PNDIS_PACKET Packet
,
2431 IN NDIS_STATUS Status
);
2434 (NTAPI
*NDIS_M_SEND_RESOURCES_HANDLER
)(
2435 IN NDIS_HANDLE MiniportAdapterHandle
);
2438 (FASTCALL
*NDIS_M_START_SENDS
)(
2439 IN PNDIS_MINIPORT_BLOCK Miniport
);
2442 (NTAPI
*NDIS_M_STATUS_HANDLER
)(
2443 IN NDIS_HANDLE MiniportHandle
,
2444 IN NDIS_STATUS GeneralStatus
,
2445 IN PVOID StatusBuffer
,
2446 IN UINT StatusBufferSize
);
2449 (NTAPI
*NDIS_M_STS_COMPLETE_HANDLER
)(
2450 IN NDIS_HANDLE MiniportAdapterHandle
);
2453 (NTAPI
*NDIS_M_TD_COMPLETE_HANDLER
)(
2454 IN NDIS_HANDLE MiniportAdapterHandle
,
2455 IN PNDIS_PACKET Packet
,
2456 IN NDIS_STATUS Status
,
2457 IN UINT BytesTransferred
);
2459 typedef VOID (NTAPI
*NDIS_WM_SEND_COMPLETE_HANDLER
)(
2460 IN NDIS_HANDLE MiniportAdapterHandle
,
2462 IN NDIS_STATUS Status
);
2467 #define ARC_SEND_BUFFERS 8
2468 #define ARC_HEADER_SIZE 4
2470 typedef struct _NDIS_ARC_BUF
{
2471 NDIS_HANDLE ArcnetBufferPool
;
2472 PUCHAR ArcnetLookaheadBuffer
;
2474 ARC_BUFFER_LIST ArcnetBuffers
[ARC_SEND_BUFFERS
];
2475 } NDIS_ARC_BUF
, *PNDIS_ARC_BUF
;
2479 typedef struct _NDIS_LOG
{
2480 PNDIS_MINIPORT_BLOCK Miniport
;
2488 } NDIS_LOG
, *PNDIS_LOG
;
2491 #define FILTERDBS_ARCNET_S \
2494 #define FILTERDBS_ARCNET_S \
2496 #endif /* !ARCNET */
2498 #define FILTERDBS_S \
2499 _ANONYMOUS_UNION union { \
2500 PETH_FILTER EthDB; \
2501 PNULL_FILTER NullDB; \
2504 PFDDI_FILTER FddiDB; \
2507 typedef struct _FILTERDBS
{
2509 } FILTERDBS
, *PFILTERDBS
;
2512 struct _NDIS_MINIPORT_BLOCK
{
2514 PNDIS_MINIPORT_BLOCK NextMiniport
;
2515 PNDIS_M_DRIVER_BLOCK DriverHandle
;
2516 NDIS_HANDLE MiniportAdapterContext
;
2517 UNICODE_STRING MiniportName
;
2518 PNDIS_BIND_PATHS BindPaths
;
2519 NDIS_HANDLE OpenQueue
;
2521 NDIS_HANDLE DeviceContext
;
2525 UCHAR AssignedProcessor
;
2527 PNDIS_REQUEST MediaRequest
;
2528 PNDIS_MINIPORT_INTERRUPT Interrupt
;
2531 LIST_ENTRY PacketList
;
2532 PNDIS_PACKET FirstPendingPacket
;
2533 PNDIS_PACKET ReturnPacketsQueue
;
2534 ULONG RequestBuffer
;
2535 PVOID SetMCastBuffer
;
2536 PNDIS_MINIPORT_BLOCK PrimaryMiniport
;
2537 PVOID WrapperContext
;
2538 PVOID BusDataContext
;
2539 ULONG PnPCapabilities
;
2540 PCM_RESOURCE_LIST Resources
;
2541 NDIS_TIMER WakeUpDpcTimer
;
2542 UNICODE_STRING BaseName
;
2543 UNICODE_STRING SymbolicLinkName
;
2544 ULONG CheckForHangSeconds
;
2546 USHORT CFHangCurrentTick
;
2547 NDIS_STATUS ResetStatus
;
2548 NDIS_HANDLE ResetOpen
;
2550 FILTER_PACKET_INDICATION_HANDLER PacketIndicateHandler
;
2551 NDIS_M_SEND_COMPLETE_HANDLER SendCompleteHandler
;
2552 NDIS_M_SEND_RESOURCES_HANDLER SendResourcesHandler
;
2553 NDIS_M_RESET_COMPLETE_HANDLER ResetCompleteHandler
;
2554 NDIS_MEDIUM MediaType
;
2556 NDIS_INTERFACE_TYPE BusType
;
2557 NDIS_INTERFACE_TYPE AdapterType
;
2558 PDEVICE_OBJECT DeviceObject
;
2559 PDEVICE_OBJECT PhysicalDeviceObject
;
2560 PDEVICE_OBJECT NextDeviceObject
;
2561 PMAP_REGISTER_ENTRY MapRegisters
;
2562 PNDIS_AF_LIST CallMgrAfList
;
2563 PVOID MiniportThread
;
2565 USHORT SetInfoBufLen
;
2566 USHORT MaxSendPackets
;
2567 NDIS_STATUS FakeStatus
;
2569 PUNICODE_STRING pAdapterInstanceName
;
2570 PNDIS_MINIPORT_TIMER TimerQueue
;
2572 PNDIS_REQUEST PendingRequest
;
2573 UINT MaximumLongAddresses
;
2574 UINT MaximumShortAddresses
;
2575 UINT CurrentLookahead
;
2576 UINT MaximumLookahead
;
2577 W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler
;
2578 W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler
;
2579 W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler
;
2580 W_SEND_PACKETS_HANDLER SendPacketsHandler
;
2581 NDIS_M_START_SENDS DeferredSendHandler
;
2582 ETH_RCV_INDICATE_HANDLER EthRxIndicateHandler
;
2583 TR_RCV_INDICATE_HANDLER TrRxIndicateHandler
;
2584 FDDI_RCV_INDICATE_HANDLER FddiRxIndicateHandler
;
2585 ETH_RCV_COMPLETE_HANDLER EthRxCompleteHandler
;
2586 TR_RCV_COMPLETE_HANDLER TrRxCompleteHandler
;
2587 FDDI_RCV_COMPLETE_HANDLER FddiRxCompleteHandler
;
2588 NDIS_M_STATUS_HANDLER StatusHandler
;
2589 NDIS_M_STS_COMPLETE_HANDLER StatusCompleteHandler
;
2590 NDIS_M_TD_COMPLETE_HANDLER TDCompleteHandler
;
2591 NDIS_M_REQ_COMPLETE_HANDLER QueryCompleteHandler
;
2592 NDIS_M_REQ_COMPLETE_HANDLER SetCompleteHandler
;
2593 NDIS_WM_SEND_COMPLETE_HANDLER WanSendCompleteHandler
;
2594 WAN_RCV_HANDLER WanRcvHandler
;
2595 WAN_RCV_COMPLETE_HANDLER WanRcvCompleteHandler
;
2596 #if defined(NDIS_WRAPPER)
2597 PNDIS_MINIPORT_BLOCK NextGlobalMiniport
;
2598 SINGLE_LIST_ENTRY WorkQueue
[NUMBER_OF_WORK_ITEM_TYPES
];
2599 SINGLE_LIST_ENTRY SingleWorkItems
[NUMBER_OF_SINGLE_WORK_ITEMS
];
2602 UCHAR ArcnetAddress
;
2604 _ANONYMOUS_UNION
union {
2606 PNDIS_ARC_BUF ArcBuf
;
2612 PCM_RESOURCE_LIST AllocatedResources
;
2613 PCM_RESOURCE_LIST AllocatedResourcesTranslated
;
2614 SINGLE_LIST_ENTRY PatternList
;
2615 NDIS_PNP_CAPABILITIES PMCapabilities
;
2616 DEVICE_CAPABILITIES DeviceCaps
;
2618 DEVICE_POWER_STATE CurrentDevicePowerState
;
2620 SYSTEM_POWER_STATE WaitWakeSystemState
;
2621 LARGE_INTEGER VcIndex
;
2622 KSPIN_LOCK VcCountLock
;
2623 LIST_ENTRY WmiEnabledVcs
;
2624 PNDIS_GUID pNdisGuidMap
;
2625 PNDIS_GUID pCustomGuidMap
;
2627 USHORT cNdisGuidMap
;
2628 USHORT cCustomGuidMap
;
2629 USHORT CurrentMapRegister
;
2630 PKEVENT AllocationEvent
;
2631 USHORT BaseMapRegistersNeeded
;
2632 USHORT SGMapRegistersNeeded
;
2633 ULONG MaximumPhysicalMapping
;
2634 NDIS_TIMER MediaDisconnectTimer
;
2635 USHORT MediaDisconnectTimeOut
;
2636 USHORT InstanceNumber
;
2637 NDIS_EVENT OpenReadyEvent
;
2638 NDIS_PNP_DEVICE_STATE PnPDeviceState
;
2639 NDIS_PNP_DEVICE_STATE OldPnPDeviceState
;
2640 PGET_SET_DEVICE_DATA SetBusData
;
2641 PGET_SET_DEVICE_DATA GetBusData
;
2645 NDIS_STATS NdisStats
;
2649 PNDIS_PACKET IndicatedPacket
[MAXIMUM_PROCESSORS
];
2650 PKEVENT RemoveReadyEvent
;
2651 PKEVENT AllOpensClosedEvent
;
2652 PKEVENT AllRequestsCompletedEvent
;
2654 NDIS_MINIPORT_WORK_ITEM WorkItemBuffer
[NUMBER_OF_SINGLE_WORK_ITEMS
];
2655 PDMA_ADAPTER SystemAdapterObject
;
2656 ULONG DriverVerifyFlags
;
2658 USHORT InternalResetCount
;
2659 USHORT MiniportResetCount
;
2660 USHORT MediaSenseConnectCount
;
2661 USHORT MediaSenseDisconnectCount
;
2662 PNDIS_PACKET
*xPackets
;
2663 ULONG UserModeOpenReferences
;
2664 _ANONYMOUS_UNION
union {
2665 PVOID SavedSendHandler
;
2666 PVOID SavedWanSendHandler
;
2668 PVOID SavedSendPacketsHandler
;
2669 PVOID SavedCancelSendPacketsHandler
;
2670 W_SEND_PACKETS_HANDLER WSendPacketsHandler
;
2671 ULONG MiniportAttributes
;
2672 PDMA_ADAPTER SavedSystemAdapterObject
;
2674 USHORT CFHangXTicks
;
2676 ULONG IndicatedPacketsCount
;
2677 ULONG PhysicalMediumType
;
2678 PNDIS_REQUEST LastRequest
;
2679 LONG DmaAdapterRefCount
;
2685 KSPIN_LOCK TimerQueueLock
;
2686 PKEVENT ResetCompletedEvent
;
2687 PKEVENT QueuedBindingCompletedEvent
;
2688 PKEVENT DmaResourcesReleasedEvent
;
2689 FILTER_PACKET_INDICATION_HANDLER SavedPacketIndicateHandler
;
2690 ULONG RegisteredInterrupts
;
2691 PNPAGED_LOOKASIDE_LIST SGListLookasideList
;
2692 ULONG ScatterGatherListSize
;
2696 #if NDIS_LEGACY_DRIVER
2699 (NTAPI
*WAN_SEND_HANDLER
)(
2700 IN NDIS_HANDLE MacBindingHandle
,
2701 IN NDIS_HANDLE LinkHandle
,
2705 (NTAPI
*SEND_PACKETS_HANDLER
)(
2706 IN NDIS_HANDLE MiniportAdapterContext
,
2707 IN PPNDIS_PACKET PacketArray
,
2708 IN UINT NumberOfPackets
);
2711 (NTAPI
*SEND_HANDLER
)(
2712 IN NDIS_HANDLE NdisBindingHandle
,
2713 IN PNDIS_PACKET Packet
);
2716 (NTAPI
*TRANSFER_DATA_HANDLER
)(
2717 IN NDIS_HANDLE NdisBindingHandle
,
2718 IN NDIS_HANDLE MacReceiveContext
,
2720 IN UINT BytesToTransfer
,
2721 OUT PNDIS_PACKET Packet
,
2722 OUT PUINT BytesTransferred
);
2725 (NTAPI
*RESET_HANDLER
)(
2726 IN NDIS_HANDLE NdisBindingHandle
);
2729 (NTAPI
*REQUEST_HANDLER
)(
2730 IN NDIS_HANDLE NdisBindingHandle
,
2731 IN PNDIS_REQUEST NdisRequest
);
2733 #endif /* NDIS_LEGACY_DRIVER */
2735 #if defined(NDIS_WRAPPER)
2736 #define NDIS_COMMON_OPEN_BLOCK_WRAPPER_S \
2739 KSPIN_LOCK SpinLock; \
2740 NDIS_HANDLE FilterHandle; \
2741 ULONG ProtocolOptions; \
2742 USHORT CurrentLookahead; \
2743 USHORT ConnectDampTicks; \
2744 USHORT DisconnectDampTicks; \
2745 W_SEND_HANDLER WSendHandler; \
2746 W_TRANSFER_DATA_HANDLER WTransferDataHandler; \
2747 W_SEND_PACKETS_HANDLER WSendPacketsHandler; \
2748 W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler; \
2749 ULONG WakeUpEnable; \
2750 PKEVENT CloseCompleteEvent; \
2752 ULONG AfReferences; \
2753 PNDIS_OPEN_BLOCK NextGlobalOpen;
2755 #define NDIS_COMMON_OPEN_BLOCK_WRAPPER_S
2758 #define NDIS_COMMON_OPEN_BLOCK_S \
2760 NDIS_HANDLE BindingHandle; \
2761 PNDIS_MINIPORT_BLOCK MiniportHandle; \
2762 PNDIS_PROTOCOL_BLOCK ProtocolHandle; \
2763 NDIS_HANDLE ProtocolBindingContext; \
2764 PNDIS_OPEN_BLOCK MiniportNextOpen; \
2765 PNDIS_OPEN_BLOCK ProtocolNextOpen; \
2766 NDIS_HANDLE MiniportAdapterContext; \
2767 BOOLEAN Reserved1; \
2768 BOOLEAN Reserved2; \
2769 BOOLEAN Reserved3; \
2770 BOOLEAN Reserved4; \
2771 PNDIS_STRING BindDeviceName; \
2772 KSPIN_LOCK Reserved5; \
2773 PNDIS_STRING RootDeviceName; \
2774 _ANONYMOUS_UNION union { \
2775 SEND_HANDLER SendHandler; \
2776 WAN_SEND_HANDLER WanSendHandler; \
2778 TRANSFER_DATA_HANDLER TransferDataHandler; \
2779 SEND_COMPLETE_HANDLER SendCompleteHandler; \
2780 TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; \
2781 RECEIVE_HANDLER ReceiveHandler; \
2782 RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; \
2783 WAN_RECEIVE_HANDLER WanReceiveHandler; \
2784 REQUEST_COMPLETE_HANDLER RequestCompleteHandler; \
2785 RECEIVE_PACKET_HANDLER ReceivePacketHandler; \
2786 SEND_PACKETS_HANDLER SendPacketsHandler; \
2787 RESET_HANDLER ResetHandler; \
2788 REQUEST_HANDLER RequestHandler; \
2789 RESET_COMPLETE_HANDLER ResetCompleteHandler; \
2790 STATUS_HANDLER StatusHandler; \
2791 STATUS_COMPLETE_HANDLER StatusCompleteHandler; \
2792 NDIS_COMMON_OPEN_BLOCK_WRAPPER_S
2794 typedef struct _NDIS_COMMON_OPEN_BLOCK
{
2795 NDIS_COMMON_OPEN_BLOCK_S
2796 } NDIS_COMMON_OPEN_BLOCK
;
2798 struct _NDIS_OPEN_BLOCK
2801 NDIS_COMMON_OPEN_BLOCK NdisCommonOpenBlock
;
2803 NDIS_COMMON_OPEN_BLOCK_S
2810 NdisInitializeTimer(
2812 PNDIS_TIMER_FUNCTION TimerFunction
,
2813 PVOID FunctionContext
);
2820 PBOOLEAN TimerCancelled
);
2827 UINT MillisecondsToDelay
);
2832 NdisSetPeriodicTimer(
2833 PNDIS_TIMER NdisTimer
,
2834 UINT MillisecondsPeriod
);
2840 PNDIS_TIMER NdisTimer
,
2841 UINT MillisecondsToDelay
,
2842 PVOID FunctionContext
);
2847 NdisGetRoutineAddress(
2848 PNDIS_STRING NdisRoutineName
);
2853 NdisGetVersion(VOID
);
2855 #if NDIS_LEGACY_DRIVER
2861 OUT PNDIS_STATUS Status
,
2862 OUT PNDIS_BUFFER
*Buffer
,
2863 IN NDIS_HANDLE PoolHandle OPTIONAL
,
2864 IN PVOID VirtualAddress
,
2870 NdisAllocateBufferPool(
2871 OUT PNDIS_STATUS Status
,
2872 OUT PNDIS_HANDLE PoolHandle
,
2873 IN UINT NumberOfDescriptors
);
2879 IN NDIS_HANDLE PoolHandle
);
2886 IN PNDIS_BUFFER Buffer);
2888 #define NdisFreeBuffer IoFreeMdl
2893 NdisAllocatePacketPool(
2894 OUT PNDIS_STATUS Status
,
2895 OUT PNDIS_HANDLE PoolHandle
,
2896 IN UINT NumberOfDescriptors
,
2897 IN UINT ProtocolReservedLength
);
2902 NdisAllocatePacketPoolEx(
2903 OUT PNDIS_STATUS Status
,
2904 OUT PNDIS_HANDLE PoolHandle
,
2905 IN UINT NumberOfDescriptors
,
2906 IN UINT NumberOfOverflowDescriptors
,
2907 IN UINT ProtocolReservedLength
);
2912 NdisSetPacketPoolProtocolId(
2913 IN NDIS_HANDLE PacketPoolHandle
,
2914 IN UINT ProtocolId
);
2919 NdisPacketPoolUsage(
2920 IN NDIS_HANDLE PoolHandle
);
2926 IN UINT ProtocolReservedSize
);
2931 NdisGetPoolFromPacket(
2932 IN PNDIS_PACKET Packet
);
2937 NdisIMGetCurrentPacketStack(
2938 IN PNDIS_PACKET Packet
,
2939 OUT BOOLEAN
* StacksRemaining
);
2945 IN NDIS_HANDLE PoolHandle
);
2951 IN PNDIS_PACKET Packet
);
2957 IN PNDIS_PACKET Packet
);
2962 NdisDprFreePacketNonInterlocked(
2963 IN PNDIS_PACKET Packet
);
2969 OUT PNDIS_STATUS Status
,
2970 OUT PNDIS_PACKET
*Packet
,
2971 IN NDIS_HANDLE PoolHandle
);
2976 NdisDprAllocatePacket(
2977 OUT PNDIS_STATUS Status
,
2978 OUT PNDIS_PACKET
*Packet
,
2979 IN NDIS_HANDLE PoolHandle
);
2984 NdisDprAllocatePacketNonInterlocked(
2985 OUT PNDIS_STATUS Status
,
2986 OUT PNDIS_PACKET
*Packet
,
2987 IN NDIS_HANDLE PoolHandle
);
2991 * NdisReinitializePacket(
2992 * IN OUT PNDIS_PACKET Packet);
2994 #define NdisReinitializePacket(Packet) { \
2995 (Packet)->Private.Head = (PNDIS_BUFFER)NULL; \
2996 (Packet)->Private.ValidCounts = FALSE; \
3004 IN PNDIS_BUFFER Buffer,
3005 OUT PVOID *VirtualAddress OPTIONAL,
3008 #define NdisQueryBuffer(_Buffer, _VirtualAddress, _Length) { \
3009 if (ARGUMENT_PRESENT(_VirtualAddress)) { \
3010 *(PVOID *)(_VirtualAddress) = MmGetSystemAddressForMdl(_Buffer); \
3012 *(_Length) = MmGetMdlByteCount(_Buffer); \
3018 NdisGetFirstBufferFromPacket(
3019 IN PNDIS_PACKET _Packet
,
3020 OUT PNDIS_BUFFER
*_FirstBuffer
,
3021 OUT PVOID
*_FirstBufferVA
,
3022 OUT PUINT _FirstBufferLength
,
3023 OUT PUINT _TotalBufferLength
);
3027 * NdisGetFirstBufferFromPacketSafe(
3028 * IN PNDIS_PACKET _Packet,
3029 * OUT PNDIS_BUFFER * _FirstBuffer,
3030 * OUT PVOID * _FirstBufferVA,
3031 * OUT PUINT _FirstBufferLength,
3032 * OUT PUINT _TotalBufferLength),
3033 * IN MM_PAGE_PRIORITY _Priority)
3035 #define NdisGetFirstBufferFromPacketSafe(_Packet, \
3038 _FirstBufferLength, \
3039 _TotalBufferLength, \
3042 PNDIS_BUFFER _Buffer; \
3044 _Buffer = (_Packet)->Private.Head; \
3045 *(_FirstBuffer) = _Buffer; \
3046 if (_Buffer != NULL) { \
3047 *(_FirstBufferVA) = MmGetSystemAddressForMdlSafe(_Buffer, _Priority); \
3048 *(_FirstBufferLength) = MmGetMdlByteCount(_Buffer); \
3049 _Buffer = _Buffer->Next; \
3050 *(_TotalBufferLength) = *(_FirstBufferLength); \
3051 while (_Buffer != NULL) { \
3052 *(_TotalBufferLength) += MmGetMdlByteCount(_Buffer); \
3053 _Buffer = _Buffer->Next; \
3057 *(_FirstBufferVA) = 0; \
3058 *(_FirstBufferLength) = 0; \
3059 *(_TotalBufferLength) = 0; \
3065 * NdisRecalculatePacketCounts(
3066 * IN OUT PNDIS_PACKET Packet);
3068 #define NdisRecalculatePacketCounts(Packet) { \
3069 PNDIS_BUFFER _Buffer = (Packet)->Private.Head; \
3070 if (_Buffer != NULL) { \
3071 while (_Buffer->Next != NULL) { \
3072 _Buffer = _Buffer->Next; \
3074 (Packet)->Private.Tail = _Buffer; \
3076 (Packet)->Private.ValidCounts = FALSE; \
3081 * NdisChainBufferAtFront(
3082 * IN OUT PNDIS_PACKET Packet,
3083 * IN OUT PNDIS_BUFFER Buffer)
3085 #define NdisChainBufferAtFront(Packet, \
3088 PNDIS_BUFFER _NdisBuffer = (Buffer); \
3090 while (_NdisBuffer->Next != NULL) \
3091 _NdisBuffer = _NdisBuffer->Next; \
3093 if ((Packet)->Private.Head == NULL) \
3094 (Packet)->Private.Tail = _NdisBuffer; \
3096 _NdisBuffer->Next = (Packet)->Private.Head; \
3097 (Packet)->Private.Head = (Buffer); \
3098 (Packet)->Private.ValidCounts = FALSE; \
3103 * NdisChainBufferAtBack(
3104 * IN OUT PNDIS_PACKET Packet,
3105 * IN OUT PNDIS_BUFFER Buffer)
3107 #define NdisChainBufferAtBack(Packet, \
3110 PNDIS_BUFFER NdisBuffer = (Buffer); \
3112 while (NdisBuffer->Next != NULL) \
3113 NdisBuffer = NdisBuffer->Next; \
3115 NdisBuffer->Next = NULL; \
3117 if ((Packet)->Private.Head != NULL) \
3118 (Packet)->Private.Tail->Next = (Buffer); \
3120 (Packet)->Private.Head = (Buffer); \
3122 (Packet)->Private.Tail = NdisBuffer; \
3123 (Packet)->Private.ValidCounts = FALSE; \
3129 NdisUnchainBufferAtFront(
3130 IN OUT PNDIS_PACKET Packet
,
3131 OUT PNDIS_BUFFER
*Buffer
);
3136 NdisUnchainBufferAtBack(
3137 IN OUT PNDIS_PACKET Packet
,
3138 OUT PNDIS_BUFFER
*Buffer
);
3143 NdisCopyFromPacketToPacket(
3144 IN PNDIS_PACKET Destination
,
3145 IN UINT DestinationOffset
,
3146 IN UINT BytesToCopy
,
3147 IN PNDIS_PACKET Source
,
3148 IN UINT SourceOffset
,
3149 OUT PUINT BytesCopied
);
3154 NdisCopyFromPacketToPacketSafe(
3155 IN PNDIS_PACKET Destination
,
3156 IN UINT DestinationOffset
,
3157 IN UINT BytesToCopy
,
3158 IN PNDIS_PACKET Source
,
3159 IN UINT SourceOffset
,
3160 OUT PUINT BytesCopied
,
3161 IN MM_PAGE_PRIORITY Priority
);
3167 OUT PVOID
*VirtualAddress
,
3169 IN UINT MemoryFlags
,
3170 IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress
);
3172 #define NdisInitializeWorkItem(_WI_, _R_, _C_) { \
3173 (_WI_)->Context = _C_; \
3174 (_WI_)->Routine = _R_; \
3180 NdisScheduleWorkItem(
3181 IN PNDIS_WORK_ITEM WorkItem
);
3186 NdisSetPacketStatus(
3187 IN PNDIS_PACKET Packet
,
3188 IN NDIS_STATUS Status
,
3189 IN NDIS_HANDLE Handle
,
3192 #endif /* NDIS_LEGACY_DRIVER */
3198 OUT PNDIS_STATUS Status
,
3199 OUT PNDIS_HANDLE FileHandle
,
3200 OUT PUINT FileLength
,
3201 IN PNDIS_STRING FileName
,
3202 IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress
);
3208 IN NDIS_HANDLE FileHandle
);
3214 OUT PNDIS_STATUS Status
,
3215 OUT PVOID
*MappedBuffer
,
3216 IN NDIS_HANDLE FileHandle
);
3222 IN NDIS_HANDLE FileHandle
);
3227 NdisGetSharedDataAlignment(VOID
);
3229 #define NdisFlushBuffer(Buffer,WriteToDevice) \
3230 KeFlushIoBuffers((Buffer),!(WriteToDevice), TRUE)
3236 OUT PNDIS_STATUS Status
,
3237 OUT PNDIS_BUFFER
*Buffer
,
3238 IN NDIS_HANDLE PoolHandle
,
3239 IN PVOID MemoryDescriptor
,
3245 * NdisCopyLookaheadData(
3246 * IN PVOID Destination,
3249 * IN ULONG ReceiveFlags);
3252 #if defined(_M_IX86) || defined(_M_AMD64)
3253 #define NdisCopyLookaheadData(Destination, Source, Length, MacOptions) \
3254 RtlCopyMemory(Destination, Source, Length)
3256 #define NdisCopyLookaheadData(Destination, Source, Length, MacOptions) \
3258 if ((MacOptions) & NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA) \
3260 RtlCopyMemory(_Destination, _Source, _Length); \
3264 PUCHAR _Src = (PUCHAR)(Source); \
3265 PUCHAR _Dest = (PUCHAR)(Destination); \
3266 PUCHAR _End = _Dest + (Length); \
3267 while (_Dest < _End) \
3268 *_Dest++ = *_Src++; \
3277 IN PNDIS_PACKET
*PacketsToReturn
,
3278 IN UINT NumberOfPackets
);
3284 NdisAdjustBufferLength(
3285 IN PNDIS_BUFFER Buffer,
3288 #define NdisAdjustBufferLength(Buffer, Length) \
3289 (((Buffer)->ByteCount) = (Length))
3291 #if NDIS_SUPPORT_NDIS6
3292 #define NdisAdjustMdlLength(_Mdl, _Length) \
3293 (((_Mdl)->ByteCount) = (_Length))
3300 IN PNDIS_BUFFER Buffer
);
3305 NdisBufferVirtualAddress(
3306 IN PNDIS_BUFFER Buffer
);
3311 NDIS_BUFFER_TO_SPAN_PAGES(
3312 IN PNDIS_BUFFER Buffer
);
3318 NdisGetBufferPhysicalArraySize(
3319 IN PNDIS_BUFFER Buffer,
3320 OUT PUINT ArraySize);
3322 #define NdisGetBufferPhysicalArraySize(Buffer, ArraySize) \
3323 (*(ArraySize) = NDIS_BUFFER_TO_SPAN_PAGES(Buffer))
3329 NdisQueryBufferOffset(
3330 IN PNDIS_BUFFER Buffer,
3334 #define NdisQueryBufferOffset(_Buffer, _Offset, _Length) { \
3335 *(_Offset) = MmGetMdlByteOffset(_Buffer); \
3336 *(_Length) = MmGetMdlByteCount(_Buffer); \
3341 * NDIS_BUFFER_LINKAGE(
3342 * IN PNDIS_BUFFER Buffer);
3344 #define NDIS_BUFFER_LINKAGE(Buffer)(Buffer)->Next;
3348 * NdisGetNextBuffer(
3349 * IN PNDIS_BUFFER CurrentBuffer,
3350 * OUT PNDIS_BUFFER * NextBuffer)
3352 #define NdisGetNextBuffer(CurrentBuffer, \
3355 *(NextBuffer) = (CurrentBuffer)->Next; \
3358 #if NDIS_LEGACY_DRIVER
3360 #define NDIS_PACKET_FIRST_NDIS_BUFFER(_Packet) ((_Packet)->Private.Head)
3361 #define NDIS_PACKET_LAST_NDIS_BUFFER(_Packet) ((_Packet)->Private.Tail)
3362 #define NDIS_PACKET_VALID_COUNTS(_Packet) ((_Packet)->Private.ValidCounts)
3366 * NdisGetPacketFlags(
3367 * IN PNDIS_PACKET Packet);
3369 #define NdisGetPacketFlags(Packet)(Packet)->Private.Flags;
3373 * NDIS_GET_PACKET_PROTOCOL_TYPE(
3374 * IN PNDIS_PACKET Packet);
3376 #define NDIS_GET_PACKET_PROTOCOL_TYPE(_Packet) \
3377 ((_Packet)->Private.Flags & NDIS_PROTOCOL_ID_MASK)
3380 * PNDIS_PACKET_OOB_DATA
3381 * NDIS_OOB_DATA_FROM_PACKET(
3382 * IN PNDIS_PACKET Packet);
3384 #define NDIS_OOB_DATA_FROM_PACKET(_Packet) \
3385 (PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3386 (_Packet)->Private.NdisPacketOobOffset)
3390 * NDIS_GET_PACKET_HEADER_SIZE(
3391 * IN PNDIS_PACKET Packet);
3393 #define NDIS_GET_PACKET_HEADER_SIZE(_Packet) \
3394 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3395 (_Packet)->Private.NdisPacketOobOffset))->HeaderSize
3399 * NDIS_GET_PACKET_STATUS(
3400 * IN PNDIS_PACKET Packet);
3402 #define NDIS_GET_PACKET_STATUS(_Packet) \
3403 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3404 (_Packet)->Private.NdisPacketOobOffset))->Status
3408 * NDIS_GET_PACKET_TIME_TO_SEND(
3409 * IN PNDIS_PACKET Packet);
3411 #define NDIS_GET_PACKET_TIME_TO_SEND(_Packet) \
3412 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3413 (_Packet)->Private.NdisPacketOobOffset))->TimeToSend
3417 * NDIS_GET_PACKET_TIME_SENT(
3418 * IN PNDIS_PACKET Packet);
3420 #define NDIS_GET_PACKET_TIME_SENT(_Packet) \
3421 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3422 (_Packet)->Private.NdisPacketOobOffset))->TimeSent
3426 * NDIS_GET_PACKET_TIME_RECEIVED(
3427 * IN PNDIS_PACKET Packet);
3429 #define NDIS_GET_PACKET_TIME_RECEIVED(_Packet) \
3430 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3431 (_Packet)->Private.NdisPacketOobOffset))->TimeReceived
3435 * NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(
3436 * IN PNDIS_PACKET Packet,
3437 * IN PPVOID pMediaSpecificInfo,
3438 * IN PUINT pSizeMediaSpecificInfo);
3440 #define NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(_Packet, \
3441 _pMediaSpecificInfo, \
3442 _pSizeMediaSpecificInfo) \
3444 if (!((_Packet)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS) || \
3445 !((_Packet)->Private.NdisPacketFlags & fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO)) \
3447 *(_pMediaSpecificInfo) = NULL; \
3448 *(_pSizeMediaSpecificInfo) = 0; \
3452 *(_pMediaSpecificInfo) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3453 (_Packet)->Private.NdisPacketOobOffset))->MediaSpecificInformation; \
3454 *(_pSizeMediaSpecificInfo) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3455 (_Packet)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo; \
3461 * NDIS_SET_PACKET_HEADER_SIZE(
3462 * IN PNDIS_PACKET Packet,
3465 #define NDIS_SET_PACKET_HEADER_SIZE(_Packet, _HdrSize) \
3466 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3467 (_Packet)->Private.NdisPacketOobOffset))->HeaderSize = (_HdrSize)
3471 * NDIS_SET_PACKET_STATUS(
3472 * IN PNDIS_PACKET Packet,
3473 * IN NDIS_STATUS Status);
3475 #define NDIS_SET_PACKET_STATUS(_Packet, _Status) \
3476 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3477 (_Packet)->Private.NdisPacketOobOffset))->Status = (_Status)
3481 * NDIS_SET_PACKET_TIME_TO_SEND(
3482 * IN PNDIS_PACKET Packet,
3483 * IN ULONGLONG TimeToSend);
3485 #define NDIS_SET_PACKET_TIME_TO_SEND(_Packet, _TimeToSend) \
3486 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3487 (_Packet)->Private.NdisPacketOobOffset))->TimeToSend = (_TimeToSend)
3491 * NDIS_SET_PACKET_TIME_SENT(
3492 * IN PNDIS_PACKET Packet,
3493 * IN ULONGLONG TimeSent);
3495 #define NDIS_SET_PACKET_TIME_SENT(_Packet, _TimeSent) \
3496 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3497 (_Packet)->Private.NdisPacketOobOffset))->TimeSent = (_TimeSent)
3501 * NDIS_SET_PACKET_TIME_RECEIVED(
3502 * IN PNDIS_PACKET Packet,
3503 * IN ULONGLONG TimeReceived);
3505 #define NDIS_SET_PACKET_TIME_RECEIVED(_Packet, _TimeReceived) \
3506 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3507 (_Packet)->Private.NdisPacketOobOffset))->TimeReceived = (_TimeReceived)
3511 * NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(
3512 * IN PNDIS_PACKET Packet,
3513 * IN PVOID MediaSpecificInfo,
3514 * IN UINT SizeMediaSpecificInfo);
3516 #define NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(_Packet, \
3517 _MediaSpecificInfo, \
3518 _SizeMediaSpecificInfo) \
3520 if ((_Packet)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS) \
3522 (_Packet)->Private.NdisPacketFlags |= fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO; \
3523 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3524 (_Packet)->Private.NdisPacketOobOffset))->MediaSpecificInformation = \
3525 (_MediaSpecificInfo); \
3526 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
3527 (_Packet)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo = \
3528 (_SizeMediaSpecificInfo); \
3534 * NdisSetPacketFlags(
3535 * IN PNDIS_PACKET Packet,
3538 #define NdisSetPacketFlags(Packet, Flags) (Packet)->Private.Flags |= (Flags)
3542 * NdisClearPacketFlags(
3543 * IN PNDIS_PACKET Packet,
3546 #define NdisClearPacketFlags(Packet, Flags) (Packet)->Private.Flags &= ~(Flags)
3551 * IN PNDIS_PACKET Packet,
3552 * OUT PUINT PhysicalBufferCount OPTIONAL,
3553 * OUT PUINT BufferCount OPTIONAL,
3554 * OUT PNDIS_BUFFER *FirstBuffer OPTIONAL,
3555 * OUT PUINT TotalPacketLength OPTIONAL);
3560 IN PNDIS_PACKET Packet
,
3561 OUT PUINT PhysicalBufferCount OPTIONAL
,
3562 OUT PUINT BufferCount OPTIONAL
,
3563 OUT PNDIS_BUFFER
*FirstBuffer OPTIONAL
,
3564 OUT PUINT TotalPacketLength OPTIONAL
)
3567 *FirstBuffer
= Packet
->Private
.Head
;
3568 if (TotalPacketLength
|| BufferCount
|| PhysicalBufferCount
) {
3569 if (!Packet
->Private
.ValidCounts
) {
3572 PNDIS_BUFFER NdisBuffer
;
3573 UINT PhysicalBufferCount
= 0;
3574 UINT TotalPacketLength
= 0;
3577 for (NdisBuffer
= Packet
->Private
.Head
;
3578 NdisBuffer
!= (PNDIS_BUFFER
)NULL
;
3579 NdisBuffer
= NdisBuffer
->Next
) {
3580 PhysicalBufferCount
+= NDIS_BUFFER_TO_SPAN_PAGES(NdisBuffer
);
3581 NdisQueryBufferOffset(NdisBuffer
, &Offset
, &PacketLength
);
3582 TotalPacketLength
+= PacketLength
;
3585 Packet
->Private
.PhysicalCount
= PhysicalBufferCount
;
3586 Packet
->Private
.TotalLength
= TotalPacketLength
;
3587 Packet
->Private
.Count
= Count
;
3588 Packet
->Private
.ValidCounts
= TRUE
;
3591 if (PhysicalBufferCount
)
3592 *PhysicalBufferCount
= Packet
->Private
.PhysicalCount
;
3595 *BufferCount
= Packet
->Private
.Count
;
3597 if (TotalPacketLength
)
3598 *TotalPacketLength
= Packet
->Private
.TotalLength
;
3604 * NdisQueryPacketLength(
3605 * IN PNDIS_PACKET Packet,
3606 * OUT PUINT PhysicalBufferCount OPTIONAL,
3607 * OUT PUINT BufferCount OPTIONAL,
3608 * OUT PNDIS_BUFFER *FirstBuffer OPTIONAL,
3609 * OUT PUINT TotalPacketLength OPTIONAL);
3611 #define NdisQueryPacketLength(_Packet, \
3612 _TotalPacketLength) \
3614 if (!(_Packet)->Private.ValidCounts) { \
3615 NdisQueryPacket(_Packet, NULL, NULL, NULL, _TotalPacketLength); \
3617 else *(_TotalPacketLength) = (_Packet)->Private.TotalLength; \
3620 #endif /* NDIS_LEGACY_DRIVER */
3625 * IN PNDIS_PACKET Packet,
3628 #define NdisSetSendFlags(_Packet,_Flags)(_Packet)->Private.Flags = (_Flags)
3630 /* Memory management routines */
3636 NdisCreateLookaheadBufferFromSharedMemory(
3637 IN PVOID pSharedMemory,
3638 IN UINT LookaheadLength,
3639 OUT PVOID *pLookaheadBuffer);
3641 #define NdisCreateLookaheadBufferFromSharedMemory(_S, _L, _B) ((*(_B)) = (_S))
3646 NdisDestroyLookaheadBufferFromSharedMemory(
3647 IN PVOID pLookaheadBuffer
);
3649 #if defined(_M_IX86) || defined(_M_AMD64) || defined(_M_ARM) || defined(_M_PPC)
3653 * NdisMoveMappedMemory(
3654 * OUT PVOID Destination,
3658 #define NdisMoveMappedMemory(Destination, Source, Length) \
3659 RtlCopyMemory(Destination, Source, Length)
3663 * NdisZeroMappedMemory(
3664 * IN PVOID Destination,
3667 #define NdisZeroMappedMemory(Destination, Length) \
3668 RtlZeroMemory(Destination, Length)
3672 #define NdisMoveMappedMemory(Destination, Source, Length) \
3674 PUCHAR _Dest = Destination, _Src = Source, _End = _Dest + Length; \
3675 while (_Dest < _End) \
3676 *_Dest++ = _Src++; \
3679 #define NdisZeroMappedMemory(Destination, Length) \
3681 PUCHAR _Dest = Destination, _End = _Dest + Length; \
3682 while (_Dest < _End) \
3686 #endif /* _M_IX86 or _M_AMD64 */
3690 * NdisMoveFromMappedMemory(
3691 * OUT PVOID Destination,
3695 #define NdisMoveFromMappedMemory(Destination, Source, Length) \
3696 NdisMoveMappedMemory(Destination, Source, Length)
3700 * NdisMoveToMappedMemory(
3701 * OUT PVOID Destination,
3705 #define NdisMoveToMappedMemory(Destination, Source, Length) \
3706 NdisMoveMappedMemory(Destination, Source, Length)
3710 * NdisMUpdateSharedMemory(
3711 * IN NDIS_HANDLE MiniportAdapterHandle,
3713 * IN PVOID VirtualAddress,
3714 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
3716 #define NdisMUpdateSharedMemory(_H, _L, _V, _P) \
3717 NdisUpdateSharedMemory(_H, _L, _V, _P)
3723 IN PVOID VirtualAddress
,
3725 IN UINT MemoryFlags
);
3730 NdisFreeMemoryWithTag(
3731 IN PVOID VirtualAddress
,
3737 NdisImmediateReadSharedMemory(
3738 IN NDIS_HANDLE WrapperConfigurationContext
,
3739 IN ULONG SharedMemoryAddress
,
3746 NdisImmediateWriteSharedMemory(
3747 IN NDIS_HANDLE WrapperConfigurationContext
,
3748 IN ULONG SharedMemoryAddress
,
3755 NdisMAllocateSharedMemory(
3756 IN NDIS_HANDLE MiniportAdapterHandle
,
3759 OUT PVOID
*VirtualAddress
,
3760 OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress
);
3765 NdisMAllocateSharedMemoryAsync(
3766 IN NDIS_HANDLE MiniportAdapterHandle
,
3773 #define NdisUpdateSharedMemory(NdisAdapterHandle, \
3783 NdisUpdateSharedMemory(
3784 IN NDIS_HANDLE NdisAdapterHandle
,
3786 IN PVOID VirtualAddress
,
3787 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
3789 #endif /* defined(NDIS50) */
3793 * NdisGetPhysicalAddressHigh(
3794 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
3796 #define NdisGetPhysicalAddressHigh(PhysicalAddress) \
3797 ((PhysicalAddress).HighPart)
3801 * NdisSetPhysicalAddressHigh(
3802 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
3805 #define NdisSetPhysicalAddressHigh(PhysicalAddress, Value) \
3806 ((PhysicalAddress).HighPart) = (Value)
3810 * NdisGetPhysicalAddressLow(
3811 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
3813 #define NdisGetPhysicalAddressLow(PhysicalAddress) \
3814 ((PhysicalAddress).LowPart)
3819 * NdisSetPhysicalAddressLow(
3820 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
3823 #define NdisSetPhysicalAddressLow(PhysicalAddress, Value) \
3824 ((PhysicalAddress).LowPart) = (Value)
3828 * NDIS_PHYSICAL_ADDRESS_CONST(
3832 #define NDIS_PHYSICAL_ADDRESS_CONST(Low, High) \
3833 { {(ULONG)(Low), (LONG)(High)} }
3838 * IN CONST VOID *Source1,
3839 * IN CONST VOID *Source2,
3842 #define NdisEqualMemory(Source1, Source2, Length) \
3843 RtlEqualMemory(Source1, Source2, Length)
3848 * IN PVOID Destination,
3852 #define NdisFillMemory(Destination, Length, Fill) \
3853 RtlFillMemory(Destination, Length, Fill)
3858 * OUT PVOID Destination,
3862 #define NdisMoveMemory(Destination, Source, Length) \
3863 RtlCopyMemory(Destination, Source, Length)
3868 * NdisRetrieveUlong(
3869 * IN PULONG DestinationAddress,
3870 * IN PULONG SourceAddress);
3872 #define NdisRetrieveUlong(DestinationAddress, SourceAddress) \
3873 RtlRetrieveUlong(DestinationAddress, SourceAddress)
3879 * IN PULONG DestinationAddress,
3882 #define NdisStoreUlong(DestinationAddress, Value) \
3883 RtlStoreUlong(DestinationAddress, Value)
3889 * IN PVOID Destination,
3892 #define NdisZeroMemory(Destination, Length) \
3893 RtlZeroMemory(Destination, Length)
3896 (NTAPI
*NDIS_BLOCK_INITIALIZER
) (
3898 IN SIZE_T NumberOfBytes
3901 /* Configuration routines */
3903 #if NDIS_LEGACY_DRIVER
3907 NdisOpenConfiguration(
3908 OUT PNDIS_STATUS Status
,
3909 OUT PNDIS_HANDLE ConfigurationHandle
,
3910 IN NDIS_HANDLE WrapperConfigurationContext
);
3916 NdisReadNetworkAddress(
3917 OUT PNDIS_STATUS Status
,
3918 OUT PVOID
*NetworkAddress
,
3919 OUT PUINT NetworkAddressLength
,
3920 IN NDIS_HANDLE ConfigurationHandle
);
3925 NdisReadEisaSlotInformation(
3926 OUT PNDIS_STATUS Status
,
3927 IN NDIS_HANDLE WrapperConfigurationContext
,
3928 OUT PUINT SlotNumber
,
3929 OUT PNDIS_EISA_FUNCTION_INFORMATION EisaData
);
3934 NdisReadEisaSlotInformationEx(
3935 OUT PNDIS_STATUS Status
,
3936 IN NDIS_HANDLE WrapperConfigurationContext
,
3937 OUT PUINT SlotNumber
,
3938 OUT PNDIS_EISA_FUNCTION_INFORMATION
*EisaData
,
3939 OUT PUINT NumberOfFunctions
);
3941 #if NDIS_LEGACY_MINIPORT
3946 NdisReadPciSlotInformation(
3947 IN NDIS_HANDLE NdisAdapterHandle
,
3948 IN ULONG SlotNumber
,
3956 NdisWritePciSlotInformation(
3957 IN NDIS_HANDLE NdisAdapterHandle
,
3958 IN ULONG SlotNumber
,
3966 NdisReadPcmciaAttributeMemory(
3967 IN NDIS_HANDLE NdisAdapterHandle
,
3975 NdisWritePcmciaAttributeMemory(
3976 IN NDIS_HANDLE NdisAdapterHandle
,
3981 #endif /* NDIS_LEGACY_MINIPORT */
3983 /* String management routines */
3989 NdisAnsiStringToUnicodeString(
3990 IN OUT PNDIS_STRING DestinationString,
3991 IN PNDIS_ANSI_STRING SourceString);
3993 #define NdisAnsiStringToUnicodeString(_us, _as) RtlAnsiStringToUnicodeString(_us, _as, FALSE)
3998 * IN PNDIS_STRING String1,
3999 * IN PNDIS_STRING String2,
4000 * IN BOOLEAN CaseInsensitive);
4002 #define NdisEqualString RtlEqualString
4004 #define NdisEqualUnicodeString RtlEqualUnicodeString
4011 IN OUT PNDIS_ANSI_STRING DestinationString,
4012 IN PCSTR SourceString);
4014 #define NdisInitAnsiString RtlInitString
4019 NdisInitUnicodeString(
4020 IN OUT PNDIS_STRING DestinationString
,
4021 IN PCWSTR SourceString
);
4027 NdisUnicodeStringToAnsiString(
4028 IN OUT PNDIS_ANSI_STRING DestinationString,
4029 IN PNDIS_STRING SourceString);
4031 #define NdisUnicodeStringToAnsiString(_as, _us) RtlUnicodeStringToAnsiString(_as, _us, FALSE)
4033 #define NdisFreeString(_s) NdisFreeMemory((_s).Buffer, (_s).MaximumLength, 0)
4034 #define NdisPrintString(_s) DbgPrint("%ls", (_s).Buffer)
4036 /* Spin lock reoutines */
4042 NdisAllocateSpinLock(
4043 IN PNDIS_SPIN_LOCK SpinLock);
4045 #define NdisAllocateSpinLock(_SpinLock) KeInitializeSpinLock(&(_SpinLock)->SpinLock)
4052 IN PNDIS_SPIN_LOCK SpinLock);
4054 #define NdisFreeSpinLock(_SpinLock)
4060 NdisAcquireSpinLock(
4061 IN PNDIS_SPIN_LOCK SpinLock);
4063 #define NdisAcquireSpinLock(_SpinLock) KeAcquireSpinLock(&(_SpinLock)->SpinLock, &(_SpinLock)->OldIrql)
4069 NdisReleaseSpinLock(
4070 IN PNDIS_SPIN_LOCK SpinLock);
4072 #define NdisReleaseSpinLock(_SpinLock) KeReleaseSpinLock(&(_SpinLock)->SpinLock,(_SpinLock)->OldIrql)
4078 NdisDprAcquireSpinLock(
4079 IN PNDIS_SPIN_LOCK SpinLock);
4081 #define NdisDprAcquireSpinLock(_SpinLock) KeAcquireSpinLockAtDpcLevel(&(_SpinLock)->SpinLock)
4087 NdisDprReleaseSpinLock(
4088 IN PNDIS_SPIN_LOCK SpinLock);
4090 #define NdisDprReleaseSpinLock(_SpinLock) KeReleaseSpinLockFromDpcLevel(&(_SpinLock)->SpinLock)
4096 * NdisRawReadPortBufferUchar(
4098 * OUT PUCHAR Buffer,
4101 #define NdisRawReadPortBufferUchar(Port, Buffer, Length) \
4102 READ_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length))
4106 * NdisRawReadPortBufferUlong(
4108 * OUT PULONG Buffer,
4111 #define NdisRawReadPortBufferUlong(Port, Buffer, Length) \
4112 READ_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length))
4116 * NdisRawReadPortBufferUshort(
4118 * OUT PUSHORT Buffer,
4121 #define NdisRawReadPortBufferUshort(Port, Buffer, Length) \
4122 READ_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length))
4126 * NdisRawReadPortUchar(
4130 #define NdisRawReadPortUchar(Port, Data) \
4131 *(Data) = READ_PORT_UCHAR((PUCHAR)(Port))
4135 * NdisRawReadPortUlong(
4139 #define NdisRawReadPortUlong(Port, Data) \
4140 *(Data) = READ_PORT_ULONG((PULONG)(Port))
4144 * NdisRawReadPortUshort(
4146 * OUT PUSHORT Data);
4148 #define NdisRawReadPortUshort(Port, Data) \
4149 *(Data) = READ_PORT_USHORT((PUSHORT)(Port))
4153 * NdisRawWritePortBufferUchar(
4158 #define NdisRawWritePortBufferUchar(Port, Buffer, Length) \
4159 WRITE_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length))
4163 * NdisRawWritePortBufferUlong(
4168 #define NdisRawWritePortBufferUlong(Port, Buffer, Length) \
4169 WRITE_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length))
4173 * NdisRawWritePortBufferUshort(
4175 * IN PUSHORT Buffer,
4178 #define NdisRawWritePortBufferUshort(Port, Buffer, Length) \
4179 WRITE_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length))
4183 * NdisRawWritePortUchar(
4187 #define NdisRawWritePortUchar(Port, Data) \
4188 WRITE_PORT_UCHAR((PUCHAR)(Port), (UCHAR)(Data))
4192 * NdisRawWritePortUlong(
4196 #define NdisRawWritePortUlong(Port, Data) \
4197 WRITE_PORT_ULONG((PULONG)(Port), (ULONG)(Data))
4201 * NdisRawWritePortUshort(
4205 #define NdisRawWritePortUshort(Port, Data) \
4206 WRITE_PORT_USHORT((PUSHORT)(Port), (USHORT)(Data))
4211 * NdisReadRegisterUchar(
4212 * IN PUCHAR Register,
4215 #define NdisReadRegisterUchar(Register, Data) \
4216 *(Data) = *(Register)
4220 * NdisReadRegisterUlong(
4221 * IN PULONG Register,
4224 #define NdisReadRegisterUlong(Register, Data) \
4225 *(Data) = *(Register)
4229 * NdisReadRegisterUshort(
4230 * IN PUSHORT Register,
4231 * OUT PUSHORT Data);
4233 #define NdisReadRegisterUshort(Register, Data) \
4234 *(Data) = *(Register)
4238 * NdisReadRegisterUchar(
4239 * IN PUCHAR Register,
4242 #define NdisWriteRegisterUchar(Register, Data) \
4243 WRITE_REGISTER_UCHAR((Register), (Data))
4247 * NdisReadRegisterUlong(
4248 * IN PULONG Register,
4251 #define NdisWriteRegisterUlong(Register, Data) \
4252 WRITE_REGISTER_ULONG((Register), (Data))
4256 * NdisReadRegisterUshort(
4257 * IN PUSHORT Register,
4260 #define NdisWriteRegisterUshort(Register, Data) \
4261 WRITE_REGISTER_USHORT((Register), (Data))
4268 * NdisInitializeListHead(
4269 * IN PLIST_ENTRY ListHead);
4271 #define NdisInitializeListHead InitializeListHead
4275 * NdisInterlockedInsertHeadList(
4276 * IN PLIST_ENTRY ListHead,
4277 * IN PLIST_ENTRY ListEntry,
4278 * IN PNDIS_SPIN_LOCK SpinLock);
4280 #define NdisInterlockedInsertHeadList(_ListHead, _ListEntry, _SpinLock) \
4281 ExInterlockedInsertHeadList(_ListHead, _ListEntry, &(_SpinLock)->SpinLock)
4285 * NdisInterlockedInsertTailList(
4286 * IN PLIST_ENTRY ListHead,
4287 * IN PLIST_ENTRY ListEntry,
4288 * IN PNDIS_SPIN_LOCK SpinLock);
4290 #define NdisInterlockedInsertTailList(_ListHead, _ListEntry, _SpinLock) \
4291 ExInterlockedInsertTailList(_ListHead, _ListEntry, &(_SpinLock)->SpinLock)
4295 * NdisInterlockedRemoveHeadList(
4296 * IN PLIST_ENTRY ListHead,
4297 * IN PNDIS_SPIN_LOCK SpinLock);
4299 #define NdisInterlockedRemoveHeadList(_ListHead, _SpinLock) \
4300 ExInterlockedRemoveHeadList(_ListHead, &(_SpinLock)->SpinLock)
4304 * NdisInitializeSListHead(
4305 * IN PSLIST_HEADER SListHead);
4307 #define NdisInitializeSListHead(SListHead) ExInitializeSListHead(SListHead)
4310 * USHORT NdisQueryDepthSList(
4311 * IN PSLIST_HEADER SListHead);
4313 #define NdisQueryDepthSList(SListHead) ExQueryDepthSList(SListHead)
4315 #define NdisInterlockedPushEntryList(ListHead, ListEntry, Lock) \
4316 ExInterlockedPushEntryList(ListHead, ListEntry, &(Lock)->SpinLock)
4318 #define NdisInterlockedPopEntryList(ListHead, Lock) \
4319 ExInterlockedPopEntryList(ListHead, &(Lock)->SpinLock)
4321 /* Non-paged lookaside lists */
4323 #define NdisInitializeNPagedLookasideList(_L, _AR, _FR, _Fl, _S, _T, _D) \
4324 ExInitializeNPagedLookasideList(_L, _AR, _FR, _Fl, _S, _T, _D)
4325 #define NdisDeleteNPagedLookasideList(_L) ExDeleteNPagedLookasideList(_L)
4326 #define NdisAllocateFromNPagedLookasideList(_L) ExAllocateFromNPagedLookasideList(_L)
4327 #define NdisFreeToNPagedLookasideList(_L, _E) ExFreeToNPagedLookasideList(_L, _E)
4329 /* Interlocked routines */
4333 * NdisInterlockedDecrement(
4336 #define NdisInterlockedDecrement(Addend) InterlockedDecrement(Addend)
4340 * NdisInterlockedIncrement(
4343 #define NdisInterlockedIncrement(Addend) InterlockedIncrement(Addend)
4347 * NdisInterlockedAddUlong(
4349 * IN ULONG Increment,
4350 * IN PNDIS_SPIN_LOCK SpinLock);
4352 #define NdisInterlockedAddUlong(_Addend, _Increment, _SpinLock) \
4353 ExInterlockedAddUlong(_Addend, _Increment, &(_SpinLock)->SpinLock)
4355 /* Miscellaneous routines */
4360 NdisCloseConfiguration(
4361 IN NDIS_HANDLE ConfigurationHandle
);
4366 NdisReadConfiguration(
4367 OUT PNDIS_STATUS Status
,
4368 OUT PNDIS_CONFIGURATION_PARAMETER
*ParameterValue
,
4369 IN NDIS_HANDLE ConfigurationHandle
,
4370 IN PNDIS_STRING Keyword
,
4371 IN NDIS_PARAMETER_TYPE ParameterType
);
4376 NdisWriteConfiguration(
4377 OUT PNDIS_STATUS Status
,
4378 IN NDIS_HANDLE WrapperConfigurationContext
,
4379 IN PNDIS_STRING Keyword
,
4380 IN PNDIS_CONFIGURATION_PARAMETER ParameterValue
);
4385 NdisWriteErrorLogEntry(
4386 IN NDIS_HANDLE NdisAdapterHandle
,
4387 IN NDIS_ERROR_CODE ErrorCode
,
4388 IN ULONG NumberOfErrorValues
,
4394 NdisInitializeString(
4395 OUT PNDIS_STRING Destination
,
4400 * NdisStallExecution(
4401 * IN UINT MicrosecondsToStall)
4403 #define NdisStallExecution KeStallExecutionProcessor
4409 NdisGetCurrentSystemTime(
4410 IN PLARGE_INTEGER pSystemTime);
4412 #define NdisGetCurrentSystemTime KeQuerySystemTime
4414 #if NDIS_SUPPORT_60_COMPATIBLE_API
4418 NdisSystemProcessorCount(VOID
);
4424 NdisGetCurrentProcessorCpuUsage(
4425 OUT PULONG pCpuUsage
);
4427 /* NDIS helper macros */
4431 * NDIS_INIT_FUNCTION(FunctionName)
4433 #define NDIS_INIT_FUNCTION(FunctionName) \
4434 alloc_text(init, FunctionName)
4438 * NDIS_PAGABLE_FUNCTION(FunctionName)
4440 #define NDIS_PAGEABLE_FUNCTION(FunctionName) \
4441 alloc_text(page, FunctionName)
4443 #define NDIS_PAGABLE_FUNCTION NDIS_PAGEABLE_FUNCTION
4446 /* NDIS 4.0 extensions */
4451 NdisMFreeSharedMemory(
4452 IN NDIS_HANDLE MiniportAdapterHandle
,
4455 IN PVOID VirtualAddress
,
4456 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
4461 NdisMWanIndicateReceive(
4462 OUT PNDIS_STATUS Status
,
4463 IN NDIS_HANDLE MiniportAdapterHandle
,
4464 IN NDIS_HANDLE NdisLinkContext
,
4465 IN PUCHAR PacketBuffer
,
4466 IN UINT PacketSize
);
4471 NdisMWanIndicateReceiveComplete(
4472 IN NDIS_HANDLE MiniportAdapterHandle
);
4477 NdisMWanSendComplete(
4478 IN NDIS_HANDLE MiniportAdapterHandle
,
4479 IN PNDIS_WAN_PACKET Packet
,
4480 IN NDIS_STATUS Status
);
4485 NdisPciAssignResources(
4486 IN NDIS_HANDLE NdisMacHandle
,
4487 IN NDIS_HANDLE NdisWrapperHandle
,
4488 IN NDIS_HANDLE WrapperConfigurationContext
,
4489 IN ULONG SlotNumber
,
4490 OUT PNDIS_RESOURCE_LIST
*AssignedResources
);
4493 /* NDIS 5.0 extensions */
4498 NdisAllocateMemoryWithTag(
4499 OUT PVOID
*VirtualAddress
,
4506 NdisCompletePnPEvent(
4507 IN NDIS_STATUS Status
,
4508 IN NDIS_HANDLE NdisBindingHandle
,
4509 IN PNET_PNP_EVENT NetPnPEvent
);
4514 NdisGetCurrentProcessorCounts(
4515 OUT PULONG pIdleCount
,
4516 OUT PULONG pKernelAndUser
,
4522 NdisGetDriverHandle(
4523 IN PNDIS_HANDLE NdisBindingHandle
,
4524 OUT PNDIS_HANDLE NdisDriverHandle
);
4529 NdisGetReceivedPacket(
4530 IN PNDIS_HANDLE NdisBindingHandle
,
4531 IN PNDIS_HANDLE MacContext
);
4533 #if NDIS_LEGACY_DRIVER
4537 NdisGetSystemUpTime(
4538 OUT PULONG pSystemUpTime
);
4541 #if NDIS_SUPPORT_60_COMPATIBLE_API
4546 NdisAcquireReadWriteLock(
4547 IN OUT PNDIS_RW_LOCK Lock
,
4549 OUT PLOCK_STATE LockState
);
4554 NdisInitializeReadWriteLock(
4555 OUT PNDIS_RW_LOCK Lock
);
4560 NdisReleaseReadWriteLock(
4561 IN OUT PNDIS_RW_LOCK Lock
,
4562 IN PLOCK_STATE LockState
);
4564 #if NDIS_SUPPORT_NDIS6
4569 NdisDprAcquireReadWriteLock(
4570 IN PNDIS_RW_LOCK Lock
,
4572 IN PLOCK_STATE LockState
);
4577 NdisDprReleaseReadWriteLock(
4578 IN PNDIS_RW_LOCK Lock
,
4579 IN PLOCK_STATE LockState
);
4581 #endif /* NDIS_SUPPORT_NDIS6 */
4583 #endif /* NDIS_SUPPORT_60_COMPATIBLE_API */
4588 NdisMDeregisterDevice(
4589 IN NDIS_HANDLE NdisDeviceHandle
);
4594 NdisMGetDeviceProperty(
4595 IN NDIS_HANDLE MiniportAdapterHandle
,
4596 IN OUT PDEVICE_OBJECT
*PhysicalDeviceObject OPTIONAL
,
4597 IN OUT PDEVICE_OBJECT
*FunctionalDeviceObject OPTIONAL
,
4598 IN OUT PDEVICE_OBJECT
*NextDeviceObject OPTIONAL
,
4599 IN OUT PCM_RESOURCE_LIST
*AllocatedResources OPTIONAL
,
4600 IN OUT PCM_RESOURCE_LIST
*AllocatedResourcesTranslated OPTIONAL
);
4605 NdisMInitializeScatterGatherDma(
4606 IN NDIS_HANDLE MiniportAdapterHandle
,
4607 IN BOOLEAN Dma64BitAddresses
,
4608 IN ULONG MaximumPhysicalMapping
);
4613 NdisMPromoteMiniport(
4614 IN NDIS_HANDLE MiniportAdapterHandle
);
4619 NdisMQueryAdapterInstanceName(
4620 OUT PNDIS_STRING AdapterInstanceName
,
4621 IN NDIS_HANDLE MiniportAdapterHandle
);
4626 NdisMRegisterDevice(
4627 IN NDIS_HANDLE NdisWrapperHandle
,
4628 IN PNDIS_STRING DeviceName
,
4629 IN PNDIS_STRING SymbolicName
,
4630 IN PDRIVER_DISPATCH MajorFunctions
[],
4631 OUT PDEVICE_OBJECT
*pDeviceObject
,
4632 OUT NDIS_HANDLE
*NdisDeviceHandle
);
4637 NdisMRegisterUnloadHandler(
4638 IN NDIS_HANDLE NdisWrapperHandle
,
4639 IN PDRIVER_UNLOAD UnloadHandler
);
4644 NdisMRemoveMiniport(
4645 IN NDIS_HANDLE MiniportAdapterHandle
);
4650 NdisMSetMiniportSecondary(
4651 IN NDIS_HANDLE MiniportAdapterHandle
,
4652 IN NDIS_HANDLE PrimaryMiniportAdapterHandle
);
4657 NdisOpenConfigurationKeyByIndex(
4658 OUT PNDIS_STATUS Status
,
4659 IN NDIS_HANDLE ConfigurationHandle
,
4661 OUT PNDIS_STRING KeyName
,
4662 OUT PNDIS_HANDLE KeyHandle
);
4667 NdisOpenConfigurationKeyByName(
4668 OUT PNDIS_STATUS Status
,
4669 IN NDIS_HANDLE ConfigurationHandle
,
4670 IN PNDIS_STRING SubKeyName
,
4671 OUT PNDIS_HANDLE SubKeyHandle
);
4676 NdisQueryAdapterInstanceName(
4677 OUT PNDIS_STRING AdapterInstanceName
,
4678 IN NDIS_HANDLE NdisBindingHandle
);
4683 NdisWriteEventLogEntry(
4685 IN NDIS_STATUS EventCode
,
4686 IN ULONG UniqueEventValue
,
4687 IN USHORT NumStrings
,
4688 IN PVOID StringsList OPTIONAL
,
4690 IN PVOID Data OPTIONAL
);
4692 /* Connectionless services */
4698 IN NDIS_HANDLE NdisVcHandle
,
4699 IN NDIS_HANDLE ProtocolPartyContext
,
4700 IN OUT PCO_CALL_PARAMETERS CallParameters
,
4701 OUT PNDIS_HANDLE NdisPartyHandle
);
4706 NdisClCloseAddressFamily(
4707 IN NDIS_HANDLE NdisAfHandle
);
4713 IN NDIS_HANDLE NdisVcHandle
,
4714 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
4715 IN PVOID Buffer OPTIONAL
,
4721 NdisClDeregisterSap(
4722 IN NDIS_HANDLE NdisSapHandle
);
4728 IN NDIS_HANDLE NdisPartyHandle
,
4729 IN PVOID Buffer OPTIONAL
,
4735 NdisClIncomingCallComplete(
4736 IN NDIS_STATUS Status
,
4737 IN NDIS_HANDLE NdisVcHandle
,
4738 IN PCO_CALL_PARAMETERS CallParameters
);
4744 IN NDIS_HANDLE NdisVcHandle
,
4745 IN OUT PCO_CALL_PARAMETERS CallParameters
,
4746 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL
,
4747 OUT PNDIS_HANDLE NdisPartyHandle OPTIONAL
);
4752 NdisClModifyCallQoS(
4753 IN NDIS_HANDLE NdisVcHandle
,
4754 IN PCO_CALL_PARAMETERS CallParameters
);
4760 NdisClOpenAddressFamily(
4761 IN NDIS_HANDLE NdisBindingHandle
,
4762 IN PCO_ADDRESS_FAMILY AddressFamily
,
4763 IN NDIS_HANDLE ProtocolAfContext
,
4764 IN PNDIS_CLIENT_CHARACTERISTICS ClCharacteristics
,
4765 IN UINT SizeOfClCharacteristics
,
4766 OUT PNDIS_HANDLE NdisAfHandle
);
4772 IN NDIS_HANDLE NdisAfHandle
,
4773 IN NDIS_HANDLE ProtocolSapContext
,
4775 OUT PNDIS_HANDLE NdisSapHandle
);
4778 /* Call Manager services */
4784 IN NDIS_HANDLE NdisVcHandle
,
4785 IN OUT PCO_CALL_PARAMETERS CallParameters
);
4790 NdisCmAddPartyComplete(
4791 IN NDIS_STATUS Status
,
4792 IN NDIS_HANDLE NdisPartyHandle
,
4793 IN NDIS_HANDLE CallMgrPartyContext OPTIONAL
,
4794 IN PCO_CALL_PARAMETERS CallParameters
);
4799 NdisCmCloseAddressFamilyComplete(
4800 IN NDIS_STATUS Status
,
4801 IN NDIS_HANDLE NdisAfHandle
);
4806 NdisCmCloseCallComplete(
4807 IN NDIS_STATUS Status
,
4808 IN NDIS_HANDLE NdisVcHandle
,
4809 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
);
4815 IN NDIS_HANDLE NdisVcHandle
);
4820 NdisCmDeregisterSapComplete(
4821 IN NDIS_STATUS Status
,
4822 IN NDIS_HANDLE NdisSapHandle
);
4827 NdisCmDispatchCallConnected(
4828 IN NDIS_HANDLE NdisVcHandle
);
4833 NdisCmDispatchIncomingCall(
4834 IN NDIS_HANDLE NdisSapHandle
,
4835 IN NDIS_HANDLE NdisVcHandle
,
4836 IN PCO_CALL_PARAMETERS CallParameters
);
4841 NdisCmDispatchIncomingCallQoSChange(
4842 IN NDIS_HANDLE NdisVcHandle
,
4843 IN PCO_CALL_PARAMETERS CallParameters
);
4848 NdisCmDispatchIncomingCloseCall(
4849 IN NDIS_STATUS CloseStatus
,
4850 IN NDIS_HANDLE NdisVcHandle
,
4851 IN PVOID Buffer OPTIONAL
,
4857 NdisCmDispatchIncomingDropParty(
4858 IN NDIS_STATUS DropStatus
,
4859 IN NDIS_HANDLE NdisPartyHandle
,
4860 IN PVOID Buffer OPTIONAL
,
4866 NdisCmDropPartyComplete(
4867 IN NDIS_STATUS Status
,
4868 IN NDIS_HANDLE NdisPartyHandle
);
4873 NdisCmMakeCallComplete(
4874 IN NDIS_STATUS Status
,
4875 IN NDIS_HANDLE NdisVcHandle
,
4876 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
4877 IN NDIS_HANDLE CallMgrPartyContext OPTIONAL
,
4878 IN PCO_CALL_PARAMETERS CallParameters
);
4883 NdisCmModifyCallQoSComplete(
4884 IN NDIS_STATUS Status
,
4885 IN NDIS_HANDLE NdisVcHandle
,
4886 IN PCO_CALL_PARAMETERS CallParameters
);
4891 NdisCmOpenAddressFamilyComplete(
4892 IN NDIS_STATUS Status
,
4893 IN NDIS_HANDLE NdisAfHandle
,
4894 IN NDIS_HANDLE CallMgrAfContext
);
4899 NdisCmRegisterAddressFamily(
4900 IN NDIS_HANDLE NdisBindingHandle
,
4901 IN PCO_ADDRESS_FAMILY AddressFamily
,
4902 IN PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics
,
4903 IN UINT SizeOfCmCharacteristics
);
4908 NdisCmRegisterSapComplete(
4909 IN NDIS_STATUS Status
,
4910 IN NDIS_HANDLE NdisSapHandle
,
4911 IN NDIS_HANDLE CallMgrSapContext
);
4918 IN NDIS_HANDLE NdisVcHandle
,
4919 IN PCO_CALL_PARAMETERS CallParameters
);
4925 IN NDIS_HANDLE MiniportAdapterHandle
,
4926 IN NDIS_HANDLE NdisAfHandle
,
4927 IN NDIS_HANDLE MiniportVcContext
,
4928 OUT PNDIS_HANDLE NdisVcHandle
);
4933 NdisMCmDeactivateVc(
4934 IN NDIS_HANDLE NdisVcHandle
);
4940 IN NDIS_HANDLE NdisVcHandle
);
4945 NdisMCmRegisterAddressFamily(
4946 IN NDIS_HANDLE MiniportAdapterHandle
,
4947 IN PCO_ADDRESS_FAMILY AddressFamily
,
4948 IN PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics
,
4949 IN UINT SizeOfCmCharacteristics
);
4955 IN NDIS_HANDLE NdisAfHandle
,
4956 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
4957 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
4958 IN OUT PNDIS_REQUEST NdisRequest
);
4961 /* Connection-oriented services */
4967 IN NDIS_HANDLE NdisBindingHandle
,
4968 IN NDIS_HANDLE NdisAfHandle OPTIONAL
,
4969 IN NDIS_HANDLE ProtocolVcContext
,
4970 IN OUT PNDIS_HANDLE NdisVcHandle
);
4976 IN NDIS_HANDLE NdisVcHandle
);
4982 IN NDIS_HANDLE NdisBindingHandle
,
4983 IN NDIS_HANDLE NdisAfHandle OPTIONAL
,
4984 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
4985 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
4986 IN OUT PNDIS_REQUEST NdisRequest
);
4991 NdisCoRequestComplete(
4992 IN NDIS_STATUS Status
,
4993 IN NDIS_HANDLE NdisAfHandle
,
4994 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
4995 IN NDIS_HANDLE NdisPartyHandle OPTIONAL
,
4996 IN PNDIS_REQUEST NdisRequest
);
5002 IN NDIS_HANDLE NdisVcHandle
,
5003 IN PPNDIS_PACKET PacketArray
,
5004 IN UINT NumberOfPackets
);
5009 NdisMCoActivateVcComplete(
5010 IN NDIS_STATUS Status
,
5011 IN NDIS_HANDLE NdisVcHandle
,
5012 IN PCO_CALL_PARAMETERS CallParameters
);
5017 NdisMCoDeactivateVcComplete(
5018 IN NDIS_STATUS Status
,
5019 IN NDIS_HANDLE NdisVcHandle
);
5024 NdisMCoIndicateReceivePacket(
5025 IN NDIS_HANDLE NdisVcHandle
,
5026 IN PPNDIS_PACKET PacketArray
,
5027 IN UINT NumberOfPackets
);
5032 NdisMCoIndicateStatus(
5033 IN NDIS_HANDLE MiniportAdapterHandle
,
5034 IN NDIS_HANDLE NdisVcHandle OPTIONAL
,
5035 IN NDIS_STATUS GeneralStatus
,
5036 IN PVOID StatusBuffer OPTIONAL
,
5037 IN ULONG StatusBufferSize
);
5042 NdisMCoReceiveComplete(
5043 IN NDIS_HANDLE MiniportAdapterHandle
);
5048 NdisMCoRequestComplete(
5049 IN NDIS_STATUS Status
,
5050 IN NDIS_HANDLE MiniportAdapterHandle
,
5051 IN PNDIS_REQUEST Request
);
5056 NdisMCoSendComplete(
5057 IN NDIS_STATUS Status
,
5058 IN NDIS_HANDLE NdisVcHandle
,
5059 IN PNDIS_PACKET Packet
);
5062 /* NDIS 5.0 extensions for intermediate drivers */
5067 NdisIMAssociateMiniport(
5068 IN NDIS_HANDLE DriverHandle
,
5069 IN NDIS_HANDLE ProtocolHandle
);
5074 NdisIMCancelInitializeDeviceInstance(
5075 IN NDIS_HANDLE DriverHandle
,
5076 IN PNDIS_STRING DeviceInstance
);
5081 NdisIMCopySendCompletePerPacketInfo(
5082 IN PNDIS_PACKET DstPacket
,
5083 IN PNDIS_PACKET SrcPacket
);
5088 NdisIMCopySendPerPacketInfo(
5089 IN PNDIS_PACKET DstPacket
,
5090 IN PNDIS_PACKET SrcPacket
);
5095 NdisIMDeregisterLayeredMiniport(
5096 IN NDIS_HANDLE DriverHandle
);
5101 NdisIMGetBindingContext(
5102 IN NDIS_HANDLE NdisBindingHandle
);
5107 NdisIMGetDeviceContext(
5108 IN NDIS_HANDLE MiniportAdapterHandle
);
5113 NdisIMInitializeDeviceInstanceEx(
5114 IN NDIS_HANDLE DriverHandle
,
5115 IN PNDIS_STRING DriverInstance
,
5116 IN NDIS_HANDLE DeviceContext OPTIONAL
);
5122 NdisInterlockedPopEntrySList(
5123 IN PSLIST_HEADER ListHead,
5124 IN PKSPIN_LOCK Lock);
5126 #define NdisInterlockedPopEntrySList(SListHead, Lock) \
5127 ExInterlockedPopEntrySList(SListHead, &(Lock)->SpinLock)
5133 NdisInterlockedPushEntrySList(
5134 IN PSLIST_HEADER ListHead,
5135 IN PSINGLE_LIST_ENTRY ListEntry,
5136 IN PKSPIN_LOCK Lock);
5138 #define NdisInterlockedPushEntrySList(SListHead, SListEntry, Lock) \
5139 ExInterlockedPushEntrySList(SListHead, SListEntry, &(Lock)->SpinLock)
5141 #define NdisInterlockedFlushSList(SListHead) ExInterlockedFlushSList(SListHead)
5147 NdisQueryBufferSafe(
5148 IN PNDIS_BUFFER Buffer,
5149 OUT PVOID *VirtualAddress OPTIONAL,
5153 #define NdisQueryBufferSafe(_Buffer, _VirtualAddress, _Length, _Priority) { \
5154 if (ARGUMENT_PRESENT(_VirtualAddress)) { \
5155 *(PVOID *)(_VirtualAddress) = MmGetSystemAddressForMdlSafe(_Buffer, _Priority); \
5157 *(_Length) = MmGetMdlByteCount(_Buffer); \
5160 /* Routines for NDIS miniport drivers */
5162 #if NDIS_SUPPORT_NDIS6
5165 PNDIS_GENERIC_OBJECT
5167 NdisAllocateGenericObject(
5168 PDRIVER_OBJECT DriverObject OPTIONAL
,
5175 NdisFreeGenericObject(
5176 IN PNDIS_GENERIC_OBJECT NdisObject
);
5178 #endif /* NDIS_SUPPORT_NDIS6 */
5183 NdisInitializeWrapper(
5184 OUT PNDIS_HANDLE NdisWrapperHandle
,
5185 IN PVOID SystemSpecific1
,
5186 IN PVOID SystemSpecific2
,
5187 IN PVOID SystemSpecific3
);
5192 NdisMAllocateMapRegisters(
5193 IN NDIS_HANDLE MiniportAdapterHandle
,
5195 IN NDIS_DMA_SIZE DmaSize
,
5196 IN ULONG PhysicalMapRegistersNeeded
,
5197 IN ULONG MaximumPhysicalMapping
);
5201 * NdisMArcIndicateReceive(
5202 * IN NDIS_HANDLE MiniportAdapterHandle,
5203 * IN PUCHAR HeaderBuffer,
5204 * IN PUCHAR DataBuffer,
5207 #define NdisMArcIndicateReceive(MiniportAdapterHandle, \
5212 ArcFilterDprIndicateReceive( \
5213 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->ArcDB), \
5221 * NdisMArcIndicateReceiveComplete(
5222 * IN NDIS_HANDLE MiniportAdapterHandle);
5224 #define NdisMArcIndicateReceiveComplete(MiniportAdapterHandle) \
5226 if (((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->EthDB) \
5228 NdisMEthIndicateReceiveComplete(_H); \
5231 ArcFilterDprIndicateReceiveComplete( \
5232 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->ArcDB); \
5239 IN NDIS_HANDLE LogHandle
);
5245 IN NDIS_HANDLE MiniportAdapterHandle
,
5247 OUT PNDIS_HANDLE LogHandle
);
5252 NdisMDeregisterAdapterShutdownHandler(
5253 IN NDIS_HANDLE MiniportHandle
);
5258 NdisMDeregisterInterrupt(
5259 IN PNDIS_MINIPORT_INTERRUPT Interrupt
);
5264 NdisMDeregisterIoPortRange(
5265 IN NDIS_HANDLE MiniportAdapterHandle
,
5266 IN UINT InitialPort
,
5267 IN UINT NumberOfPorts
,
5268 IN PVOID PortOffset
);
5272 * NdisMEthIndicateReceive(
5273 * IN NDIS_HANDLE MiniportAdapterHandle,
5274 * IN NDIS_HANDLE MiniportReceiveContext,
5275 * IN PVOID HeaderBuffer,
5276 * IN UINT HeaderBufferSize,
5277 * IN PVOID LookaheadBuffer,
5278 * IN UINT LookaheadBufferSize,
5279 * IN UINT PacketSize);
5281 #define NdisMEthIndicateReceive(MiniportAdapterHandle, \
5282 MiniportReceiveContext, \
5286 LookaheadBufferSize, \
5289 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxIndicateHandler)( \
5290 ((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthDB, \
5291 (MiniportReceiveContext), \
5294 (HeaderBufferSize), \
5295 (LookaheadBuffer), \
5296 (LookaheadBufferSize), \
5302 * NdisMEthIndicateReceiveComplete(
5303 * IN NDIS_HANDLE MiniportAdapterHandle);
5305 #define NdisMEthIndicateReceiveComplete(MiniportAdapterHandle) \
5307 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxCompleteHandler)( \
5308 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->EthDB); \
5313 * NdisMFddiIndicateReceive(
5314 * IN NDIS_HANDLE MiniportAdapterHandle,
5315 * IN NDIS_HANDLE MiniportReceiveContext,
5316 * IN PVOID HeaderBuffer,
5317 * IN UINT HeaderBufferSize,
5318 * IN PVOID LookaheadBuffer,
5319 * IN UINT LookaheadBufferSize,
5320 * IN UINT PacketSize);
5322 #define NdisMFddiIndicateReceive(MiniportAdapterHandle, \
5323 MiniportReceiveContext, \
5327 LookaheadBufferSize, \
5330 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxIndicateHandler)( \
5331 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiDB), \
5332 (MiniportReceiveContext), \
5333 (PUCHAR)(HeaderBuffer) + 1, \
5334 (((*(PUCHAR*)(HeaderBuffer)) & 0x40) ? \
5335 FDDI_LENGTH_OF_LONG_ADDRESS : \
5336 FDDI_LENGTH_OF_SHORT_ADDRESS), \
5338 (HeaderBufferSize), \
5339 (LookaheadBuffer), \
5340 (LookaheadBufferSize), \
5348 * NdisMFddiIndicateReceiveComplete(
5349 * IN NDIS_HANDLE MiniportAdapterHandle);
5351 #define NdisMFddiIndicateReceiveComplete(MiniportAdapterHandle) \
5353 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxCompleteHandler)( \
5354 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FddiDB); \
5361 IN NDIS_HANDLE LogHandle
);
5366 NdisMFreeMapRegisters(
5367 IN NDIS_HANDLE MiniportAdapterHandle
);
5372 * NdisMIndicateReceivePacket(
5373 * IN NDIS_HANDLE MiniportAdapterHandle,
5374 * IN PPNDIS_PACKET ReceivePackets,
5375 * IN UINT NumberOfPackets);
5377 #define NdisMIndicateReceivePacket(MiniportAdapterHandle, \
5378 ReceivePackets, NumberOfPackets) \
5379 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->PacketIndicateHandler)( \
5380 MiniportAdapterHandle, ReceivePackets, NumberOfPackets)
5384 * NdisMIndicateStatus(
5385 * IN NDIS_HANDLE MiniportAdapterHandle,
5386 * IN NDIS_STATUS GeneralStatus,
5387 * IN PVOID StatusBuffer,
5388 * IN UINT StatusBufferSize);
5391 #define NdisMIndicateStatus(MiniportAdapterHandle, \
5392 GeneralStatus, StatusBuffer, StatusBufferSize) \
5393 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->StatusHandler)( \
5394 MiniportAdapterHandle, GeneralStatus, StatusBuffer, StatusBufferSize)
5398 * NdisMIndicateStatusComplete(
5399 * IN NDIS_HANDLE MiniportAdapterHandle);
5401 #define NdisMIndicateStatusComplete(MiniportAdapterHandle) \
5402 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->StatusCompleteHandler)( \
5403 MiniportAdapterHandle)
5407 * NdisMInitializeWrapper(
5408 * OUT PNDIS_HANDLE NdisWrapperHandle,
5409 * IN PVOID SystemSpecific1,
5410 * IN PVOID SystemSpecific2,
5411 * IN PVOID SystemSpecific3);
5413 #define NdisMInitializeWrapper(NdisWrapperHandle, \
5417 NdisInitializeWrapper((NdisWrapperHandle), \
5418 (SystemSpecific1), \
5419 (SystemSpecific2), \
5426 OUT PVOID
*VirtualAddress
,
5427 IN NDIS_HANDLE MiniportAdapterHandle
,
5428 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
,
5433 * NdisMQueryInformationComplete(
5434 * IN NDIS_HANDLE MiniportAdapterHandle,
5435 * IN NDIS_STATUS Status);
5437 #define NdisMQueryInformationComplete(MiniportAdapterHandle, Status) \
5438 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->QueryCompleteHandler)(MiniportAdapterHandle, Status)
5443 NdisMRegisterAdapterShutdownHandler(
5444 IN NDIS_HANDLE MiniportHandle
,
5445 IN PVOID ShutdownContext
,
5446 IN ADAPTER_SHUTDOWN_HANDLER ShutdownHandler
);
5451 NdisMRegisterInterrupt(
5452 OUT PNDIS_MINIPORT_INTERRUPT Interrupt
,
5453 IN NDIS_HANDLE MiniportAdapterHandle
,
5454 IN UINT InterruptVector
,
5455 IN UINT InterruptLevel
,
5456 IN BOOLEAN RequestIsr
,
5457 IN BOOLEAN SharedInterrupt
,
5458 IN NDIS_INTERRUPT_MODE InterruptMode
);
5463 NdisMRegisterIoPortRange(
5464 OUT PVOID
*PortOffset
,
5465 IN NDIS_HANDLE MiniportAdapterHandle
,
5466 IN UINT InitialPort
,
5467 IN UINT NumberOfPorts
);
5472 NdisMRegisterMiniport(
5473 IN NDIS_HANDLE NdisWrapperHandle
,
5474 IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics
,
5475 IN UINT CharacteristicsLength
);
5481 IN PNDIS_MINIPORT_TIMER Timer
,
5482 IN UINT MillisecondsToDelay
);
5487 NdisMInitializeTimer(
5488 IN OUT PNDIS_MINIPORT_TIMER Timer
,
5489 IN NDIS_HANDLE MiniportAdapterHandle
,
5490 IN PNDIS_TIMER_FUNCTION TimerFunction
,
5491 IN PVOID FunctionContext
);
5496 NdisMSetPeriodicTimer(
5497 IN PNDIS_MINIPORT_TIMER Timer
,
5498 IN UINT MillisecondPeriod
);
5504 IN PNDIS_MINIPORT_TIMER Timer
,
5505 OUT PBOOLEAN TimerCancelled
);
5507 #if !defined(NDIS_WRAPPER)
5511 * NdisMResetComplete(
5512 * IN NDIS_HANDLE MiniportAdapterHandle,
5513 * IN NDIS_STATUS Status,
5514 * IN BOOLEAN AddressingReset);
5516 #define NdisMResetComplete(MiniportAdapterHandle, \
5520 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->ResetCompleteHandler)( \
5521 MiniportAdapterHandle, Status, AddressingReset); \
5526 * NdisMSendComplete(
5527 * IN NDIS_HANDLE MiniportAdapterHandle,
5528 * IN PNDIS_PACKET Packet,
5529 * IN NDIS_STATUS Status);
5531 #define NdisMSendComplete(MiniportAdapterHandle, \
5535 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SendCompleteHandler)( \
5536 MiniportAdapterHandle, Packet, Status); \
5541 * NdisMSendResourcesAvailable(
5542 * IN NDIS_HANDLE MiniportAdapterHandle);
5544 #define NdisMSendResourcesAvailable(MiniportAdapterHandle) \
5546 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SendResourcesHandler)( \
5547 MiniportAdapterHandle); \
5552 * NdisMTransferDataComplete(
5553 * IN NDIS_HANDLE MiniportAdapterHandle,
5554 * IN PNDIS_PACKET Packet,
5555 * IN NDIS_STATUS Status,
5556 * IN UINT BytesTransferred);
5558 #define NdisMTransferDataComplete(MiniportAdapterHandle, \
5563 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TDCompleteHandler)( \
5564 MiniportAdapterHandle, Packet, Status, BytesTransferred) \
5567 #endif /* !_NDIS_ */
5572 * NdisMSetAttributes(
5573 * IN NDIS_HANDLE MiniportAdapterHandle,
5574 * IN NDIS_HANDLE MiniportAdapterContext,
5575 * IN BOOLEAN BusMaster,
5576 * IN NDIS_INTERFACE_TYPE AdapterType);
5578 #define NdisMSetAttributes(MiniportAdapterHandle, \
5579 MiniportAdapterContext, \
5582 NdisMSetAttributesEx(MiniportAdapterHandle, \
5583 MiniportAdapterContext, \
5585 (BusMaster) ? NDIS_ATTRIBUTE_BUS_MASTER : 0, \
5591 NdisMSetAttributesEx(
5592 IN NDIS_HANDLE MiniportAdapterHandle
,
5593 IN NDIS_HANDLE MiniportAdapterContext
,
5594 IN UINT CheckForHangTimeInSeconds OPTIONAL
,
5595 IN ULONG AttributeFlags
,
5596 IN NDIS_INTERFACE_TYPE AdapterType
);
5600 * NdisMSetInformationComplete(
5601 * IN NDIS_HANDLE MiniportAdapterHandle,
5602 * IN NDIS_STATUS Status);
5604 #define NdisMSetInformationComplete(MiniportAdapterHandle, \
5606 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SetCompleteHandler)( \
5607 MiniportAdapterHandle, Status)
5613 IN ULONG MicrosecondsToSleep
);
5618 NdisMSynchronizeWithInterrupt(
5619 IN PNDIS_MINIPORT_INTERRUPT Interrupt
,
5620 IN PVOID SynchronizeFunction
,
5621 IN PVOID SynchronizeContext
);
5625 * NdisMTrIndicateReceive(
5626 * IN NDIS_HANDLE MiniportAdapterHandle,
5627 * IN NDIS_HANDLE MiniportReceiveContext,
5628 * IN PVOID HeaderBuffer,
5629 * IN UINT HeaderBufferSize,
5630 * IN PVOID LookaheadBuffer,
5631 * IN UINT LookaheadBufferSize,
5632 * IN UINT PacketSize);
5634 #define NdisMTrIndicateReceive(MiniportAdapterHandle, \
5635 MiniportReceiveContext, \
5639 LookaheadBufferSize, \
5642 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxIndicateHandler)( \
5643 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrDB), \
5644 (MiniportReceiveContext), \
5647 (HeaderBufferSize), \
5648 (LookaheadBuffer), \
5649 (LookaheadBufferSize), \
5655 * NdisMTrIndicateReceiveComplete(
5656 * IN NDIS_HANDLE MiniportAdapterHandle);
5658 #define NdisMTrIndicateReceiveComplete(MiniportAdapterHandle) \
5660 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxCompleteHandler)( \
5661 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->TrDB); \
5668 IN NDIS_HANDLE LogHandle
,
5670 IN UINT LogBufferSize
);
5675 NdisMQueryAdapterResources(
5676 OUT PNDIS_STATUS Status
,
5677 IN NDIS_HANDLE WrapperConfigurationContext
,
5678 OUT PNDIS_RESOURCE_LIST ResourceList
,
5679 IN OUT PUINT BufferSize
);
5684 NdisTerminateWrapper(
5685 IN NDIS_HANDLE NdisWrapperHandle
,
5686 IN PVOID SystemSpecific
);
5692 IN NDIS_HANDLE MiniportAdapterHandle
,
5693 IN PVOID VirtualAddress
,
5696 /* Event functions */
5701 NdisInitializeEvent(
5702 OUT PNDIS_EVENT Event
);
5708 IN PNDIS_EVENT Event
);
5714 IN PNDIS_EVENT Event
);
5720 IN PNDIS_EVENT Event
,
5723 /* NDIS intermediate miniport structures */
5725 typedef VOID (NTAPI
*W_MINIPORT_CALLBACK
)(
5726 IN NDIS_HANDLE MiniportAdapterContext
,
5727 IN PVOID CallbackContext
);
5729 /* Routines for intermediate miniport drivers */
5734 NdisIMDeInitializeDeviceInstance(
5735 IN NDIS_HANDLE NdisMiniportHandle
);
5739 * NdisIMInitializeDeviceInstance(
5740 * IN NDIS_HANDLE DriverHandle,
5741 * IN PNDIS_STRING DeviceInstance);
5743 #define NdisIMInitializeDeviceInstance(DriverHandle, DeviceInstance) \
5744 NdisIMInitializeDeviceInstanceEx(DriverHandle, DeviceInstance, NULL)
5749 NdisIMRegisterLayeredMiniport(
5750 IN NDIS_HANDLE NdisWrapperHandle
,
5751 IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics
,
5752 IN UINT CharacteristicsLength
,
5753 OUT PNDIS_HANDLE DriverHandle
);
5756 /* Functions obsoleted by NDIS 5.0 */
5762 IN PNDIS_HANDLE NdisDmaHandle
);
5767 NdisSetupDmaTransfer(
5768 OUT PNDIS_STATUS Status
,
5769 IN PNDIS_HANDLE NdisDmaHandle
,
5770 IN PNDIS_BUFFER Buffer
,
5773 IN BOOLEAN WriteToDevice
);
5779 NdisUpcaseUnicodeString(
5780 OUT PUNICODE_STRING DestinationString,
5781 IN PUNICODE_STRING SourceString);
5783 #define NdisUpcaseUnicodeString(_d, _s) RtlUpcaseUnicodeString(_d, _s, FALSE)
5786 /* Routines for NDIS protocol drivers */
5792 OUT PNDIS_STATUS Status
,
5793 IN NDIS_HANDLE NdisBindingHandle
,
5794 IN PNDIS_REQUEST NdisRequest
);
5800 OUT PNDIS_STATUS Status
,
5801 IN NDIS_HANDLE NdisBindingHandle
);
5807 OUT PNDIS_STATUS Status
,
5808 IN NDIS_HANDLE NdisBindingHandle
,
5809 IN PNDIS_PACKET Packet
);
5815 IN NDIS_HANDLE NdisBindingHandle
,
5816 IN PPNDIS_PACKET PacketArray
,
5817 IN UINT NumberOfPackets
);
5823 OUT PNDIS_STATUS Status
,
5824 IN NDIS_HANDLE NdisBindingHandle
,
5825 IN NDIS_HANDLE MacReceiveContext
,
5827 IN UINT BytesToTransfer
,
5828 IN OUT PNDIS_PACKET Packet
,
5829 OUT PUINT BytesTransferred
);
5835 OUT PNDIS_STATUS Status
,
5836 IN NDIS_HANDLE NdisBindingHandle
);
5841 NdisCompleteBindAdapter(
5842 IN NDIS_HANDLE BindAdapterContext
,
5843 IN NDIS_STATUS Status
,
5844 IN NDIS_STATUS OpenStatus
);
5849 NdisCompleteUnbindAdapter(
5850 IN NDIS_HANDLE UnbindAdapterContext
,
5851 IN NDIS_STATUS Status
);
5856 NdisDeregisterProtocol(
5857 OUT PNDIS_STATUS Status
,
5858 IN NDIS_HANDLE NdisProtocolHandle
);
5864 OUT PNDIS_STATUS Status
,
5865 OUT PNDIS_STATUS OpenErrorStatus
,
5866 OUT PNDIS_HANDLE NdisBindingHandle
,
5867 OUT PUINT SelectedMediumIndex
,
5868 IN PNDIS_MEDIUM MediumArray
,
5869 IN UINT MediumArraySize
,
5870 IN NDIS_HANDLE NdisProtocolHandle
,
5871 IN NDIS_HANDLE ProtocolBindingContext
,
5872 IN PNDIS_STRING AdapterName
,
5873 IN UINT OpenOptions
,
5874 IN PSTRING AddressingInformation
);
5879 NdisOpenProtocolConfiguration(
5880 OUT PNDIS_STATUS Status
,
5881 OUT PNDIS_HANDLE ConfigurationHandle
,
5882 IN PNDIS_STRING ProtocolSection
);
5887 NdisRegisterProtocol(
5888 OUT PNDIS_STATUS Status
,
5889 OUT PNDIS_HANDLE NdisProtocolHandle
,
5890 IN PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics
,
5891 IN UINT CharacteristicsLength
);
5893 /* Obsoleted in Windows XP */
5895 /* Prototypes for NDIS_MAC_CHARACTERISTICS */
5897 typedef NDIS_STATUS (*OPEN_ADAPTER_HANDLER
)(
5898 OUT PNDIS_STATUS OpenErrorStatus
,
5899 OUT NDIS_HANDLE
*MacBindingHandle
,
5900 OUT PUINT SelectedMediumIndex
,
5901 IN PNDIS_MEDIUM MediumArray
,
5902 IN UINT MediumArraySize
,
5903 IN NDIS_HANDLE NdisBindingContext
,
5904 IN NDIS_HANDLE MacAdapterContext
,
5905 IN UINT OpenOptions
,
5906 IN PSTRING AddressingInformation OPTIONAL
);
5908 typedef NDIS_STATUS (NTAPI
*CLOSE_ADAPTER_HANDLER
)(
5909 IN NDIS_HANDLE MacBindingHandle
);
5911 typedef NDIS_STATUS (NTAPI
*WAN_TRANSFER_DATA_HANDLER
)(
5914 typedef NDIS_STATUS (NTAPI
*QUERY_GLOBAL_STATISTICS_HANDLER
)(
5915 IN NDIS_HANDLE MacAdapterContext
,
5916 IN PNDIS_REQUEST NdisRequest
);
5918 typedef VOID (NTAPI
*UNLOAD_MAC_HANDLER
)(
5919 IN NDIS_HANDLE MacMacContext
);
5921 typedef NDIS_STATUS (NTAPI
*ADD_ADAPTER_HANDLER
)(
5922 IN NDIS_HANDLE MacMacContext
,
5923 IN NDIS_HANDLE WrapperConfigurationContext
,
5924 IN PNDIS_STRING AdapterName
);
5926 typedef VOID (*REMOVE_ADAPTER_HANDLER
)(
5927 IN NDIS_HANDLE MacAdapterContext
);
5929 typedef struct _NDIS_MAC_CHARACTERISTICS
{
5930 UCHAR MajorNdisVersion
;
5931 UCHAR MinorNdisVersion
;
5934 OPEN_ADAPTER_HANDLER OpenAdapterHandler
;
5935 CLOSE_ADAPTER_HANDLER CloseAdapterHandler
;
5936 SEND_HANDLER SendHandler
;
5937 TRANSFER_DATA_HANDLER TransferDataHandler
;
5938 RESET_HANDLER ResetHandler
;
5939 REQUEST_HANDLER RequestHandler
;
5940 QUERY_GLOBAL_STATISTICS_HANDLER QueryGlobalStatisticsHandler
;
5941 UNLOAD_MAC_HANDLER UnloadMacHandler
;
5942 ADD_ADAPTER_HANDLER AddAdapterHandler
;
5943 REMOVE_ADAPTER_HANDLER RemoveAdapterHandler
;
5945 } NDIS_MAC_CHARACTERISTICS
, *PNDIS_MAC_CHARACTERISTICS
;
5947 typedef NDIS_MAC_CHARACTERISTICS NDIS_WAN_MAC_CHARACTERISTICS
;
5948 typedef NDIS_WAN_MAC_CHARACTERISTICS
*PNDIS_WAN_MAC_CHARACTERISTICS
;
5954 #endif /* __NDIS_H */