Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenndis.h
Go to the documentation of this file.
00001 /* 00002 * ndis.h 00003 * 00004 * Network Device Interface Specification definitions 00005 * 00006 * This file is part of the ReactOS DDK package. 00007 * 00008 * Contributors: 00009 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> 00010 * 00011 * THIS SOFTWARE IS NOT COPYRIGHTED 00012 * 00013 * This source code is offered for use in the public domain. You may 00014 * use, modify or distribute it freely. 00015 * 00016 * This code is distributed in the hope that it will be useful but 00017 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00018 * DISCLAIMED. This includes but is not limited to warranties of 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00020 * 00021 * DEFINES: i386 - Target platform is i386 00022 * NDIS_WRAPPER - Define only for NDIS library 00023 * NDIS_MINIPORT_DRIVER - Define only for NDIS miniport drivers 00024 * NDIS40 - Use NDIS 4.0 structures by default 00025 * NDIS50 - Use NDIS 5.0 structures by default 00026 * NDIS51 - Use NDIS 5.1 structures by default 00027 * NDIS40_MINIPORT - Building NDIS 4.0 miniport driver 00028 * NDIS50_MINIPORT - Building NDIS 5.0 miniport driver 00029 * NDIS51_MINIPORT - Building NDIS 5.1 miniport driver 00030 */ 00031 00032 #ifndef _NDIS_ 00033 #define _NDIS_ 00034 00035 #ifndef NDIS_WDM 00036 #define NDIS_WDM 0 00037 #endif 00038 00039 #include "ntddk.h" 00040 #include "netpnp.h" 00041 #include "ntstatus.h" 00042 #include "netevent.h" 00043 #include <qos.h> 00044 00045 typedef _Return_type_success_(return >= 0) int NDIS_STATUS, *PNDIS_STATUS; 00046 00047 #include "ntddndis.h" 00048 00049 #if !defined(_WINDEF_H) 00050 typedef unsigned int UINT, *PUINT; 00051 #endif 00052 00053 #ifdef __cplusplus 00054 extern "C" { 00055 #endif 00056 00057 __drv_Mode_impl(NDIS_INCLUDED) 00058 00059 #ifndef __NET_PNP__ 00060 #define __NET_PNP__ 00061 00062 typedef enum _NET_DEVICE_POWER_STATE { 00063 NetDeviceStateUnspecified = 0, 00064 NetDeviceStateD0, 00065 NetDeviceStateD1, 00066 NetDeviceStateD2, 00067 NetDeviceStateD3, 00068 NetDeviceStateMaximum 00069 } NET_DEVICE_POWER_STATE, *PNET_DEVICE_POWER_STATE; 00070 00071 typedef enum _NET_PNP_EVENT_CODE { 00072 NetEventSetPower, 00073 NetEventQueryPower, 00074 NetEventQueryRemoveDevice, 00075 NetEventCancelRemoveDevice, 00076 NetEventReconfigure, 00077 NetEventBindList, 00078 NetEventBindsComplete, 00079 NetEventPnPCapabilities, 00080 NetEventPause, 00081 NetEventRestart, 00082 NetEventPortActivation, 00083 NetEventPortDeactivation, 00084 NetEventIMReEnableDevice, 00085 NetEventMaximum 00086 } NET_PNP_EVENT_CODE, *PNET_PNP_EVENT_CODE; 00087 00088 typedef struct _NET_PNP_EVENT { 00089 NET_PNP_EVENT_CODE NetEvent; 00090 PVOID Buffer; 00091 ULONG BufferLength; 00092 ULONG_PTR NdisReserved[4]; 00093 ULONG_PTR TransportReserved[4]; 00094 ULONG_PTR TdiReserved[4]; 00095 ULONG_PTR TdiClientReserved[4]; 00096 } NET_PNP_EVENT, *PNET_PNP_EVENT; 00097 00098 #endif /* __NET_PNP__ */ 00099 00100 #if !defined(NDIS_WRAPPER) 00101 00102 #if (defined(NDIS_MINIPORT_MAJOR_VERSION) || \ 00103 (defined(NDIS_MINIPORT_MINOR_VERSION)) || \ 00104 (defined(NDIS_PROTOCOL_MAJOR_VERSION)) || \ 00105 (defined(NDIS_PROTOCOL_MINOR_VERSION)) || \ 00106 (defined(NDIS_FILTER_MAJOR_VERSION)) || \ 00107 (defined(NDIS_FILTER_MINOR_VERSION))) 00108 #error "Driver should not redefine NDIS reserved macros" 00109 #endif 00110 00111 #if defined(NDIS_MINIPORT_DRIVER) 00112 00113 #if defined(NDIS620_MINIPORT) 00114 #define NDIS_MINIPORT_MAJOR_VERSION 6 00115 #define NDIS_MINIPORT_MINOR_VERSION 20 00116 #elif defined(NDIS61_MINIPORT) 00117 #define NDIS_MINIPORT_MAJOR_VERSION 6 00118 #define NDIS_MINIPORT_MINOR_VERSION 1 00119 #elif defined(NDIS60_MINIPORT) 00120 #define NDIS_MINIPORT_MAJOR_VERSION 6 00121 #define NDIS_MINIPORT_MINOR_VERSION 0 00122 #elif defined(NDIS51_MINIPORT) 00123 #define NDIS_MINIPORT_MAJOR_VERSION 5 00124 #define NDIS_MINIPORT_MINOR_VERSION 1 00125 #elif defined(NDIS50_MINIPORT) 00126 #define NDIS_MINIPORT_MAJOR_VERSION 5 00127 #define NDIS_MINIPORT_MINOR_VERSION 0 00128 #else 00129 #error "Only NDIS miniport drivers with version >= 5 are supported" 00130 #endif 00131 00132 #if ((NDIS_MINIPORT_MAJOR_VERSION == 6) && \ 00133 (NDIS_MINIPORT_MINOR_VERSION != 20) && \ 00134 (NDIS_MINIPORT_MINOR_VERSION != 1) && \ 00135 (NDIS_MINIPORT_MINOR_VERSION != 0)) 00136 #error "Invalid miniport major/minor version combination" 00137 #elif ((NDIS_MINIPORT_MAJOR_VERSION == 5) && \ 00138 (NDIS_MINIPORT_MINOR_VERSION != 1) && \ 00139 (NDIS_MINIPORT_MINOR_VERSION != 0)) 00140 #error "Invalid miniport major/minor version combination" 00141 #endif 00142 00143 #if (NDIS_MINIPORT_MAJOR_VERSION == 6) && \ 00144 ((NDIS_MINIPORT_MINOR_VERSION == 20 && NTDDI_VERSION < NTDDI_WIN7) || \ 00145 (NDIS_MINIPORT_MINOR_VERSION == 1 && NTDDI_VERSION < NTDDI_VISTA) || \ 00146 (NDIS_MINIPORT_MINOR_VERSION == 0 && NTDDI_VERSION < NTDDI_VISTA)) 00147 #error "Wrong NDIS/DDI version" 00148 #elif ((NDIS_MINIPORT_MAJOR_VERSION == 5) && \ 00149 (((NDIS_MINIPORT_MINOR_VERSION == 1) && (NTDDI_VERSION < NTDDI_WINXP)) || \ 00150 ((NDIS_MINIPORT_MINOR_VERSION == 0) && (NTDDI_VERSION < NTDDI_WIN2K)))) 00151 #error "Wrong NDIS/DDI version" 00152 #endif 00153 00154 00155 #endif /* defined(NDIS_MINIPORT_DRIVER) */ 00156 00157 #if defined(NDIS30) 00158 #error "Only NDIS Protocol drivers version 4 or later are supported" 00159 #endif 00160 00161 #if defined(NDIS620) 00162 #define NDIS_PROTOCOL_MAJOR_VERSION 6 00163 #define NDIS_PROTOCOL_MINOR_VERSION 20 00164 #define NDIS_FILTER_MAJOR_VERSION 6 00165 #define NDIS_FILTER_MINOR_VERSION 20 00166 #elif defined(NDIS61) 00167 #define NDIS_PROTOCOL_MAJOR_VERSION 6 00168 #define NDIS_PROTOCOL_MINOR_VERSION 1 00169 #define NDIS_FILTER_MAJOR_VERSION 6 00170 #define NDIS_FILTER_MINOR_VERSION 1 00171 #elif defined(NDIS60) 00172 #define NDIS_PROTOCOL_MAJOR_VERSION 6 00173 #define NDIS_PROTOCOL_MINOR_VERSION 0 00174 #define NDIS_FILTER_MAJOR_VERSION 6 00175 #define NDIS_FILTER_MINOR_VERSION 0 00176 #elif defined(NDIS51) 00177 #define NDIS_PROTOCOL_MAJOR_VERSION 5 00178 #define NDIS_PROTOCOL_MINOR_VERSION 1 00179 #elif defined(NDIS50) 00180 #define NDIS_PROTOCOL_MAJOR_VERSION 5 00181 #define NDIS_PROTOCOL_MINOR_VERSION 0 00182 #elif defined(NDIS40) 00183 #define NDIS_PROTOCOL_MAJOR_VERSION 4 00184 #define NDIS_PROTOCOL_MINOR_VERSION 0 00185 #endif 00186 00187 #if !defined(NDIS_MINIPORT_DRIVER) && !defined(NDIS_PROTOCOL_MAJOR_VERSION) 00188 #define NDIS40 00189 #define NDIS_PROTOCOL_MAJOR_VERSION 4 00190 #define NDIS_PROTOCOL_MINOR_VERSION 0 00191 #endif 00192 00193 #if defined(NDIS_FILTER_MAJOR_VERSION) 00194 00195 #if ((NDIS_FILTER_MAJOR_VERSION == 6) && \ 00196 (NDIS_FILTER_MINOR_VERSION != 20) && \ 00197 (NDIS_FILTER_MINOR_VERSION != 1) && \ 00198 (NDIS_FILTER_MINOR_VERSION != 0)) 00199 #error "Invalid Filter version" 00200 #endif 00201 00202 #endif /* defined(NDIS_FILTER_MAJOR_VERSION) */ 00203 00204 00205 #if defined(NDIS_PROTOCOL_MAJOR_VERSION) 00206 00207 #if ((NDIS_PROTOCOL_MAJOR_VERSION == 6) && \ 00208 (NDIS_PROTOCOL_MINOR_VERSION != 20) && \ 00209 (NDIS_PROTOCOL_MINOR_VERSION != 1) && \ 00210 (NDIS_PROTOCOL_MINOR_VERSION != 0)) 00211 #error "Invalid Protocol version" 00212 #elif ((NDIS_PROTOCOL_MAJOR_VERSION == 5) && \ 00213 (NDIS_PROTOCOL_MINOR_VERSION != 1) && (NDIS_PROTOCOL_MINOR_VERSION != 0)) 00214 #error "Invalid Protocol version" 00215 #elif ((NDIS_PROTOCOL_MAJOR_VERSION == 4) && (NDIS_PROTOCOL_MINOR_VERSION != 0)) 00216 #error "Invalid Protocol major/minor version" 00217 #endif 00218 00219 #if ((NDIS_PROTOCOL_MAJOR_VERSION == 6) && (NTDDI_VERSION < NTDDI_VISTA)) 00220 #error "Wrong NDIS/DDI version" 00221 #endif 00222 00223 #endif /* defined(NDIS_PROTOCOL_MAJOR_VERSION) */ 00224 00225 #endif /* !defined(NDIS_WRAPPER) */ 00226 00227 #if !defined(NDIS_LEGACY_MINIPORT) 00228 00229 #if ((defined(NDIS_MINIPORT_DRIVER) && (NDIS_MINIPORT_MAJOR_VERSION < 6)) || NDIS_WRAPPER) 00230 #define NDIS_LEGACY_MINIPORT 1 00231 #else 00232 #define NDIS_LEGACY_MINIPORT 0 00233 #endif 00234 00235 #endif /* !defined(NDIS_LEGACY_MINIPORT) */ 00236 00237 #if !defined(NDIS_LEGACY_PROTOCOL) 00238 00239 #if ((defined(NDIS_PROTOCOL_MAJOR_VERSION) && (NDIS_PROTOCOL_MAJOR_VERSION < 6)) || NDIS_WRAPPER) 00240 #define NDIS_LEGACY_PROTOCOL 1 00241 #else 00242 #define NDIS_LEGACY_PROTOCOL 0 00243 #endif 00244 00245 #endif /* !defined(NDIS_LEGACY_PROTOCOL) */ 00246 00247 #if !defined(NDIS_LEGACY_DRIVER) 00248 00249 #if (NDIS_LEGACY_MINIPORT || NDIS_LEGACY_PROTOCOL || NDIS_WRAPPER) 00250 #define NDIS_LEGACY_DRIVER 1 00251 #else 00252 #define NDIS_LEGACY_DRIVER 0 00253 #endif 00254 00255 #endif /* !defined(NDIS_LEGACY_DRIVER) */ 00256 00257 #if !defined(NDIS_SUPPORT_NDIS6) 00258 00259 #if ((defined (NDIS_MINIPORT_MAJOR_VERSION) && (NDIS_MINIPORT_MAJOR_VERSION >= 6)) || \ 00260 (defined (NDIS60)) || NDIS_WRAPPER) 00261 #define NDIS_SUPPORT_NDIS6 1 00262 #else 00263 #define NDIS_SUPPORT_NDIS6 0 00264 #endif 00265 00266 #endif /* !defined(NDIS_SUPPORT_NDIS6) */ 00267 00268 #if !defined(NDIS_SUPPORT_NDIS61) 00269 #if (((defined (NDIS_MINIPORT_MAJOR_VERSION) && (NDIS_MINIPORT_MAJOR_VERSION >= 6)) && \ 00270 (defined (NDIS_MINIPORT_MINOR_VERSION) && (NDIS_MINIPORT_MINOR_VERSION >= 1))) || \ 00271 (defined (NDIS61)) || NDIS_WRAPPER) 00272 #define NDIS_SUPPORT_NDIS61 1 00273 #else 00274 #define NDIS_SUPPORT_NDIS61 0 00275 #endif 00276 #endif /* !defined(NDIS_SUPPORT_NDIS61) */ 00277 00278 #if !defined(NDIS_SUPPORT_NDIS620) 00279 00280 #if (((defined (NDIS_MINIPORT_MAJOR_VERSION) && (NDIS_MINIPORT_MAJOR_VERSION >= 6)) && \ 00281 (defined (NDIS_MINIPORT_MINOR_VERSION) && (NDIS_MINIPORT_MINOR_VERSION >= 20))) || \ 00282 (defined (NDIS620)) || NDIS_WRAPPER) 00283 #define NDIS_SUPPORT_NDIS620 1 00284 #else 00285 #define NDIS_SUPPORT_NDIS620 0 00286 #endif 00287 00288 #endif /* !defined(NDIS_SUPPORT_NDIS620) */ 00289 00290 #if (NDIS_SUPPORT_NDIS620) 00291 #undef NDIS_SUPPORT_NDIS61 00292 #define NDIS_SUPPORT_NDIS61 1 00293 #endif 00294 00295 #if (NDIS_SUPPORT_NDIS61) 00296 #undef NDIS_SUPPORT_NDIS6 00297 #define NDIS_SUPPORT_NDIS6 1 00298 #endif 00299 00300 #if defined(NDIS61_MINIPORT) || defined(NDIS60_MINIPORT) || defined(NDIS61) || \ 00301 defined(NDIS60) || defined(NDIS_WRAPPER) || defined(NDIS_LEGACY_DRIVER) 00302 #define NDIS_SUPPORT_60_COMPATIBLE_API 1 00303 #else 00304 #define NDIS_SUPPORT_60_COMPATIBLE_API 0 00305 #endif 00306 00307 #if defined(NDIS_WRAPPER) 00308 #define NDISAPI 00309 #else 00310 #define NDISAPI DECLSPEC_IMPORT 00311 #endif 00312 00313 typedef PVOID QUEUED_CLOSE; //FIXME : Doesn't exist in public headers 00314 00315 typedef struct _X_FILTER FDDI_FILTER, *PFDDI_FILTER; 00316 typedef struct _X_FILTER TR_FILTER, *PTR_FILTER; 00317 typedef struct _X_FILTER NULL_FILTER, *PNULL_FILTER; 00318 00319 typedef struct _NDIS_MINIPORT_BLOCK NDIS_MINIPORT_BLOCK, *PNDIS_MINIPORT_BLOCK; 00320 00321 typedef struct _REFERENCE { 00322 KSPIN_LOCK SpinLock; 00323 USHORT ReferenceCount; 00324 BOOLEAN Closing; 00325 } REFERENCE, *PREFERENCE; 00326 00327 /* NDIS base types */ 00328 00329 typedef struct _NDIS_SPIN_LOCK { 00330 KSPIN_LOCK SpinLock; 00331 KIRQL OldIrql; 00332 } NDIS_SPIN_LOCK, *PNDIS_SPIN_LOCK; 00333 00334 typedef struct _NDIS_EVENT { 00335 KEVENT Event; 00336 } NDIS_EVENT, *PNDIS_EVENT; 00337 00338 typedef PVOID NDIS_HANDLE, *PNDIS_HANDLE; 00339 00340 typedef ANSI_STRING NDIS_ANSI_STRING, *PNDIS_ANSI_STRING; 00341 typedef UNICODE_STRING NDIS_STRING, *PNDIS_STRING; 00342 00343 typedef MDL NDIS_BUFFER, *PNDIS_BUFFER; 00344 00345 /* NDIS_STATUS constants */ 00346 #define NDIS_STATUS_SUCCESS ((NDIS_STATUS)STATUS_SUCCESS) 00347 #define NDIS_STATUS_PENDING ((NDIS_STATUS)STATUS_PENDING) 00348 #define NDIS_STATUS_NOT_RECOGNIZED ((NDIS_STATUS)0x00010001L) 00349 #define NDIS_STATUS_NOT_COPIED ((NDIS_STATUS)0x00010002L) 00350 #define NDIS_STATUS_NOT_ACCEPTED ((NDIS_STATUS)0x00010003L) 00351 #define NDIS_STATUS_CALL_ACTIVE ((NDIS_STATUS)0x00010007L) 00352 #define NDIS_STATUS_INDICATION_REQUIRED ((NDIS_STATUS)STATUS_NDIS_INDICATION_REQUIRED) 00353 #define NDIS_STATUS_ONLINE ((NDIS_STATUS)0x40010003L) 00354 #define NDIS_STATUS_RESET_START ((NDIS_STATUS)0x40010004L) 00355 #define NDIS_STATUS_RESET_END ((NDIS_STATUS)0x40010005L) 00356 #define NDIS_STATUS_RING_STATUS ((NDIS_STATUS)0x40010006L) 00357 #define NDIS_STATUS_CLOSED ((NDIS_STATUS)0x40010007L) 00358 #define NDIS_STATUS_WAN_LINE_UP ((NDIS_STATUS)0x40010008L) 00359 #define NDIS_STATUS_WAN_LINE_DOWN ((NDIS_STATUS)0x40010009L) 00360 #define NDIS_STATUS_WAN_FRAGMENT ((NDIS_STATUS)0x4001000AL) 00361 #define NDIS_STATUS_MEDIA_CONNECT ((NDIS_STATUS)0x4001000BL) 00362 #define NDIS_STATUS_MEDIA_DISCONNECT ((NDIS_STATUS)0x4001000CL) 00363 #define NDIS_STATUS_HARDWARE_LINE_UP ((NDIS_STATUS)0x4001000DL) 00364 #define NDIS_STATUS_HARDWARE_LINE_DOWN ((NDIS_STATUS)0x4001000EL) 00365 #define NDIS_STATUS_INTERFACE_UP ((NDIS_STATUS)0x4001000FL) 00366 #define NDIS_STATUS_INTERFACE_DOWN ((NDIS_STATUS)0x40010010L) 00367 #define NDIS_STATUS_MEDIA_BUSY ((NDIS_STATUS)0x40010011L) 00368 #define NDIS_STATUS_MEDIA_SPECIFIC_INDICATION ((NDIS_STATUS)0x40010012L) 00369 #define NDIS_STATUS_WW_INDICATION NDIS_STATUS_MEDIA_SPECIFIC_INDICATION 00370 #define NDIS_STATUS_LINK_SPEED_CHANGE ((NDIS_STATUS)0x40010013L) 00371 #define NDIS_STATUS_WAN_GET_STATS ((NDIS_STATUS)0x40010014L) 00372 #define NDIS_STATUS_WAN_CO_FRAGMENT ((NDIS_STATUS)0x40010015L) 00373 #define NDIS_STATUS_WAN_CO_LINKPARAMS ((NDIS_STATUS)0x40010016L) 00374 #if NDIS_SUPPORT_NDIS6 00375 #define NDIS_STATUS_LINK_STATE ((NDIS_STATUS)0x40010017L) 00376 #define NDIS_STATUS_NETWORK_CHANGE ((NDIS_STATUS)0x40010018L) 00377 #define NDIS_STATUS_MEDIA_SPECIFIC_INDICATION_EX ((NDIS_STATUS)0x40010019L) 00378 #define NDIS_STATUS_PORT_STATE ((NDIS_STATUS)0x40010022L) 00379 #define NDIS_STATUS_OPER_STATUS ((NDIS_STATUS)0x40010023L) 00380 #define NDIS_STATUS_PACKET_FILTER ((NDIS_STATUS)0x40010024L) 00381 #endif /* NDIS_SUPPORT_NDIS6 */ 00382 #define NDIS_STATUS_WAN_CO_MTULINKPARAMS ((NDIS_STATUS)0x40010025L) 00383 00384 #if NDIS_SUPPORT_NDIS6 00385 00386 #define NDIS_STATUS_IP_OPER_STATUS ((NDIS_STATUS)0x40010026L) 00387 00388 #define NDIS_STATUS_OFFLOAD_PAUSE ((NDIS_STATUS)0x40020001L) 00389 #define NDIS_STATUS_UPLOAD_ALL ((NDIS_STATUS)0x40020002L) 00390 #define NDIS_STATUS_OFFLOAD_RESUME ((NDIS_STATUS)0x40020003L) 00391 #define NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS ((NDIS_STATUS)0x40020004L) 00392 #define NDIS_STATUS_OFFLOAD_STATE_INVALID ((NDIS_STATUS)0x40020005L) 00393 #define NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG ((NDIS_STATUS)0x40020006L) 00394 #define NDIS_STATUS_TASK_OFFLOAD_HARDWARE_CAPABILITIES ((NDIS_STATUS)0x40020007L) 00395 #define NDIS_STATUS_OFFLOAD_ENCASPULATION_CHANGE ((NDIS_STATUS)0x40020008L) 00396 #define NDIS_STATUS_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES ((NDIS_STATUS)0x4002000BL) 00397 00398 #if (NDIS_SUPPORT_NDIS61) 00399 #define NDIS_STATUS_HD_SPLIT_CURRENT_CONFIG ((NDIS_STATUS)0x4002000CL) 00400 #endif 00401 00402 #if (NDIS_SUPPORT_NDIS620) 00403 #define NDIS_STATUS_RECEIVE_QUEUE_STATE ((NDIS_STATUS)0x4002000DL) 00404 #endif 00405 00406 #define NDIS_STATUS_OFFLOAD_IM_RESERVED1 ((NDIS_STATUS)0x40020100L) 00407 #define NDIS_STATUS_OFFLOAD_IM_RESERVED2 ((NDIS_STATUS)0x40020101L) 00408 #define NDIS_STATUS_OFFLOAD_IM_RESERVED3 ((NDIS_STATUS)0x40020102L) 00409 00410 #define NDIS_STATUS_DOT11_SCAN_CONFIRM ((NDIS_STATUS)0x40030000L) 00411 #define NDIS_STATUS_DOT11_MPDU_MAX_LENGTH_CHANGED ((NDIS_STATUS)0x40030001L) 00412 #define NDIS_STATUS_DOT11_ASSOCIATION_START ((NDIS_STATUS)0x40030002L) 00413 #define NDIS_STATUS_DOT11_ASSOCIATION_COMPLETION ((NDIS_STATUS)0x40030003L) 00414 #define NDIS_STATUS_DOT11_CONNECTION_START ((NDIS_STATUS)0x40030004L) 00415 #define NDIS_STATUS_DOT11_CONNECTION_COMPLETION ((NDIS_STATUS)0x40030005L) 00416 #define NDIS_STATUS_DOT11_ROAMING_START ((NDIS_STATUS)0x40030006L) 00417 #define NDIS_STATUS_DOT11_ROAMING_COMPLETION ((NDIS_STATUS)0x40030007L) 00418 #define NDIS_STATUS_DOT11_DISASSOCIATION ((NDIS_STATUS)0x40030008L) 00419 #define NDIS_STATUS_DOT11_TKIPMIC_FAILURE ((NDIS_STATUS)0x40030009L) 00420 #define NDIS_STATUS_DOT11_PMKID_CANDIDATE_LIST ((NDIS_STATUS)0x4003000AL) 00421 #define NDIS_STATUS_DOT11_PHY_STATE_CHANGED ((NDIS_STATUS)0x4003000BL) 00422 #define NDIS_STATUS_DOT11_LINK_QUALITY ((NDIS_STATUS)0x4003000CL) 00423 #define NDIS_STATUS_DOT11_INCOMING_ASSOC_STARTED ((NDIS_STATUS)0x4003000DL) 00424 #define NDIS_STATUS_DOT11_INCOMING_ASSOC_REQUEST_RECEIVED ((NDIS_STATUS)0x4003000EL) 00425 #define NDIS_STATUS_DOT11_INCOMING_ASSOC_COMPLETION ((NDIS_STATUS)0x4003000FL) 00426 #define NDIS_STATUS_DOT11_STOP_AP ((NDIS_STATUS)0x40030010L) 00427 #define NDIS_STATUS_DOT11_PHY_FREQUENCY_ADOPTED ((NDIS_STATUS)0x40030011L) 00428 #define NDIS_STATUS_DOT11_CAN_SUSTAIN_AP ((NDIS_STATUS)0x40030012L) 00429 00430 #define NDIS_STATUS_WWAN_DEVICE_CAPS ((NDIS_STATUS)0x40041000) 00431 #define NDIS_STATUS_WWAN_READY_INFO ((NDIS_STATUS)0x40041001) 00432 #define NDIS_STATUS_WWAN_RADIO_STATE ((NDIS_STATUS)0x40041002) 00433 #define NDIS_STATUS_WWAN_PIN_INFO ((NDIS_STATUS)0x40041003) 00434 #define NDIS_STATUS_WWAN_PIN_LIST ((NDIS_STATUS)0x40041004) 00435 #define NDIS_STATUS_WWAN_HOME_PROVIDER ((NDIS_STATUS)0x40041005) 00436 #define NDIS_STATUS_WWAN_PREFERRED_PROVIDERS ((NDIS_STATUS)0x40041006) 00437 #define NDIS_STATUS_WWAN_VISIBLE_PROVIDERS ((NDIS_STATUS)0x40041007) 00438 #define NDIS_STATUS_WWAN_REGISTER_STATE ((NDIS_STATUS)0x40041008) 00439 #define NDIS_STATUS_WWAN_PACKET_SERVICE ((NDIS_STATUS)0x40041009) 00440 #define NDIS_STATUS_WWAN_SIGNAL_STATE ((NDIS_STATUS)0x4004100a) 00441 #define NDIS_STATUS_WWAN_CONTEXT_STATE ((NDIS_STATUS)0x4004100b) 00442 #define NDIS_STATUS_WWAN_PROVISIONED_CONTEXTS ((NDIS_STATUS)0x4004100c) 00443 #define NDIS_STATUS_WWAN_SERVICE_ACTIVATION ((NDIS_STATUS)0x4004100d) 00444 #define NDIS_STATUS_WWAN_SMS_CONFIGURATION ((NDIS_STATUS)0x4004100e) 00445 #define NDIS_STATUS_WWAN_SMS_RECEIVE ((NDIS_STATUS)0x4004100f) 00446 #define NDIS_STATUS_WWAN_SMS_SEND ((NDIS_STATUS)0x40041010) 00447 #define NDIS_STATUS_WWAN_SMS_DELETE ((NDIS_STATUS)0x40041011) 00448 #define NDIS_STATUS_WWAN_SMS_STATUS ((NDIS_STATUS)0x40041012) 00449 #define NDIS_STATUS_WWAN_DNS_ADDRESS ((NDIS_STATUS)0x40041013) 00450 00451 #define NDIS_STATUS_WWAN_VENDOR_SPECIFIC ((NDIS_STATUS)0x40043000) 00452 00453 #endif /* NDIS_SUPPORT_NDIS6 */ 00454 00455 #if (NDIS_SUPPORT_NDIS620) 00456 #define NDIS_STATUS_PM_WOL_PATTERN_REJECTED ((NDIS_STATUS)0x40030051L) 00457 #define NDIS_STATUS_PM_OFFLOAD_REJECTED ((NDIS_STATUS)0x40030052L) 00458 #define NDIS_STATUS_PM_CAPABILITIES_CHANGE ((NDIS_STATUS)0x40030053L) 00459 #endif 00460 00461 #define NDIS_STATUS_NOT_RESETTABLE ((NDIS_STATUS)0x80010001L) 00462 #define NDIS_STATUS_SOFT_ERRORS ((NDIS_STATUS)0x80010003L) 00463 #define NDIS_STATUS_HARD_ERRORS ((NDIS_STATUS)0x80010004L) 00464 #define NDIS_STATUS_BUFFER_OVERFLOW ((NDIS_STATUS)STATUS_BUFFER_OVERFLOW) 00465 #define NDIS_STATUS_FAILURE ((NDIS_STATUS)STATUS_UNSUCCESSFUL) 00466 #define NDIS_STATUS_RESOURCES ((NDIS_STATUS)STATUS_INSUFFICIENT_RESOURCES) 00467 #define NDIS_STATUS_CLOSING ((NDIS_STATUS)0xC0010002L) 00468 #define NDIS_STATUS_BAD_VERSION ((NDIS_STATUS)0xC0010004L) 00469 #define NDIS_STATUS_BAD_CHARACTERISTICS ((NDIS_STATUS)0xC0010005L) 00470 #define NDIS_STATUS_ADAPTER_NOT_FOUND ((NDIS_STATUS)0xC0010006L) 00471 #define NDIS_STATUS_OPEN_FAILED ((NDIS_STATUS)0xC0010007L) 00472 #define NDIS_STATUS_DEVICE_FAILED ((NDIS_STATUS)0xC0010008L) 00473 #define NDIS_STATUS_MULTICAST_FULL ((NDIS_STATUS)0xC0010009L) 00474 #define NDIS_STATUS_MULTICAST_EXISTS ((NDIS_STATUS)0xC001000AL) 00475 #define NDIS_STATUS_MULTICAST_NOT_FOUND ((NDIS_STATUS)0xC001000BL) 00476 #define NDIS_STATUS_REQUEST_ABORTED ((NDIS_STATUS)0xC001000CL) 00477 #define NDIS_STATUS_RESET_IN_PROGRESS ((NDIS_STATUS)0xC001000DL) 00478 #define NDIS_STATUS_CLOSING_INDICATING ((NDIS_STATUS)0xC001000EL) 00479 #define NDIS_STATUS_NOT_SUPPORTED ((NDIS_STATUS)STATUS_NOT_SUPPORTED) 00480 #define NDIS_STATUS_INVALID_PACKET ((NDIS_STATUS)0xC001000FL) 00481 #define NDIS_STATUS_OPEN_LIST_FULL ((NDIS_STATUS)0xC0010010L) 00482 #define NDIS_STATUS_ADAPTER_NOT_READY ((NDIS_STATUS)0xC0010011L) 00483 #define NDIS_STATUS_ADAPTER_NOT_OPEN ((NDIS_STATUS)0xC0010012L) 00484 #define NDIS_STATUS_NOT_INDICATING ((NDIS_STATUS)0xC0010013L) 00485 #define NDIS_STATUS_INVALID_LENGTH ((NDIS_STATUS)0xC0010014L) 00486 #define NDIS_STATUS_INVALID_DATA ((NDIS_STATUS)0xC0010015L) 00487 #define NDIS_STATUS_BUFFER_TOO_SHORT ((NDIS_STATUS)0xC0010016L) 00488 #define NDIS_STATUS_INVALID_OID ((NDIS_STATUS)0xC0010017L) 00489 #define NDIS_STATUS_ADAPTER_REMOVED ((NDIS_STATUS)0xC0010018L) 00490 #define NDIS_STATUS_UNSUPPORTED_MEDIA ((NDIS_STATUS)0xC0010019L) 00491 #define NDIS_STATUS_GROUP_ADDRESS_IN_USE ((NDIS_STATUS)0xC001001AL) 00492 #define NDIS_STATUS_FILE_NOT_FOUND ((NDIS_STATUS)0xC001001BL) 00493 #define NDIS_STATUS_ERROR_READING_FILE ((NDIS_STATUS)0xC001001CL) 00494 #define NDIS_STATUS_ALREADY_MAPPED ((NDIS_STATUS)0xC001001DL) 00495 #define NDIS_STATUS_RESOURCE_CONFLICT ((NDIS_STATUS)0xC001001EL) 00496 #define NDIS_STATUS_NO_CABLE ((NDIS_STATUS)0xC001001FL) 00497 00498 #define NDIS_STATUS_INVALID_SAP ((NDIS_STATUS)0xC0010020L) 00499 #define NDIS_STATUS_SAP_IN_USE ((NDIS_STATUS)0xC0010021L) 00500 #define NDIS_STATUS_INVALID_ADDRESS ((NDIS_STATUS)0xC0010022L) 00501 #define NDIS_STATUS_VC_NOT_ACTIVATED ((NDIS_STATUS)0xC0010023L) 00502 #define NDIS_STATUS_DEST_OUT_OF_ORDER ((NDIS_STATUS)0xC0010024L) 00503 #define NDIS_STATUS_VC_NOT_AVAILABLE ((NDIS_STATUS)0xC0010025L) 00504 #define NDIS_STATUS_CELLRATE_NOT_AVAILABLE ((NDIS_STATUS)0xC0010026L) 00505 #define NDIS_STATUS_INCOMPATABLE_QOS ((NDIS_STATUS)0xC0010027L) 00506 #define NDIS_STATUS_AAL_PARAMS_UNSUPPORTED ((NDIS_STATUS)0xC0010028L) 00507 #define NDIS_STATUS_NO_ROUTE_TO_DESTINATION ((NDIS_STATUS)0xC0010029L) 00508 00509 #define NDIS_STATUS_TOKEN_RING_OPEN_ERROR ((NDIS_STATUS)0xC0011000L) 00510 #define NDIS_STATUS_INVALID_DEVICE_REQUEST ((NDIS_STATUS)STATUS_INVALID_DEVICE_REQUEST) 00511 #define NDIS_STATUS_NETWORK_UNREACHABLE ((NDIS_STATUS)STATUS_NETWORK_UNREACHABLE) 00512 00513 #if NDIS_SUPPORT_NDIS6 00514 00515 #define NDIS_STATUS_SEND_ABORTED ((NDIS_STATUS)STATUS_NDIS_REQUEST_ABORTED) 00516 #define NDIS_STATUS_PAUSED ((NDIS_STATUS)STATUS_NDIS_PAUSED) 00517 #define NDIS_STATUS_INTERFACE_NOT_FOUND ((NDIS_STATUS)STATUS_NDIS_INTERFACE_NOT_FOUND) 00518 #define NDIS_STATUS_INVALID_PARAMETER ((NDIS_STATUS)STATUS_INVALID_PARAMETER) 00519 #define NDIS_STATUS_UNSUPPORTED_REVISION ((NDIS_STATUS)STATUS_NDIS_UNSUPPORTED_REVISION) 00520 #define NDIS_STATUS_INVALID_PORT ((NDIS_STATUS)STATUS_NDIS_INVALID_PORT) 00521 #define NDIS_STATUS_INVALID_PORT_STATE ((NDIS_STATUS)STATUS_NDIS_INVALID_PORT_STATE) 00522 #define NDIS_STATUS_INVALID_STATE ((NDIS_STATUS)STATUS_INVALID_DEVICE_STATE) 00523 #define NDIS_STATUS_MEDIA_DISCONNECTED ((NDIS_STATUS)STATUS_NDIS_MEDIA_DISCONNECTED) 00524 #define NDIS_STATUS_LOW_POWER_STATE ((NDIS_STATUS)STATUS_NDIS_LOW_POWER_STATE) 00525 #define NDIS_STATUS_DOT11_AUTO_CONFIG_ENABLED ((NDIS_STATUS)STATUS_NDIS_DOT11_AUTO_CONFIG_ENABLED) 00526 #define NDIS_STATUS_DOT11_MEDIA_IN_USE ((NDIS_STATUS)STATUS_NDIS_DOT11_MEDIA_IN_USE) 00527 #define NDIS_STATUS_DOT11_POWER_STATE_INVALID ((NDIS_STATUS)STATUS_NDIS_DOT11_POWER_STATE_INVALID) 00528 #define NDIS_STATUS_UPLOAD_IN_PROGRESS ((NDIS_STATUS)0xC0231001L) 00529 #define NDIS_STATUS_REQUEST_UPLOAD ((NDIS_STATUS)0xC0231002L) 00530 #define NDIS_STATUS_UPLOAD_REQUESTED ((NDIS_STATUS)0xC0231003L) 00531 #define NDIS_STATUS_OFFLOAD_TCP_ENTRIES ((NDIS_STATUS)0xC0231004L) 00532 #define NDIS_STATUS_OFFLOAD_PATH_ENTRIES ((NDIS_STATUS)0xC0231005L) 00533 #define NDIS_STATUS_OFFLOAD_NEIGHBOR_ENTRIES ((NDIS_STATUS)0xC0231006L) 00534 #define NDIS_STATUS_OFFLOAD_IP_ADDRESS_ENTRIES ((NDIS_STATUS)0xC0231007L) 00535 #define NDIS_STATUS_OFFLOAD_HW_ADDRESS_ENTRIES ((NDIS_STATUS)0xC0231008L) 00536 #define NDIS_STATUS_OFFLOAD_VLAN_ENTRIES ((NDIS_STATUS)0xC0231009L) 00537 #define NDIS_STATUS_OFFLOAD_TCP_XMIT_BUFFER ((NDIS_STATUS)0xC023100AL) 00538 #define NDIS_STATUS_OFFLOAD_TCP_RCV_BUFFER ((NDIS_STATUS)0xC023100BL) 00539 #define NDIS_STATUS_OFFLOAD_TCP_RCV_WINDOW ((NDIS_STATUS)0xC023100CL) 00540 #define NDIS_STATUS_OFFLOAD_VLAN_MISMATCH ((NDIS_STATUS)0xC023100DL) 00541 #define NDIS_STATUS_OFFLOAD_DATA_NOT_ACCEPTED ((NDIS_STATUS)0xC023100EL) 00542 #define NDIS_STATUS_OFFLOAD_POLICY ((NDIS_STATUS)0xC023100FL) 00543 #define NDIS_STATUS_OFFLOAD_DATA_PARTIALLY_ACCEPTED ((NDIS_STATUS)0xC0231010L) 00544 #define NDIS_STATUS_OFFLOAD_REQUEST_RESET ((NDIS_STATUS)0xC0231011L) 00545 00546 #if NDIS_SUPPORT_NDIS620 00547 #define NDIS_STATUS_PM_WOL_PATTERN_LIST_FULL ((NDIS_STATUS)STATUS_NDIS_PM_WOL_PATTERN_LIST_FULL) 00548 #define NDIS_STATUS_PM_PROTOCOL_OFFLOAD_LIST_FULL ((NDIS_STATUS)STATUS_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL) 00549 #endif 00550 00551 #endif /* NDIS_SUPPORT_NDIS6 */ 00552 00553 #if (NDIS_SUPPORT_NDIS620) 00554 #define NDIS_STATUS_OFFLOAD_CONNECTION_REJECTED ((NDIS_STATUS)STATUS_NDIS_OFFLOAD_CONNECTION_REJECTED) 00555 #endif 00556 00557 /* NDIS error codes for error logging */ 00558 00559 #define NDIS_ERROR_CODE ULONG 00560 00561 #define NDIS_ERROR_CODE_RESOURCE_CONFLICT EVENT_NDIS_RESOURCE_CONFLICT 00562 #define NDIS_ERROR_CODE_OUT_OF_RESOURCES EVENT_NDIS_OUT_OF_RESOURCE 00563 #define NDIS_ERROR_CODE_HARDWARE_FAILURE EVENT_NDIS_HARDWARE_FAILURE 00564 #define NDIS_ERROR_CODE_ADAPTER_NOT_FOUND EVENT_NDIS_ADAPTER_NOT_FOUND 00565 #define NDIS_ERROR_CODE_INTERRUPT_CONNECT EVENT_NDIS_INTERRUPT_CONNECT 00566 #define NDIS_ERROR_CODE_DRIVER_FAILURE EVENT_NDIS_DRIVER_FAILURE 00567 #define NDIS_ERROR_CODE_BAD_VERSION EVENT_NDIS_BAD_VERSION 00568 #define NDIS_ERROR_CODE_TIMEOUT EVENT_NDIS_TIMEOUT 00569 #define NDIS_ERROR_CODE_NETWORK_ADDRESS EVENT_NDIS_NETWORK_ADDRESS 00570 #define NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION EVENT_NDIS_UNSUPPORTED_CONFIGURATION 00571 #define NDIS_ERROR_CODE_INVALID_VALUE_FROM_ADAPTER EVENT_NDIS_INVALID_VALUE_FROM_ADAPTER 00572 #define NDIS_ERROR_CODE_MISSING_CONFIGURATION_PARAMETER EVENT_NDIS_MISSING_CONFIGURATION_PARAMETER 00573 #define NDIS_ERROR_CODE_BAD_IO_BASE_ADDRESS EVENT_NDIS_BAD_IO_BASE_ADDRESS 00574 #define NDIS_ERROR_CODE_RECEIVE_SPACE_SMALL EVENT_NDIS_RECEIVE_SPACE_SMALL 00575 #define NDIS_ERROR_CODE_ADAPTER_DISABLED EVENT_NDIS_ADAPTER_DISABLED 00576 00577 /* Memory allocation flags. Used by Ndis[Allocate|Free]Memory */ 00578 #define NDIS_MEMORY_CONTIGUOUS 0x00000001 00579 #define NDIS_MEMORY_NONCACHED 0x00000002 00580 00581 /* NIC attribute flags. Used by NdisMSetAttributes(Ex) */ 00582 #define NDIS_ATTRIBUTE_IGNORE_PACKET_TIMEOUT 0x00000001 00583 #define NDIS_ATTRIBUTE_IGNORE_REQUEST_TIMEOUT 0x00000002 00584 #define NDIS_ATTRIBUTE_IGNORE_TOKEN_RING_ERRORS 0x00000004 00585 #define NDIS_ATTRIBUTE_BUS_MASTER 0x00000008 00586 #define NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER 0x00000010 00587 #define NDIS_ATTRIBUTE_DESERIALIZE 0x00000020 00588 #define NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND 0x00000040 00589 #define NDIS_ATTRIBUTE_SURPRISE_REMOVE_OK 0x00000080 00590 #define NDIS_ATTRIBUTE_NOT_CO_NDIS 0x00000100 00591 #define NDIS_ATTRIBUTE_USES_SAFE_BUFFER_APIS 0x00000200 00592 00593 /* Lock */ 00594 00595 #if NDIS_SUPPORT_60_COMPATIBLE_API 00596 00597 typedef union _NDIS_RW_LOCK_REFCOUNT { 00598 UINT RefCount; 00599 UCHAR cacheLine[16]; 00600 } NDIS_RW_LOCK_REFCOUNT; 00601 00602 typedef struct _NDIS_RW_LOCK { 00603 __MINGW_EXTENSION union { 00604 __MINGW_EXTENSION struct { 00605 KSPIN_LOCK SpinLock; 00606 PVOID Context; 00607 }; 00608 UCHAR Reserved[16]; 00609 }; 00610 __MINGW_EXTENSION union { 00611 NDIS_RW_LOCK_REFCOUNT RefCount[MAXIMUM_PROCESSORS]; 00612 ULONG RefCountEx[sizeof(NDIS_RW_LOCK_REFCOUNT)/sizeof(ULONG) * MAXIMUM_PROCESSORS]; 00613 __MINGW_EXTENSION struct { 00614 KSPIN_LOCK RefCountLock; 00615 volatile ULONG SharedRefCount; 00616 volatile BOOLEAN WriterWaiting; 00617 }; 00618 }; 00619 } NDIS_RW_LOCK, *PNDIS_RW_LOCK; 00620 00621 typedef struct _LOCK_STATE { 00622 USHORT LockState; 00623 KIRQL OldIrql; 00624 } LOCK_STATE, *PLOCK_STATE; 00625 00626 #endif /* NDIS_SUPPORT_60_COMPATIBLE_API */ 00627 00628 /* Timer */ 00629 00630 _IRQL_requires_(DISPATCH_LEVEL) 00631 _IRQL_requires_same_ 00632 _Function_class_(NDIS_TIMER_FUNCTION) 00633 typedef VOID 00634 (NTAPI NDIS_TIMER_FUNCTION)( 00635 _In_ PVOID SystemSpecific1, 00636 _In_ PVOID FunctionContext, 00637 _In_ PVOID SystemSpecific2, 00638 _In_ PVOID SystemSpecific3); 00639 typedef NDIS_TIMER_FUNCTION *PNDIS_TIMER_FUNCTION; 00640 00641 typedef struct _NDIS_TIMER { 00642 KTIMER Timer; 00643 KDPC Dpc; 00644 } NDIS_TIMER, *PNDIS_TIMER; 00645 00646 /* Hardware */ 00647 00648 typedef CM_MCA_POS_DATA NDIS_MCA_POS_DATA, *PNDIS_MCA_POS_DATA; 00649 typedef CM_EISA_SLOT_INFORMATION NDIS_EISA_SLOT_INFORMATION, *PNDIS_EISA_SLOT_INFORMATION; 00650 typedef CM_EISA_FUNCTION_INFORMATION NDIS_EISA_FUNCTION_INFORMATION, *PNDIS_EISA_FUNCTION_INFORMATION; 00651 typedef CM_PARTIAL_RESOURCE_LIST NDIS_RESOURCE_LIST, *PNDIS_RESOURCE_LIST; 00652 00653 /* Flag bits */ 00654 #define READABLE_LOCAL_CLOCK 0x00000001 00655 #define CLOCK_NETWORK_DERIVED 0x00000002 00656 #define CLOCK_PRECISION 0x00000004 00657 #define RECEIVE_TIME_INDICATION_CAPABLE 0x00000008 00658 #define TIMED_SEND_CAPABLE 0x00000010 00659 #define TIME_STAMP_CAPABLE 0x00000020 00660 00661 /* NDIS packet filter bits (OID_GEN_CURRENT_PACKET_FILTER) */ 00662 #define NDIS_PACKET_TYPE_DIRECTED 0x00000001 00663 #define NDIS_PACKET_TYPE_MULTICAST 0x00000002 00664 #define NDIS_PACKET_TYPE_ALL_MULTICAST 0x00000004 00665 #define NDIS_PACKET_TYPE_BROADCAST 0x00000008 00666 #define NDIS_PACKET_TYPE_SOURCE_ROUTING 0x00000010 00667 #define NDIS_PACKET_TYPE_PROMISCUOUS 0x00000020 00668 #define NDIS_PACKET_TYPE_SMT 0x00000040 00669 #define NDIS_PACKET_TYPE_ALL_LOCAL 0x00000080 00670 #define NDIS_PACKET_TYPE_GROUP 0x00001000 00671 #define NDIS_PACKET_TYPE_ALL_FUNCTIONAL 0x00002000 00672 #define NDIS_PACKET_TYPE_FUNCTIONAL 0x00004000 00673 #define NDIS_PACKET_TYPE_MAC_FRAME 0x00008000 00674 00675 /* NDIS protocol option bits (OID_GEN_PROTOCOL_OPTIONS) */ 00676 #define NDIS_PROT_OPTION_ESTIMATED_LENGTH 0x00000001 00677 #define NDIS_PROT_OPTION_NO_LOOPBACK 0x00000002 00678 #define NDIS_PROT_OPTION_NO_RSVD_ON_RCVPKT 0x00000004 00679 00680 /* NDIS MAC option bits (OID_GEN_MAC_OPTIONS) */ 00681 #define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA 0x00000001 00682 #define NDIS_MAC_OPTION_RECEIVE_SERIALIZED 0x00000002 00683 #define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND 0x00000004 00684 #define NDIS_MAC_OPTION_NO_LOOPBACK 0x00000008 00685 #define NDIS_MAC_OPTION_FULL_DUPLEX 0x00000010 00686 #define NDIS_MAC_OPTION_EOTX_INDICATION 0x00000020 00687 #define NDIS_MAC_OPTION_8021P_PRIORITY 0x00000040 00688 #define NDIS_MAC_OPTION_RESERVED 0x80000000 00689 00690 #define NDIS_GUID_TO_OID 0x00000001 00691 #define NDIS_GUID_TO_STATUS 0x00000002 00692 #define NDIS_GUID_ANSI_STRING 0x00000004 00693 #define NDIS_GUID_UNICODE_STRING 0x00000008 00694 #define NDIS_GUID_ARRAY 0x00000010 00695 00696 #if NDIS_LEGACY_DRIVER 00697 00698 /* NDIS_PACKET_PRIVATE.Flags constants */ 00699 #define fPACKET_WRAPPER_RESERVED 0x3f 00700 #define fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO 0x40 00701 #define fPACKET_ALLOCATED_BY_NDIS 0x80 00702 00703 #define NDIS_FLAGS_PROTOCOL_ID_MASK 0x0000000f 00704 #define NDIS_FLAGS_MULTICAST_PACKET 0x00000010 00705 #define NDIS_FLAGS_RESERVED2 0x00000020 00706 #define NDIS_FLAGS_RESERVED3 0x00000040 00707 #define NDIS_FLAGS_DONT_LOOPBACK 0x00000080 00708 #define NDIS_FLAGS_IS_LOOPBACK_PACKET 0x00000100 00709 #define NDIS_FLAGS_LOOPBACK_ONLY 0x00000200 00710 #define NDIS_FLAGS_RESERVED4 0x00000400 00711 #define NDIS_FLAGS_DOUBLE_BUFFERED 0x00000800 00712 #define NDIS_FLAGS_SENT_AT_DPC 0x00001000 00713 #define NDIS_FLAGS_USES_SG_BUFFER_LIST 0x00002000 00714 #define NDIS_FLAGS_USES_ORIGINAL_PACKET 0x00004000 00715 #define NDIS_FLAGS_PADDED 0x00010000 00716 #define NDIS_FLAGS_XLATE_AT_TOP 0x00020000 00717 00718 typedef NDIS_HANDLE PNDIS_PACKET_POOL; 00719 00720 typedef struct _NDIS_PACKET_PRIVATE { 00721 UINT PhysicalCount; 00722 UINT TotalLength; 00723 PNDIS_BUFFER Head; 00724 PNDIS_BUFFER Tail; 00725 PNDIS_PACKET_POOL Pool; 00726 UINT Count; 00727 ULONG Flags; 00728 BOOLEAN ValidCounts; 00729 UCHAR NdisPacketFlags; 00730 USHORT NdisPacketOobOffset; 00731 } NDIS_PACKET_PRIVATE, *PNDIS_PACKET_PRIVATE; 00732 00733 typedef struct _NDIS_PACKET { 00734 NDIS_PACKET_PRIVATE Private; 00735 __MINGW_EXTENSION union { 00736 __MINGW_EXTENSION struct { 00737 UCHAR MiniportReserved[2 * sizeof(PVOID)]; 00738 UCHAR WrapperReserved[2 * sizeof(PVOID)]; 00739 }; 00740 __MINGW_EXTENSION struct { 00741 UCHAR MiniportReservedEx[3 * sizeof(PVOID)]; 00742 UCHAR WrapperReservedEx[sizeof(PVOID)]; 00743 }; 00744 __MINGW_EXTENSION struct { 00745 UCHAR MacReserved[4 * sizeof(PVOID)]; 00746 }; 00747 }; 00748 ULONG_PTR Reserved[2]; 00749 UCHAR ProtocolReserved[1]; 00750 } NDIS_PACKET, *PNDIS_PACKET, **PPNDIS_PACKET; 00751 00752 typedef struct _NDIS_PACKET_STACK { 00753 ULONG_PTR IMReserved[2]; 00754 ULONG_PTR NdisReserved[4]; 00755 } NDIS_PACKET_STACK, *PNDIS_PACKET_STACK; 00756 00757 #endif /* NDIS_LEGACY_DRIVER */ 00758 00759 typedef enum _NDIS_CLASS_ID { 00760 NdisClass802_3Priority, 00761 NdisClassWirelessWanMbxMailbox, 00762 NdisClassIrdaPacketInfo, 00763 NdisClassAtmAALInfo 00764 } NDIS_CLASS_ID; 00765 00766 typedef struct _MEDIA_SPECIFIC_INFORMATION { 00767 UINT NextEntryOffset; 00768 NDIS_CLASS_ID ClassId; 00769 UINT Size; 00770 UCHAR ClassInformation[1]; 00771 } MEDIA_SPECIFIC_INFORMATION, *PMEDIA_SPECIFIC_INFORMATION; 00772 00773 #if NDIS_LEGACY_DRIVER 00774 typedef struct _NDIS_PACKET_OOB_DATA { 00775 __MINGW_EXTENSION union { 00776 ULONGLONG TimeToSend; 00777 ULONGLONG TimeSent; 00778 }; 00779 ULONGLONG TimeReceived; 00780 UINT HeaderSize; 00781 UINT SizeMediaSpecificInfo; 00782 PVOID MediaSpecificInformation; 00783 NDIS_STATUS Status; 00784 } NDIS_PACKET_OOB_DATA, *PNDIS_PACKET_OOB_DATA; 00785 #endif 00786 00787 /* Request types used by NdisRequest */ 00788 typedef enum _NDIS_REQUEST_TYPE { 00789 NdisRequestQueryInformation, 00790 NdisRequestSetInformation, 00791 NdisRequestQueryStatistics, 00792 NdisRequestOpen, 00793 NdisRequestClose, 00794 NdisRequestSend, 00795 NdisRequestTransferData, 00796 NdisRequestReset, 00797 NdisRequestGeneric1, 00798 NdisRequestGeneric2, 00799 NdisRequestGeneric3, 00800 NdisRequestGeneric4, 00801 #if NDIS_SUPPORT_NDIS6 00802 NdisRequestMethod, 00803 #endif 00804 } NDIS_REQUEST_TYPE, *PNDIS_REQUEST_TYPE; 00805 00806 #if NDIS_LEGACY_DRIVER 00807 typedef struct _NDIS_REQUEST { 00808 UCHAR MacReserved[4 * sizeof(PVOID)]; 00809 NDIS_REQUEST_TYPE RequestType; 00810 union _DATA { 00811 struct QUERY_INFORMATION { 00812 NDIS_OID Oid; 00813 PVOID InformationBuffer; 00814 UINT InformationBufferLength; 00815 UINT BytesWritten; 00816 UINT BytesNeeded; 00817 } QUERY_INFORMATION; 00818 struct SET_INFORMATION { 00819 NDIS_OID Oid; 00820 PVOID InformationBuffer; 00821 UINT InformationBufferLength; 00822 UINT BytesRead; 00823 UINT BytesNeeded; 00824 } SET_INFORMATION; 00825 } DATA; 00826 #if (defined(NDIS50) || defined(NDIS51) || defined(NDIS50_MINIPORT) || defined(NDIS51_MINIPORT)) 00827 UCHAR NdisReserved[9 * sizeof(PVOID)]; 00828 __MINGW_EXTENSION union { 00829 UCHAR CallMgrReserved[2 * sizeof(PVOID)]; 00830 UCHAR ProtocolReserved[2 * sizeof(PVOID)]; 00831 }; 00832 UCHAR MiniportReserved[2 * sizeof(PVOID)]; 00833 #endif 00834 } NDIS_REQUEST, *PNDIS_REQUEST; 00835 #endif /* NDIS_LEGACY_DRIVER */ 00836 00837 /* Wide Area Networks definitions */ 00838 00839 #if NDIS_LEGACY_DRIVER 00840 typedef struct _NDIS_WAN_PACKET { 00841 LIST_ENTRY WanPacketQueue; 00842 PUCHAR CurrentBuffer; 00843 ULONG CurrentLength; 00844 PUCHAR StartBuffer; 00845 PUCHAR EndBuffer; 00846 PVOID ProtocolReserved1; 00847 PVOID ProtocolReserved2; 00848 PVOID ProtocolReserved3; 00849 PVOID ProtocolReserved4; 00850 PVOID MacReserved1; 00851 PVOID MacReserved2; 00852 PVOID MacReserved3; 00853 PVOID MacReserved4; 00854 } NDIS_WAN_PACKET, *PNDIS_WAN_PACKET; 00855 #endif 00856 00857 /* DMA channel information */ 00858 00859 typedef struct _NDIS_DMA_DESCRIPTION { 00860 BOOLEAN DemandMode; 00861 BOOLEAN AutoInitialize; 00862 BOOLEAN DmaChannelSpecified; 00863 DMA_WIDTH DmaWidth; 00864 DMA_SPEED DmaSpeed; 00865 ULONG DmaPort; 00866 ULONG DmaChannel; 00867 } NDIS_DMA_DESCRIPTION, *PNDIS_DMA_DESCRIPTION; 00868 00869 typedef struct _NDIS_DMA_BLOCK { 00870 PVOID MapRegisterBase; 00871 KEVENT AllocationEvent; 00872 PADAPTER_OBJECT SystemAdapterObject; 00873 PVOID Miniport; 00874 BOOLEAN InProgress; 00875 } NDIS_DMA_BLOCK, *PNDIS_DMA_BLOCK; 00876 00877 typedef UCHAR NDIS_DMA_SIZE; 00878 00879 #define NDIS_DMA_24BITS ((NDIS_DMA_SIZE)0) 00880 #define NDIS_DMA_32BITS ((NDIS_DMA_SIZE)1) 00881 #define NDIS_DMA_64BITS ((NDIS_DMA_SIZE)2) 00882 00883 typedef enum _NDIS_PROCESSOR_TYPE { 00884 NdisProcessorX86, 00885 NdisProcessorMips, 00886 NdisProcessorAlpha, 00887 NdisProcessorPpc, 00888 NdisProcessorAmd64, 00889 NdisProcessorIA64 00890 } NDIS_PROCESSOR_TYPE, *PNDIS_PROCESSOR_TYPE; 00891 00892 typedef enum _NDIS_ENVIRONMENT_TYPE { 00893 NdisEnvironmentWindows, 00894 NdisEnvironmentWindowsNt 00895 } NDIS_ENVIRONMENT_TYPE, *PNDIS_ENVIRONMENT_TYPE; 00896 00897 /* Possible hardware architecture */ 00898 typedef enum _NDIS_INTERFACE_TYPE { 00899 NdisInterfaceInternal = Internal, 00900 NdisInterfaceIsa = Isa, 00901 NdisInterfaceEisa = Eisa, 00902 NdisInterfaceMca = MicroChannel, 00903 NdisInterfaceTurboChannel = TurboChannel, 00904 NdisInterfacePci = PCIBus, 00905 NdisInterfacePcMcia = PCMCIABus, 00906 NdisInterfaceCBus = CBus, 00907 NdisInterfaceMPIBus = MPIBus, 00908 NdisInterfaceMPSABus = MPSABus, 00909 NdisInterfaceProcessorInternal = ProcessorInternal, 00910 NdisInterfaceInternalPowerBus = InternalPowerBus, 00911 NdisInterfacePNPISABus = PNPISABus, 00912 NdisInterfacePNPBus = PNPBus, 00913 NdisInterfaceUSB, 00914 NdisInterfaceIrda, 00915 NdisInterface1394, 00916 NdisMaximumInterfaceType 00917 } NDIS_INTERFACE_TYPE, *PNDIS_INTERFACE_TYPE; 00918 00919 #define NdisInterruptLevelSensitive LevelSensitive 00920 #define NdisInterruptLatched Latched 00921 00922 typedef KINTERRUPT_MODE NDIS_INTERRUPT_MODE, *PNDIS_INTERRUPT_MODE; 00923 00924 typedef enum _NDIS_PARAMETER_TYPE { 00925 NdisParameterInteger, 00926 NdisParameterHexInteger, 00927 NdisParameterString, 00928 NdisParameterMultiString, 00929 NdisParameterBinary 00930 } NDIS_PARAMETER_TYPE, *PNDIS_PARAMETER_TYPE; 00931 00932 typedef struct _BINARY_DATA { 00933 USHORT Length; 00934 _Field_size_bytes_(Length) PVOID Buffer; 00935 } BINARY_DATA; 00936 00937 typedef struct _NDIS_CONFIGURATION_PARAMETER { 00938 NDIS_PARAMETER_TYPE ParameterType; 00939 union { 00940 ULONG IntegerData; 00941 NDIS_STRING StringData; 00942 BINARY_DATA BinaryData; 00943 } ParameterData; 00944 } NDIS_CONFIGURATION_PARAMETER, *PNDIS_CONFIGURATION_PARAMETER; 00945 00946 typedef PHYSICAL_ADDRESS NDIS_PHYSICAL_ADDRESS, *PNDIS_PHYSICAL_ADDRESS; 00947 00948 typedef struct _NDIS_PHYSICAL_ADDRESS_UNIT { 00949 NDIS_PHYSICAL_ADDRESS PhysicalAddress; 00950 UINT Length; 00951 } NDIS_PHYSICAL_ADDRESS_UNIT, *PNDIS_PHYSICAL_ADDRESS_UNIT; 00952 00953 typedef struct _NDIS_WAN_LINE_DOWN { 00954 UCHAR RemoteAddress[6]; 00955 UCHAR LocalAddress[6]; 00956 } NDIS_WAN_LINE_DOWN, *PNDIS_WAN_LINE_DOWN; 00957 00958 typedef struct _NDIS_WAN_LINE_UP { 00959 ULONG LinkSpeed; 00960 ULONG MaximumTotalSize; 00961 NDIS_WAN_QUALITY Quality; 00962 USHORT SendWindow; 00963 UCHAR RemoteAddress[6]; 00964 OUT UCHAR LocalAddress[6]; 00965 ULONG ProtocolBufferLength; 00966 PUCHAR ProtocolBuffer; 00967 USHORT ProtocolType; 00968 NDIS_STRING DeviceName; 00969 } NDIS_WAN_LINE_UP, *PNDIS_WAN_LINE_UP; 00970 00971 typedef NTSTATUS 00972 (NTAPI *TDI_REGISTER_CALLBACK)( 00973 _In_ PUNICODE_STRING DeviceName, 00974 _Out_ HANDLE *TdiHandle); 00975 00976 typedef NTSTATUS 00977 (NTAPI *TDI_PNP_HANDLER)( 00978 _In_ PUNICODE_STRING UpperComponent, 00979 _In_ PUNICODE_STRING LowerComponent, 00980 _In_ PUNICODE_STRING BindList, 00981 _In_ PVOID ReconfigBuffer, 00982 _In_ UINT ReconfigBufferSize, 00983 _In_ UINT Operation); 00984 00985 typedef struct _OID_LIST OID_LIST, *POID_LIST; 00986 00987 /* PnP state */ 00988 00989 typedef enum _NDIS_PNP_DEVICE_STATE { 00990 NdisPnPDeviceAdded, 00991 NdisPnPDeviceStarted, 00992 NdisPnPDeviceQueryStopped, 00993 NdisPnPDeviceStopped, 00994 NdisPnPDeviceQueryRemoved, 00995 NdisPnPDeviceRemoved, 00996 NdisPnPDeviceSurpriseRemoved 00997 } NDIS_PNP_DEVICE_STATE; 00998 00999 #define NDIS_DEVICE_NOT_STOPPABLE 0x00000001 01000 #define NDIS_DEVICE_NOT_REMOVEABLE 0x00000002 01001 #define NDIS_DEVICE_NOT_SUSPENDABLE 0x00000004 01002 #define NDIS_DEVICE_DISABLE_PM 0x00000008 01003 #define NDIS_DEVICE_DISABLE_WAKE_UP 0x00000010 01004 #define NDIS_DEVICE_DISABLE_WAKE_ON_RECONNECT 0x00000020 01005 #define NDIS_DEVICE_RESERVED 0x00000040 01006 #define NDIS_DEVICE_DISABLE_WAKE_ON_MAGIC_PACKET 0x00000080 01007 #define NDIS_DEVICE_DISABLE_WAKE_ON_PATTERN_MATCH 0x00000100 01008 01009 /* Protocol types supported by NDIS */ 01010 #define NDIS_PROTOCOL_ID_DEFAULT 0x00 01011 #define NDIS_PROTOCOL_ID_TCP_IP 0x02 01012 #define NDIS_PROTOCOL_ID_IPX 0x06 01013 #define NDIS_PROTOCOL_ID_NBF 0x07 01014 #define NDIS_PROTOCOL_ID_MAX 0x0F 01015 #define NDIS_PROTOCOL_ID_MASK 0x0F 01016 01017 typedef ULONG NDIS_AF, *PNDIS_AF; 01018 01019 #define CO_ADDRESS_FAMILY_Q2931 ((NDIS_AF)0x1) 01020 #define CO_ADDRESS_FAMILY_PSCHED ((NDIS_AF)0x2) 01021 #define CO_ADDRESS_FAMILY_L2TP ((NDIS_AF)0x3) 01022 #define CO_ADDRESS_FAMILY_IRDA ((NDIS_AF)0x4) 01023 #define CO_ADDRESS_FAMILY_1394 ((NDIS_AF)0x5) 01024 #define CO_ADDRESS_FAMILY_PPP ((NDIS_AF)0x6) 01025 #define CO_ADDRESS_FAMILY_INFINIBAND ((NDIS_AF)0x7) 01026 #define CO_ADDRESS_FAMILY_TAPI ((NDIS_AF)0x800) 01027 #define CO_ADDRESS_FAMILY_TAPI_PROXY ((NDIS_AF)0x801) 01028 01029 #define CO_ADDRESS_FAMILY_PROXY 0x80000000 01030 01031 typedef struct _CO_ADDRESS_FAMILY { 01032 NDIS_AF AddressFamily; 01033 ULONG MajorVersion; 01034 ULONG MinorVersion; 01035 } CO_ADDRESS_FAMILY, *PCO_ADDRESS_FAMILY; 01036 01037 typedef struct _CO_SPECIFIC_PARAMETERS { 01038 ULONG ParamType; 01039 ULONG Length; 01040 UCHAR Parameters[1]; 01041 } CO_SPECIFIC_PARAMETERS, *PCO_SPECIFIC_PARAMETERS; 01042 01043 typedef struct _CO_CALL_MANAGER_PARAMETERS { 01044 FLOWSPEC Transmit; 01045 FLOWSPEC Receive; 01046 CO_SPECIFIC_PARAMETERS CallMgrSpecific; 01047 } CO_CALL_MANAGER_PARAMETERS, *PCO_CALL_MANAGER_PARAMETERS; 01048 01049 /* CO_MEDIA_PARAMETERS.Flags constants */ 01050 #define RECEIVE_TIME_INDICATION 0x00000001 01051 #define USE_TIME_STAMPS 0x00000002 01052 #define TRANSMIT_VC 0x00000004 01053 #define RECEIVE_VC 0x00000008 01054 #define INDICATE_ERRED_PACKETS 0x00000010 01055 #define INDICATE_END_OF_TX 0x00000020 01056 #define RESERVE_RESOURCES_VC 0x00000040 01057 #define ROUND_DOWN_FLOW 0x00000080 01058 #define ROUND_UP_FLOW 0x00000100 01059 01060 typedef struct _CO_MEDIA_PARAMETERS { 01061 ULONG Flags; 01062 ULONG ReceivePriority; 01063 ULONG ReceiveSizeHint; 01064 CO_SPECIFIC_PARAMETERS MediaSpecific; 01065 } CO_MEDIA_PARAMETERS, *PCO_MEDIA_PARAMETERS; 01066 01067 /* CO_CALL_PARAMETERS.Flags constants */ 01068 #define PERMANENT_VC 0x00000001 01069 #define CALL_PARAMETERS_CHANGED 0x00000002 01070 #define QUERY_CALL_PARAMETERS 0x00000004 01071 #define BROADCAST_VC 0x00000008 01072 #define MULTIPOINT_VC 0x00000010 01073 01074 typedef struct _CO_CALL_PARAMETERS { 01075 ULONG Flags; 01076 PCO_CALL_MANAGER_PARAMETERS CallMgrParameters; 01077 PCO_MEDIA_PARAMETERS MediaParameters; 01078 } CO_CALL_PARAMETERS, *PCO_CALL_PARAMETERS; 01079 01080 typedef struct _CO_SAP { 01081 ULONG SapType; 01082 ULONG SapLength; 01083 UCHAR Sap[1]; 01084 } CO_SAP, *PCO_SAP; 01085 01086 #if NDIS_LEGACY_DRIVER 01087 typedef struct _NDIS_IPSEC_PACKET_INFO { 01088 __MINGW_EXTENSION union { 01089 struct { 01090 NDIS_HANDLE OffloadHandle; 01091 NDIS_HANDLE NextOffloadHandle; 01092 } Transmit; 01093 struct { 01094 ULONG SA_DELETE_REQ:1; 01095 ULONG CRYPTO_DONE:1; 01096 ULONG NEXT_CRYPTO_DONE:1; 01097 ULONG CryptoStatus; 01098 } Receive; 01099 }; 01100 } NDIS_IPSEC_PACKET_INFO, *PNDIS_IPSEC_PACKET_INFO; 01101 #endif 01102 01103 #if (NDIS_SUPPORT_NDIS6 || NDIS60) 01104 typedef struct _NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO { 01105 __MINGW_EXTENSION union { 01106 struct { 01107 NDIS_HANDLE OffloadHandle; 01108 } Transmit; 01109 struct { 01110 USHORT SaDeleteReq:1; 01111 USHORT CryptoDone:1; 01112 USHORT NextCryptoDone:1; 01113 USHORT Pad:13; 01114 USHORT CryptoStatus; 01115 } Receive; 01116 }; 01117 } NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO, *PNDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO; 01118 #endif 01119 01120 /* NDIS_MAC_FRAGMENT.Errors constants */ 01121 #define WAN_ERROR_CRC 0x00000001 01122 #define WAN_ERROR_FRAMING 0x00000002 01123 #define WAN_ERROR_HARDWAREOVERRUN 0x00000004 01124 #define WAN_ERROR_BUFFEROVERRUN 0x00000008 01125 #define WAN_ERROR_TIMEOUT 0x00000010 01126 #define WAN_ERROR_ALIGNMENT 0x00000020 01127 01128 typedef struct _NDIS_MAC_FRAGMENT { 01129 NDIS_HANDLE NdisLinkContext; 01130 ULONG Errors; 01131 } NDIS_MAC_FRAGMENT, *PNDIS_MAC_FRAGMENT; 01132 01133 typedef struct _NDIS_MAC_LINE_DOWN { 01134 NDIS_HANDLE NdisLinkContext; 01135 } NDIS_MAC_LINE_DOWN, *PNDIS_MAC_LINE_DOWN; 01136 01137 typedef struct _NDIS_MAC_LINE_UP { 01138 ULONG LinkSpeed; 01139 NDIS_WAN_QUALITY Quality; 01140 USHORT SendWindow; 01141 NDIS_HANDLE ConnectionWrapperID; 01142 NDIS_HANDLE NdisLinkHandle; 01143 NDIS_HANDLE NdisLinkContext; 01144 } NDIS_MAC_LINE_UP, *PNDIS_MAC_LINE_UP; 01145 01146 typedef struct _NDIS_PACKET_8021Q_INFO { 01147 __MINGW_EXTENSION union { 01148 struct { 01149 UINT32 UserPriority:3; 01150 UINT32 CanonicalFormatId:1; 01151 UINT32 VlanId:12; 01152 UINT32 Reserved:16; 01153 } TagHeader; 01154 PVOID Value; 01155 }; 01156 } NDIS_PACKET_8021Q_INFO, *PNDIS_PACKET_8021Q_INFO; 01157 01158 typedef enum _NDIS_PER_PACKET_INFO { 01159 TcpIpChecksumPacketInfo, 01160 IpSecPacketInfo, 01161 TcpLargeSendPacketInfo, 01162 ClassificationHandlePacketInfo, 01163 NdisReserved, 01164 ScatterGatherListPacketInfo, 01165 Ieee8021QInfo, 01166 OriginalPacketInfo, 01167 PacketCancelId, 01168 OriginalNetBufferList, 01169 CachedNetBufferList, 01170 ShortPacketPaddingInfo, 01171 MaxPerPacketInfo 01172 } NDIS_PER_PACKET_INFO, *PNDIS_PER_PACKET_INFO; 01173 01174 #if NDIS_LEGACY_DRIVER 01175 01176 typedef struct _NDIS_PACKET_EXTENSION { 01177 PVOID NdisPacketInfo[MaxPerPacketInfo]; 01178 } NDIS_PACKET_EXTENSION, *PNDIS_PACKET_EXTENSION; 01179 01180 typedef enum _NDIS_TASK { 01181 TcpIpChecksumNdisTask, 01182 IpSecNdisTask, 01183 TcpLargeSendNdisTask, 01184 MaxNdisTask 01185 } NDIS_TASK, *PNDIS_TASK; 01186 01187 typedef enum _NDIS_ENCAPSULATION { 01188 UNSPECIFIED_Encapsulation, 01189 NULL_Encapsulation, 01190 IEEE_802_3_Encapsulation, 01191 IEEE_802_5_Encapsulation, 01192 LLC_SNAP_ROUTED_Encapsulation, 01193 LLC_SNAP_BRIDGED_Encapsulation 01194 } NDIS_ENCAPSULATION; 01195 01196 typedef struct _NDIS_ENCAPSULATION_FORMAT { 01197 NDIS_ENCAPSULATION Encapsulation; 01198 struct { 01199 ULONG FixedHeaderSize:1; 01200 ULONG Reserved:31; 01201 } Flags; 01202 ULONG EncapsulationHeaderSize; 01203 } NDIS_ENCAPSULATION_FORMAT, *PNDIS_ENCAPSULATION_FORMAT; 01204 01205 typedef struct _NDIS_TASK_OFFLOAD_HEADER { 01206 ULONG Version; 01207 ULONG Size; 01208 ULONG Reserved; 01209 ULONG OffsetFirstTask; 01210 NDIS_ENCAPSULATION_FORMAT EncapsulationFormat; 01211 } NDIS_TASK_OFFLOAD_HEADER, *PNDIS_TASK_OFFLOAD_HEADER; 01212 01213 typedef struct _NDIS_TASK_OFFLOAD { 01214 ULONG Version; 01215 ULONG Size; 01216 NDIS_TASK Task; 01217 ULONG OffsetNextTask; 01218 ULONG TaskBufferLength; 01219 UCHAR TaskBuffer[1]; 01220 } NDIS_TASK_OFFLOAD, *PNDIS_TASK_OFFLOAD; 01221 01222 typedef struct _NDIS_TASK_TCP_IP_CHECKSUM { 01223 struct { 01224 ULONG IpOptionsSupported:1; 01225 ULONG TcpOptionsSupported:1; 01226 ULONG TcpChecksum:1; 01227 ULONG UdpChecksum:1; 01228 ULONG IpChecksum:1; 01229 } V4Transmit; 01230 struct { 01231 ULONG IpOptionsSupported:1; 01232 ULONG TcpOptionsSupported:1; 01233 ULONG TcpChecksum:1; 01234 ULONG UdpChecksum:1; 01235 ULONG IpChecksum:1; 01236 } V4Receive; 01237 struct { 01238 ULONG IpOptionsSupported:1; 01239 ULONG TcpOptionsSupported:1; 01240 ULONG TcpChecksum:1; 01241 ULONG UdpChecksum:1; 01242 } V6Transmit; 01243 struct { 01244 ULONG IpOptionsSupported:1; 01245 ULONG TcpOptionsSupported:1; 01246 ULONG TcpChecksum:1; 01247 ULONG UdpChecksum:1; 01248 } V6Receive; 01249 } NDIS_TASK_TCP_IP_CHECKSUM, *PNDIS_TASK_TCP_IP_CHECKSUM; 01250 01251 #define NDIS_TASK_TCP_LARGE_SEND_V0 0 01252 01253 typedef struct _NDIS_TASK_TCP_LARGE_SEND { 01254 ULONG Version; 01255 ULONG MaxOffLoadSize; 01256 ULONG MinSegmentCount; 01257 BOOLEAN TcpOptions; 01258 BOOLEAN IpOptions; 01259 } NDIS_TASK_TCP_LARGE_SEND, *PNDIS_TASK_TCP_LARGE_SEND; 01260 01261 typedef struct _NDIS_TASK_IPSEC { 01262 struct { 01263 ULONG AH_ESP_COMBINED; 01264 ULONG TRANSPORT_TUNNEL_COMBINED; 01265 ULONG V4_OPTIONS; 01266 ULONG RESERVED; 01267 } Supported; 01268 struct { 01269 ULONG MD5:1; 01270 ULONG SHA_1:1; 01271 ULONG Transport:1; 01272 ULONG Tunnel:1; 01273 ULONG Send:1; 01274 ULONG Receive:1; 01275 } V4AH; 01276 struct { 01277 ULONG DES:1; 01278 ULONG RESERVED:1; 01279 ULONG TRIPLE_DES:1; 01280 ULONG NULL_ESP:1; 01281 ULONG Transport:1; 01282 ULONG Tunnel:1; 01283 ULONG Send:1; 01284 ULONG Receive:1; 01285 } V4ESP; 01286 } NDIS_TASK_IPSEC, *PNDIS_TASK_IPSEC; 01287 01288 #endif /* NDIS_LEGACY_DRIVER */ 01289 01290 #define IPSEC_TPT_UDPESP_ENCAPTYPE_IKE 0x00000001 01291 #define IPSEC_TUN_UDPESP_ENCAPTYPE_IKE 0x00000002 01292 #define IPSEC_TPTOVERTUN_UDPESP_ENCAPTYPE_IKE 0x00000004 01293 #define IPSEC_TPT_UDPESP_OVER_PURE_TUN_ENCAPTYPE_IKE 0x00000008 01294 #define IPSEC_TPT_UDPESP_ENCAPTYPE_OTHER 0x00000010 01295 #define IPSEC_TUN_UDPESP_ENCAPTYPE_OTHER 0x00000020 01296 #define IPSEC_TPTOVERTUN_UDPESP_ENCAPTYPE_OTHER 0x00000040 01297 #define IPSEC_TPT_UDPESP_OVER_PURE_TUN_ENCAPTYPE_OTHER 0x00000080 01298 01299 #if NDIS_LEGACY_DRIVER 01300 01301 /* 01302 * PNDIS_PACKET 01303 * NDIS_GET_ORIGINAL_PACKET( 01304 * IN PNDIS_PACKET Packet); 01305 */ 01306 #define NDIS_GET_ORIGINAL_PACKET(Packet) \ 01307 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, OriginalPacketInfo) 01308 01309 /* 01310 * PVOID 01311 * NDIS_GET_PACKET_CANCEL_ID( 01312 * IN PNDIS_PACKET Packet); 01313 */ 01314 #define NDIS_GET_PACKET_CANCEL_ID(Packet) \ 01315 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, PacketCancelId) 01316 01317 /* 01318 * PNDIS_PACKET_EXTENSION 01319 * NDIS_PACKET_EXTENSION_FROM_PACKET( 01320 * IN PNDIS_PACKET Packet); 01321 */ 01322 #define NDIS_PACKET_EXTENSION_FROM_PACKET(Packet) \ 01323 ((PNDIS_PACKET_EXTENSION)((PUCHAR)(Packet) \ 01324 + (Packet)->Private.NdisPacketOobOffset + sizeof(NDIS_PACKET_OOB_DATA))) 01325 01326 /* 01327 * PVOID 01328 * NDIS_PER_PACKET_INFO_FROM_PACKET( 01329 * IN OUT PNDIS_PACKET Packet, 01330 * IN NDIS_PER_PACKET_INFO InfoType); 01331 */ 01332 #define NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, InfoType) \ 01333 ((PNDIS_PACKET_EXTENSION)((PUCHAR)(Packet) + (Packet)->Private.NdisPacketOobOffset \ 01334 + sizeof(NDIS_PACKET_OOB_DATA)))->NdisPacketInfo[(InfoType)] 01335 01336 /* 01337 * VOID 01338 * NDIS_SET_ORIGINAL_PACKET( 01339 * IN OUT PNDIS_PACKET Packet, 01340 * IN PNDIS_PACKET OriginalPacket); 01341 */ 01342 #define NDIS_SET_ORIGINAL_PACKET(Packet, OriginalPacket) \ 01343 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, OriginalPacketInfo) = (OriginalPacket) 01344 01345 /* 01346 * VOID 01347 * NDIS_SET_PACKET_CANCEL_ID( 01348 * IN PNDIS_PACKET Packet 01349 * IN ULONG_PTR CancelId); 01350 */ 01351 #define NDIS_SET_PACKET_CANCEL_ID(Packet, CancelId) \ 01352 NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, PacketCancelId) = (CancelId) 01353 01354 #define NdisSetPacketCancelId(_Packet, _CancelId) NDIS_SET_PACKET_CANCEL_ID(_Packet, _CancelId) 01355 #define NdisGetPacketCancelId(_Packet) NDIS_GET_PACKET_CANCEL_ID(_Packet) 01356 01357 #endif /* NDIS_LEGACY_DRIVER */ 01358 01359 #if NDIS_SUPPORT_NDIS6 01360 typedef struct _NDIS_GENERIC_OBJECT { 01361 NDIS_OBJECT_HEADER Header; 01362 PVOID Caller; 01363 PVOID CallersCaller; 01364 PDRIVER_OBJECT DriverObject; 01365 } NDIS_GENERIC_OBJECT, *PNDIS_GENERIC_OBJECT; 01366 #endif 01367 01368 /* NDIS_TASK_OFFLOAD_HEADER.Version constants */ 01369 #define NDIS_TASK_OFFLOAD_VERSION 1 01370 01371 #define MAX_HASHES 4 01372 #define TRUNCATED_HASH_LEN 12 01373 01374 #define CRYPTO_SUCCESS 0 01375 #define CRYPTO_GENERIC_ERROR 1 01376 #define CRYPTO_TRANSPORT_AH_AUTH_FAILED 2 01377 #define CRYPTO_TRANSPORT_ESP_AUTH_FAILED 3 01378 #define CRYPTO_TUNNEL_AH_AUTH_FAILED 4 01379 #define CRYPTO_TUNNEL_ESP_AUTH_FAILED 5 01380 #define CRYPTO_INVALID_PACKET_SYNTAX 6 01381 #define CRYPTO_INVALID_PROTOCOL 7 01382 01383 typedef struct _NDIS_TCP_IP_CHECKSUM_PACKET_INFO { 01384 __MINGW_EXTENSION union { 01385 struct { 01386 ULONG NdisPacketChecksumV4:1; 01387 ULONG NdisPacketChecksumV6:1; 01388 ULONG NdisPacketTcpChecksum:1; 01389 ULONG NdisPacketUdpChecksum:1; 01390 ULONG NdisPacketIpChecksum:1; 01391 } Transmit; 01392 struct { 01393 ULONG NdisPacketTcpChecksumFailed:1; 01394 ULONG NdisPacketUdpChecksumFailed:1; 01395 ULONG NdisPacketIpChecksumFailed:1; 01396 ULONG NdisPacketTcpChecksumSucceeded:1; 01397 ULONG NdisPacketUdpChecksumSucceeded:1; 01398 ULONG NdisPacketIpChecksumSucceeded:1; 01399 ULONG NdisPacketLoopback:1; 01400 } Receive; 01401 ULONG Value; 01402 }; 01403 } NDIS_TCP_IP_CHECKSUM_PACKET_INFO, *PNDIS_TCP_IP_CHECKSUM_PACKET_INFO; 01404 01405 typedef struct _NDIS_WAN_CO_FRAGMENT { 01406 ULONG Errors; 01407 } NDIS_WAN_CO_FRAGMENT, *PNDIS_WAN_CO_FRAGMENT; 01408 01409 typedef struct _NDIS_WAN_FRAGMENT { 01410 UCHAR RemoteAddress[6]; 01411 UCHAR LocalAddress[6]; 01412 } NDIS_WAN_FRAGMENT, *PNDIS_WAN_FRAGMENT; 01413 01414 typedef struct _WAN_CO_LINKPARAMS { 01415 ULONG TransmitSpeed; 01416 ULONG ReceiveSpeed; 01417 ULONG SendWindow; 01418 } WAN_CO_LINKPARAMS, *PWAN_CO_LINKPARAMS; 01419 01420 typedef struct _NDIS_WAN_GET_STATS { 01421 UCHAR LocalAddress[6]; 01422 ULONG BytesSent; 01423 ULONG BytesRcvd; 01424 ULONG FramesSent; 01425 ULONG FramesRcvd; 01426 ULONG CRCErrors; 01427 ULONG TimeoutErrors; 01428 ULONG AlignmentErrors; 01429 ULONG SerialOverrunErrors; 01430 ULONG FramingErrors; 01431 ULONG BufferOverrunErrors; 01432 ULONG BytesTransmittedUncompressed; 01433 ULONG BytesReceivedUncompressed; 01434 ULONG BytesTransmittedCompressed; 01435 ULONG BytesReceivedCompressed; 01436 } NDIS_WAN_GET_STATS, *PNDIS_WAN_GET_STATS; 01437 01438 /* Call Manager */ 01439 01440 typedef VOID 01441 (NTAPI *CM_ACTIVATE_VC_COMPLETE_HANDLER)( 01442 IN NDIS_STATUS Status, 01443 IN NDIS_HANDLE CallMgrVcContext, 01444 IN PCO_CALL_PARAMETERS CallParameters); 01445 01446 typedef NDIS_STATUS 01447 (NTAPI *CM_ADD_PARTY_HANDLER)( 01448 IN NDIS_HANDLE CallMgrVcContext, 01449 IN OUT PCO_CALL_PARAMETERS CallParameters, 01450 IN NDIS_HANDLE NdisPartyHandle, 01451 OUT PNDIS_HANDLE CallMgrPartyContext); 01452 01453 typedef NDIS_STATUS 01454 (NTAPI *CM_CLOSE_AF_HANDLER)( 01455 IN NDIS_HANDLE CallMgrAfContext); 01456 01457 typedef NDIS_STATUS 01458 (NTAPI *CM_CLOSE_CALL_HANDLER)( 01459 IN NDIS_HANDLE CallMgrVcContext, 01460 IN NDIS_HANDLE CallMgrPartyContext OPTIONAL, 01461 IN PVOID CloseData OPTIONAL, 01462 IN UINT Size OPTIONAL); 01463 01464 typedef NDIS_STATUS 01465 (NTAPI *CM_DEREG_SAP_HANDLER)( 01466 IN NDIS_HANDLE CallMgrSapContext); 01467 01468 typedef VOID 01469 (NTAPI *CM_DEACTIVATE_VC_COMPLETE_HANDLER)( 01470 IN NDIS_STATUS Status, 01471 IN NDIS_HANDLE CallMgrVcContext); 01472 01473 typedef NDIS_STATUS 01474 (NTAPI *CM_DROP_PARTY_HANDLER)( 01475 IN NDIS_HANDLE CallMgrPartyContext, 01476 IN PVOID CloseData OPTIONAL, 01477 IN UINT Size OPTIONAL); 01478 01479 typedef VOID 01480 (NTAPI *CM_INCOMING_CALL_COMPLETE_HANDLER)( 01481 IN NDIS_STATUS Status, 01482 IN NDIS_HANDLE CallMgrVcContext, 01483 IN PCO_CALL_PARAMETERS CallParameters); 01484 01485 typedef NDIS_STATUS 01486 (NTAPI *CM_MAKE_CALL_HANDLER)( 01487 IN NDIS_HANDLE CallMgrVcContext, 01488 IN OUT PCO_CALL_PARAMETERS CallParameters, 01489 IN NDIS_HANDLE NdisPartyHandle OPTIONAL, 01490 OUT PNDIS_HANDLE CallMgrPartyContext OPTIONAL); 01491 01492 typedef NDIS_STATUS 01493 (NTAPI *CM_MODIFY_CALL_QOS_HANDLER)( 01494 IN NDIS_HANDLE CallMgrVcContext, 01495 IN PCO_CALL_PARAMETERS CallParameters); 01496 01497 typedef NDIS_STATUS 01498 (NTAPI *CM_OPEN_AF_HANDLER)( 01499 IN NDIS_HANDLE CallMgrBindingContext, 01500 IN PCO_ADDRESS_FAMILY AddressFamily, 01501 IN NDIS_HANDLE NdisAfHandle, 01502 OUT PNDIS_HANDLE CallMgrAfContext); 01503 01504 typedef NDIS_STATUS 01505 (NTAPI *CM_REG_SAP_HANDLER)( 01506 IN NDIS_HANDLE CallMgrAfContext, 01507 IN PCO_SAP Sap, 01508 IN NDIS_HANDLE NdisSapHandle, 01509 OUT PNDIS_HANDLE CallMgrSapContext); 01510 01511 typedef NDIS_STATUS 01512 (NTAPI *CO_CREATE_VC_HANDLER)( 01513 IN NDIS_HANDLE ProtocolAfContext, 01514 IN NDIS_HANDLE NdisVcHandle, 01515 OUT PNDIS_HANDLE ProtocolVcContext); 01516 01517 typedef NDIS_STATUS 01518 (NTAPI *CO_DELETE_VC_HANDLER)( 01519 IN NDIS_HANDLE ProtocolVcContext); 01520 01521 #define PROTOCOL_RESERVED_SIZE_IN_PACKET (4 * sizeof(PVOID)) 01522 01523 /* Prototypes for NDIS 5.0 protocol characteristics */ 01524 01525 _IRQL_requires_(PASSIVE_LEVEL) 01526 typedef VOID 01527 (NTAPI *CO_SEND_COMPLETE_HANDLER)( 01528 _In_ NDIS_STATUS Status, 01529 _In_ NDIS_HANDLE ProtocolVcContext, 01530 _In_ PNDIS_PACKET Packet); 01531 01532 _IRQL_requires_max_(DISPATCH_LEVEL) 01533 typedef VOID 01534 (NTAPI *CO_STATUS_HANDLER)( 01535 _In_ NDIS_HANDLE ProtocolBindingContext, 01536 _In_opt_ NDIS_HANDLE ProtocolVcContext, 01537 _In_ NDIS_STATUS GeneralStatus, 01538 _In_ PVOID StatusBuffer, 01539 _In_ UINT StatusBufferSize); 01540 01541 _IRQL_requires_max_(DISPATCH_LEVEL) 01542 typedef UINT 01543 (NTAPI *CO_RECEIVE_PACKET_HANDLER)( 01544 _In_ NDIS_HANDLE ProtocolBindingContext, 01545 _In_ NDIS_HANDLE ProtocolVcContext, 01546 _In_ PNDIS_PACKET Packet); 01547 01548 _IRQL_requires_max_(DISPATCH_LEVEL) 01549 typedef NDIS_STATUS 01550 (NTAPI *CO_REQUEST_HANDLER)( 01551 _In_ NDIS_HANDLE ProtocolAfContext, 01552 _In_opt_ NDIS_HANDLE ProtocolVcContext, 01553 _In_opt_ NDIS_HANDLE ProtocolPartyContext, 01554 _Inout_ PNDIS_REQUEST NdisRequest); 01555 01556 _IRQL_requires_max_(DISPATCH_LEVEL) 01557 typedef VOID 01558 (NTAPI *CO_REQUEST_COMPLETE_HANDLER)( 01559 _In_ NDIS_STATUS Status, 01560 _In_opt_ NDIS_HANDLE ProtocolAfContext, 01561 _In_opt_ NDIS_HANDLE ProtocolVcContext, 01562 _In_opt_ NDIS_HANDLE ProtocolPartyContext, 01563 _In_ PNDIS_REQUEST NdisRequest); 01564 01565 typedef struct _NDIS_CALL_MANAGER_CHARACTERISTICS { 01566 UCHAR MajorVersion; 01567 UCHAR MinorVersion; 01568 USHORT Filler; 01569 UINT Reserved; 01570 CO_CREATE_VC_HANDLER CmCreateVcHandler; 01571 CO_DELETE_VC_HANDLER CmDeleteVcHandler; 01572 CM_OPEN_AF_HANDLER CmOpenAfHandler; 01573 CM_CLOSE_AF_HANDLER CmCloseAfHandler; 01574 CM_REG_SAP_HANDLER CmRegisterSapHandler; 01575 CM_DEREG_SAP_HANDLER CmDeregisterSapHandler; 01576 CM_MAKE_CALL_HANDLER CmMakeCallHandler; 01577 CM_CLOSE_CALL_HANDLER CmCloseCallHandler; 01578 CM_INCOMING_CALL_COMPLETE_HANDLER CmIncomingCallCompleteHandler; 01579 CM_ADD_PARTY_HANDLER CmAddPartyHandler; 01580 CM_DROP_PARTY_HANDLER CmDropPartyHandler; 01581 CM_ACTIVATE_VC_COMPLETE_HANDLER CmActivateVcCompleteHandler; 01582 CM_DEACTIVATE_VC_COMPLETE_HANDLER CmDeactivateVcCompleteHandler; 01583 CM_MODIFY_CALL_QOS_HANDLER CmModifyCallQoSHandler; 01584 CO_REQUEST_HANDLER CmRequestHandler; 01585 CO_REQUEST_COMPLETE_HANDLER CmRequestCompleteHandler; 01586 } NDIS_CALL_MANAGER_CHARACTERISTICS, *PNDIS_CALL_MANAGER_CHARACTERISTICS; 01587 01588 01589 01590 /* Call Manager clients */ 01591 01592 typedef VOID (*CL_OPEN_AF_COMPLETE_HANDLER)( 01593 IN NDIS_STATUS Status, 01594 IN NDIS_HANDLE ProtocolAfContext, 01595 IN NDIS_HANDLE NdisAfHandle); 01596 01597 typedef VOID 01598 (NTAPI *CL_CLOSE_AF_COMPLETE_HANDLER)( 01599 IN NDIS_STATUS Status, 01600 IN NDIS_HANDLE ProtocolAfContext); 01601 01602 typedef VOID 01603 (NTAPI *CL_REG_SAP_COMPLETE_HANDLER)( 01604 IN NDIS_STATUS Status, 01605 IN NDIS_HANDLE ProtocolSapContext, 01606 IN PCO_SAP Sap, 01607 IN NDIS_HANDLE NdisSapHandle); 01608 01609 typedef VOID 01610 (NTAPI *CL_DEREG_SAP_COMPLETE_HANDLER)( 01611 IN NDIS_STATUS Status, 01612 IN NDIS_HANDLE ProtocolSapContext); 01613 01614 typedef VOID 01615 (NTAPI *CL_MAKE_CALL_COMPLETE_HANDLER)( 01616 IN NDIS_STATUS Status, 01617 IN NDIS_HANDLE ProtocolVcContext, 01618 IN NDIS_HANDLE NdisPartyHandle OPTIONAL, 01619 IN PCO_CALL_PARAMETERS CallParameters); 01620 01621 typedef VOID 01622 (NTAPI *CL_MODIFY_CALL_QOS_COMPLETE_HANDLER)( 01623 IN NDIS_STATUS Status, 01624 IN NDIS_HANDLE ProtocolVcContext, 01625 IN PCO_CALL_PARAMETERS CallParameters); 01626 01627 typedef VOID 01628 (NTAPI *CL_CLOSE_CALL_COMPLETE_HANDLER)( 01629 IN NDIS_STATUS Status, 01630 IN NDIS_HANDLE ProtocolVcContext, 01631 IN NDIS_HANDLE ProtocolPartyContext OPTIONAL); 01632 01633 typedef VOID 01634 (NTAPI *CL_ADD_PARTY_COMPLETE_HANDLER)( 01635 IN NDIS_STATUS Status, 01636 IN NDIS_HANDLE ProtocolPartyContext, 01637 IN NDIS_HANDLE NdisPartyHandle, 01638 IN PCO_CALL_PARAMETERS CallParameters); 01639 01640 typedef VOID 01641 (NTAPI *CL_DROP_PARTY_COMPLETE_HANDLER)( 01642 IN NDIS_STATUS Status, 01643 IN NDIS_HANDLE ProtocolPartyContext); 01644 01645 typedef NDIS_STATUS 01646 (NTAPI *CL_INCOMING_CALL_HANDLER)( 01647 IN NDIS_HANDLE ProtocolSapContext, 01648 IN NDIS_HANDLE ProtocolVcContext, 01649 IN OUT PCO_CALL_PARAMETERS CallParameters); 01650 01651 typedef VOID 01652 (NTAPI *CL_INCOMING_CALL_QOS_CHANGE_HANDLER)( 01653 IN NDIS_HANDLE ProtocolVcContext, 01654 IN PCO_CALL_PARAMETERS CallParameters); 01655 01656 typedef VOID 01657 (NTAPI *CL_INCOMING_CLOSE_CALL_HANDLER)( 01658 IN NDIS_STATUS CloseStatus, 01659 IN NDIS_HANDLE ProtocolVcContext, 01660 IN PVOID CloseData OPTIONAL, 01661 IN UINT Size OPTIONAL); 01662 01663 typedef VOID 01664 (NTAPI *CL_INCOMING_DROP_PARTY_HANDLER)( 01665 IN NDIS_STATUS DropStatus, 01666 IN NDIS_HANDLE ProtocolPartyContext, 01667 IN PVOID CloseData OPTIONAL, 01668 IN UINT Size OPTIONAL); 01669 01670 typedef VOID 01671 (NTAPI *CL_CALL_CONNECTED_HANDLER)( 01672 IN NDIS_HANDLE ProtocolVcContext); 01673 01674 01675 typedef struct _NDIS_CLIENT_CHARACTERISTICS { 01676 UCHAR MajorVersion; 01677 UCHAR MinorVersion; 01678 USHORT Filler; 01679 UINT Reserved; 01680 CO_CREATE_VC_HANDLER ClCreateVcHandler; 01681 CO_DELETE_VC_HANDLER ClDeleteVcHandler; 01682 CO_REQUEST_HANDLER ClRequestHandler; 01683 CO_REQUEST_COMPLETE_HANDLER ClRequestCompleteHandler; 01684 CL_OPEN_AF_COMPLETE_HANDLER ClOpenAfCompleteHandler; 01685 CL_CLOSE_AF_COMPLETE_HANDLER ClCloseAfCompleteHandler; 01686 CL_REG_SAP_COMPLETE_HANDLER ClRegisterSapCompleteHandler; 01687 CL_DEREG_SAP_COMPLETE_HANDLER ClDeregisterSapCompleteHandler; 01688 CL_MAKE_CALL_COMPLETE_HANDLER ClMakeCallCompleteHandler; 01689 CL_MODIFY_CALL_QOS_COMPLETE_HANDLER ClModifyCallQoSCompleteHandler; 01690 CL_CLOSE_CALL_COMPLETE_HANDLER ClCloseCallCompleteHandler; 01691 CL_ADD_PARTY_COMPLETE_HANDLER ClAddPartyCompleteHandler; 01692 CL_DROP_PARTY_COMPLETE_HANDLER ClDropPartyCompleteHandler; 01693 CL_INCOMING_CALL_HANDLER ClIncomingCallHandler; 01694 CL_INCOMING_CALL_QOS_CHANGE_HANDLER ClIncomingCallQoSChangeHandler; 01695 CL_INCOMING_CLOSE_CALL_HANDLER ClIncomingCloseCallHandler; 01696 CL_INCOMING_DROP_PARTY_HANDLER ClIncomingDropPartyHandler; 01697 CL_CALL_CONNECTED_HANDLER ClCallConnectedHandler; 01698 } NDIS_CLIENT_CHARACTERISTICS, *PNDIS_CLIENT_CHARACTERISTICS; 01699 01700 01701 /* NDIS protocol structures */ 01702 01703 /* Prototypes for NDIS 3.0 protocol characteristics */ 01704 01705 typedef VOID 01706 (NTAPI *OPEN_ADAPTER_COMPLETE_HANDLER)( 01707 _In_ NDIS_HANDLE ProtocolBindingContext, 01708 _In_ NDIS_STATUS Status, 01709 _In_ NDIS_STATUS OpenErrorStatus); 01710 01711 typedef VOID 01712 (NTAPI *CLOSE_ADAPTER_COMPLETE_HANDLER)( 01713 _In_ NDIS_HANDLE ProtocolBindingContext, 01714 _In_ NDIS_STATUS Status); 01715 01716 typedef VOID 01717 (NTAPI *RESET_COMPLETE_HANDLER)( 01718 _In_ NDIS_HANDLE ProtocolBindingContext, 01719 _In_ NDIS_STATUS Status); 01720 01721 typedef VOID 01722 (NTAPI *REQUEST_COMPLETE_HANDLER)( 01723 _In_ NDIS_HANDLE ProtocolBindingContext, 01724 _In_ PNDIS_REQUEST NdisRequest, 01725 _In_ NDIS_STATUS Status); 01726 01727 typedef VOID 01728 (NTAPI *STATUS_HANDLER)( 01729 _In_ NDIS_HANDLE ProtocolBindingContext, 01730 _In_ NDIS_STATUS GeneralStatus, 01731 _In_ PVOID StatusBuffer, 01732 _In_ UINT StatusBufferSize); 01733 01734 typedef VOID 01735 (NTAPI *STATUS_COMPLETE_HANDLER)( 01736 _In_ NDIS_HANDLE ProtocolBindingContext); 01737 01738 typedef VOID 01739 (NTAPI *SEND_COMPLETE_HANDLER)( 01740 _In_ NDIS_HANDLE ProtocolBindingContext, 01741 _In_ PNDIS_PACKET Packet, 01742 _In_ NDIS_STATUS Status); 01743 01744 typedef VOID 01745 (NTAPI *WAN_SEND_COMPLETE_HANDLER)( 01746 _In_ NDIS_HANDLE ProtocolBindingContext, 01747 _In_ PNDIS_WAN_PACKET Packet, 01748 _In_ NDIS_STATUS Status); 01749 01750 typedef VOID 01751 (NTAPI *TRANSFER_DATA_COMPLETE_HANDLER)( 01752 _In_ NDIS_HANDLE ProtocolBindingContext, 01753 _In_ PNDIS_PACKET Packet, 01754 _In_ NDIS_STATUS Status, 01755 _In_ UINT BytesTransferred); 01756 01757 typedef VOID 01758 (NTAPI *WAN_TRANSFER_DATA_COMPLETE_HANDLER)( 01759 VOID); 01760 01761 typedef NDIS_STATUS 01762 (NTAPI *RECEIVE_HANDLER)( 01763 _In_ NDIS_HANDLE ProtocolBindingContext, 01764 _In_ NDIS_HANDLE MacReceiveContext, 01765 _In_ PVOID HeaderBuffer, 01766 _In_ UINT HeaderBufferSize, 01767 _In_ PVOID LookAheadBuffer, 01768 _In_ UINT LookaheadBufferSize, 01769 _In_ UINT PacketSize); 01770 01771 typedef NDIS_STATUS 01772 (NTAPI *WAN_RECEIVE_HANDLER)( 01773 _In_ NDIS_HANDLE NdisLinkHandle, 01774 _In_ PUCHAR Packet, 01775 _In_ ULONG PacketSize); 01776 01777 typedef VOID 01778 (NTAPI *RECEIVE_COMPLETE_HANDLER)( 01779 _In_ NDIS_HANDLE ProtocolBindingContext); 01780 01781 /* Protocol characteristics for NDIS 3.0 protocols */ 01782 01783 #define NDIS30_PROTOCOL_CHARACTERISTICS_S \ 01784 UCHAR MajorNdisVersion; \ 01785 UCHAR MinorNdisVersion; \ 01786 USHORT Filler; \ 01787 _ANONYMOUS_UNION union { \ 01788 UINT Reserved; \ 01789 UINT Flags; \ 01790 } DUMMYUNIONNAME; \ 01791 OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler; \ 01792 CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler; \ 01793 _ANONYMOUS_UNION union { \ 01794 SEND_COMPLETE_HANDLER SendCompleteHandler; \ 01795 WAN_SEND_COMPLETE_HANDLER WanSendCompleteHandler; \ 01796 } DUMMYUNIONNAME2; \ 01797 _ANONYMOUS_UNION union { \ 01798 TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; \ 01799 WAN_TRANSFER_DATA_COMPLETE_HANDLER WanTransferDataCompleteHandler; \ 01800 } DUMMYUNIONNAME3; \ 01801 RESET_COMPLETE_HANDLER ResetCompleteHandler; \ 01802 REQUEST_COMPLETE_HANDLER RequestCompleteHandler; \ 01803 _ANONYMOUS_UNION union { \ 01804 RECEIVE_HANDLER ReceiveHandler; \ 01805 WAN_RECEIVE_HANDLER WanReceiveHandler; \ 01806 } DUMMYUNIONNAME4; \ 01807 RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; \ 01808 STATUS_HANDLER StatusHandler; \ 01809 STATUS_COMPLETE_HANDLER StatusCompleteHandler; \ 01810 NDIS_STRING Name; 01811 01812 typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS { 01813 NDIS30_PROTOCOL_CHARACTERISTICS_S 01814 } NDIS30_PROTOCOL_CHARACTERISTICS, *PNDIS30_PROTOCOL_CHARACTERISTICS; 01815 01816 01817 /* Prototypes for NDIS 4.0 protocol characteristics */ 01818 01819 typedef INT 01820 (NTAPI *RECEIVE_PACKET_HANDLER)( 01821 IN NDIS_HANDLE ProtocolBindingContext, 01822 IN PNDIS_PACKET Packet); 01823 01824 typedef VOID 01825 (NTAPI *BIND_HANDLER)( 01826 OUT PNDIS_STATUS Status, 01827 IN NDIS_HANDLE BindContext, 01828 IN PNDIS_STRING DeviceName, 01829 IN PVOID SystemSpecific1, 01830 IN PVOID SystemSpecific2); 01831 01832 typedef VOID 01833 (NTAPI *UNBIND_HANDLER)( 01834 OUT PNDIS_STATUS Status, 01835 IN NDIS_HANDLE ProtocolBindingContext, 01836 IN NDIS_HANDLE UnbindContext); 01837 01838 typedef NDIS_STATUS 01839 (NTAPI *PNP_EVENT_HANDLER)( 01840 IN NDIS_HANDLE ProtocolBindingContext, 01841 IN PNET_PNP_EVENT NetPnPEvent); 01842 01843 typedef VOID 01844 (NTAPI *UNLOAD_PROTOCOL_HANDLER)( 01845 VOID); 01846 01847 /* Protocol characteristics for NDIS 4.0 protocols */ 01848 01849 typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS { 01850 UCHAR MajorNdisVersion; 01851 UCHAR MinorNdisVersion; 01852 USHORT Filler; 01853 __MINGW_EXTENSION union { 01854 UINT Reserved; 01855 UINT Flags; 01856 }; 01857 OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler; 01858 CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler; 01859 __MINGW_EXTENSION union { 01860 SEND_COMPLETE_HANDLER SendCompleteHandler; 01861 WAN_SEND_COMPLETE_HANDLER WanSendCompleteHandler; 01862 }; 01863 __MINGW_EXTENSION union { 01864 TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; 01865 WAN_TRANSFER_DATA_COMPLETE_HANDLER WanTransferDataCompleteHandler; 01866 }; 01867 RESET_COMPLETE_HANDLER ResetCompleteHandler; 01868 REQUEST_COMPLETE_HANDLER RequestCompleteHandler; 01869 __MINGW_EXTENSION union { 01870 RECEIVE_HANDLER ReceiveHandler; 01871 WAN_RECEIVE_HANDLER WanReceiveHandler; 01872 }; 01873 RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; 01874 STATUS_HANDLER StatusHandler; 01875 STATUS_COMPLETE_HANDLER StatusCompleteHandler; 01876 NDIS_STRING Name; 01877 RECEIVE_PACKET_HANDLER ReceivePacketHandler; 01878 BIND_HANDLER BindAdapterHandler; 01879 UNBIND_HANDLER UnbindAdapterHandler; 01880 PNP_EVENT_HANDLER PnPEventHandler; 01881 UNLOAD_PROTOCOL_HANDLER UnloadHandler; 01882 } NDIS40_PROTOCOL_CHARACTERISTICS; 01883 01884 typedef VOID 01885 (NTAPI PROTCOL_CO_AF_REGISTER_NOTIFY)( 01886 IN NDIS_HANDLE ProtocolBindingContext, 01887 IN PCO_ADDRESS_FAMILY AddressFamily); 01888 typedef PROTCOL_CO_AF_REGISTER_NOTIFY *CO_AF_REGISTER_NOTIFY_HANDLER; 01889 01890 #if NDIS_LEGACY_PROTOCOL 01891 01892 typedef struct _NDIS50_PROTOCOL_CHARACTERISTICS { 01893 #ifdef __cplusplus 01894 NDIS40_PROTOCOL_CHARACTERISTICS Ndis40Chars; 01895 #else 01896 NDIS40_PROTOCOL_CHARACTERISTICS; 01897 #endif 01898 PVOID ReservedHandlers[4]; 01899 CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler; 01900 CO_STATUS_HANDLER CoStatusHandler; 01901 CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler; 01902 CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler; 01903 } NDIS50_PROTOCOL_CHARACTERISTICS; 01904 01905 #if (defined(NDIS50) || defined(NDIS51)) 01906 typedef NDIS50_PROTOCOL_CHARACTERISTICS NDIS_PROTOCOL_CHARACTERISTICS; 01907 #else 01908 typedef NDIS40_PROTOCOL_CHARACTERISTICS NDIS_PROTOCOL_CHARACTERISTICS; 01909 #endif 01910 01911 typedef NDIS_PROTOCOL_CHARACTERISTICS *PNDIS_PROTOCOL_CHARACTERISTICS; 01912 01913 #endif /* NDIS_LEGACY_PROTOCOL */ 01914 01915 /* Prototypes for NDIS_MINIPORT_CHARACTERISTICS */ 01916 01917 typedef BOOLEAN 01918 (NTAPI *W_CHECK_FOR_HANG_HANDLER)( 01919 _In_ NDIS_HANDLE MiniportAdapterContext); 01920 01921 typedef VOID 01922 (NTAPI *W_DISABLE_INTERRUPT_HANDLER)( 01923 _In_ NDIS_HANDLE MiniportAdapterContext); 01924 01925 typedef VOID 01926 (NTAPI *W_ENABLE_INTERRUPT_HANDLER)( 01927 _In_ NDIS_HANDLE MiniportAdapterContext); 01928 01929 typedef VOID 01930 (NTAPI *W_HALT_HANDLER)( 01931 _In_ NDIS_HANDLE MiniportAdapterContext); 01932 01933 typedef VOID 01934 (NTAPI *W_HANDLE_INTERRUPT_HANDLER)( 01935 _In_ NDIS_HANDLE MiniportAdapterContext); 01936 01937 typedef NDIS_STATUS 01938 (NTAPI *W_INITIALIZE_HANDLER)( 01939 _Out_ PNDIS_STATUS OpenErrorStatus, 01940 _Out_ PUINT SelectedMediumIndex, 01941 _In_ PNDIS_MEDIUM MediumArray, 01942 _In_ UINT MediumArraySize, 01943 _In_ NDIS_HANDLE MiniportAdapterContext, 01944 _In_ NDIS_HANDLE WrapperConfigurationContext); 01945 01946 typedef VOID 01947 (NTAPI *W_ISR_HANDLER)( 01948 _Out_ PBOOLEAN InterruptRecognized, 01949 _Out_ PBOOLEAN QueueMiniportHandleInterrupt, 01950 _In_ NDIS_HANDLE MiniportAdapterContext); 01951 01952 typedef NDIS_STATUS 01953 (NTAPI *W_QUERY_INFORMATION_HANDLER)( 01954 _In_ NDIS_HANDLE MiniportAdapterContext, 01955 _In_ NDIS_OID Oid, 01956 _In_ PVOID InformationBuffer, 01957 _In_ ULONG InformationBufferLength, 01958 _Out_ PULONG BytesWritten, 01959 _Out_ PULONG BytesNeeded); 01960 01961 typedef NDIS_STATUS 01962 (NTAPI *W_RECONFIGURE_HANDLER)( 01963 _Out_ PNDIS_STATUS OpenErrorStatus, 01964 _In_ NDIS_HANDLE MiniportAdapterContext, 01965 _In_ NDIS_HANDLE WrapperConfigurationContext); 01966 01967 typedef NDIS_STATUS 01968 (NTAPI *W_RESET_HANDLER)( 01969 _Out_ PBOOLEAN AddressingReset, 01970 _In_ NDIS_HANDLE MiniportAdapterContext); 01971 01972 typedef NDIS_STATUS 01973 (NTAPI *W_SEND_HANDLER)( 01974 _In_ NDIS_HANDLE MiniportAdapterContext, 01975 _In_ PNDIS_PACKET Packet, 01976 _In_ UINT Flags); 01977 01978 typedef NDIS_STATUS 01979 (NTAPI *WM_SEND_HANDLER)( 01980 _In_ NDIS_HANDLE MiniportAdapterContext, 01981 _In_ NDIS_HANDLE NdisLinkHandle, 01982 _In_ PNDIS_WAN_PACKET Packet); 01983 01984 typedef NDIS_STATUS 01985 (NTAPI *W_SET_INFORMATION_HANDLER)( 01986 _In_ NDIS_HANDLE MiniportAdapterContext, 01987 _In_ NDIS_OID Oid, 01988 _In_ PVOID InformationBuffer, 01989 _In_ ULONG InformationBufferLength, 01990 _Out_ PULONG BytesRead, 01991 _Out_ PULONG BytesNeeded); 01992 01993 typedef NDIS_STATUS 01994 (NTAPI *W_TRANSFER_DATA_HANDLER)( 01995 _Out_ PNDIS_PACKET Packet, 01996 _Out_ PUINT BytesTransferred, 01997 _In_ NDIS_HANDLE MiniportAdapterContext, 01998 _In_ NDIS_HANDLE MiniportReceiveContext, 01999 _In_ UINT ByteOffset, 02000 _In_ UINT BytesToTransfer); 02001 02002 typedef NDIS_STATUS 02003 (NTAPI *WM_TRANSFER_DATA_HANDLER)(VOID); 02004 02005 typedef VOID 02006 (NTAPI *ADAPTER_SHUTDOWN_HANDLER)( 02007 _In_ PVOID ShutdownContext); 02008 02009 typedef VOID 02010 (NTAPI *W_RETURN_PACKET_HANDLER)( 02011 _In_ NDIS_HANDLE MiniportAdapterContext, 02012 _In_ PNDIS_PACKET Packet); 02013 02014 typedef VOID 02015 (NTAPI *W_SEND_PACKETS_HANDLER)( 02016 _In_ NDIS_HANDLE MiniportAdapterContext, 02017 _In_ PPNDIS_PACKET PacketArray, 02018 _In_ UINT NumberOfPackets); 02019 02020 typedef VOID 02021 (NTAPI *W_ALLOCATE_COMPLETE_HANDLER)( 02022 _In_ NDIS_HANDLE MiniportAdapterContext, 02023 _In_ PVOID VirtualAddress, 02024 _In_ PNDIS_PHYSICAL_ADDRESS PhysicalAddress, 02025 _In_ ULONG Length, 02026 _In_ PVOID Context); 02027 02028 /* NDIS structures available only to miniport drivers */ 02029 02030 #define NDIS30_MINIPORT_CHARACTERISTICS_S \ 02031 UCHAR MajorNdisVersion; \ 02032 UCHAR MinorNdisVersion; \ 02033 UINT Reserved; \ 02034 W_CHECK_FOR_HANG_HANDLER CheckForHangHandler; \ 02035 W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler; \ 02036 W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler; \ 02037 W_HALT_HANDLER HaltHandler; \ 02038 W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler; \ 02039 W_INITIALIZE_HANDLER InitializeHandler; \ 02040 W_ISR_HANDLER ISRHandler; \ 02041 W_QUERY_INFORMATION_HANDLER QueryInformationHandler; \ 02042 W_RECONFIGURE_HANDLER ReconfigureHandler; \ 02043 W_RESET_HANDLER ResetHandler; \ 02044 W_SEND_HANDLER SendHandler; \ 02045 W_SET_INFORMATION_HANDLER SetInformationHandler; \ 02046 W_TRANSFER_DATA_HANDLER TransferDataHandler; 02047 02048 typedef struct _NDIS30_MINIPORT_CHARACTERISTICS { 02049 NDIS30_MINIPORT_CHARACTERISTICS_S 02050 } NDIS30_MINIPORT_CHARACTERISTICS, *PSNDIS30_MINIPORT_CHARACTERISTICS; 02051 02052 #ifdef __cplusplus 02053 02054 #define NDIS40_MINIPORT_CHARACTERISTICS_S \ 02055 NDIS30_MINIPORT_CHARACTERISTICS Ndis30Chars; \ 02056 W_RETURN_PACKET_HANDLER ReturnPacketHandler; \ 02057 W_SEND_PACKETS_HANDLER SendPacketsHandler; \ 02058 W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler; 02059 02060 #else /* !__cplusplus */ 02061 02062 #define NDIS40_MINIPORT_CHARACTERISTICS_S \ 02063 NDIS30_MINIPORT_CHARACTERISTICS_S \ 02064 W_RETURN_PACKET_HANDLER ReturnPacketHandler; \ 02065 W_SEND_PACKETS_HANDLER SendPacketsHandler; \ 02066 W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler; 02067 02068 #endif /* !__cplusplus */ 02069 02070 typedef struct _NDIS40_MINIPORT_CHARACTERISTICS { 02071 NDIS40_MINIPORT_CHARACTERISTICS_S 02072 } NDIS40_MINIPORT_CHARACTERISTICS, *PNDIS40_MINIPORT_CHARACTERISTICS; 02073 02074 /* Extensions for NDIS 5.0 miniports */ 02075 02076 _IRQL_requires_max_(DISPATCH_LEVEL) 02077 _Function_class_(MINIPORT_CO_CREATE_VC) 02078 typedef NDIS_STATUS 02079 (NTAPI MINIPORT_CO_CREATE_VC)( 02080 _In_ NDIS_HANDLE MiniportAdapterContext, 02081 _In_ NDIS_HANDLE NdisVcHandle, 02082 _Out_ PNDIS_HANDLE MiniportVcContext); 02083 typedef MINIPORT_CO_CREATE_VC *W_CO_CREATE_VC_HANDLER; 02084 02085 _IRQL_requires_max_(DISPATCH_LEVEL) 02086 _Function_class_(MINIPORT_CO_DELETE_VC) 02087 typedef NDIS_STATUS 02088 (NTAPI MINIPORT_CO_DELETE_VC)( 02089 _In_ NDIS_HANDLE MiniportVcContext); 02090 typedef MINIPORT_CO_DELETE_VC *W_CO_DELETE_VC_HANDLER; 02091 02092 _IRQL_requires_max_(DISPATCH_LEVEL) 02093 _Function_class_(MINIPORT_CO_ACTIVATE_VC) 02094 typedef NDIS_STATUS 02095 (NTAPI MINIPORT_CO_ACTIVATE_VC)( 02096 _In_ NDIS_HANDLE MiniportVcContext, 02097 _Inout_ PCO_CALL_PARAMETERS CallParameters); 02098 typedef MINIPORT_CO_ACTIVATE_VC *W_CO_ACTIVATE_VC_HANDLER; 02099 02100 _IRQL_requires_max_(DISPATCH_LEVEL) 02101 _Function_class_(MINIPORT_CO_DEACTIVATE_VC) 02102 typedef NDIS_STATUS 02103 (NTAPI MINIPORT_CO_DEACTIVATE_VC)( 02104 _In_ NDIS_HANDLE MiniportVcContext); 02105 typedef MINIPORT_CO_DEACTIVATE_VC *W_CO_DEACTIVATE_VC_HANDLER; 02106 02107 typedef VOID 02108 (NTAPI *W_CO_SEND_PACKETS_HANDLER)( 02109 _In_ NDIS_HANDLE MiniportVcContext, 02110 _In_ PPNDIS_PACKET PacketArray, 02111 _In_ UINT NumberOfPackets); 02112 02113 typedef NDIS_STATUS 02114 (NTAPI *W_CO_REQUEST_HANDLER)( 02115 _In_ NDIS_HANDLE MiniportAdapterContext, 02116 _In_opt_ NDIS_HANDLE MiniportVcContext, 02117 _Inout_ PNDIS_REQUEST NdisRequest); 02118 02119 #ifdef __cplusplus 02120 02121 #define NDIS50_MINIPORT_CHARACTERISTICS_S \ 02122 NDIS40_MINIPORT_CHARACTERISTICS Ndis40Chars; \ 02123 W_CO_CREATE_VC_HANDLER CoCreateVcHandler; \ 02124 W_CO_DELETE_VC_HANDLER CoDeleteVcHandler; \ 02125 W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler; \ 02126 W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler; \ 02127 W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler; \ 02128 W_CO_REQUEST_HANDLER CoRequestHandler; 02129 02130 #else /* !__cplusplus */ 02131 02132 #define NDIS50_MINIPORT_CHARACTERISTICS_S \ 02133 NDIS40_MINIPORT_CHARACTERISTICS_S \ 02134 W_CO_CREATE_VC_HANDLER CoCreateVcHandler; \ 02135 W_CO_DELETE_VC_HANDLER CoDeleteVcHandler; \ 02136 W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler; \ 02137 W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler; \ 02138 W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler; \ 02139 W_CO_REQUEST_HANDLER CoRequestHandler; 02140 02141 #endif /* !__cplusplus */ 02142 02143 typedef struct _NDIS50_MINIPORT_CHARACTERISTICS { 02144 NDIS50_MINIPORT_CHARACTERISTICS_S 02145 } NDIS50_MINIPORT_CHARACTERISTICS, *PSNDIS50_MINIPORT_CHARACTERISTICS; 02146 02147 /* Extensions for NDIS 5.1 miniports */ 02148 02149 typedef VOID 02150 (NTAPI *W_CANCEL_SEND_PACKETS_HANDLER)( 02151 _In_ NDIS_HANDLE MiniportAdapterContext, 02152 _In_ PVOID CancelId); 02153 02154 typedef VOID 02155 (NTAPI *W_PNP_EVENT_NOTIFY_HANDLER)( 02156 _In_ NDIS_HANDLE MiniportAdapterContext, 02157 _In_ NDIS_DEVICE_PNP_EVENT PnPEvent, 02158 _In_ PVOID InformationBuffer, 02159 _In_ ULONG InformationBufferLength); 02160 02161 typedef VOID 02162 (NTAPI *W_MINIPORT_SHUTDOWN_HANDLER)( 02163 _In_ PVOID ShutdownContext); 02164 02165 #ifdef __cplusplus 02166 02167 #define NDIS51_MINIPORT_CHARACTERISTICS_S \ 02168 NDIS50_MINIPORT_CHARACTERISTICS Ndis50Chars; \ 02169 W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler; \ 02170 W_PNP_EVENT_NOTIFY_HANDLER PnPEventNotifyHandler; \ 02171 W_MINIPORT_SHUTDOWN_HANDLER AdapterShutdownHandler; 02172 02173 #else 02174 02175 #define NDIS51_MINIPORT_CHARACTERISTICS_S \ 02176 NDIS50_MINIPORT_CHARACTERISTICS_S \ 02177 W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler; \ 02178 W_PNP_EVENT_NOTIFY_HANDLER PnPEventNotifyHandler; \ 02179 W_MINIPORT_SHUTDOWN_HANDLER AdapterShutdownHandler; 02180 02181 #endif 02182 02183 typedef struct _NDIS51_MINIPORT_CHARACTERISTICS { 02184 NDIS51_MINIPORT_CHARACTERISTICS_S 02185 } NDIS51_MINIPORT_CHARACTERISTICS, *PSNDIS51_MINIPORT_CHARACTERISTICS; 02186 02187 #if defined(NDIS51_MINIPORT) 02188 typedef struct _NDIS_MINIPORT_CHARACTERISTICS { 02189 NDIS51_MINIPORT_CHARACTERISTICS_S 02190 } NDIS_MINIPORT_CHARACTERISTICS, *PNDIS_MINIPORT_CHARACTERISTICS; 02191 #elif defined(NDIS50_MINIPORT) 02192 typedef struct _NDIS_MINIPORT_CHARACTERISTICS { 02193 NDIS50_MINIPORT_CHARACTERISTICS_S 02194 } NDIS_MINIPORT_CHARACTERISTICS, *PNDIS_MINIPORT_CHARACTERISTICS; 02195 #elif defined(NDIS40_MINIPORT) 02196 typedef struct _NDIS_MINIPORT_CHARACTERISTICS { 02197 NDIS40_MINIPORT_CHARACTERISTICS_S 02198 } NDIS_MINIPORT_CHARACTERISTICS, *PNDIS_MINIPORT_CHARACTERISTICS; 02199 #else /* NDIS30 */ 02200 typedef struct _NDIS_MINIPORT_CHARACTERISTICS { 02201 NDIS30_MINIPORT_CHARACTERISTICS_S 02202 } NDIS_MINIPORT_CHARACTERISTICS, *PNDIS_MINIPORT_CHARACTERISTICS; 02203 #endif 02204 02205 typedef struct _NDIS_MINIPORT_INTERRUPT { 02206 PKINTERRUPT InterruptObject; 02207 KSPIN_LOCK DpcCountLock; 02208 PVOID Reserved; 02209 W_ISR_HANDLER MiniportIsr; 02210 W_HANDLE_INTERRUPT_HANDLER MiniportDpc; 02211 KDPC InterruptDpc; 02212 PNDIS_MINIPORT_BLOCK Miniport; 02213 UCHAR DpcCount; 02214 BOOLEAN Filler1; 02215 KEVENT DpcsCompletedEvent; 02216 BOOLEAN SharedInterrupt; 02217 BOOLEAN IsrRequested; 02218 } NDIS_MINIPORT_INTERRUPT, *PNDIS_MINIPORT_INTERRUPT; 02219 02220 /* Structures available only to full MAC drivers */ 02221 02222 typedef BOOLEAN 02223 (NTAPI *PNDIS_INTERRUPT_SERVICE)( 02224 IN PVOID InterruptContext); 02225 02226 typedef VOID 02227 (NTAPI *PNDIS_DEFERRED_PROCESSING)( 02228 IN PVOID SystemSpecific1, 02229 IN PVOID InterruptContext, 02230 IN PVOID SystemSpecific2, 02231 IN PVOID SystemSpecific3); 02232 02233 typedef struct _NDIS_WRAPPER_HANDLE NDIS_WRAPPER_HANDLE, *PNDIS_WRAPPER_HANDLE; 02234 typedef struct _NDIS_PROTOCOL_BLOCK NDIS_PROTOCOL_BLOCK, *PNDIS_PROTOCOL_BLOCK; 02235 typedef struct _NDIS_OPEN_BLOCK NDIS_OPEN_BLOCK, *PNDIS_OPEN_BLOCK; 02236 typedef struct _NDIS_M_DRIVER_BLOCK NDIS_M_DRIVER_BLOCK, *PNDIS_M_DRIVER_BLOCK; 02237 typedef struct _NDIS_OFFLOAD NDIS_OFFLOAD, *PNDIS_OFFLOAD; 02238 typedef struct _NDIS_AF_LIST NDIS_AF_LIST, *PNDIS_AF_LIST; 02239 typedef struct _X_FILTER ETH_FILTER, *PETH_FILTER; 02240 #if NDIS_SUPPORT_NDIS6 02241 typedef USHORT NET_FRAME_TYPE, *PNET_FRAME_TYPE; 02242 #endif 02243 02244 typedef struct _NDIS_MINIPORT_TIMER { 02245 KTIMER Timer; 02246 KDPC Dpc; 02247 PNDIS_TIMER_FUNCTION MiniportTimerFunction; 02248 PVOID MiniportTimerContext; 02249 PNDIS_MINIPORT_BLOCK Miniport; 02250 struct _NDIS_MINIPORT_TIMER *NextDeferredTimer; 02251 } NDIS_MINIPORT_TIMER, *PNDIS_MINIPORT_TIMER; 02252 02253 typedef struct _NDIS_INTERRUPT { 02254 PKINTERRUPT InterruptObject; 02255 KSPIN_LOCK DpcCountLock; 02256 PNDIS_INTERRUPT_SERVICE MacIsr; 02257 PNDIS_DEFERRED_PROCESSING MacDpc; 02258 KDPC InterruptDpc; 02259 PVOID InterruptContext; 02260 UCHAR DpcCount; 02261 BOOLEAN Removing; 02262 KEVENT DpcsCompletedEvent; 02263 } NDIS_INTERRUPT, *PNDIS_INTERRUPT; 02264 02265 02266 typedef enum _NDIS_WORK_ITEM_TYPE { 02267 NdisWorkItemRequest, 02268 NdisWorkItemSend, 02269 NdisWorkItemReturnPackets, 02270 NdisWorkItemResetRequested, 02271 NdisWorkItemResetInProgress, 02272 NdisWorkItemHalt, 02273 NdisWorkItemSendLoopback, 02274 NdisWorkItemMiniportCallback, 02275 NdisMaxWorkItems 02276 } NDIS_WORK_ITEM_TYPE, *PNDIS_WORK_ITEM_TYPE; 02277 02278 #define NUMBER_OF_WORK_ITEM_TYPES NdisMaxWorkItems 02279 #define NUMBER_OF_SINGLE_WORK_ITEMS 6 02280 02281 typedef struct _NDIS_MINIPORT_WORK_ITEM { 02282 SINGLE_LIST_ENTRY Link; 02283 NDIS_WORK_ITEM_TYPE WorkItemType; 02284 PVOID WorkItemContext; 02285 } NDIS_MINIPORT_WORK_ITEM, *PNDIS_MINIPORT_WORK_ITEM; 02286 02287 struct _NDIS_WORK_ITEM; 02288 typedef VOID (*NDIS_PROC)(struct _NDIS_WORK_ITEM *, PVOID); 02289 02290 typedef struct _NDIS_WORK_ITEM { 02291 PVOID Context; 02292 NDIS_PROC Routine; 02293 UCHAR WrapperReserved[8*sizeof(PVOID)]; 02294 } NDIS_WORK_ITEM, *PNDIS_WORK_ITEM; 02295 02296 typedef struct _NDIS_BIND_PATHS { 02297 UINT Number; 02298 NDIS_STRING Paths[1]; 02299 } NDIS_BIND_PATHS, *PNDIS_BIND_PATHS; 02300 02301 02302 typedef VOID 02303 (NTAPI *ETH_RCV_COMPLETE_HANDLER)( 02304 _In_ PETH_FILTER Filter); 02305 02306 typedef VOID 02307 (NTAPI *ETH_RCV_INDICATE_HANDLER)( 02308 _In_ PETH_FILTER Filter, 02309 _In_ NDIS_HANDLE MacReceiveContext, 02310 _In_ PCHAR Address, 02311 _In_ PVOID HeaderBuffer, 02312 _In_ UINT HeaderBufferSize, 02313 _In_ PVOID LookaheadBuffer, 02314 _In_ UINT LookaheadBufferSize, 02315 _In_ UINT PacketSize); 02316 02317 typedef VOID 02318 (NTAPI *FDDI_RCV_COMPLETE_HANDLER)( 02319 IN PFDDI_FILTER Filter); 02320 02321 typedef VOID 02322 (NTAPI *FDDI_RCV_INDICATE_HANDLER)( 02323 IN PFDDI_FILTER Filter, 02324 IN NDIS_HANDLE MacReceiveContext, 02325 IN PCHAR Address, 02326 IN UINT AddressLength, 02327 IN PVOID HeaderBuffer, 02328 IN UINT HeaderBufferSize, 02329 IN PVOID LookaheadBuffer, 02330 IN UINT LookaheadBufferSize, 02331 IN UINT PacketSize); 02332 02333 typedef VOID 02334 (NTAPI *FILTER_PACKET_INDICATION_HANDLER)( 02335 _In_ NDIS_HANDLE Miniport, 02336 _In_ PPNDIS_PACKET PacketArray, 02337 _In_ UINT NumberOfPackets); 02338 02339 typedef VOID 02340 (NTAPI *TR_RCV_COMPLETE_HANDLER)( 02341 _In_ PTR_FILTER Filter); 02342 02343 typedef VOID 02344 (NTAPI *TR_RCV_INDICATE_HANDLER)( 02345 _In_ PTR_FILTER Filter, 02346 _In_ NDIS_HANDLE MacReceiveContext, 02347 _In_ PVOID HeaderBuffer, 02348 _In_ UINT HeaderBufferSize, 02349 _In_ PVOID LookaheadBuffer, 02350 _In_ UINT LookaheadBufferSize, 02351 _In_ UINT PacketSize); 02352 02353 typedef VOID 02354 (NTAPI *WAN_RCV_COMPLETE_HANDLER)( 02355 _In_ NDIS_HANDLE MiniportAdapterHandle, 02356 _In_ NDIS_HANDLE NdisLinkContext); 02357 02358 typedef VOID 02359 (NTAPI *WAN_RCV_HANDLER)( 02360 _Out_ PNDIS_STATUS Status, 02361 _In_ NDIS_HANDLE MiniportAdapterHandle, 02362 _In_ NDIS_HANDLE NdisLinkContext, 02363 _In_ PUCHAR Packet, 02364 _In_ ULONG PacketSize); 02365 02366 typedef VOID 02367 (FASTCALL *NDIS_M_DEQUEUE_WORK_ITEM)( 02368 IN PNDIS_MINIPORT_BLOCK Miniport, 02369 IN NDIS_WORK_ITEM_TYPE WorkItemType, 02370 OUT PVOID *WorkItemContext); 02371 02372 typedef NDIS_STATUS 02373 (FASTCALL *NDIS_M_QUEUE_NEW_WORK_ITEM)( 02374 IN PNDIS_MINIPORT_BLOCK Miniport, 02375 IN NDIS_WORK_ITEM_TYPE WorkItemType, 02376 IN PVOID WorkItemContext); 02377 02378 typedef NDIS_STATUS 02379 (FASTCALL *NDIS_M_QUEUE_WORK_ITEM)( 02380 IN PNDIS_MINIPORT_BLOCK Miniport, 02381 IN NDIS_WORK_ITEM_TYPE WorkItemType, 02382 IN PVOID WorkItemContext); 02383 02384 typedef VOID 02385 (NTAPI *NDIS_M_REQ_COMPLETE_HANDLER)( 02386 _In_ NDIS_HANDLE MiniportAdapterHandle, 02387 _In_ NDIS_STATUS Status); 02388 02389 typedef VOID 02390 (NTAPI *NDIS_M_RESET_COMPLETE_HANDLER)( 02391 _In_ NDIS_HANDLE MiniportAdapterHandle, 02392 _In_ NDIS_STATUS Status, 02393 _In_ BOOLEAN AddressingReset); 02394 02395 typedef VOID 02396 (NTAPI *NDIS_M_SEND_COMPLETE_HANDLER)( 02397 _In_ NDIS_HANDLE MiniportAdapterHandle, 02398 _In_ PNDIS_PACKET Packet, 02399 _In_ NDIS_STATUS Status); 02400 02401 typedef VOID 02402 (NTAPI *NDIS_M_SEND_RESOURCES_HANDLER)( 02403 _In_ NDIS_HANDLE MiniportAdapterHandle); 02404 02405 typedef BOOLEAN 02406 (FASTCALL *NDIS_M_START_SENDS)( 02407 _In_ PNDIS_MINIPORT_BLOCK Miniport); 02408 02409 typedef VOID 02410 (NTAPI *NDIS_M_STATUS_HANDLER)( 02411 _In_ NDIS_HANDLE MiniportHandle, 02412 _In_ NDIS_STATUS GeneralStatus, 02413 _In_ PVOID StatusBuffer, 02414 _In_ UINT StatusBufferSize); 02415 02416 typedef VOID 02417 (NTAPI *NDIS_M_STS_COMPLETE_HANDLER)( 02418 _In_ NDIS_HANDLE MiniportAdapterHandle); 02419 02420 typedef VOID 02421 (NTAPI *NDIS_M_TD_COMPLETE_HANDLER)( 02422 _In_ NDIS_HANDLE MiniportAdapterHandle, 02423 _In_ PNDIS_PACKET Packet, 02424 _In_ NDIS_STATUS Status, 02425 _In_ UINT BytesTransferred); 02426 02427 typedef VOID (NTAPI *NDIS_WM_SEND_COMPLETE_HANDLER)( 02428 _In_ NDIS_HANDLE MiniportAdapterHandle, 02429 _In_ PVOID Packet, 02430 _In_ NDIS_STATUS Status); 02431 02432 02433 #if ARCNET 02434 02435 #define ARC_SEND_BUFFERS 8 02436 #define ARC_HEADER_SIZE 4 02437 02438 typedef struct _NDIS_ARC_BUF { 02439 NDIS_HANDLE ArcnetBufferPool; 02440 PUCHAR ArcnetLookaheadBuffer; 02441 UINT NumFree; 02442 ARC_BUFFER_LIST ArcnetBuffers[ARC_SEND_BUFFERS]; 02443 } NDIS_ARC_BUF, *PNDIS_ARC_BUF; 02444 02445 #endif /* ARCNET */ 02446 02447 typedef struct _NDIS_LOG { 02448 PNDIS_MINIPORT_BLOCK Miniport; 02449 KSPIN_LOCK LogLock; 02450 PIRP Irp; 02451 UINT TotalSize; 02452 UINT CurrentSize; 02453 UINT InPtr; 02454 UINT OutPtr; 02455 UCHAR LogBuf[1]; 02456 } NDIS_LOG, *PNDIS_LOG; 02457 02458 #if ARCNET 02459 #define FILTERDBS_ARCNET_S \ 02460 PARC_FILTER ArcDB; 02461 #else /* !ARCNET */ 02462 #define FILTERDBS_ARCNET_S \ 02463 PVOID XXXDB; 02464 #endif /* !ARCNET */ 02465 02466 #define FILTERDBS_S \ 02467 _ANONYMOUS_UNION union { \ 02468 PETH_FILTER EthDB; \ 02469 PNULL_FILTER NullDB; \ 02470 } DUMMYUNIONNAME; \ 02471 PTR_FILTER TrDB; \ 02472 PFDDI_FILTER FddiDB; \ 02473 FILTERDBS_ARCNET_S 02474 02475 typedef struct _FILTERDBS { 02476 FILTERDBS_S 02477 } FILTERDBS, *PFILTERDBS; 02478 02479 struct _NDIS_MINIPORT_BLOCK { 02480 NDIS_OBJECT_HEADER Header; 02481 PNDIS_MINIPORT_BLOCK NextMiniport; 02482 PNDIS_M_DRIVER_BLOCK DriverHandle; 02483 NDIS_HANDLE MiniportAdapterContext; 02484 UNICODE_STRING MiniportName; 02485 PNDIS_BIND_PATHS BindPaths; 02486 NDIS_HANDLE OpenQueue; 02487 REFERENCE ShortRef; 02488 NDIS_HANDLE DeviceContext; 02489 UCHAR Padding1; 02490 UCHAR LockAcquired; 02491 UCHAR PmodeOpens; 02492 UCHAR AssignedProcessor; 02493 KSPIN_LOCK Lock; 02494 PNDIS_REQUEST MediaRequest; 02495 PNDIS_MINIPORT_INTERRUPT Interrupt; 02496 ULONG Flags; 02497 ULONG PnPFlags; 02498 LIST_ENTRY PacketList; 02499 PNDIS_PACKET FirstPendingPacket; 02500 PNDIS_PACKET ReturnPacketsQueue; 02501 ULONG RequestBuffer; 02502 PVOID SetMCastBuffer; 02503 PNDIS_MINIPORT_BLOCK PrimaryMiniport; 02504 PVOID WrapperContext; 02505 PVOID BusDataContext; 02506 ULONG PnPCapabilities; 02507 PCM_RESOURCE_LIST Resources; 02508 NDIS_TIMER WakeUpDpcTimer; 02509 UNICODE_STRING BaseName; 02510 UNICODE_STRING SymbolicLinkName; 02511 ULONG CheckForHangSeconds; 02512 USHORT CFHangTicks; 02513 USHORT CFHangCurrentTick; 02514 NDIS_STATUS ResetStatus; 02515 NDIS_HANDLE ResetOpen; 02516 FILTERDBS_S 02517 FILTER_PACKET_INDICATION_HANDLER PacketIndicateHandler; 02518 NDIS_M_SEND_COMPLETE_HANDLER SendCompleteHandler; 02519 NDIS_M_SEND_RESOURCES_HANDLER SendResourcesHandler; 02520 NDIS_M_RESET_COMPLETE_HANDLER ResetCompleteHandler; 02521 NDIS_MEDIUM MediaType; 02522 ULONG BusNumber; 02523 NDIS_INTERFACE_TYPE BusType; 02524 NDIS_INTERFACE_TYPE AdapterType; 02525 PDEVICE_OBJECT DeviceObject; 02526 PDEVICE_OBJECT PhysicalDeviceObject; 02527 PDEVICE_OBJECT NextDeviceObject; 02528 PMAP_REGISTER_ENTRY MapRegisters; 02529 PNDIS_AF_LIST CallMgrAfList; 02530 PVOID MiniportThread; 02531 PVOID SetInfoBuf; 02532 USHORT SetInfoBufLen; 02533 USHORT MaxSendPackets; 02534 NDIS_STATUS FakeStatus; 02535 PVOID LockHandler; 02536 PUNICODE_STRING pAdapterInstanceName; 02537 PNDIS_MINIPORT_TIMER TimerQueue; 02538 UINT MacOptions; 02539 PNDIS_REQUEST PendingRequest; 02540 UINT MaximumLongAddresses; 02541 UINT MaximumShortAddresses; 02542 UINT CurrentLookahead; 02543 UINT MaximumLookahead; 02544 W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler; 02545 W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler; 02546 W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler; 02547 W_SEND_PACKETS_HANDLER SendPacketsHandler; 02548 NDIS_M_START_SENDS DeferredSendHandler; 02549 ETH_RCV_INDICATE_HANDLER EthRxIndicateHandler; 02550 TR_RCV_INDICATE_HANDLER TrRxIndicateHandler; 02551 FDDI_RCV_INDICATE_HANDLER FddiRxIndicateHandler; 02552 ETH_RCV_COMPLETE_HANDLER EthRxCompleteHandler; 02553 TR_RCV_COMPLETE_HANDLER TrRxCompleteHandler; 02554 FDDI_RCV_COMPLETE_HANDLER FddiRxCompleteHandler; 02555 NDIS_M_STATUS_HANDLER StatusHandler; 02556 NDIS_M_STS_COMPLETE_HANDLER StatusCompleteHandler; 02557 NDIS_M_TD_COMPLETE_HANDLER TDCompleteHandler; 02558 NDIS_M_REQ_COMPLETE_HANDLER QueryCompleteHandler; 02559 NDIS_M_REQ_COMPLETE_HANDLER SetCompleteHandler; 02560 NDIS_WM_SEND_COMPLETE_HANDLER WanSendCompleteHandler; 02561 WAN_RCV_HANDLER WanRcvHandler; 02562 WAN_RCV_COMPLETE_HANDLER WanRcvCompleteHandler; 02563 #if defined(NDIS_WRAPPER) 02564 PNDIS_MINIPORT_BLOCK NextGlobalMiniport; 02565 SINGLE_LIST_ENTRY WorkQueue[NUMBER_OF_WORK_ITEM_TYPES]; 02566 SINGLE_LIST_ENTRY SingleWorkItems[NUMBER_OF_SINGLE_WORK_ITEMS]; 02567 UCHAR SendFlags; 02568 UCHAR TrResetRing; 02569 UCHAR ArcnetAddress; 02570 UCHAR XState; 02571 _ANONYMOUS_UNION union { 02572 #if ARCNET 02573 PNDIS_ARC_BUF ArcBuf; 02574 #endif 02575 PVOID BusInterface; 02576 } DUMMYUNIONNAME; 02577 PNDIS_LOG Log; 02578 ULONG SlotNumber; 02579 PCM_RESOURCE_LIST AllocatedResources; 02580 PCM_RESOURCE_LIST AllocatedResourcesTranslated; 02581 SINGLE_LIST_ENTRY PatternList; 02582 NDIS_PNP_CAPABILITIES PMCapabilities; 02583 DEVICE_CAPABILITIES DeviceCaps; 02584 ULONG WakeUpEnable; 02585 DEVICE_POWER_STATE CurrentDevicePowerState; 02586 PIRP pIrpWaitWake; 02587 SYSTEM_POWER_STATE WaitWakeSystemState; 02588 LARGE_INTEGER VcIndex; 02589 KSPIN_LOCK VcCountLock; 02590 LIST_ENTRY WmiEnabledVcs; 02591 PNDIS_GUID pNdisGuidMap; 02592 PNDIS_GUID pCustomGuidMap; 02593 USHORT VcCount; 02594 USHORT cNdisGuidMap; 02595 USHORT cCustomGuidMap; 02596 USHORT CurrentMapRegister; 02597 PKEVENT AllocationEvent; 02598 USHORT BaseMapRegistersNeeded; 02599 USHORT SGMapRegistersNeeded; 02600 ULONG MaximumPhysicalMapping; 02601 NDIS_TIMER MediaDisconnectTimer; 02602 USHORT MediaDisconnectTimeOut; 02603 USHORT InstanceNumber; 02604 NDIS_EVENT OpenReadyEvent; 02605 NDIS_PNP_DEVICE_STATE PnPDeviceState; 02606 NDIS_PNP_DEVICE_STATE OldPnPDeviceState; 02607 PGET_SET_DEVICE_DATA SetBusData; 02608 PGET_SET_DEVICE_DATA GetBusData; 02609 KDPC DeferredDpc; 02610 #if 0 02611 /* FIXME: */ 02612 NDIS_STATS NdisStats; 02613 #else 02614 ULONG NdisStats; 02615 #endif 02616 PNDIS_PACKET IndicatedPacket[MAXIMUM_PROCESSORS]; 02617 PKEVENT RemoveReadyEvent; 02618 PKEVENT AllOpensClosedEvent; 02619 PKEVENT AllRequestsCompletedEvent; 02620 ULONG InitTimeMs; 02621 NDIS_MINIPORT_WORK_ITEM WorkItemBuffer[NUMBER_OF_SINGLE_WORK_ITEMS]; 02622 PDMA_ADAPTER SystemAdapterObject; 02623 ULONG DriverVerifyFlags; 02624 POID_LIST OidList; 02625 USHORT InternalResetCount; 02626 USHORT MiniportResetCount; 02627 USHORT MediaSenseConnectCount; 02628 USHORT MediaSenseDisconnectCount; 02629 PNDIS_PACKET *xPackets; 02630 ULONG UserModeOpenReferences; 02631 _ANONYMOUS_UNION union { 02632 PVOID SavedSendHandler; 02633 PVOID SavedWanSendHandler; 02634 } DUMMYUNIONNAME2; 02635 PVOID SavedSendPacketsHandler; 02636 PVOID SavedCancelSendPacketsHandler; 02637 W_SEND_PACKETS_HANDLER WSendPacketsHandler; 02638 ULONG MiniportAttributes; 02639 PDMA_ADAPTER SavedSystemAdapterObject; 02640 USHORT NumOpens; 02641 USHORT CFHangXTicks; 02642 ULONG RequestCount; 02643 ULONG IndicatedPacketsCount; 02644 ULONG PhysicalMediumType; 02645 PNDIS_REQUEST LastRequest; 02646 LONG DmaAdapterRefCount; 02647 PVOID FakeMac; 02648 ULONG LockDbg; 02649 ULONG LockDbgX; 02650 PVOID LockThread; 02651 ULONG InfoFlags; 02652 KSPIN_LOCK TimerQueueLock; 02653 PKEVENT ResetCompletedEvent; 02654 PKEVENT QueuedBindingCompletedEvent; 02655 PKEVENT DmaResourcesReleasedEvent; 02656 FILTER_PACKET_INDICATION_HANDLER SavedPacketIndicateHandler; 02657 ULONG RegisteredInterrupts; 02658 PNPAGED_LOOKASIDE_LIST SGListLookasideList; 02659 ULONG ScatterGatherListSize; 02660 #endif /* _NDIS_ */ 02661 }; 02662 02663 #if NDIS_LEGACY_DRIVER 02664 02665 typedef NDIS_STATUS 02666 (NTAPI *WAN_SEND_HANDLER)( 02667 _In_ NDIS_HANDLE MacBindingHandle, 02668 _In_ NDIS_HANDLE LinkHandle, 02669 _In_ PVOID Packet); 02670 02671 typedef VOID 02672 (NTAPI *SEND_PACKETS_HANDLER)( 02673 _In_ NDIS_HANDLE MiniportAdapterContext, 02674 _In_ PPNDIS_PACKET PacketArray, 02675 _In_ UINT NumberOfPackets); 02676 02677 typedef NDIS_STATUS 02678 (NTAPI *SEND_HANDLER)( 02679 _In_ NDIS_HANDLE NdisBindingHandle, 02680 _In_ PNDIS_PACKET Packet); 02681 02682 typedef NDIS_STATUS 02683 (NTAPI *TRANSFER_DATA_HANDLER)( 02684 _In_ NDIS_HANDLE NdisBindingHandle, 02685 _In_ NDIS_HANDLE MacReceiveContext, 02686 _In_ UINT ByteOffset, 02687 _In_ UINT BytesToTransfer, 02688 _Out_ PNDIS_PACKET Packet, 02689 _Out_ PUINT BytesTransferred); 02690 02691 typedef NDIS_STATUS 02692 (NTAPI *RESET_HANDLER)( 02693 _In_ NDIS_HANDLE NdisBindingHandle); 02694 02695 typedef NDIS_STATUS 02696 (NTAPI *REQUEST_HANDLER)( 02697 _In_ NDIS_HANDLE NdisBindingHandle, 02698 _In_ PNDIS_REQUEST NdisRequest); 02699 02700 #endif /* NDIS_LEGACY_DRIVER */ 02701 02702 #if defined(NDIS_WRAPPER) 02703 #define NDIS_COMMON_OPEN_BLOCK_WRAPPER_S \ 02704 ULONG Flags; \ 02705 ULONG References; \ 02706 KSPIN_LOCK SpinLock; \ 02707 NDIS_HANDLE FilterHandle; \ 02708 ULONG ProtocolOptions; \ 02709 USHORT CurrentLookahead; \ 02710 USHORT ConnectDampTicks; \ 02711 USHORT DisconnectDampTicks; \ 02712 W_SEND_HANDLER WSendHandler; \ 02713 W_TRANSFER_DATA_HANDLER WTransferDataHandler; \ 02714 W_SEND_PACKETS_HANDLER WSendPacketsHandler; \ 02715 W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler; \ 02716 ULONG WakeUpEnable; \ 02717 PKEVENT CloseCompleteEvent; \ 02718 QUEUED_CLOSE QC; \ 02719 ULONG AfReferences; \ 02720 PNDIS_OPEN_BLOCK NextGlobalOpen; 02721 #else 02722 #define NDIS_COMMON_OPEN_BLOCK_WRAPPER_S 02723 #endif 02724 02725 #define NDIS_COMMON_OPEN_BLOCK_S \ 02726 PVOID MacHandle; \ 02727 NDIS_HANDLE BindingHandle; \ 02728 PNDIS_MINIPORT_BLOCK MiniportHandle; \ 02729 PNDIS_PROTOCOL_BLOCK ProtocolHandle; \ 02730 NDIS_HANDLE ProtocolBindingContext; \ 02731 PNDIS_OPEN_BLOCK MiniportNextOpen; \ 02732 PNDIS_OPEN_BLOCK ProtocolNextOpen; \ 02733 NDIS_HANDLE MiniportAdapterContext; \ 02734 BOOLEAN Reserved1; \ 02735 BOOLEAN Reserved2; \ 02736 BOOLEAN Reserved3; \ 02737 BOOLEAN Reserved4; \ 02738 PNDIS_STRING BindDeviceName; \ 02739 KSPIN_LOCK Reserved5; \ 02740 PNDIS_STRING RootDeviceName; \ 02741 _ANONYMOUS_UNION union { \ 02742 SEND_HANDLER SendHandler; \ 02743 WAN_SEND_HANDLER WanSendHandler; \ 02744 } DUMMYUNIONNAME; \ 02745 TRANSFER_DATA_HANDLER TransferDataHandler; \ 02746 SEND_COMPLETE_HANDLER SendCompleteHandler; \ 02747 TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; \ 02748 RECEIVE_HANDLER ReceiveHandler; \ 02749 RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; \ 02750 WAN_RECEIVE_HANDLER WanReceiveHandler; \ 02751 REQUEST_COMPLETE_HANDLER RequestCompleteHandler; \ 02752 RECEIVE_PACKET_HANDLER ReceivePacketHandler; \ 02753 SEND_PACKETS_HANDLER SendPacketsHandler; \ 02754 RESET_HANDLER ResetHandler; \ 02755 REQUEST_HANDLER RequestHandler; \ 02756 RESET_COMPLETE_HANDLER ResetCompleteHandler; \ 02757 STATUS_HANDLER StatusHandler; \ 02758 STATUS_COMPLETE_HANDLER StatusCompleteHandler; \ 02759 NDIS_COMMON_OPEN_BLOCK_WRAPPER_S 02760 02761 typedef struct _NDIS_COMMON_OPEN_BLOCK { 02762 NDIS_COMMON_OPEN_BLOCK_S 02763 } NDIS_COMMON_OPEN_BLOCK; 02764 02765 struct _NDIS_OPEN_BLOCK 02766 { 02767 #ifdef __cplusplus 02768 NDIS_COMMON_OPEN_BLOCK NdisCommonOpenBlock; 02769 #else 02770 NDIS_COMMON_OPEN_BLOCK_S 02771 #endif 02772 }; 02773 02774 #include <xfilter.h> 02775 02776 #define NDIS_M_MAX_LOOKAHEAD 526 02777 02778 _IRQL_requires_max_(DISPATCH_LEVEL) 02779 NDISAPI 02780 VOID 02781 NTAPI 02782 NdisInitializeTimer( 02783 _Inout_ PNDIS_TIMER Timer, 02784 _In_ PNDIS_TIMER_FUNCTION TimerFunction, 02785 _In_opt_ _Points_to_data_ PVOID FunctionContext); 02786 02787 _IRQL_requires_max_(DISPATCH_LEVEL) 02788 NDISAPI 02789 VOID 02790 NTAPI 02791 NdisCancelTimer( 02792 _In_ PNDIS_TIMER Timer, 02793 _Out_ _At_(*TimerCancelled, _Must_inspect_result_) PBOOLEAN TimerCancelled); 02794 02795 _IRQL_requires_max_(DISPATCH_LEVEL) 02796 NDISAPI 02797 VOID 02798 NTAPI 02799 NdisSetTimer( 02800 _In_ PNDIS_TIMER Timer, 02801 _In_ UINT MillisecondsToDelay); 02802 02803 NDISAPI 02804 VOID 02805 NTAPI 02806 NdisSetPeriodicTimer( 02807 _In_ PNDIS_TIMER NdisTimer, 02808 _In_ UINT MillisecondsPeriod); 02809 02810 _IRQL_requires_max_(DISPATCH_LEVEL) 02811 NDISAPI 02812 VOID 02813 NTAPI 02814 NdisSetTimerEx( 02815 _In_ PNDIS_TIMER NdisTimer, 02816 _In_ UINT MillisecondsToDelay, 02817 _In_ PVOID FunctionContext); 02818 02819 _IRQL_requires_(PASSIVE_LEVEL) 02820 NDISAPI 02821 PVOID 02822 NTAPI 02823 NdisGetRoutineAddress( 02824 _In_ PNDIS_STRING NdisRoutineName); 02825 02826 _IRQL_requires_max_(DISPATCH_LEVEL) 02827 NDISAPI 02828 UINT 02829 NTAPI 02830 NdisGetVersion(VOID); 02831 02832 #if NDIS_LEGACY_DRIVER 02833 02834 _IRQL_requires_max_(DISPATCH_LEVEL) 02835 NDISAPI 02836 VOID 02837 NTAPI 02838 NdisAllocateBuffer( 02839 _Out_ PNDIS_STATUS Status, 02840 _Out_ PNDIS_BUFFER *Buffer, 02841 _In_opt_ NDIS_HANDLE PoolHandle, 02842 _In_reads_bytes_(Length) PVOID VirtualAddress, 02843 _In_ UINT Length); 02844 02845 _IRQL_requires_max_(DISPATCH_LEVEL) 02846 NDISAPI 02847 VOID 02848 NTAPI 02849 NdisAllocateBufferPool( 02850 _Out_ PNDIS_STATUS Status, 02851 _Out_ PNDIS_HANDLE PoolHandle, 02852 _In_ UINT NumberOfDescriptors); 02853 02854 _IRQL_requires_max_(DISPATCH_LEVEL) 02855 NDISAPI 02856 VOID 02857 NTAPI 02858 NdisFreeBufferPool( 02859 _In_ NDIS_HANDLE PoolHandle); 02860 02861 /* 02862 NDISAPI 02863 VOID 02864 NTAPI 02865 NdisFreeBuffer( 02866 IN PNDIS_BUFFER Buffer); 02867 */ 02868 #define NdisFreeBuffer IoFreeMdl 02869 02870 _IRQL_requires_max_(DISPATCH_LEVEL) 02871 NDISAPI 02872 VOID 02873 NTAPI 02874 NdisAllocatePacketPool( 02875 _Out_ PNDIS_STATUS Status, 02876 _Out_ PNDIS_HANDLE PoolHandle, 02877 _In_ UINT NumberOfDescriptors, 02878 _In_ UINT ProtocolReservedLength); 02879 02880 _IRQL_requires_max_(DISPATCH_LEVEL) 02881 NDISAPI 02882 VOID 02883 NTAPI 02884 NdisAllocatePacketPoolEx( 02885 _Out_ PNDIS_STATUS Status, 02886 _Out_ PNDIS_HANDLE PoolHandle, 02887 _In_ UINT NumberOfDescriptors, 02888 _In_ UINT NumberOfOverflowDescriptors, 02889 _In_ UINT ProtocolReservedLength); 02890 02891 _IRQL_requires_max_(DISPATCH_LEVEL) 02892 NDISAPI 02893 VOID 02894 NTAPI 02895 NdisSetPacketPoolProtocolId( 02896 _In_ NDIS_HANDLE PacketPoolHandle, 02897 _In_ UINT ProtocolId); 02898 02899 _IRQL_requires_max_(DISPATCH_LEVEL) 02900 NDISAPI 02901 UINT 02902 NTAPI 02903 NdisPacketPoolUsage( 02904 _In_ NDIS_HANDLE PoolHandle); 02905 02906 _IRQL_requires_max_(DISPATCH_LEVEL) 02907 NDISAPI 02908 UINT 02909 NTAPI 02910 NdisPacketSize( 02911 _In_ UINT ProtocolReservedSize); 02912 02913 _IRQL_requires_max_(DISPATCH_LEVEL) 02914 NDISAPI 02915 NDIS_HANDLE 02916 NTAPI 02917 NdisGetPoolFromPacket( 02918 _In_ PNDIS_PACKET Packet); 02919 02920 _IRQL_requires_max_(DISPATCH_LEVEL) 02921 NDISAPI 02922 PNDIS_PACKET_STACK 02923 NTAPI 02924 NdisIMGetCurrentPacketStack( 02925 _In_ PNDIS_PACKET Packet, 02926 _Out_ BOOLEAN *StacksRemaining); 02927 02928 _IRQL_requires_max_(DISPATCH_LEVEL) 02929 NDISAPI 02930 VOID 02931 NTAPI 02932 NdisFreePacketPool( 02933 _In_ NDIS_HANDLE PoolHandle); 02934 02935 _IRQL_requires_max_(DISPATCH_LEVEL) 02936 NDISAPI 02937 VOID 02938 NTAPI 02939 NdisFreePacket( 02940 _In_ PNDIS_PACKET Packet); 02941 02942 _IRQL_requires_(DISPATCH_LEVEL) 02943 NDISAPI 02944 VOID 02945 NTAPI 02946 NdisDprFreePacket( 02947 _In_ PNDIS_PACKET Packet); 02948 02949 _IRQL_requires_(DISPATCH_LEVEL) 02950 NDISAPI 02951 VOID 02952 NTAPI 02953 NdisDprFreePacketNonInterlocked( 02954 _In_ PNDIS_PACKET Packet); 02955 02956 _IRQL_requires_max_(DISPATCH_LEVEL) 02957 NDISAPI 02958 VOID 02959 NTAPI 02960 NdisAllocatePacket( 02961 _Out_ PNDIS_STATUS Status, 02962 _Out_ PNDIS_PACKET *Packet, 02963 _In_ NDIS_HANDLE PoolHandle); 02964 02965 _IRQL_requires_(DISPATCH_LEVEL) 02966 NDISAPI 02967 VOID 02968 NTAPI 02969 NdisDprAllocatePacket( 02970 _Out_ PNDIS_STATUS Status, 02971 _Out_ PNDIS_PACKET *Packet, 02972 _In_ NDIS_HANDLE PoolHandle); 02973 02974 _IRQL_requires_(DISPATCH_LEVEL) 02975 NDISAPI 02976 VOID 02977 NTAPI 02978 NdisDprAllocatePacketNonInterlocked( 02979 _Out_ PNDIS_STATUS Status, 02980 _Out_ PNDIS_PACKET *Packet, 02981 _In_ NDIS_HANDLE PoolHandle); 02982 02983 /* 02984 * VOID 02985 * NdisReinitializePacket( 02986 * IN OUT PNDIS_PACKET Packet); 02987 */ 02988 #define NdisReinitializePacket(Packet) { \ 02989 (Packet)->Private.Head = (PNDIS_BUFFER)NULL; \ 02990 (Packet)->Private.ValidCounts = FALSE; \ 02991 } 02992 02993 /* 02994 NDISAPI 02995 VOID 02996 NTAPI 02997 NdisQueryBuffer( 02998 IN PNDIS_BUFFER Buffer, 02999 OUT PVOID *VirtualAddress OPTIONAL, 03000 OUT PUINT Length); 03001 */ 03002 #define NdisQueryBuffer(_Buffer, _VirtualAddress, _Length) { \ 03003 if (ARGUMENT_PRESENT(_VirtualAddress)) { \ 03004 *(PVOID *)(_VirtualAddress) = MmGetSystemAddressForMdl(_Buffer); \ 03005 } \ 03006 *(_Length) = MmGetMdlByteCount(_Buffer); \ 03007 } 03008 03009 NDISAPI 03010 VOID 03011 NTAPI 03012 NdisGetFirstBufferFromPacket( 03013 IN PNDIS_PACKET _Packet, 03014 OUT PNDIS_BUFFER *_FirstBuffer, 03015 OUT PVOID *_FirstBufferVA, 03016 OUT PUINT _FirstBufferLength, 03017 OUT PUINT _TotalBufferLength); 03018 03019 /* 03020 * VOID 03021 * NdisGetFirstBufferFromPacketSafe( 03022 * IN PNDIS_PACKET _Packet, 03023 * OUT PNDIS_BUFFER * _FirstBuffer, 03024 * OUT PVOID * _FirstBufferVA, 03025 * OUT PUINT _FirstBufferLength, 03026 * OUT PUINT _TotalBufferLength), 03027 * IN MM_PAGE_PRIORITY _Priority) 03028 */ 03029 #define NdisGetFirstBufferFromPacketSafe(_Packet, \ 03030 _FirstBuffer, \ 03031 _FirstBufferVA, \ 03032 _FirstBufferLength, \ 03033 _TotalBufferLength, \ 03034 _Priority) \ 03035 { \ 03036 PNDIS_BUFFER _Buffer; \ 03037 \ 03038 _Buffer = (_Packet)->Private.Head; \ 03039 *(_FirstBuffer) = _Buffer; \ 03040 if (_Buffer != NULL) { \ 03041 *(_FirstBufferVA) = MmGetSystemAddressForMdlSafe(_Buffer, _Priority); \ 03042 *(_FirstBufferLength) = MmGetMdlByteCount(_Buffer); \ 03043 _Buffer = _Buffer->Next; \ 03044 *(_TotalBufferLength) = *(_FirstBufferLength); \ 03045 while (_Buffer != NULL) { \ 03046 *(_TotalBufferLength) += MmGetMdlByteCount(_Buffer); \ 03047 _Buffer = _Buffer->Next; \ 03048 } \ 03049 } \ 03050 else { \ 03051 *(_FirstBufferVA) = 0; \ 03052 *(_FirstBufferLength) = 0; \ 03053 *(_TotalBufferLength) = 0; \ 03054 } \ 03055 } 03056 03057 /* 03058 * VOID 03059 * NdisRecalculatePacketCounts( 03060 * IN OUT PNDIS_PACKET Packet); 03061 */ 03062 #define NdisRecalculatePacketCounts(Packet) { \ 03063 PNDIS_BUFFER _Buffer = (Packet)->Private.Head; \ 03064 if (_Buffer != NULL) { \ 03065 while (_Buffer->Next != NULL) { \ 03066 _Buffer = _Buffer->Next; \ 03067 } \ 03068 (Packet)->Private.Tail = _Buffer; \ 03069 } \ 03070 (Packet)->Private.ValidCounts = FALSE; \ 03071 } 03072 03073 /* 03074 * VOID 03075 * NdisChainBufferAtFront( 03076 * IN OUT PNDIS_PACKET Packet, 03077 * IN OUT PNDIS_BUFFER Buffer) 03078 */ 03079 #define NdisChainBufferAtFront(Packet, \ 03080 Buffer) \ 03081 { \ 03082 PNDIS_BUFFER _NdisBuffer = (Buffer); \ 03083 \ 03084 while (_NdisBuffer->Next != NULL) \ 03085 _NdisBuffer = _NdisBuffer->Next; \ 03086 \ 03087 if ((Packet)->Private.Head == NULL) \ 03088 (Packet)->Private.Tail = _NdisBuffer; \ 03089 \ 03090 _NdisBuffer->Next = (Packet)->Private.Head; \ 03091 (Packet)->Private.Head = (Buffer); \ 03092 (Packet)->Private.ValidCounts = FALSE; \ 03093 } 03094 03095 /* 03096 * VOID 03097 * NdisChainBufferAtBack( 03098 * IN OUT PNDIS_PACKET Packet, 03099 * IN OUT PNDIS_BUFFER Buffer) 03100 */ 03101 #define NdisChainBufferAtBack(Packet, \ 03102 Buffer) \ 03103 { \ 03104 PNDIS_BUFFER _NdisBuffer = (Buffer); \ 03105 \ 03106 while (_NdisBuffer->Next != NULL) \ 03107 _NdisBuffer = _NdisBuffer->Next; \ 03108 \ 03109 _NdisBuffer->Next = NULL; \ 03110 \ 03111 if ((Packet)->Private.Head != NULL) \ 03112 (Packet)->Private.Tail->Next = (Buffer); \ 03113 else \ 03114 (Packet)->Private.Head = (Buffer); \ 03115 \ 03116 (Packet)->Private.Tail = _NdisBuffer; \ 03117 (Packet)->Private.ValidCounts = FALSE; \ 03118 } 03119 03120 NDISAPI 03121 VOID 03122 NTAPI 03123 NdisUnchainBufferAtFront( 03124 IN OUT PNDIS_PACKET Packet, 03125 OUT PNDIS_BUFFER *Buffer); 03126 03127 NDISAPI 03128 VOID 03129 NTAPI 03130 NdisUnchainBufferAtBack( 03131 IN OUT PNDIS_PACKET Packet, 03132 OUT PNDIS_BUFFER *Buffer); 03133 03134 _IRQL_requires_max_(DISPATCH_LEVEL) 03135 NDISAPI 03136 VOID 03137 NTAPI 03138 NdisCopyFromPacketToPacket( 03139 _In_ PNDIS_PACKET Destination, 03140 _In_ UINT DestinationOffset, 03141 _In_ UINT BytesToCopy, 03142 _In_ PNDIS_PACKET Source, 03143 _In_ UINT SourceOffset, 03144 _Out_ PUINT BytesCopied); 03145 03146 NDISAPI 03147 VOID 03148 NTAPI 03149 NdisCopyFromPacketToPacketSafe( 03150 IN PNDIS_PACKET Destination, 03151 IN UINT DestinationOffset, 03152 IN UINT BytesToCopy, 03153 IN PNDIS_PACKET Source, 03154 IN UINT SourceOffset, 03155 OUT PUINT BytesCopied, 03156 IN MM_PAGE_PRIORITY Priority); 03157 03158 _IRQL_requires_max_(DISPATCH_LEVEL) 03159 __drv_preferredFunction("NdisAllocateMemoryWithTag", "Obsolete") 03160 NDISAPI 03161 NDIS_STATUS 03162 NTAPI 03163 NdisAllocateMemory( 03164 _At_(*VirtualAddress, __drv_allocatesMem(Mem)) _Outptr_result_bytebuffer_(Length) 03165 PVOID *VirtualAddress, 03166 _In_ UINT Length, 03167 _In_ UINT MemoryFlags, 03168 _In_ NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress); 03169 03170 #define NdisInitializeWorkItem(_WI_, _R_, _C_) { \ 03171 (_WI_)->Context = _C_; \ 03172 (_WI_)->Routine = _R_; \ 03173 } 03174 03175 _IRQL_requires_max_(DISPATCH_LEVEL) 03176 NDISAPI 03177 NDIS_STATUS 03178 NTAPI 03179 NdisScheduleWorkItem( 03180 _In_ __drv_aliasesMem PNDIS_WORK_ITEM WorkItem); 03181 03182 _IRQL_requires_max_(DISPATCH_LEVEL) 03183 NDISAPI 03184 VOID 03185 NTAPI 03186 NdisSetPacketStatus( 03187 _In_ PNDIS_PACKET Packet, 03188 _In_ NDIS_STATUS Status, 03189 _In_ NDIS_HANDLE Handle, 03190 _In_ ULONG Code); 03191 03192 #endif /* NDIS_LEGACY_DRIVER */ 03193 03194 _IRQL_requires_(PASSIVE_LEVEL) 03195 NDISAPI 03196 VOID 03197 NTAPI 03198 NdisOpenFile( 03199 _Out_ PNDIS_STATUS Status, 03200 _Out_ PNDIS_HANDLE FileHandle, 03201 _Out_ PUINT FileLength, 03202 _In_ PNDIS_STRING FileName, 03203 _In_ NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress); 03204 03205 _IRQL_requires_(PASSIVE_LEVEL) 03206 NDISAPI 03207 VOID 03208 NTAPI 03209 NdisCloseFile( 03210 _In_ NDIS_HANDLE FileHandle); 03211 03212 _IRQL_requires_max_(DISPATCH_LEVEL) 03213 NDISAPI 03214 VOID 03215 NTAPI 03216 NdisMapFile( 03217 _Out_ PNDIS_STATUS Status, 03218 _Out_ PVOID *MappedBuffer, 03219 _In_ NDIS_HANDLE FileHandle); 03220 03221 _IRQL_requires_(PASSIVE_LEVEL) 03222 NDISAPI 03223 VOID 03224 NTAPI 03225 NdisUnmapFile( 03226 _In_ NDIS_HANDLE FileHandle); 03227 03228 _IRQL_requires_max_(DISPATCH_LEVEL) 03229 NDISAPI 03230 ULONG 03231 NTAPI 03232 NdisGetSharedDataAlignment(VOID); 03233 03234 #define NdisFlushBuffer(Buffer,WriteToDevice) \ 03235 KeFlushIoBuffers((Buffer),!(WriteToDevice), TRUE) 03236 03237 _IRQL_requires_max_(DISPATCH_LEVEL) 03238 NDISAPI 03239 VOID 03240 NTAPI 03241 NdisCopyBuffer( 03242 _Out_ PNDIS_STATUS Status, 03243 _Out_ PNDIS_BUFFER *Buffer, 03244 _In_ NDIS_HANDLE PoolHandle, 03245 _In_ PVOID MemoryDescriptor, 03246 _In_ UINT Offset, 03247 _In_ UINT Length); 03248 03249 /* 03250 * VOID 03251 * NdisCopyLookaheadData( 03252 * IN PVOID Destination, 03253 * IN PVOID Source, 03254 * IN ULONG Length, 03255 * IN ULONG ReceiveFlags); 03256 */ 03257 03258 #if defined(_M_IX86) || defined(_M_AMD64) 03259 #define NdisCopyLookaheadData(Destination, Source, Length, MacOptions) \ 03260 RtlCopyMemory(Destination, Source, Length) 03261 #else 03262 #define NdisCopyLookaheadData(Destination, Source, Length, MacOptions) \ 03263 { \ 03264 if ((MacOptions) & NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA) \ 03265 { \ 03266 RtlCopyMemory(_Destination, _Source, _Length); \ 03267 } \ 03268 else \ 03269 { \ 03270 PUCHAR _Src = (PUCHAR)(Source); \ 03271 PUCHAR _Dest = (PUCHAR)(Destination); \ 03272 PUCHAR _End = _Dest + (Length); \ 03273 while (_Dest < _End) \ 03274 *_Dest++ = *_Src++; \ 03275 } \ 03276 } 03277 #endif 03278 03279 /* 03280 NDISAPI 03281 VOID 03282 NTAPI 03283 NdisAdjustBufferLength( 03284 IN PNDIS_BUFFER Buffer, 03285 IN UINT Length); 03286 */ 03287 #define NdisAdjustBufferLength(Buffer, Length) \ 03288 (((Buffer)->ByteCount) = (Length)) 03289 03290 #if NDIS_SUPPORT_NDIS6 03291 #define NdisAdjustMdlLength(_Mdl, _Length) \ 03292 (((_Mdl)->ByteCount) = (_Length)) 03293 #endif 03294 03295 /* 03296 NDISAPI 03297 ULONG 03298 NTAPI 03299 NdisBufferLength( 03300 IN PNDIS_BUFFER Buffer); 03301 */ 03302 #define NdisBufferLength MmGetMdlByteCount 03303 03304 /* 03305 NDISAPI 03306 PVOID 03307 NTAPI 03308 NdisBufferVirtualAddress( 03309 IN PNDIS_BUFFER Buffer); 03310 */ 03311 #define NdisBufferVirtualAddress MmGetSystemAddressForMdl 03312 03313 #define NdisBufferVirtualAddressSafe MmGetSystemAddressForMdlSafe 03314 03315 NDISAPI 03316 ULONG 03317 NTAPI 03318 NDIS_BUFFER_TO_SPAN_PAGES( 03319 IN PNDIS_BUFFER Buffer); 03320 03321 /* 03322 NDISAPI 03323 VOID 03324 NTAPI 03325 NdisGetBufferPhysicalArraySize( 03326 IN PNDIS_BUFFER Buffer, 03327 OUT PUINT ArraySize); 03328 */ 03329 #define NdisGetBufferPhysicalArraySize(Buffer, ArraySize) \ 03330 (*(ArraySize) = NDIS_BUFFER_TO_SPAN_PAGES(Buffer)) 03331 03332 /* 03333 NDISAPI 03334 VOID 03335 NTAPI 03336 NdisQueryBufferOffset( 03337 IN PNDIS_BUFFER Buffer, 03338 OUT PUINT Offset, 03339 OUT PUINT Length); 03340 */ 03341 #define NdisQueryBufferOffset(_Buffer, _Offset, _Length) { \ 03342 *(_Offset) = MmGetMdlByteOffset(_Buffer); \ 03343 *(_Length) = MmGetMdlByteCount(_Buffer); \ 03344 } 03345 03346 /* 03347 * PVOID 03348 * NDIS_BUFFER_LINKAGE( 03349 * IN PNDIS_BUFFER Buffer); 03350 */ 03351 #define NDIS_BUFFER_LINKAGE(Buffer) (Buffer)->Next 03352 03353 /* 03354 * VOID 03355 * NdisGetNextBuffer( 03356 * IN PNDIS_BUFFER CurrentBuffer, 03357 * OUT PNDIS_BUFFER * NextBuffer) 03358 */ 03359 #define NdisGetNextBuffer(CurrentBuffer, \ 03360 NextBuffer) \ 03361 { \ 03362 *(NextBuffer) = (CurrentBuffer)->Next; \ 03363 } 03364 03365 #if NDIS_LEGACY_DRIVER 03366 03367 #define NDIS_PACKET_FIRST_NDIS_BUFFER(_Packet) ((_Packet)->Private.Head) 03368 #define NDIS_PACKET_LAST_NDIS_BUFFER(_Packet) ((_Packet)->Private.Tail) 03369 #define NDIS_PACKET_VALID_COUNTS(_Packet) ((_Packet)->Private.ValidCounts) 03370 03371 /* 03372 * UINT 03373 * NdisGetPacketFlags( 03374 * IN PNDIS_PACKET Packet); 03375 */ 03376 #define NdisGetPacketFlags(Packet) (Packet)->Private.Flags 03377 03378 /* 03379 * ULONG 03380 * NDIS_GET_PACKET_PROTOCOL_TYPE( 03381 * IN PNDIS_PACKET Packet); 03382 */ 03383 #define NDIS_GET_PACKET_PROTOCOL_TYPE(_Packet) \ 03384 ((_Packet)->Private.Flags & NDIS_PROTOCOL_ID_MASK) 03385 03386 /* 03387 * PNDIS_PACKET_OOB_DATA 03388 * NDIS_OOB_DATA_FROM_PACKET( 03389 * IN PNDIS_PACKET Packet); 03390 */ 03391 #define NDIS_OOB_DATA_FROM_PACKET(_Packet) \ 03392 (PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ 03393 (_Packet)->Private.NdisPacketOobOffset) 03394 03395 /* 03396 * ULONG 03397 * NDIS_GET_PACKET_HEADER_SIZE( 03398 * IN PNDIS_PACKET Packet); 03399 */ 03400 #define NDIS_GET_PACKET_HEADER_SIZE(_Packet) \ 03401 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ 03402 (_Packet)->Private.NdisPacketOobOffset))->HeaderSize 03403 03404 /* 03405 * NDIS_STATUS 03406 * NDIS_GET_PACKET_STATUS( 03407 * IN PNDIS_PACKET Packet); 03408 */ 03409 #define NDIS_GET_PACKET_STATUS(_Packet) \ 03410 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ 03411 (_Packet)->Private.NdisPacketOobOffset))->Status 03412 03413 /* 03414 * ULONGLONG 03415 * NDIS_GET_PACKET_TIME_TO_SEND( 03416 * IN PNDIS_PACKET Packet); 03417 */ 03418 #define NDIS_GET_PACKET_TIME_TO_SEND(_Packet) \ 03419 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ 03420 (_Packet)->Private.NdisPacketOobOffset))->TimeToSend 03421 03422 /* 03423 * ULONGLONG 03424 * NDIS_GET_PACKET_TIME_SENT( 03425 * IN PNDIS_PACKET Packet); 03426 */ 03427 #define NDIS_GET_PACKET_TIME_SENT(_Packet) \ 03428 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ 03429 (_Packet)->Private.NdisPacketOobOffset))->TimeSent 03430 03431 /* 03432 * ULONGLONG 03433 * NDIS_GET_PACKET_TIME_RECEIVED( 03434 * IN PNDIS_PACKET Packet); 03435 */ 03436 #define NDIS_GET_PACKET_TIME_RECEIVED(_Packet) \ 03437 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ 03438 (_Packet)->Private.NdisPacketOobOffset))->TimeReceived 03439 03440 /* 03441 * VOID 03442 * NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO( 03443 * IN PNDIS_PACKET Packet, 03444 * IN PPVOID pMediaSpecificInfo, 03445 * IN PUINT pSizeMediaSpecificInfo); 03446 */ 03447 #define NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(_Packet, \ 03448 _pMediaSpecificInfo, \ 03449 _pSizeMediaSpecificInfo) \ 03450 { \ 03451 if (!((_Packet)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS) || \ 03452 !((_Packet)->Private.NdisPacketFlags & fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO)) \ 03453 { \ 03454 *(_pMediaSpecificInfo) = NULL; \ 03455 *(_pSizeMediaSpecificInfo) = 0; \ 03456 } \ 03457 else \ 03458 { \ 03459 *(_pMediaSpecificInfo) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ 03460 (_Packet)->Private.NdisPacketOobOffset))->MediaSpecificInformation; \ 03461 *(_pSizeMediaSpecificInfo) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ 03462 (_Packet)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo; \ 03463 } \ 03464 } 03465 03466 /* 03467 * VOID 03468 * NDIS_SET_PACKET_HEADER_SIZE( 03469 * IN PNDIS_PACKET Packet, 03470 * IN UINT HdrSize); 03471 */ 03472 #define NDIS_SET_PACKET_HEADER_SIZE(_Packet, _HdrSize) \ 03473 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ 03474 (_Packet)->Private.NdisPacketOobOffset))->HeaderSize = (_HdrSize) 03475 03476 /* 03477 * VOID 03478 * NDIS_SET_PACKET_STATUS( 03479 * IN PNDIS_PACKET Packet, 03480 * IN NDIS_STATUS Status); 03481 */ 03482 #define NDIS_SET_PACKET_STATUS(_Packet, _Status) \ 03483 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ 03484 (_Packet)->Private.NdisPacketOobOffset))->Status = (_Status) 03485 03486 /* 03487 * VOID 03488 * NDIS_SET_PACKET_TIME_TO_SEND( 03489 * IN PNDIS_PACKET Packet, 03490 * IN ULONGLONG TimeToSend); 03491 */ 03492 #define NDIS_SET_PACKET_TIME_TO_SEND(_Packet, _TimeToSend) \ 03493 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ 03494 (_Packet)->Private.NdisPacketOobOffset))->TimeToSend = (_TimeToSend) 03495 03496 /* 03497 * VOID 03498 * NDIS_SET_PACKET_TIME_SENT( 03499 * IN PNDIS_PACKET Packet, 03500 * IN ULONGLONG TimeSent); 03501 */ 03502 #define NDIS_SET_PACKET_TIME_SENT(_Packet, _TimeSent) \ 03503 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ 03504 (_Packet)->Private.NdisPacketOobOffset))->TimeSent = (_TimeSent) 03505 03506 /* 03507 * VOID 03508 * NDIS_SET_PACKET_TIME_RECEIVED( 03509 * IN PNDIS_PACKET Packet, 03510 * IN ULONGLONG TimeReceived); 03511 */ 03512 #define NDIS_SET_PACKET_TIME_RECEIVED(_Packet, _TimeReceived) \ 03513 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ 03514 (_Packet)->Private.NdisPacketOobOffset))->TimeReceived = (_TimeReceived) 03515 03516 /* 03517 * VOID 03518 * NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO( 03519 * IN PNDIS_PACKET Packet, 03520 * IN PVOID MediaSpecificInfo, 03521 * IN UINT SizeMediaSpecificInfo); 03522 */ 03523 #define NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(_Packet, \ 03524 _MediaSpecificInfo, \ 03525 _SizeMediaSpecificInfo) \ 03526 { \ 03527 if ((_Packet)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS) \ 03528 { \ 03529 (_Packet)->Private.NdisPacketFlags |= fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO; \ 03530 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ 03531 (_Packet)->Private.NdisPacketOobOffset))->MediaSpecificInformation = \ 03532 (_MediaSpecificInfo); \ 03533 ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ 03534 (_Packet)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo = \ 03535 (_SizeMediaSpecificInfo); \ 03536 } \ 03537 } 03538 03539 /* 03540 * VOID 03541 * NdisSetPacketFlags( 03542 * IN PNDIS_PACKET Packet, 03543 * IN UINT Flags); 03544 */ 03545 #define NdisSetPacketFlags(Packet, Flags) (Packet)->Private.Flags |= (Flags) 03546 03547 /* 03548 * VOID 03549 * NdisClearPacketFlags( 03550 * IN PNDIS_PACKET Packet, 03551 * IN UINT Flags); 03552 */ 03553 #define NdisClearPacketFlags(Packet, Flags) (Packet)->Private.Flags &= ~(Flags) 03554 03555 /* 03556 * VOID 03557 * NdisQueryPacket( 03558 * IN PNDIS_PACKET Packet, 03559 * OUT PUINT PhysicalBufferCount OPTIONAL, 03560 * OUT PUINT BufferCount OPTIONAL, 03561 * OUT PNDIS_BUFFER *FirstBuffer OPTIONAL, 03562 * OUT PUINT TotalPacketLength OPTIONAL); 03563 */ 03564 static __inline 03565 VOID 03566 NdisQueryPacket( 03567 IN PNDIS_PACKET Packet, 03568 OUT PUINT PhysicalBufferCount OPTIONAL, 03569 OUT PUINT BufferCount OPTIONAL, 03570 OUT PNDIS_BUFFER *FirstBuffer OPTIONAL, 03571 OUT PUINT TotalPacketLength OPTIONAL) 03572 { 03573 if (FirstBuffer) 03574 *FirstBuffer = Packet->Private.Head; 03575 if (TotalPacketLength || BufferCount || PhysicalBufferCount) { 03576 if (!Packet->Private.ValidCounts) { 03577 UINT Offset; 03578 UINT PacketLength; 03579 PNDIS_BUFFER NdisBuffer; 03580 UINT _PhysicalBufferCount = 0; 03581 UINT _TotalPacketLength = 0; 03582 UINT Count = 0; 03583 03584 for (NdisBuffer = Packet->Private.Head; 03585 NdisBuffer != (PNDIS_BUFFER)NULL; 03586 NdisBuffer = NdisBuffer->Next) { 03587 _PhysicalBufferCount += NDIS_BUFFER_TO_SPAN_PAGES(NdisBuffer); 03588 NdisQueryBufferOffset(NdisBuffer, &Offset, &PacketLength); 03589 _TotalPacketLength += PacketLength; 03590 Count++; 03591 } 03592 Packet->Private.PhysicalCount = _PhysicalBufferCount; 03593 Packet->Private.TotalLength = _TotalPacketLength; 03594 Packet->Private.Count = Count; 03595 Packet->Private.ValidCounts = TRUE; 03596 } 03597 03598 if (PhysicalBufferCount) 03599 *PhysicalBufferCount = Packet->Private.PhysicalCount; 03600 03601 if (BufferCount) 03602 *BufferCount = Packet->Private.Count; 03603 03604 if (TotalPacketLength) 03605 *TotalPacketLength = Packet->Private.TotalLength; 03606 } 03607 } 03608 03609 /* 03610 * VOID 03611 * NdisQueryPacketLength( 03612 * IN PNDIS_PACKET Packet, 03613 * OUT PUINT PhysicalBufferCount OPTIONAL, 03614 * OUT PUINT BufferCount OPTIONAL, 03615 * OUT PNDIS_BUFFER *FirstBuffer OPTIONAL, 03616 * OUT PUINT TotalPacketLength OPTIONAL); 03617 */ 03618 #define NdisQueryPacketLength(_Packet, \ 03619 _TotalPacketLength) \ 03620 { \ 03621 if (!(_Packet)->Private.ValidCounts) { \ 03622 NdisQueryPacket(_Packet, NULL, NULL, NULL, _TotalPacketLength); \ 03623 } \ 03624 else *(_TotalPacketLength) = (_Packet)->Private.TotalLength; \ 03625 } 03626 03627 #endif /* NDIS_LEGACY_DRIVER */ 03628 03629 /* Memory management routines */ 03630 03631 /* 03632 NDISAPI 03633 VOID 03634 NTAPI 03635 NdisCreateLookaheadBufferFromSharedMemory( 03636 IN PVOID pSharedMemory, 03637 IN UINT LookaheadLength, 03638 OUT PVOID *pLookaheadBuffer); 03639 */ 03640 #define NdisCreateLookaheadBufferFromSharedMemory(_S, _L, _B) ((*(_B)) = (_S)) 03641 03642 NDISAPI 03643 VOID 03644 NTAPI 03645 NdisDestroyLookaheadBufferFromSharedMemory( 03646 IN PVOID pLookaheadBuffer); 03647 03648 #if defined(_M_IX86) || defined(_M_AMD64) || defined(_M_ARM) || defined(_M_PPC) 03649 03650 /* 03651 * VOID 03652 * NdisMoveMappedMemory( 03653 * OUT PVOID Destination, 03654 * IN PVOID Source, 03655 * IN ULONG Length); 03656 */ 03657 #define NdisMoveMappedMemory(Destination, Source, Length) \ 03658 RtlCopyMemory(Destination, Source, Length) 03659 03660 /* 03661 * VOID 03662 * NdisZeroMappedMemory( 03663 * IN PVOID Destination, 03664 * IN ULONG Length); 03665 */ 03666 #define NdisZeroMappedMemory(Destination, Length) \ 03667 RtlZeroMemory(Destination, Length) 03668 03669 #else 03670 03671 #define NdisMoveMappedMemory(Destination, Source, Length) \ 03672 { \ 03673 PUCHAR _Dest = Destination, _Src = Source, _End = _Dest + Length; \ 03674 while (_Dest < _End) \ 03675 *_Dest++ = _Src++; \ 03676 } 03677 03678 #define NdisZeroMappedMemory(Destination, Length) \ 03679 { \ 03680 PUCHAR _Dest = Destination, _End = _Dest + Length; \ 03681 while (_Dest < _End) \ 03682 *_Dest++ = 0; \ 03683 } 03684 03685 #endif /* _M_IX86 or _M_AMD64 */ 03686 03687 /* 03688 * VOID 03689 * NdisMoveFromMappedMemory( 03690 * OUT PVOID Destination, 03691 * IN PVOID Source, 03692 * IN ULONG Length); 03693 */ 03694 #define NdisMoveFromMappedMemory(Destination, Source, Length) \ 03695 NdisMoveMappedMemory(Destination, Source, Length) 03696 03697 /* 03698 * VOID 03699 * NdisMoveToMappedMemory( 03700 * OUT PVOID Destination, 03701 * IN PVOID Source, 03702 * IN ULONG Length); 03703 */ 03704 #define NdisMoveToMappedMemory(Destination, Source, Length) \ 03705 NdisMoveMappedMemory(Destination, Source, Length) 03706 03707 /* 03708 * VOID 03709 * NdisMUpdateSharedMemory( 03710 * IN NDIS_HANDLE MiniportAdapterHandle, 03711 * IN ULONG Length, 03712 * IN PVOID VirtualAddress, 03713 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress); 03714 */ 03715 #define NdisMUpdateSharedMemory(_H, _L, _V, _P) \ 03716 NdisUpdateSharedMemory(_H, _L, _V, _P) 03717 03718 _When_(MemoryFlags==0, _IRQL_requires_max_(DISPATCH_LEVEL)) 03719 _When_(MemoryFlags==NDIS_MEMORY_CONTIGUOUS, _IRQL_requires_(PASSIVE_LEVEL)) 03720 _When_(MemoryFlags==NDIS_MEMORY_NONCACHED, _IRQL_requires_max_(APC_LEVEL)) 03721 NDISAPI 03722 VOID 03723 NTAPI 03724 NdisFreeMemory( 03725 _In_reads_bytes_(Length) __drv_freesMem(Mem) PVOID VirtualAddress, 03726 _In_ UINT Length, 03727 _In_ _Pre_satisfies_(MemoryFlags == 0 || MemoryFlags == NDIS_MEMORY_NONCACHED || MemoryFlags == NDIS_MEMORY_CONTIGUOUS) 03728 UINT MemoryFlags); 03729 03730 NDISAPI 03731 VOID 03732 NTAPI 03733 NdisFreeMemoryWithTag( 03734 IN PVOID VirtualAddress, 03735 IN ULONG Tag); 03736 03737 NDISAPI 03738 VOID 03739 NTAPI 03740 NdisImmediateReadSharedMemory( 03741 IN NDIS_HANDLE WrapperConfigurationContext, 03742 IN ULONG SharedMemoryAddress, 03743 OUT PUCHAR Buffer, 03744 IN ULONG Length); 03745 03746 NDISAPI 03747 VOID 03748 NTAPI 03749 NdisImmediateWriteSharedMemory( 03750 IN NDIS_HANDLE WrapperConfigurationContext, 03751 IN ULONG SharedMemoryAddress, 03752 IN PUCHAR Buffer, 03753 IN ULONG Length); 03754 03755 _IRQL_requires_(PASSIVE_LEVEL) 03756 NDISAPI 03757 VOID 03758 NTAPI 03759 NdisMAllocateSharedMemory( 03760 _In_ NDIS_HANDLE MiniportAdapterHandle, 03761 _In_ ULONG Length, 03762 _In_ BOOLEAN Cached, 03763 _Outptr_result_bytebuffer_(Length) _At_(*VirtualAddress, _Must_inspect_result_) 03764 PVOID *VirtualAddress, 03765 _Out_ _At_(*PhysicalAddress, _Must_inspect_result_) 03766 PNDIS_PHYSICAL_ADDRESS PhysicalAddress); 03767 03768 _IRQL_requires_max_(DISPATCH_LEVEL) 03769 NDISAPI 03770 NDIS_STATUS 03771 NTAPI 03772 NdisMAllocateSharedMemoryAsync( 03773 _In_ NDIS_HANDLE MiniportAdapterHandle, 03774 _In_ ULONG Length, 03775 _In_ BOOLEAN Cached, 03776 _In_ PVOID Context); 03777 03778 #if defined(NDIS50) 03779 03780 #define NdisUpdateSharedMemory(NdisAdapterHandle, \ 03781 Length, \ 03782 VirtualAddress, \ 03783 PhysicalAddress) 03784 03785 #else 03786 03787 NDISAPI 03788 VOID 03789 NTAPI 03790 NdisUpdateSharedMemory( 03791 IN NDIS_HANDLE NdisAdapterHandle, 03792 IN ULONG Length, 03793 IN PVOID VirtualAddress, 03794 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress); 03795 03796 #endif /* defined(NDIS50) */ 03797 03798 /* 03799 * ULONG 03800 * NdisGetPhysicalAddressHigh( 03801 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress); 03802 */ 03803 #define NdisGetPhysicalAddressHigh(PhysicalAddress) \ 03804 ((PhysicalAddress).HighPart) 03805 03806 /* 03807 * VOID 03808 * NdisSetPhysicalAddressHigh( 03809 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress, 03810 * IN ULONG Value); 03811 */ 03812 #define NdisSetPhysicalAddressHigh(PhysicalAddress, Value) \ 03813 ((PhysicalAddress).HighPart) = (Value) 03814 03815 /* 03816 * ULONG 03817 * NdisGetPhysicalAddressLow( 03818 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress); 03819 */ 03820 #define NdisGetPhysicalAddressLow(PhysicalAddress) \ 03821 ((PhysicalAddress).LowPart) 03822 03823 03824 /* 03825 * VOID 03826 * NdisSetPhysicalAddressLow( 03827 * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress, 03828 * IN ULONG Value); 03829 */ 03830 #define NdisSetPhysicalAddressLow(PhysicalAddress, Value) \ 03831 ((PhysicalAddress).LowPart) = (Value) 03832 03833 /* 03834 * VOID 03835 * NDIS_PHYSICAL_ADDRESS_CONST( 03836 * IN ULONG Low, 03837 * IN LONG High); 03838 */ 03839 #define NDIS_PHYSICAL_ADDRESS_CONST(Low, High) \ 03840 { {(ULONG)(Low), (LONG)(High)} } 03841 03842 /* 03843 * ULONG 03844 * NdisEqualMemory( 03845 * IN CONST VOID *Source1, 03846 * IN CONST VOID *Source2, 03847 * IN ULONG Length); 03848 */ 03849 #define NdisEqualMemory(Source1, Source2, Length) \ 03850 RtlEqualMemory(Source1, Source2, Length) 03851 03852 /* 03853 * VOID 03854 * NdisFillMemory( 03855 * IN PVOID Destination, 03856 * IN ULONG Length, 03857 * IN UCHAR Fill); 03858 */ 03859 #define NdisFillMemory(Destination, Length, Fill) \ 03860 RtlFillMemory(Destination, Length, Fill) 03861 03862 /* 03863 * VOID 03864 * NdisMoveMemory( 03865 * OUT PVOID Destination, 03866 * IN PVOID Source, 03867 * IN ULONG Length); 03868 */ 03869 #define NdisMoveMemory(Destination, Source, Length) \ 03870 RtlCopyMemory(Destination, Source, Length) 03871 03872 03873 /* 03874 * VOID 03875 * NdisRetrieveUlong( 03876 * IN PULONG DestinationAddress, 03877 * IN PULONG SourceAddress); 03878 */ 03879 #define NdisRetrieveUlong(DestinationAddress, SourceAddress) \ 03880 RtlRetrieveUlong(DestinationAddress, SourceAddress) 03881 03882 03883 /* 03884 * VOID 03885 * NdisStoreUlong( 03886 * IN PULONG DestinationAddress, 03887 * IN ULONG Value); 03888 */ 03889 #define NdisStoreUlong(DestinationAddress, Value) \ 03890 RtlStoreUlong(DestinationAddress, Value) 03891 03892 03893 /* 03894 * VOID 03895 * NdisZeroMemory( 03896 * IN PVOID Destination, 03897 * IN ULONG Length) 03898 */ 03899 #define NdisZeroMemory(Destination, Length) \ 03900 RtlZeroMemory(Destination, Length) 03901 03902 typedef VOID 03903 (NTAPI *NDIS_BLOCK_INITIALIZER) ( 03904 IN PUCHAR Block, 03905 IN SIZE_T NumberOfBytes 03906 ); 03907 03908 /* Configuration routines */ 03909 03910 #if NDIS_LEGACY_DRIVER 03911 _IRQL_requires_(PASSIVE_LEVEL) 03912 _Success_(*Status >= 0) 03913 NDISAPI 03914 VOID 03915 NTAPI 03916 NdisOpenConfiguration( 03917 _At_(*Status, _Must_inspect_result_) _Out_ PNDIS_STATUS Status, 03918 _Out_ PNDIS_HANDLE ConfigurationHandle, 03919 _In_ NDIS_HANDLE WrapperConfigurationContext); 03920 #endif 03921 03922 _IRQL_requires_(PASSIVE_LEVEL) 03923 _Success_(*Status >= 0) 03924 NDISAPI 03925 VOID 03926 NTAPI 03927 NdisReadNetworkAddress( 03928 _At_(*Status, _Must_inspect_result_) _Out_ PNDIS_STATUS Status, 03929 _Outptr_result_bytebuffer_to_(*NetworkAddressLength, *NetworkAddressLength) 03930 PVOID *NetworkAddress, 03931 _Out_ PUINT NetworkAddressLength, 03932 _In_ NDIS_HANDLE ConfigurationHandle); 03933 03934 NDISAPI 03935 VOID 03936 NTAPI 03937 NdisReadEisaSlotInformation( 03938 OUT PNDIS_STATUS Status, 03939 IN NDIS_HANDLE WrapperConfigurationContext, 03940 OUT PUINT SlotNumber, 03941 OUT PNDIS_EISA_FUNCTION_INFORMATION EisaData); 03942 03943 NDISAPI 03944 VOID 03945 NTAPI 03946 NdisReadEisaSlotInformationEx( 03947 OUT PNDIS_STATUS Status, 03948 IN NDIS_HANDLE WrapperConfigurationContext, 03949 OUT PUINT SlotNumber, 03950 OUT PNDIS_EISA_FUNCTION_INFORMATION *EisaData, 03951 OUT PUINT NumberOfFunctions); 03952 03953 #if NDIS_LEGACY_MINIPORT 03954 03955 _IRQL_requires_max_(DISPATCH_LEVEL) 03956 NDISAPI 03957 ULONG 03958 NTAPI 03959 NdisReadPciSlotInformation( 03960 _In_ NDIS_HANDLE NdisAdapterHandle, 03961 _In_ ULONG SlotNumber, 03962 _In_ ULONG Offset, 03963 _Out_writes_bytes_(Length) PVOID Buffer, 03964 _In_ ULONG Length); 03965 03966 _IRQL_requires_max_(DISPATCH_LEVEL) 03967 NDISAPI 03968 ULONG 03969 NTAPI 03970 NdisWritePciSlotInformation( 03971 _In_ NDIS_HANDLE NdisAdapterHandle, 03972 _In_ ULONG SlotNumber, 03973 _In_ ULONG Offset, 03974 _In_reads_bytes_(Length) PVOID Buffer, 03975 _In_ ULONG Length); 03976 03977 _IRQL_requires_max_(DISPATCH_LEVEL) 03978 NDISAPI 03979 ULONG 03980 NTAPI 03981 NdisReadPcmciaAttributeMemory( 03982 _In_ NDIS_HANDLE NdisAdapterHandle, 03983 _In_ ULONG Offset, 03984 _Out_writes_bytes_(Length) PVOID Buffer, 03985 _In_ ULONG Length); 03986 03987 _IRQL_requires_max_(DISPATCH_LEVEL) 03988 NDISAPI 03989 ULONG 03990 NTAPI 03991 NdisWritePcmciaAttributeMemory( 03992 _In_ NDIS_HANDLE NdisAdapterHandle, 03993 _In_ ULONG Offset, 03994 _In_reads_bytes_(Length) PVOID Buffer, 03995 _In_ ULONG Length); 03996 03997 #endif /* NDIS_LEGACY_MINIPORT */ 03998 03999 /* String management routines */ 04000 04001 /* 04002 NDISAPI 04003 NDIS_STATUS 04004 NTAPI 04005 NdisAnsiStringToUnicodeString( 04006 IN OUT PNDIS_STRING DestinationString, 04007 IN PNDIS_ANSI_STRING SourceString); 04008 */ 04009 #define NdisAnsiStringToUnicodeString(_us, _as) RtlAnsiStringToUnicodeString(_us, _as, FALSE) 04010 04011 /* 04012 * BOOLEAN 04013 * NdisEqualString( 04014 * IN PNDIS_STRING String1, 04015 * IN PNDIS_STRING String2, 04016 * IN BOOLEAN CaseInsensitive); 04017 */ 04018 #define NdisEqualString RtlEqualString 04019 04020 #define NdisEqualUnicodeString RtlEqualUnicodeString 04021 04022 /* 04023 NDISAPI 04024 VOID 04025 NTAPI 04026 NdisInitAnsiString( 04027 IN OUT PNDIS_ANSI_STRING DestinationString, 04028 IN PCSTR SourceString); 04029 */ 04030 #define NdisInitAnsiString RtlInitString 04031 04032 NDISAPI 04033 VOID 04034 NTAPI 04035 NdisInitUnicodeString( 04036 IN OUT PNDIS_STRING DestinationString, 04037 IN PCWSTR SourceString); 04038 04039 /* 04040 NDISAPI 04041 NDIS_STATUS 04042 NTAPI 04043 NdisUnicodeStringToAnsiString( 04044 IN OUT PNDIS_ANSI_STRING DestinationString, 04045 IN PNDIS_STRING SourceString); 04046 */ 04047 #define NdisUnicodeStringToAnsiString(_as, _us) RtlUnicodeStringToAnsiString(_as, _us, FALSE) 04048 04049 #define NdisFreeString(_s) NdisFreeMemory((_s).Buffer, (_s).MaximumLength, 0) 04050 #define NdisPrintString(_s) DbgPrint("%ls", (_s).Buffer) 04051 04052 /* Spin lock reoutines */ 04053 04054 /* 04055 NDISAPI 04056 VOID 04057 NTAPI 04058 NdisAllocateSpinLock( 04059 IN PNDIS_SPIN_LOCK SpinLock); 04060 */ 04061 #define NdisAllocateSpinLock(_SpinLock) KeInitializeSpinLock(&(_SpinLock)->SpinLock) 04062 04063 /* 04064 NDISAPI 04065 VOID 04066 NTAPI 04067 NdisFreeSpinLock( 04068 IN PNDIS_SPIN_LOCK SpinLock); 04069 */ 04070 #define NdisFreeSpinLock(_SpinLock) 04071 04072 /* 04073 NDISAPI 04074 VOID 04075 NTAPI 04076 NdisAcquireSpinLock( 04077 IN PNDIS_SPIN_LOCK SpinLock); 04078 */ 04079 #define NdisAcquireSpinLock(_SpinLock) KeAcquireSpinLock(&(_SpinLock)->SpinLock, &(_SpinLock)->OldIrql) 04080 04081 /* 04082 NDISAPI 04083 VOID 04084 NTAPI 04085 NdisReleaseSpinLock( 04086 IN PNDIS_SPIN_LOCK SpinLock); 04087 */ 04088 #define NdisReleaseSpinLock(_SpinLock) KeReleaseSpinLock(&(_SpinLock)->SpinLock,(_SpinLock)->OldIrql) 04089 04090 /* 04091 NDISAPI 04092 VOID 04093 NTAPI 04094 NdisDprAcquireSpinLock( 04095 IN PNDIS_SPIN_LOCK SpinLock); 04096 */ 04097 #define NdisDprAcquireSpinLock(_SpinLock) KeAcquireSpinLockAtDpcLevel(&(_SpinLock)->SpinLock) 04098 04099 /* 04100 NDISAPI 04101 VOID 04102 NTAPI 04103 NdisDprReleaseSpinLock( 04104 IN PNDIS_SPIN_LOCK SpinLock); 04105 */ 04106 #define NdisDprReleaseSpinLock(_SpinLock) KeReleaseSpinLockFromDpcLevel(&(_SpinLock)->SpinLock) 04107 04108 /* I/O routines */ 04109 04110 /* 04111 * VOID 04112 * NdisRawReadPortBufferUchar( 04113 * IN ULONG Port, 04114 * OUT PUCHAR Buffer, 04115 * IN ULONG Length); 04116 */ 04117 #define NdisRawReadPortBufferUchar(Port, Buffer, Length) \ 04118 READ_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length)) 04119 04120 /* 04121 * VOID 04122 * NdisRawReadPortBufferUlong( 04123 * IN ULONG Port, 04124 * OUT PULONG Buffer, 04125 * IN ULONG Length); 04126 */ 04127 #define NdisRawReadPortBufferUlong(Port, Buffer, Length) \ 04128 READ_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length)) 04129 04130 /* 04131 * VOID 04132 * NdisRawReadPortBufferUshort( 04133 * IN ULONG Port, 04134 * OUT PUSHORT Buffer, 04135 * IN ULONG Length); 04136 */ 04137 #define NdisRawReadPortBufferUshort(Port, Buffer, Length) \ 04138 READ_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length)) 04139 04140 /* 04141 * VOID 04142 * NdisRawReadPortUchar( 04143 * IN ULONG Port, 04144 * OUT PUCHAR Data); 04145 */ 04146 #define NdisRawReadPortUchar(Port, Data) \ 04147 *(Data) = READ_PORT_UCHAR((PUCHAR)(Port)) 04148 04149 /* 04150 * VOID 04151 * NdisRawReadPortUlong( 04152 * IN ULONG Port, 04153 * OUT PULONG Data); 04154 */ 04155 #define NdisRawReadPortUlong(Port, Data) \ 04156 *(Data) = READ_PORT_ULONG((PULONG)(Port)) 04157 04158 /* 04159 * VOID 04160 * NdisRawReadPortUshort( 04161 * IN ULONG Port, 04162 * OUT PUSHORT Data); 04163 */ 04164 #define NdisRawReadPortUshort(Port, Data) \ 04165 *(Data) = READ_PORT_USHORT((PUSHORT)(Port)) 04166 04167 /* 04168 * VOID 04169 * NdisRawWritePortBufferUchar( 04170 * IN ULONG Port, 04171 * IN PUCHAR Buffer, 04172 * IN ULONG Length); 04173 */ 04174 #define NdisRawWritePortBufferUchar(Port, Buffer, Length) \ 04175 WRITE_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length)) 04176 04177 /* 04178 * VOID 04179 * NdisRawWritePortBufferUlong( 04180 * IN ULONG Port, 04181 * IN PULONG Buffer, 04182 * IN ULONG Length); 04183 */ 04184 #define NdisRawWritePortBufferUlong(Port, Buffer, Length) \ 04185 WRITE_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length)) 04186 04187 /* 04188 * VOID 04189 * NdisRawWritePortBufferUshort( 04190 * IN ULONG Port, 04191 * IN PUSHORT Buffer, 04192 * IN ULONG Length); 04193 */ 04194 #define NdisRawWritePortBufferUshort(Port, Buffer, Length) \ 04195 WRITE_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length)) 04196 04197 /* 04198 * VOID 04199 * NdisRawWritePortUchar( 04200 * IN ULONG Port, 04201 * IN UCHAR Data); 04202 */ 04203 #define NdisRawWritePortUchar(Port, Data) \ 04204 WRITE_PORT_UCHAR((PUCHAR)(Port), (UCHAR)(Data)) 04205 04206 /* 04207 * VOID 04208 * NdisRawWritePortUlong( 04209 * IN ULONG Port, 04210 * IN ULONG Data); 04211 */ 04212 #define NdisRawWritePortUlong(Port, Data) \ 04213 WRITE_PORT_ULONG((PULONG)(Port), (ULONG)(Data)) 04214 04215 /* 04216 * VOID 04217 * NdisRawWritePortUshort( 04218 * IN ULONG Port, 04219 * IN USHORT Data); 04220 */ 04221 #define NdisRawWritePortUshort(Port, Data) \ 04222 WRITE_PORT_USHORT((PUSHORT)(Port), (USHORT)(Data)) 04223 04224 04225 /* 04226 * VOID 04227 * NdisReadRegisterUchar( 04228 * IN PUCHAR Register, 04229 * OUT PUCHAR Data); 04230 */ 04231 #define NdisReadRegisterUchar(Register, Data) \ 04232 *(Data) = *(Register) 04233 04234 /* 04235 * VOID 04236 * NdisReadRegisterUlong( 04237 * IN PULONG Register, 04238 * OUT PULONG Data); 04239 */ 04240 #define NdisReadRegisterUlong(Register, Data) \ 04241 *(Data) = *(Register) 04242 04243 /* 04244 * VOID 04245 * NdisReadRegisterUshort( 04246 * IN PUSHORT Register, 04247 * OUT PUSHORT Data); 04248 */ 04249 #define NdisReadRegisterUshort(Register, Data) \ 04250 *(Data) = *(Register) 04251 04252 /* 04253 * VOID 04254 * NdisReadRegisterUchar( 04255 * IN PUCHAR Register, 04256 * IN UCHAR Data); 04257 */ 04258 #define NdisWriteRegisterUchar(Register, Data) \ 04259 WRITE_REGISTER_UCHAR((Register), (Data)) 04260 04261 /* 04262 * VOID 04263 * NdisReadRegisterUlong( 04264 * IN PULONG Register, 04265 * IN ULONG Data); 04266 */ 04267 #define NdisWriteRegisterUlong(Register, Data) \ 04268 WRITE_REGISTER_ULONG((Register), (Data)) 04269 04270 /* 04271 * VOID 04272 * NdisReadRegisterUshort( 04273 * IN PUSHORT Register, 04274 * IN USHORT Data); 04275 */ 04276 #define NdisWriteRegisterUshort(Register, Data) \ 04277 WRITE_REGISTER_USHORT((Register), (Data)) 04278 04279 04280 /* Linked lists */ 04281 04282 /* 04283 * VOID 04284 * NdisInitializeListHead( 04285 * IN PLIST_ENTRY ListHead); 04286 */ 04287 #define NdisInitializeListHead InitializeListHead 04288 04289 /* 04290 * PLIST_ENTRY 04291 * NdisInterlockedInsertHeadList( 04292 * IN PLIST_ENTRY ListHead, 04293 * IN PLIST_ENTRY ListEntry, 04294 * IN PNDIS_SPIN_LOCK SpinLock); 04295 */ 04296 #define NdisInterlockedInsertHeadList(_ListHead, _ListEntry, _SpinLock) \ 04297 ExInterlockedInsertHeadList(_ListHead, _ListEntry, &(_SpinLock)->SpinLock) 04298 04299 /* 04300 * PLIST_ENTRY 04301 * NdisInterlockedInsertTailList( 04302 * IN PLIST_ENTRY ListHead, 04303 * IN PLIST_ENTRY ListEntry, 04304 * IN PNDIS_SPIN_LOCK SpinLock); 04305 */ 04306 #define NdisInterlockedInsertTailList(_ListHead, _ListEntry, _SpinLock) \ 04307 ExInterlockedInsertTailList(_ListHead, _ListEntry, &(_SpinLock)->SpinLock) 04308 04309 /* 04310 * PLIST_ENTRY 04311 * NdisInterlockedRemoveHeadList( 04312 * IN PLIST_ENTRY ListHead, 04313 * IN PNDIS_SPIN_LOCK SpinLock); 04314 */ 04315 #define NdisInterlockedRemoveHeadList(_ListHead, _SpinLock) \ 04316 ExInterlockedRemoveHeadList(_ListHead, &(_SpinLock)->SpinLock) 04317 04318 /* 04319 * VOID 04320 * NdisInitializeSListHead( 04321 * IN PSLIST_HEADER SListHead); 04322 */ 04323 #define NdisInitializeSListHead(SListHead) ExInitializeSListHead(SListHead) 04324 04325 /* 04326 * USHORT NdisQueryDepthSList( 04327 * IN PSLIST_HEADER SListHead); 04328 */ 04329 #define NdisQueryDepthSList(SListHead) ExQueryDepthSList(SListHead) 04330 04331 #define NdisInterlockedPushEntryList(ListHead, ListEntry, Lock) \ 04332 ExInterlockedPushEntryList(ListHead, ListEntry, &(Lock)->SpinLock) 04333 04334 #define NdisInterlockedPopEntryList(ListHead, Lock) \ 04335 ExInterlockedPopEntryList(ListHead, &(Lock)->SpinLock) 04336 04337 /* Non-paged lookaside lists */ 04338 04339 #define NdisInitializeNPagedLookasideList(_L, _AR, _FR, _Fl, _S, _T, _D) \ 04340 ExInitializeNPagedLookasideList(_L, _AR, _FR, _Fl, _S, _T, _D) 04341 #define NdisDeleteNPagedLookasideList(_L) ExDeleteNPagedLookasideList(_L) 04342 #define NdisAllocateFromNPagedLookasideList(_L) ExAllocateFromNPagedLookasideList(_L) 04343 #define NdisFreeToNPagedLookasideList(_L, _E) ExFreeToNPagedLookasideList(_L, _E) 04344 04345 /* Interlocked routines */ 04346 04347 /* 04348 * LONG 04349 * NdisInterlockedDecrement( 04350 * IN PLONG Addend); 04351 */ 04352 #define NdisInterlockedDecrement(Addend) InterlockedDecrement(Addend) 04353 04354 /* 04355 * LONG 04356 * NdisInterlockedIncrement( 04357 * IN PLONG Addend); 04358 */ 04359 #define NdisInterlockedIncrement(Addend) InterlockedIncrement(Addend) 04360 04361 /* 04362 * VOID 04363 * NdisInterlockedAddUlong( 04364 * IN PULONG Addend, 04365 * IN ULONG Increment, 04366 * IN PNDIS_SPIN_LOCK SpinLock); 04367 */ 04368 #define NdisInterlockedAddUlong(_Addend, _Increment, _SpinLock) \ 04369 ExInterlockedAddUlong(_Addend, _Increment, &(_SpinLock)->SpinLock) 04370 04371 /* Miscellaneous routines */ 04372 04373 _IRQL_requires_(PASSIVE_LEVEL) 04374 NDISAPI 04375 VOID 04376 NTAPI 04377 NdisCloseConfiguration( 04378 _In_ __drv_freesMem(mem) NDIS_HANDLE ConfigurationHandle); 04379 04380 _IRQL_requires_(PASSIVE_LEVEL) 04381 _Success_(*Status >= 0) 04382 NDISAPI 04383 VOID 04384 NTAPI 04385 NdisReadConfiguration( 04386 _At_(*Status, _Must_inspect_result_) _Out_ PNDIS_STATUS Status, 04387 _Out_ PNDIS_CONFIGURATION_PARAMETER *ParameterValue, 04388 _In_ NDIS_HANDLE ConfigurationHandle, 04389 _In_ PNDIS_STRING Keyword, 04390 _In_ NDIS_PARAMETER_TYPE ParameterType); 04391 04392 _IRQL_requires_(PASSIVE_LEVEL) 04393 _Success_(*Status >= 0) 04394 NDISAPI 04395 VOID 04396 NTAPI 04397 NdisWriteConfiguration( 04398 _At_(*Status, _Must_inspect_result_) _Out_ PNDIS_STATUS Status, 04399 _In_ NDIS_HANDLE WrapperConfigurationContext, 04400 _In_ PNDIS_STRING Keyword, 04401 _In_ PNDIS_CONFIGURATION_PARAMETER ParameterValue); 04402 04403 _IRQL_requires_max_(DISPATCH_LEVEL) 04404 NDISAPI 04405 VOID 04406 __cdecl 04407 NdisWriteErrorLogEntry( 04408 _In_ NDIS_HANDLE NdisAdapterHandle, 04409 _In_ NDIS_ERROR_CODE ErrorCode, 04410 _In_ ULONG NumberOfErrorValues, 04411 ...); 04412 04413 _IRQL_requires_(PASSIVE_LEVEL) 04414 NDISAPI 04415 VOID 04416 NTAPI 04417 NdisInitializeString( 04418 _Out_ _At_(Destination->Buffer, __drv_allocatesMem(Mem)) PNDIS_STRING Destination, 04419 _In_opt_z_ PUCHAR Source); 04420 04421 /* 04422 * VOID 04423 * NdisStallExecution( 04424 * IN UINT MicrosecondsToStall) 04425 */ 04426 #define NdisStallExecution KeStallExecutionProcessor 04427 04428 /* 04429 NDISAPI 04430 VOID 04431 NTAPI 04432 NdisGetCurrentSystemTime( 04433 IN PLARGE_INTEGER pSystemTime); 04434 */ 04435 #define NdisGetCurrentSystemTime KeQuerySystemTime 04436 04437 #if NDIS_SUPPORT_60_COMPATIBLE_API 04438 _IRQL_requires_(PASSIVE_LEVEL) 04439 NDISAPI 04440 CCHAR 04441 NTAPI 04442 NdisSystemProcessorCount(VOID); 04443 #endif 04444 04445 NDISAPI 04446 VOID 04447 NTAPI 04448 NdisGetCurrentProcessorCpuUsage( 04449 OUT PULONG pCpuUsage); 04450 04451 /* NDIS helper macros */ 04452 04453 /* 04454 * VOID 04455 * NDIS_INIT_FUNCTION(FunctionName) 04456 */ 04457 #define NDIS_INIT_FUNCTION(FunctionName) \ 04458 alloc_text(init, FunctionName) 04459 04460 /* 04461 * VOID 04462 * NDIS_PAGABLE_FUNCTION(FunctionName) 04463 */ 04464 #define NDIS_PAGEABLE_FUNCTION(FunctionName) \ 04465 alloc_text(page, FunctionName) 04466 04467 #define NDIS_PAGABLE_FUNCTION NDIS_PAGEABLE_FUNCTION 04468 04469 04470 /* NDIS 4.0 extensions */ 04471 04472 _IRQL_requires_max_(DISPATCH_LEVEL) 04473 NDISAPI 04474 VOID 04475 NTAPI 04476 NdisMFreeSharedMemory( 04477 _In_ NDIS_HANDLE MiniportAdapterHandle, 04478 _In_ ULONG Length, 04479 _In_ BOOLEAN Cached, 04480 _In_reads_bytes_(Length) PVOID VirtualAddress, 04481 _In_ NDIS_PHYSICAL_ADDRESS PhysicalAddress); 04482 04483 NDISAPI 04484 VOID 04485 NTAPI 04486 NdisMWanIndicateReceive( 04487 OUT PNDIS_STATUS Status, 04488 IN NDIS_HANDLE MiniportAdapterHandle, 04489 IN NDIS_HANDLE NdisLinkContext, 04490 IN PUCHAR PacketBuffer, 04491 IN UINT PacketSize); 04492 04493 NDISAPI 04494 VOID 04495 NTAPI 04496 NdisMWanIndicateReceiveComplete( 04497 IN NDIS_HANDLE MiniportAdapterHandle, 04498 IN NDIS_HANDLE NdisLinkContext); 04499 04500 NDISAPI 04501 VOID 04502 NTAPI 04503 NdisMWanSendComplete( 04504 IN NDIS_HANDLE MiniportAdapterHandle, 04505 IN PNDIS_WAN_PACKET Packet, 04506 IN NDIS_STATUS Status); 04507 04508 NDISAPI 04509 NDIS_STATUS 04510 NTAPI 04511 NdisPciAssignResources( 04512 IN NDIS_HANDLE NdisMacHandle, 04513 IN NDIS_HANDLE NdisWrapperHandle, 04514 IN NDIS_HANDLE WrapperConfigurationContext, 04515 IN ULONG SlotNumber, 04516 OUT PNDIS_RESOURCE_LIST *AssignedResources); 04517 04518 04519 /* NDIS 5.0 extensions */ 04520 04521 _IRQL_requires_max_(DISPATCH_LEVEL) 04522 NDISAPI 04523 NDIS_STATUS 04524 NTAPI 04525 NdisAllocateMemoryWithTag( 04526 _At_(*VirtualAddress, __drv_allocatesMem(Mem)) _Outptr_result_bytebuffer_(Length) 04527 PVOID *VirtualAddress, 04528 _In_ UINT Length, 04529 _In_ ULONG Tag); 04530 04531 _IRQL_requires_max_(DISPATCH_LEVEL) 04532 NDISAPI 04533 VOID 04534 NTAPI 04535 NdisGetCurrentProcessorCounts( 04536 _Out_ PULONG pIdleCount, 04537 _Out_ PULONG pKernelAndUser, 04538 _Out_ PULONG pIndex); 04539 04540 #if NDIS_LEGACY_DRIVER 04541 NDISAPI 04542 VOID 04543 NTAPI 04544 NdisGetSystemUpTime( 04545 OUT PULONG pSystemUpTime); 04546 #endif 04547 04548 #if NDIS_SUPPORT_60_COMPATIBLE_API 04549 04550 _IRQL_requires_max_(DISPATCH_LEVEL) 04551 _IRQL_raises_(DISPATCH_LEVEL) 04552 _When_(fWrite, _Acquires_exclusive_lock_(*Lock)) 04553 _When_(!fWrite, _Acquires_shared_lock_(*Lock)) 04554 NDISAPI 04555 VOID 04556 NTAPI 04557 NdisAcquireReadWriteLock( 04558 _Inout_ PNDIS_RW_LOCK Lock, 04559 _In_ BOOLEAN fWrite, 04560 _Out_ _IRQL_saves_ PLOCK_STATE LockState); 04561 04562 _IRQL_requires_max_(DISPATCH_LEVEL) 04563 NDISAPI 04564 VOID 04565 NTAPI 04566 NdisInitializeReadWriteLock( 04567 _Out_ PNDIS_RW_LOCK Lock); 04568 04569 _IRQL_requires_(DISPATCH_LEVEL) 04570 _Requires_lock_held_(*Lock) 04571 _Releases_lock_(*Lock) 04572 NDISAPI 04573 VOID 04574 NTAPI 04575 NdisReleaseReadWriteLock( 04576 _Inout_ PNDIS_RW_LOCK Lock, 04577 _In_ _IRQL_restores_ PLOCK_STATE LockState); 04578 04579 #if NDIS_SUPPORT_NDIS6 04580 04581 NDISAPI 04582 VOID 04583 NTAPI 04584 NdisDprAcquireReadWriteLock( 04585 IN PNDIS_RW_LOCK Lock, 04586 IN BOOLEAN fWrite, 04587 IN PLOCK_STATE LockState); 04588 04589 NDISAPI 04590 VOID 04591 NTAPI 04592 NdisDprReleaseReadWriteLock( 04593 IN PNDIS_RW_LOCK Lock, 04594 IN PLOCK_STATE LockState); 04595 04596 #endif /* NDIS_SUPPORT_NDIS6 */ 04597 04598 #endif /* NDIS_SUPPORT_60_COMPATIBLE_API */ 04599 04600 _IRQL_requires_(PASSIVE_LEVEL) 04601 NDISAPI 04602 NDIS_STATUS 04603 NTAPI 04604 NdisMDeregisterDevice( 04605 _In_ NDIS_HANDLE NdisDeviceHandle); 04606 04607 _IRQL_requires_(PASSIVE_LEVEL) 04608 NDISAPI 04609 VOID 04610 NTAPI 04611 NdisMGetDeviceProperty( 04612 _In_ NDIS_HANDLE MiniportAdapterHandle, 04613 _Inout_opt_ PDEVICE_OBJECT *PhysicalDeviceObject, 04614 _Inout_opt_ PDEVICE_OBJECT *FunctionalDeviceObject, 04615 _Inout_opt_ PDEVICE_OBJECT *NextDeviceObject, 04616 _Inout_opt_ PCM_RESOURCE_LIST *AllocatedResources, 04617 _Inout_opt_ PCM_RESOURCE_LIST *AllocatedResourcesTranslated); 04618 04619 _IRQL_requires_(PASSIVE_LEVEL) 04620 NDISAPI 04621 NDIS_STATUS 04622 NTAPI 04623 NdisMInitializeScatterGatherDma( 04624 _In_ NDIS_HANDLE MiniportAdapterHandle, 04625 _In_ BOOLEAN Dma64BitAddresses, 04626 _In_ ULONG MaximumPhysicalMapping); 04627 04628 _IRQL_requires_max_(DISPATCH_LEVEL) 04629 NDISAPI 04630 NDIS_STATUS 04631 NTAPI 04632 NdisMPromoteMiniport( 04633 _In_ NDIS_HANDLE MiniportAdapterHandle); 04634 04635 _IRQL_requires_(PASSIVE_LEVEL) 04636 NDISAPI 04637 NDIS_STATUS 04638 NTAPI 04639 NdisMQueryAdapterInstanceName( 04640 _Out_ PNDIS_STRING AdapterInstanceName, 04641 _In_ NDIS_HANDLE MiniportAdapterHandle); 04642 04643 _IRQL_requires_(PASSIVE_LEVEL) 04644 NDISAPI 04645 NDIS_STATUS 04646 NTAPI 04647 NdisMRegisterDevice( 04648 _In_ NDIS_HANDLE NdisWrapperHandle, 04649 _In_ PNDIS_STRING DeviceName, 04650 _In_ PNDIS_STRING SymbolicName, 04651 _In_reads_(IRP_MJ_PNP) PDRIVER_DISPATCH *MajorFunctions, 04652 _Out_ PDEVICE_OBJECT *pDeviceObject, 04653 _Out_ NDIS_HANDLE *NdisDeviceHandle); 04654 04655 _IRQL_requires_(PASSIVE_LEVEL) 04656 NDISAPI 04657 VOID 04658 NTAPI 04659 NdisMRegisterUnloadHandler( 04660 _In_ NDIS_HANDLE NdisWrapperHandle, 04661 _In_ PDRIVER_UNLOAD UnloadHandler); 04662 04663 _IRQL_requires_max_(DISPATCH_LEVEL) 04664 NDISAPI 04665 NDIS_STATUS 04666 NTAPI 04667 NdisMRemoveMiniport( 04668 _In_ NDIS_HANDLE MiniportAdapterHandle); 04669 04670 _IRQL_requires_(PASSIVE_LEVEL) 04671 NDISAPI 04672 NDIS_STATUS 04673 NTAPI 04674 NdisMSetMiniportSecondary( 04675 _In_ NDIS_HANDLE MiniportAdapterHandle, 04676 _In_ NDIS_HANDLE PrimaryMiniportAdapterHandle); 04677 04678 _IRQL_requires_max_(APC_LEVEL) 04679 _Success_(*Status >= 0) 04680 NDISAPI 04681 VOID 04682 NTAPI 04683 NdisOpenConfigurationKeyByIndex( 04684 _At_(*Status, _Must_inspect_result_) _Out_ PNDIS_STATUS Status, 04685 _In_ NDIS_HANDLE ConfigurationHandle, 04686 _In_ ULONG Index, 04687 _Out_ PNDIS_STRING KeyName, 04688 _Out_ PNDIS_HANDLE KeyHandle); 04689 04690 _IRQL_requires_max_(APC_LEVEL) 04691 _Success_(*Status >= 0) 04692 NDISAPI 04693 VOID 04694 NTAPI 04695 NdisOpenConfigurationKeyByName( 04696 _At_(*Status, _Must_inspect_result_) _Out_ PNDIS_STATUS Status, 04697 _In_ NDIS_HANDLE ConfigurationHandle, 04698 _In_ PNDIS_STRING SubKeyName, 04699 _Out_ PNDIS_HANDLE SubKeyHandle); 04700 04701 _Must_inspect_result_ 04702 _IRQL_requires_max_(DISPATCH_LEVEL) 04703 NDISAPI 04704 NDIS_STATUS 04705 NTAPI 04706 NdisQueryAdapterInstanceName( 04707 _Out_ PNDIS_STRING AdapterInstanceName, 04708 _In_ NDIS_HANDLE NdisBindingHandle); 04709 04710 _Must_inspect_result_ 04711 NDISAPI 04712 NDIS_STATUS 04713 NTAPI 04714 NdisQueryBindInstanceName( 04715 _Out_ PNDIS_STRING pAdapterInstanceName, 04716 _In_ NDIS_HANDLE BindingContext); 04717 04718 _IRQL_requires_max_(DISPATCH_LEVEL) 04719 NDISAPI 04720 NDIS_STATUS 04721 NTAPI 04722 NdisWriteEventLogEntry( 04723 _In_ _Points_to_data_ PVOID LogHandle, 04724 _In_ NDIS_STATUS EventCode, 04725 _In_ ULONG UniqueEventValue, 04726 _In_ USHORT NumStrings, 04727 _In_opt_ PVOID StringsList, 04728 _In_ ULONG DataSize, 04729 _In_reads_bytes_opt_(DataSize) PVOID Data); 04730 04731 /* Connectionless services */ 04732 04733 _Must_inspect_result_ 04734 _IRQL_requires_max_(DISPATCH_LEVEL) 04735 NDISAPI 04736 NDIS_STATUS 04737 NTAPI 04738 NdisClAddParty( 04739 _In_ NDIS_HANDLE NdisVcHandle, 04740 _In_ NDIS_HANDLE ProtocolPartyContext, 04741 _In_ PCO_CALL_PARAMETERS CallParameters, 04742 _Out_ PNDIS_HANDLE NdisPartyHandle); 04743 04744 _Must_inspect_result_ 04745 _IRQL_requires_max_(DISPATCH_LEVEL) 04746 NDISAPI 04747 NDIS_STATUS 04748 NTAPI 04749 NdisClCloseAddressFamily( 04750 _In_ NDIS_HANDLE NdisAfHandle); 04751 04752 _Must_inspect_result_ 04753 _IRQL_requires_max_(DISPATCH_LEVEL) 04754 NDISAPI 04755 NDIS_STATUS 04756 NTAPI 04757 NdisClCloseCall( 04758 _In_ NDIS_HANDLE NdisVcHandle, 04759 _In_opt_ NDIS_HANDLE NdisPartyHandle, 04760 _In_reads_bytes_opt_(Size) PVOID Buffer, 04761 _In_ UINT Size); 04762 04763 _Must_inspect_result_ 04764 _IRQL_requires_max_(DISPATCH_LEVEL) 04765 NDISAPI 04766 NDIS_STATUS 04767 NTAPI 04768 NdisClDeregisterSap( 04769 _In_ NDIS_HANDLE NdisSapHandle); 04770 04771 _Must_inspect_result_ 04772 _IRQL_requires_max_(DISPATCH_LEVEL) 04773 NDISAPI 04774 NDIS_STATUS 04775 NTAPI 04776 NdisClDropParty( 04777 _In_ NDIS_HANDLE NdisPartyHandle, 04778 _In_reads_bytes_opt_(Size) PVOID Buffer, 04779 _In_opt_ UINT Size); 04780 04781 _IRQL_requires_max_(DISPATCH_LEVEL) 04782 NDISAPI 04783 VOID 04784 NTAPI 04785 NdisClIncomingCallComplete( 04786 _In_ NDIS_STATUS Status, 04787 _In_ NDIS_HANDLE NdisVcHandle, 04788 _In_ PCO_CALL_PARAMETERS CallParameters); 04789 04790 _Must_inspect_result_ 04791 _IRQL_requires_max_(DISPATCH_LEVEL) 04792 NDISAPI 04793 NDIS_STATUS 04794 NTAPI 04795 NdisClMakeCall( 04796 _In_ NDIS_HANDLE NdisVcHandle, 04797 _Inout_ PCO_CALL_PARAMETERS CallParameters, 04798 _In_opt_ NDIS_HANDLE ProtocolPartyContext, 04799 _Out_opt_ PNDIS_HANDLE NdisPartyHandle); 04800 04801 _Must_inspect_result_ 04802 _IRQL_requires_max_(DISPATCH_LEVEL) 04803 NDISAPI 04804 NDIS_STATUS 04805 NTAPI 04806 NdisClModifyCallQoS( 04807 _In_ NDIS_HANDLE NdisVcHandle, 04808 _In_ PCO_CALL_PARAMETERS CallParameters); 04809 04810 _Must_inspect_result_ 04811 _IRQL_requires_(PASSIVE_LEVEL) 04812 NDISAPI 04813 NDIS_STATUS 04814 NTAPI 04815 NdisClOpenAddressFamily( 04816 _In_ NDIS_HANDLE NdisBindingHandle, 04817 _In_ PCO_ADDRESS_FAMILY AddressFamily, 04818 _In_ NDIS_HANDLE ProtocolAfContext, 04819 _In_ PNDIS_CLIENT_CHARACTERISTICS ClCharacteristics, 04820 _In_ UINT SizeOfClCharacteristics, 04821 _Out_ PNDIS_HANDLE NdisAfHandle); 04822 04823 _Must_inspect_result_ 04824 _IRQL_requires_max_(DISPATCH_LEVEL) 04825 NDISAPI 04826 NDIS_STATUS 04827 NTAPI 04828 NdisClRegisterSap( 04829 _In_ NDIS_HANDLE NdisAfHandle, 04830 _In_ NDIS_HANDLE ProtocolSapContext, 04831 _In_ PCO_SAP Sap, 04832 _Out_ PNDIS_HANDLE NdisSapHandle); 04833 04834 04835 /* Call Manager services */ 04836 04837 _Must_inspect_result_ 04838 _IRQL_requires_max_(DISPATCH_LEVEL) 04839 NDISAPI 04840 NDIS_STATUS 04841 NTAPI 04842 NdisCmActivateVc( 04843 _In_ NDIS_HANDLE NdisVcHandle, 04844 _Inout_ PCO_CALL_PARAMETERS CallParameters); 04845 04846 _IRQL_requires_max_(DISPATCH_LEVEL) 04847 NDISAPI 04848 VOID 04849 NTAPI 04850 NdisCmAddPartyComplete( 04851 _In_ NDIS_STATUS Status, 04852 _In_ NDIS_HANDLE NdisPartyHandle, 04853 _In_opt_ NDIS_HANDLE CallMgrPartyContext, 04854 _In_ PCO_CALL_PARAMETERS CallParameters); 04855 04856 _IRQL_requires_max_(DISPATCH_LEVEL) 04857 NDISAPI 04858 VOID 04859 NTAPI 04860 NdisCmCloseAddressFamilyComplete( 04861 _In_ NDIS_STATUS Status, 04862 _In_ NDIS_HANDLE NdisAfHandle); 04863 04864 _IRQL_requires_max_(DISPATCH_LEVEL) 04865 NDISAPI 04866 VOID 04867 NTAPI 04868 NdisCmCloseCallComplete( 04869 _In_ NDIS_STATUS Status, 04870 _In_ NDIS_HANDLE NdisVcHandle, 04871 _In_opt_ NDIS_HANDLE NdisPartyHandle); 04872 04873 _Must_inspect_result_ 04874 _IRQL_requires_max_(DISPATCH_LEVEL) 04875 NDISAPI 04876 NDIS_STATUS 04877 NTAPI 04878 NdisCmDeactivateVc( 04879 _In_ NDIS_HANDLE NdisVcHandle); 04880 04881 _IRQL_requires_max_(DISPATCH_LEVEL) 04882 NDISAPI 04883 VOID 04884 NTAPI 04885 NdisCmDeregisterSapComplete( 04886 _In_ NDIS_STATUS Status, 04887 _In_ NDIS_HANDLE NdisSapHandle); 04888 04889 _IRQL_requires_max_(DISPATCH_LEVEL) 04890 NDISAPI 04891 VOID 04892 NTAPI 04893 NdisCmDispatchCallConnected( 04894 _In_ NDIS_HANDLE NdisVcHandle); 04895 04896 _Must_inspect_result_ 04897 _IRQL_requires_max_(DISPATCH_LEVEL) 04898 NDISAPI 04899 NDIS_STATUS 04900 NTAPI 04901 NdisCmDispatchIncomingCall( 04902 _In_ NDIS_HANDLE NdisSapHandle, 04903 _In_ NDIS_HANDLE NdisVcHandle, 04904 _In_ PCO_CALL_PARAMETERS CallParameters); 04905 04906 _IRQL_requires_max_(DISPATCH_LEVEL) 04907 NDISAPI 04908 VOID 04909 NTAPI 04910 NdisCmDispatchIncomingCallQoSChange( 04911 _In_ NDIS_HANDLE NdisVcHandle, 04912 _In_ PCO_CALL_PARAMETERS CallParameters); 04913 04914 _IRQL_requires_max_(DISPATCH_LEVEL) 04915 NDISAPI 04916 VOID 04917 NTAPI 04918 NdisCmDispatchIncomingCloseCall( 04919 _In_ NDIS_STATUS CloseStatus, 04920 _In_ NDIS_HANDLE NdisVcHandle, 04921 _In_reads_bytes_opt_(Size) PVOID Buffer, 04922 _In_ UINT Size); 04923 04924 _IRQL_requires_max_(DISPATCH_LEVEL) 04925 NDISAPI 04926 VOID 04927 NTAPI 04928 NdisCmDispatchIncomingDropParty( 04929 _In_ NDIS_STATUS DropStatus, 04930 _In_ NDIS_HANDLE NdisPartyHandle, 04931 _In_reads_bytes_opt_(Size) PVOID Buffer, 04932 _In_ UINT Size); 04933 04934 _IRQL_requires_max_(DISPATCH_LEVEL) 04935 NDISAPI 04936 VOID 04937 NTAPI 04938 NdisCmDropPartyComplete( 04939 _In_ NDIS_STATUS Status, 04940 _In_ NDIS_HANDLE NdisPartyHandle); 04941 04942 _IRQL_requires_max_(DISPATCH_LEVEL) 04943 NDISAPI 04944 VOID 04945 NTAPI 04946 NdisCmMakeCallComplete( 04947 _In_ NDIS_STATUS Status, 04948 _In_ NDIS_HANDLE NdisVcHandle, 04949 _In_opt_ NDIS_HANDLE NdisPartyHandle, 04950 _In_opt_ NDIS_HANDLE CallMgrPartyContext, 04951 _In_ PCO_CALL_PARAMETERS CallParameters); 04952 04953 _IRQL_requires_max_(DISPATCH_LEVEL) 04954 NDISAPI 04955 VOID 04956 NTAPI 04957 NdisCmModifyCallQoSComplete( 04958 _In_ NDIS_STATUS Status, 04959 _In_ NDIS_HANDLE NdisVcHandle, 04960 _In_ PCO_CALL_PARAMETERS CallParameters); 04961 04962 _IRQL_requires_max_(DISPATCH_LEVEL) 04963 NDISAPI 04964 VOID 04965 NTAPI 04966 NdisCmOpenAddressFamilyComplete( 04967 _In_ NDIS_STATUS Status, 04968 _In_ NDIS_HANDLE NdisAfHandle, 04969 _In_ NDIS_HANDLE CallMgrAfContext); 04970 04971 _Must_inspect_result_ 04972 _IRQL_requires_(PASSIVE_LEVEL) 04973 NDISAPI 04974 NDIS_STATUS 04975 NTAPI 04976 NdisCmRegisterAddressFamily( 04977 _In_ NDIS_HANDLE NdisBindingHandle, 04978 _In_ PCO_ADDRESS_FAMILY AddressFamily, 04979 _In_ PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics, 04980 _In_ UINT SizeOfCmCharacteristics); 04981 04982 _IRQL_requires_max_(DISPATCH_LEVEL) 04983 NDISAPI 04984 VOID 04985 NTAPI 04986 NdisCmRegisterSapComplete( 04987 _In_ NDIS_STATUS Status, 04988 _In_ NDIS_HANDLE NdisSapHandle, 04989 _In_ NDIS_HANDLE CallMgrSapContext); 04990 04991 _IRQL_requires_max_(DISPATCH_LEVEL) 04992 NDISAPI 04993 NDIS_STATUS 04994 NTAPI 04995 NdisMCmActivateVc( 04996 _In_ NDIS_HANDLE NdisVcHandle, 04997 _In_ PCO_CALL_PARAMETERS CallParameters); 04998 04999 _IRQL_requires_max_(DISPATCH_LEVEL) 05000 NDISAPI 05001 NDIS_STATUS 05002 NTAPI 05003 NdisMCmCreateVc( 05004 _In_ NDIS_HANDLE MiniportAdapterHandle, 05005 _In_ NDIS_HANDLE NdisAfHandle, 05006 _In_ NDIS_HANDLE MiniportVcContext, 05007 _Out_ PNDIS_HANDLE NdisVcHandle); 05008 05009 _IRQL_requires_max_(DISPATCH_LEVEL) 05010 NDISAPI 05011 NDIS_STATUS 05012 NTAPI 05013 NdisMCmDeactivateVc( 05014 _In_ NDIS_HANDLE NdisVcHandle); 05015 05016 _IRQL_requires_max_(DISPATCH_LEVEL) 05017 NDISAPI 05018 NDIS_STATUS 05019 NTAPI 05020 NdisMCmDeleteVc( 05021 _In_ NDIS_HANDLE NdisVcHandle); 05022 05023 NDISAPI 05024 NDIS_STATUS 05025 NTAPI 05026 NdisMCmRegisterAddressFamily( 05027 IN NDIS_HANDLE MiniportAdapterHandle, 05028 IN PCO_ADDRESS_FAMILY AddressFamily, 05029 IN PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics, 05030 IN UINT SizeOfCmCharacteristics); 05031 05032 _IRQL_requires_max_(DISPATCH_LEVEL) 05033 NDISAPI 05034 NDIS_STATUS 05035 NTAPI 05036 NdisMCmRequest( 05037 _In_ NDIS_HANDLE NdisAfHandle, 05038 _In_opt_ NDIS_HANDLE NdisVcHandle, 05039 _In_opt_ NDIS_HANDLE NdisPartyHandle, 05040 _Inout_ PNDIS_REQUEST NdisRequest); 05041 05042 05043 /* Connection-oriented services */ 05044 05045 _Must_inspect_result_ 05046 _IRQL_requires_max_(DISPATCH_LEVEL) 05047 NDISAPI 05048 NDIS_STATUS 05049 NTAPI 05050 NdisCoCreateVc( 05051 _In_ NDIS_HANDLE NdisBindingHandle, 05052 _In_opt_ NDIS_HANDLE NdisAfHandle , 05053 _In_ NDIS_HANDLE ProtocolVcContext, 05054 _Inout_ PNDIS_HANDLE NdisVcHandle); 05055 05056 _Must_inspect_result_ 05057 _IRQL_requires_max_(DISPATCH_LEVEL) 05058 NDISAPI 05059 NDIS_STATUS 05060 NTAPI 05061 NdisCoDeleteVc( 05062 _In_ NDIS_HANDLE NdisVcHandle); 05063 05064 _Must_inspect_result_ 05065 _IRQL_requires_max_(DISPATCH_LEVEL) 05066 NDISAPI 05067 NDIS_STATUS 05068 NTAPI 05069 NdisCoRequest( 05070 _In_ NDIS_HANDLE NdisBindingHandle, 05071 _In_opt_ NDIS_HANDLE NdisAfHandle, 05072 _In_opt_ NDIS_HANDLE NdisVcHandle, 05073 _In_opt_ NDIS_HANDLE NdisPartyHandle, 05074 _Inout_ PNDIS_REQUEST NdisRequest); 05075 05076 _IRQL_requires_max_(DISPATCH_LEVEL) 05077 NDISAPI 05078 VOID 05079 NTAPI 05080 NdisCoRequestComplete( 05081 _In_ NDIS_STATUS Status, 05082 _In_ NDIS_HANDLE NdisAfHandle, 05083 _In_opt_ NDIS_HANDLE NdisVcHandle, 05084 _In_opt_ NDIS_HANDLE NdisPartyHandle, 05085 _In_ PNDIS_REQUEST NdisRequest); 05086 05087 _IRQL_requires_max_(DISPATCH_LEVEL) 05088 NDISAPI 05089 VOID 05090 NTAPI 05091 NdisCoSendPackets( 05092 _In_ NDIS_HANDLE NdisVcHandle, 05093 _In_ PPNDIS_PACKET PacketArray, 05094 _In_ UINT NumberOfPackets); 05095 05096 _IRQL_requires_max_(DISPATCH_LEVEL) 05097 NDISAPI 05098 VOID 05099 NTAPI 05100 NdisMCoActivateVcComplete( 05101 _In_ NDIS_STATUS Status, 05102 _In_ NDIS_HANDLE NdisVcHandle, 05103 _In_ PCO_CALL_PARAMETERS CallParameters); 05104 05105 _IRQL_requires_max_(DISPATCH_LEVEL) 05106 NDISAPI 05107 VOID 05108 NTAPI 05109 NdisMCoDeactivateVcComplete( 05110 _In_ NDIS_STATUS Status, 05111 _In_ NDIS_HANDLE NdisVcHandle); 05112 05113 _IRQL_requires_(DISPATCH_LEVEL) 05114 NDISAPI 05115 VOID 05116 NTAPI 05117 NdisMCoIndicateReceivePacket( 05118 _In_ NDIS_HANDLE NdisVcHandle, 05119 _In_ PPNDIS_PACKET PacketArray, 05120 _In_ UINT NumberOfPackets); 05121 05122 _IRQL_requires_max_(DISPATCH_LEVEL) 05123 NDISAPI 05124 VOID 05125 NTAPI 05126 NdisMCoIndicateStatus( 05127 _In_ NDIS_HANDLE MiniportAdapterHandle, 05128 _In_opt_ NDIS_HANDLE NdisVcHandle, 05129 _In_ NDIS_STATUS GeneralStatus, 05130 _In_reads_bytes_opt_(StatusBufferSize) PVOID StatusBuffer, 05131 _In_ ULONG StatusBufferSize); 05132 05133 _IRQL_requires_(DISPATCH_LEVEL) 05134 NDISAPI 05135 VOID 05136 NTAPI 05137 NdisMCoReceiveComplete( 05138 _In_ NDIS_HANDLE MiniportAdapterHandle); 05139 05140 _IRQL_requires_max_(DISPATCH_LEVEL) 05141 NDISAPI 05142 VOID 05143 NTAPI 05144 NdisMCoRequestComplete( 05145 _In_ NDIS_STATUS Status, 05146 _In_ NDIS_HANDLE MiniportAdapterHandle, 05147 _In_ PNDIS_REQUEST Request); 05148 05149 _IRQL_requires_(DISPATCH_LEVEL) 05150 NDISAPI 05151 VOID 05152 NTAPI 05153 NdisMCoSendComplete( 05154 _In_ NDIS_STATUS Status, 05155 _In_ NDIS_HANDLE NdisVcHandle, 05156 _In_ PNDIS_PACKET Packet); 05157 05158 05159 /* NDIS 5.0 extensions for intermediate drivers */ 05160 05161 _IRQL_requires_(PASSIVE_LEVEL) 05162 NDISAPI 05163 VOID 05164 NTAPI 05165 NdisIMAssociateMiniport( 05166 _In_ NDIS_HANDLE DriverHandle, 05167 _In_ NDIS_HANDLE ProtocolHandle); 05168 05169 _IRQL_requires_(PASSIVE_LEVEL) 05170 NDISAPI 05171 NDIS_STATUS 05172 NTAPI 05173 NdisIMCancelInitializeDeviceInstance( 05174 _In_ NDIS_HANDLE DriverHandle, 05175 _In_ PNDIS_STRING DeviceInstance); 05176 05177 NDISAPI 05178 VOID 05179 NTAPI 05180 NdisIMCopySendCompletePerPacketInfo( 05181 IN PNDIS_PACKET DstPacket, 05182 IN PNDIS_PACKET SrcPacket); 05183 05184 NDISAPI 05185 VOID 05186 NTAPI 05187 NdisIMCopySendPerPacketInfo( 05188 IN PNDIS_PACKET DstPacket, 05189 IN PNDIS_PACKET SrcPacket); 05190 05191 _IRQL_requires_(PASSIVE_LEVEL) 05192 NDISAPI 05193 VOID 05194 NTAPI 05195 NdisIMDeregisterLayeredMiniport( 05196 _In_ NDIS_HANDLE DriverHandle); 05197 05198 _IRQL_requires_max_(APC_LEVEL) 05199 NDISAPI 05200 NDIS_HANDLE 05201 NTAPI 05202 NdisIMGetBindingContext( 05203 _In_ NDIS_HANDLE NdisBindingHandle); 05204 05205 _IRQL_requires_max_(DISPATCH_LEVEL) 05206 NDISAPI 05207 NDIS_HANDLE 05208 NTAPI 05209 NdisIMGetDeviceContext( 05210 _In_ NDIS_HANDLE MiniportAdapterHandle); 05211 05212 _IRQL_requires_(PASSIVE_LEVEL) 05213 NDISAPI 05214 NDIS_STATUS 05215 NTAPI 05216 NdisIMInitializeDeviceInstanceEx( 05217 _In_ NDIS_HANDLE DriverHandle, 05218 _In_ PNDIS_STRING DriverInstance, 05219 _In_opt_ NDIS_HANDLE DeviceContext); 05220 05221 /* 05222 NDISAPI 05223 PSINGLE_LIST_ENTRY 05224 NTAPI 05225 NdisInterlockedPopEntrySList( 05226 IN PSLIST_HEADER ListHead, 05227 IN PKSPIN_LOCK Lock); 05228 */ 05229 #define NdisInterlockedPopEntrySList(SListHead, Lock) \ 05230 ExInterlockedPopEntrySList(SListHead, &(Lock)->SpinLock) 05231 05232 /* 05233 NDISAPI 05234 PSINGLE_LIST_ENTRY 05235 NTAPI 05236 NdisInterlockedPushEntrySList( 05237 IN PSLIST_HEADER ListHead, 05238 IN PSINGLE_LIST_ENTRY ListEntry, 05239 IN PKSPIN_LOCK Lock); 05240 */ 05241 #define NdisInterlockedPushEntrySList(SListHead, SListEntry, Lock) \ 05242 ExInterlockedPushEntrySList(SListHead, SListEntry, &(Lock)->SpinLock) 05243 05244 #define NdisInterlockedFlushSList(SListHead) ExInterlockedFlushSList(SListHead) 05245 05246 /* 05247 NDISAPI 05248 VOID 05249 NTAPI 05250 NdisQueryBufferSafe( 05251 IN PNDIS_BUFFER Buffer, 05252 OUT PVOID *VirtualAddress OPTIONAL, 05253 OUT PUINT Length, 05254 IN UINT Priority); 05255 */ 05256 #define NdisQueryBufferSafe(_Buffer, _VirtualAddress, _Length, _Priority) { \ 05257 if (ARGUMENT_PRESENT(_VirtualAddress)) { \ 05258 *(PVOID *)(_VirtualAddress) = MmGetSystemAddressForMdlSafe(_Buffer, _Priority); \ 05259 } \ 05260 *(_Length) = MmGetMdlByteCount(_Buffer); \ 05261 } 05262 05263 /* Routines for NDIS miniport drivers */ 05264 05265 #if NDIS_SUPPORT_NDIS6 05266 05267 NDISAPI 05268 PNDIS_GENERIC_OBJECT 05269 NTAPI 05270 NdisAllocateGenericObject( 05271 PDRIVER_OBJECT DriverObject OPTIONAL, 05272 ULONG Tag, 05273 USHORT Size); 05274 05275 NDISAPI 05276 VOID 05277 NTAPI 05278 NdisFreeGenericObject( 05279 IN PNDIS_GENERIC_OBJECT NdisObject); 05280 05281 #endif /* NDIS_SUPPORT_NDIS6 */ 05282 05283 NDISAPI 05284 VOID 05285 NTAPI 05286 NdisInitializeWrapper( 05287 OUT PNDIS_HANDLE NdisWrapperHandle, 05288 IN PVOID SystemSpecific1, 05289 IN PVOID SystemSpecific2, 05290 IN PVOID SystemSpecific3); 05291 05292 _Must_inspect_result_ 05293 _IRQL_requires_(PASSIVE_LEVEL) 05294 __drv_preferredFunction("NdisMInitializeScatterGatherDma", "See details in NdisMAllocateMapRegisters documentation") 05295 NDISAPI 05296 NDIS_STATUS 05297 NTAPI 05298 NdisMAllocateMapRegisters( 05299 _In_ NDIS_HANDLE MiniportAdapterHandle, 05300 _In_ UINT DmaChannel, 05301 _In_ NDIS_DMA_SIZE DmaSize, 05302 _In_ ULONG PhysicalMapRegistersNeeded, 05303 _In_ ULONG MaximumPhysicalMapping); 05304 05305 /* 05306 * VOID 05307 * NdisMArcIndicateReceive( 05308 * IN NDIS_HANDLE MiniportAdapterHandle, 05309 * IN PUCHAR HeaderBuffer, 05310 * IN PUCHAR DataBuffer, 05311 * IN UINT Length); 05312 */ 05313 #define NdisMArcIndicateReceive(MiniportAdapterHandle, \ 05314 HeaderBuffer, \ 05315 DataBuffer, \ 05316 Length) \ 05317 { \ 05318 ArcFilterDprIndicateReceive( \ 05319 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->ArcDB), \ 05320 (HeaderBuffer), \ 05321 (DataBuffer), \ 05322 (Length)); \ 05323 } 05324 05325 /* 05326 * VOID 05327 * NdisMArcIndicateReceiveComplete( 05328 * IN NDIS_HANDLE MiniportAdapterHandle); 05329 */ 05330 #define NdisMArcIndicateReceiveComplete(MiniportAdapterHandle) \ 05331 { \ 05332 if (((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->EthDB) \ 05333 { \ 05334 NdisMEthIndicateReceiveComplete(_H); \ 05335 } \ 05336 \ 05337 ArcFilterDprIndicateReceiveComplete( \ 05338 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->ArcDB); \ 05339 } 05340 05341 _IRQL_requires_(PASSIVE_LEVEL) 05342 NDISAPI 05343 VOID 05344 NTAPI 05345 NdisMCloseLog( 05346 _In_ NDIS_HANDLE LogHandle); 05347 05348 _IRQL_requires_(PASSIVE_LEVEL) 05349 NDISAPI 05350 NDIS_STATUS 05351 NTAPI 05352 NdisMCreateLog( 05353 _In_ NDIS_HANDLE MiniportAdapterHandle, 05354 _In_ UINT Size, 05355 _Out_ PNDIS_HANDLE LogHandle); 05356 05357 NDISAPI 05358 VOID 05359 NTAPI 05360 NdisMDeregisterAdapterShutdownHandler( 05361 _In_ NDIS_HANDLE MiniportHandle); 05362 05363 #if NDIS_LEGACY_MINIPORT 05364 05365 _IRQL_requires_(PASSIVE_LEVEL) 05366 NDISAPI 05367 VOID 05368 NTAPI 05369 NdisMDeregisterInterrupt( 05370 _In_ PNDIS_MINIPORT_INTERRUPT Interrupt); 05371 05372 _IRQL_requires_(PASSIVE_LEVEL) 05373 NDISAPI 05374 VOID 05375 NTAPI 05376 NdisMRegisterAdapterShutdownHandler( 05377 _In_ NDIS_HANDLE MiniportHandle, 05378 _In_ PVOID ShutdownContext, 05379 _In_ ADAPTER_SHUTDOWN_HANDLER ShutdownHandler); 05380 05381 NDISAPI 05382 NDIS_STATUS 05383 NTAPI 05384 NdisMRegisterInterrupt( 05385 OUT PNDIS_MINIPORT_INTERRUPT Interrupt, 05386 IN NDIS_HANDLE MiniportAdapterHandle, 05387 IN UINT InterruptVector, 05388 IN UINT InterruptLevel, 05389 IN BOOLEAN RequestIsr, 05390 IN BOOLEAN SharedInterrupt, 05391 IN NDIS_INTERRUPT_MODE InterruptMode); 05392 05393 NDISAPI 05394 NDIS_STATUS 05395 NTAPI 05396 NdisMRegisterMiniport( 05397 IN NDIS_HANDLE NdisWrapperHandle, 05398 IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics, 05399 IN UINT CharacteristicsLength); 05400 05401 NDISAPI 05402 BOOLEAN 05403 NTAPI 05404 NdisMSynchronizeWithInterrupt( 05405 IN PNDIS_MINIPORT_INTERRUPT Interrupt, 05406 IN PVOID SynchronizeFunction, 05407 IN PVOID SynchronizeContext); 05408 #endif /* NDIS_LEGACY_MINIPORT */ 05409 05410 _IRQL_requires_(PASSIVE_LEVEL) 05411 NDISAPI 05412 VOID 05413 NTAPI 05414 NdisMDeregisterIoPortRange( 05415 _In_ NDIS_HANDLE MiniportAdapterHandle, 05416 _In_ UINT InitialPort, 05417 _In_ UINT NumberOfPorts, 05418 _In_ PVOID PortOffset); 05419 05420 /* 05421 * VOID 05422 * NdisMEthIndicateReceive( 05423 * IN NDIS_HANDLE MiniportAdapterHandle, 05424 * IN NDIS_HANDLE MiniportReceiveContext, 05425 * IN PVOID HeaderBuffer, 05426 * IN UINT HeaderBufferSize, 05427 * IN PVOID LookaheadBuffer, 05428 * IN UINT LookaheadBufferSize, 05429 * IN UINT PacketSize); 05430 */ 05431 #define NdisMEthIndicateReceive(MiniportAdapterHandle, \ 05432 MiniportReceiveContext, \ 05433 HeaderBuffer, \ 05434 HeaderBufferSize, \ 05435 LookaheadBuffer, \ 05436 LookaheadBufferSize, \ 05437 PacketSize) \ 05438 { \ 05439 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxIndicateHandler)( \ 05440 ((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthDB, \ 05441 (MiniportReceiveContext), \ 05442 (HeaderBuffer), \ 05443 (HeaderBuffer), \ 05444 (HeaderBufferSize), \ 05445 (LookaheadBuffer), \ 05446 (LookaheadBufferSize), \ 05447 (PacketSize)); \ 05448 } 05449 05450 /* 05451 * VOID 05452 * NdisMEthIndicateReceiveComplete( 05453 * IN NDIS_HANDLE MiniportAdapterHandle); 05454 */ 05455 #define NdisMEthIndicateReceiveComplete(MiniportAdapterHandle) \ 05456 { \ 05457 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxCompleteHandler)( \ 05458 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->EthDB); \ 05459 } 05460 05461 /* 05462 * VOID 05463 * NdisMFddiIndicateReceive( 05464 * IN NDIS_HANDLE MiniportAdapterHandle, 05465 * IN NDIS_HANDLE MiniportReceiveContext, 05466 * IN PVOID HeaderBuffer, 05467 * IN UINT HeaderBufferSize, 05468 * IN PVOID LookaheadBuffer, 05469 * IN UINT LookaheadBufferSize, 05470 * IN UINT PacketSize); 05471 */ 05472 #define NdisMFddiIndicateReceive(MiniportAdapterHandle, \ 05473 MiniportReceiveContext, \ 05474 HeaderBuffer, \ 05475 HeaderBufferSize, \ 05476 LookaheadBuffer, \ 05477 LookaheadBufferSize, \ 05478 PacketSize) \ 05479 { \ 05480 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxIndicateHandler)( \ 05481 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiDB), \ 05482 (MiniportReceiveContext), \ 05483 (PUCHAR)(HeaderBuffer) + 1, \ 05484 (((*(PUCHAR*)(HeaderBuffer)) & 0x40) ? \ 05485 FDDI_LENGTH_OF_LONG_ADDRESS : \ 05486 FDDI_LENGTH_OF_SHORT_ADDRESS), \ 05487 (HeaderBuffer), \ 05488 (HeaderBufferSize), \ 05489 (LookaheadBuffer), \ 05490 (LookaheadBufferSize), \ 05491 (PacketSize)); \ 05492 } 05493 05494 05495 05496 /* 05497 * VOID 05498 * NdisMFddiIndicateReceiveComplete( 05499 * IN NDIS_HANDLE MiniportAdapterHandle); 05500 */ 05501 #define NdisMFddiIndicateReceiveComplete(MiniportAdapterHandle) \ 05502 { \ 05503 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxCompleteHandler)( \ 05504 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FddiDB); \ 05505 } 05506 05507 _IRQL_requires_max_(DISPATCH_LEVEL) 05508 NDISAPI 05509 VOID 05510 NTAPI 05511 NdisMFlushLog( 05512 _In_ NDIS_HANDLE LogHandle); 05513 05514 _IRQL_requires_(PASSIVE_LEVEL) 05515 NDISAPI 05516 VOID 05517 NTAPI 05518 NdisMFreeMapRegisters( 05519 _In_ NDIS_HANDLE MiniportAdapterHandle); 05520 05521 /* 05522 * VOID 05523 * EXPORT 05524 * NdisMIndicateReceivePacket( 05525 * IN NDIS_HANDLE MiniportAdapterHandle, 05526 * IN PPNDIS_PACKET ReceivePackets, 05527 * IN UINT NumberOfPackets); 05528 */ 05529 #define NdisMIndicateReceivePacket(MiniportAdapterHandle, \ 05530 ReceivePackets, NumberOfPackets) \ 05531 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->PacketIndicateHandler)( \ 05532 MiniportAdapterHandle, ReceivePackets, NumberOfPackets) 05533 05534 /* 05535 * VOID 05536 * NdisMIndicateStatus( 05537 * IN NDIS_HANDLE MiniportAdapterHandle, 05538 * IN NDIS_STATUS GeneralStatus, 05539 * IN PVOID StatusBuffer, 05540 * IN UINT StatusBufferSize); 05541 */ 05542 05543 #define NdisMIndicateStatus(MiniportAdapterHandle, \ 05544 GeneralStatus, StatusBuffer, StatusBufferSize) \ 05545 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->StatusHandler)( \ 05546 MiniportAdapterHandle, GeneralStatus, StatusBuffer, StatusBufferSize) 05547 05548 /* 05549 * VOID 05550 * NdisMIndicateStatusComplete( 05551 * IN NDIS_HANDLE MiniportAdapterHandle); 05552 */ 05553 #define NdisMIndicateStatusComplete(MiniportAdapterHandle) \ 05554 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->StatusCompleteHandler)( \ 05555 MiniportAdapterHandle) 05556 05557 /* 05558 * VOID 05559 * NdisMInitializeWrapper( 05560 * OUT PNDIS_HANDLE NdisWrapperHandle, 05561 * IN PVOID SystemSpecific1, 05562 * IN PVOID SystemSpecific2, 05563 * IN PVOID SystemSpecific3); 05564 */ 05565 #define NdisMInitializeWrapper(NdisWrapperHandle, \ 05566 SystemSpecific1, \ 05567 SystemSpecific2, \ 05568 SystemSpecific3) \ 05569 NdisInitializeWrapper((NdisWrapperHandle), \ 05570 (SystemSpecific1), \ 05571 (SystemSpecific2), \ 05572 (SystemSpecific3)) 05573 05574 _Must_inspect_result_ 05575 _IRQL_requires_(PASSIVE_LEVEL) 05576 NDISAPI 05577 NDIS_STATUS 05578 NTAPI 05579 NdisMMapIoSpace( 05580 _Outptr_result_bytebuffer_(Length) PVOID *VirtualAddress, 05581 _In_ NDIS_HANDLE MiniportAdapterHandle, 05582 _In_ NDIS_PHYSICAL_ADDRESS PhysicalAddress, 05583 _In_ UINT Length); 05584 05585 /* 05586 * VOID 05587 * NdisMQueryInformationComplete( 05588 * IN NDIS_HANDLE MiniportAdapterHandle, 05589 * IN NDIS_STATUS Status); 05590 */ 05591 #define NdisMQueryInformationComplete(MiniportAdapterHandle, Status) \ 05592 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->QueryCompleteHandler)(MiniportAdapterHandle, Status) 05593 05594 _Must_inspect_result_ 05595 _IRQL_requires_(PASSIVE_LEVEL) 05596 NDISAPI 05597 NDIS_STATUS 05598 NTAPI 05599 NdisMRegisterIoPortRange( 05600 _Out_ PVOID *PortOffset, 05601 _In_ NDIS_HANDLE MiniportAdapterHandle, 05602 _In_ UINT InitialPort, 05603 _In_ UINT NumberOfPorts); 05604 05605 NDISAPI 05606 VOID 05607 NTAPI 05608 NdisMSetTimer( 05609 IN PNDIS_MINIPORT_TIMER Timer, 05610 IN UINT MillisecondsToDelay); 05611 05612 _IRQL_requires_max_(DISPATCH_LEVEL) 05613 NDISAPI 05614 VOID 05615 NTAPI 05616 NdisMInitializeTimer( 05617 _Inout_ PNDIS_MINIPORT_TIMER Timer, 05618 _In_ NDIS_HANDLE MiniportAdapterHandle, 05619 _In_ PNDIS_TIMER_FUNCTION TimerFunction, 05620 _In_ PVOID FunctionContext); 05621 05622 _IRQL_requires_max_(DISPATCH_LEVEL) 05623 NDISAPI 05624 VOID 05625 NTAPI 05626 NdisMSetPeriodicTimer( 05627 _In_ PNDIS_MINIPORT_TIMER Timer, 05628 _In_ UINT MillisecondPeriod); 05629 05630 _IRQL_requires_max_(DISPATCH_LEVEL) 05631 NDISAPI 05632 VOID 05633 NTAPI 05634 NdisMCancelTimer( 05635 _In_ PNDIS_MINIPORT_TIMER Timer, 05636 _Out_ _At_(*TimerCancelled, _Must_inspect_result_) PBOOLEAN TimerCancelled); 05637 05638 #if !defined(NDIS_WRAPPER) 05639 05640 /* 05641 * VOID 05642 * NdisMResetComplete( 05643 * IN NDIS_HANDLE MiniportAdapterHandle, 05644 * IN NDIS_STATUS Status, 05645 * IN BOOLEAN AddressingReset); 05646 */ 05647 #define NdisMResetComplete(MiniportAdapterHandle, \ 05648 Status, \ 05649 AddressingReset) \ 05650 { \ 05651 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->ResetCompleteHandler)( \ 05652 MiniportAdapterHandle, Status, AddressingReset); \ 05653 } 05654 05655 /* 05656 * VOID 05657 * NdisMSendComplete( 05658 * IN NDIS_HANDLE MiniportAdapterHandle, 05659 * IN PNDIS_PACKET Packet, 05660 * IN NDIS_STATUS Status); 05661 */ 05662 #define NdisMSendComplete(MiniportAdapterHandle, \ 05663 Packet, \ 05664 Status) \ 05665 { \ 05666 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SendCompleteHandler)( \ 05667 MiniportAdapterHandle, Packet, Status); \ 05668 } 05669 05670 /* 05671 * VOID 05672 * NdisMSendResourcesAvailable( 05673 * IN NDIS_HANDLE MiniportAdapterHandle); 05674 */ 05675 #define NdisMSendResourcesAvailable(MiniportAdapterHandle) \ 05676 { \ 05677 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SendResourcesHandler)( \ 05678 MiniportAdapterHandle); \ 05679 } 05680 05681 /* 05682 * VOID 05683 * NdisMTransferDataComplete( 05684 * IN NDIS_HANDLE MiniportAdapterHandle, 05685 * IN PNDIS_PACKET Packet, 05686 * IN NDIS_STATUS Status, 05687 * IN UINT BytesTransferred); 05688 */ 05689 #define NdisMTransferDataComplete(MiniportAdapterHandle, \ 05690 Packet, \ 05691 Status, \ 05692 BytesTransferred) \ 05693 { \ 05694 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TDCompleteHandler)( \ 05695 MiniportAdapterHandle, Packet, Status, BytesTransferred) \ 05696 } 05697 05698 #endif /* !_NDIS_ */ 05699 05700 05701 /* 05702 * VOID 05703 * NdisMSetAttributes( 05704 * IN NDIS_HANDLE MiniportAdapterHandle, 05705 * IN NDIS_HANDLE MiniportAdapterContext, 05706 * IN BOOLEAN BusMaster, 05707 * IN NDIS_INTERFACE_TYPE AdapterType); 05708 */ 05709 #define NdisMSetAttributes(MiniportAdapterHandle, \ 05710 MiniportAdapterContext, \ 05711 BusMaster, \ 05712 AdapterType) \ 05713 NdisMSetAttributesEx(MiniportAdapterHandle, \ 05714 MiniportAdapterContext, \ 05715 0, \ 05716 (BusMaster) ? NDIS_ATTRIBUTE_BUS_MASTER : 0, \ 05717 AdapterType) 05718 05719 NDISAPI 05720 VOID 05721 NTAPI 05722 NdisMSetAttributesEx( 05723 IN NDIS_HANDLE MiniportAdapterHandle, 05724 IN NDIS_HANDLE MiniportAdapterContext, 05725 IN UINT CheckForHangTimeInSeconds OPTIONAL, 05726 IN ULONG AttributeFlags, 05727 IN NDIS_INTERFACE_TYPE AdapterType); 05728 05729 /* 05730 * VOID 05731 * NdisMSetInformationComplete( 05732 * IN NDIS_HANDLE MiniportAdapterHandle, 05733 * IN NDIS_STATUS Status); 05734 */ 05735 #define NdisMSetInformationComplete(MiniportAdapterHandle, \ 05736 Status) \ 05737 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SetCompleteHandler)( \ 05738 MiniportAdapterHandle, Status) 05739 05740 _IRQL_requires_max_(APC_LEVEL) 05741 NDISAPI 05742 VOID 05743 NTAPI 05744 NdisMSleep( 05745 _In_ ULONG MicrosecondsToSleep); 05746 05747 /* 05748 * VOID 05749 * NdisMTrIndicateReceive( 05750 * IN NDIS_HANDLE MiniportAdapterHandle, 05751 * IN NDIS_HANDLE MiniportReceiveContext, 05752 * IN PVOID HeaderBuffer, 05753 * IN UINT HeaderBufferSize, 05754 * IN PVOID LookaheadBuffer, 05755 * IN UINT LookaheadBufferSize, 05756 * IN UINT PacketSize); 05757 */ 05758 #define NdisMTrIndicateReceive(MiniportAdapterHandle, \ 05759 MiniportReceiveContext, \ 05760 HeaderBuffer, \ 05761 HeaderBufferSize, \ 05762 LookaheadBuffer, \ 05763 LookaheadBufferSize, \ 05764 PacketSize) \ 05765 { \ 05766 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxIndicateHandler)( \ 05767 (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrDB), \ 05768 (MiniportReceiveContext), \ 05769 (HeaderBuffer), \ 05770 (HeaderBuffer), \ 05771 (HeaderBufferSize), \ 05772 (LookaheadBuffer), \ 05773 (LookaheadBufferSize), \ 05774 (PacketSize)); \ 05775 } 05776 05777 /* 05778 * VOID 05779 * NdisMTrIndicateReceiveComplete( 05780 * IN NDIS_HANDLE MiniportAdapterHandle); 05781 */ 05782 #define NdisMTrIndicateReceiveComplete(MiniportAdapterHandle) \ 05783 { \ 05784 (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxCompleteHandler)( \ 05785 ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->TrDB); \ 05786 } 05787 05788 _IRQL_requires_max_(DISPATCH_LEVEL) 05789 NDISAPI 05790 NDIS_STATUS 05791 NTAPI 05792 NdisMWriteLogData( 05793 _In_ NDIS_HANDLE LogHandle, 05794 _In_reads_bytes_(LogBufferSize) PVOID LogBuffer, 05795 _In_ UINT LogBufferSize); 05796 05797 _IRQL_requires_(PASSIVE_LEVEL) 05798 NDISAPI 05799 VOID 05800 NTAPI 05801 NdisMQueryAdapterResources( 05802 _Out_ PNDIS_STATUS Status, 05803 _In_ NDIS_HANDLE WrapperConfigurationContext, 05804 _Out_ PNDIS_RESOURCE_LIST ResourceList, 05805 _Inout_ PUINT BufferSize); 05806 05807 _IRQL_requires_(PASSIVE_LEVEL) 05808 NDISAPI 05809 VOID 05810 NTAPI 05811 NdisTerminateWrapper( 05812 _In_ NDIS_HANDLE NdisWrapperHandle, 05813 _In_opt_ PVOID SystemSpecific); 05814 05815 _IRQL_requires_(PASSIVE_LEVEL) 05816 NDISAPI 05817 VOID 05818 NTAPI 05819 NdisMUnmapIoSpace( 05820 _In_ NDIS_HANDLE MiniportAdapterHandle, 05821 _In_reads_bytes_(Length) PVOID VirtualAddress, 05822 _In_ UINT Length); 05823 05824 /* Event functions */ 05825 05826 _IRQL_requires_max_(DISPATCH_LEVEL) 05827 NDISAPI 05828 VOID 05829 NTAPI 05830 NdisInitializeEvent( 05831 _Out_ PNDIS_EVENT Event); 05832 05833 _IRQL_requires_max_(DISPATCH_LEVEL) 05834 NDISAPI 05835 VOID 05836 NTAPI 05837 NdisSetEvent( 05838 _In_ PNDIS_EVENT Event); 05839 05840 _IRQL_requires_max_(DISPATCH_LEVEL) 05841 NDISAPI 05842 VOID 05843 NTAPI 05844 NdisResetEvent( 05845 _In_ PNDIS_EVENT Event); 05846 05847 _When_(MsToWait != 0, _Check_return_) 05848 _IRQL_requires_(PASSIVE_LEVEL) 05849 NDISAPI 05850 BOOLEAN 05851 NTAPI 05852 NdisWaitEvent( 05853 _In_ PNDIS_EVENT Event, 05854 _In_ UINT Timeout); 05855 05856 /* NDIS intermediate miniport structures */ 05857 05858 typedef VOID (NTAPI *W_MINIPORT_CALLBACK)( 05859 IN NDIS_HANDLE MiniportAdapterContext, 05860 IN PVOID CallbackContext); 05861 05862 /* Routines for intermediate miniport drivers */ 05863 05864 _IRQL_requires_(PASSIVE_LEVEL) 05865 NDISAPI 05866 NDIS_STATUS 05867 NTAPI 05868 NdisIMDeInitializeDeviceInstance( 05869 _In_ NDIS_HANDLE NdisMiniportHandle); 05870 05871 /* 05872 * NDIS_STATUS 05873 * NdisIMInitializeDeviceInstance( 05874 * IN NDIS_HANDLE DriverHandle, 05875 * IN PNDIS_STRING DeviceInstance); 05876 */ 05877 #define NdisIMInitializeDeviceInstance(DriverHandle, DeviceInstance) \ 05878 NdisIMInitializeDeviceInstanceEx(DriverHandle, DeviceInstance, NULL) 05879 05880 /* Functions obsoleted by NDIS 5.0 */ 05881 05882 NDISAPI 05883 VOID 05884 NTAPI 05885 NdisFreeDmaChannel( 05886 IN PNDIS_HANDLE NdisDmaHandle); 05887 05888 NDISAPI 05889 VOID 05890 NTAPI 05891 NdisSetupDmaTransfer( 05892 OUT PNDIS_STATUS Status, 05893 IN PNDIS_HANDLE NdisDmaHandle, 05894 IN PNDIS_BUFFER Buffer, 05895 IN ULONG Offset, 05896 IN ULONG Length, 05897 IN BOOLEAN WriteToDevice); 05898 05899 /* 05900 NDISAPI 05901 NTSTATUS 05902 NTAPI 05903 NdisUpcaseUnicodeString( 05904 OUT PUNICODE_STRING DestinationString, 05905 IN PUNICODE_STRING SourceString); 05906 */ 05907 #define NdisUpcaseUnicodeString(_d, _s) RtlUpcaseUnicodeString(_d, _s, FALSE) 05908 05909 05910 /* Routines for NDIS protocol drivers */ 05911 05912 #if NDIS_LEGACY_PROTOCOL 05913 05914 NDISAPI 05915 NDIS_STATUS 05916 NTAPI 05917 NdisIMRegisterLayeredMiniport( 05918 _In_ NDIS_HANDLE NdisWrapperHandle, 05919 _In_ PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics, 05920 _In_ UINT CharacteristicsLength, 05921 _Out_ PNDIS_HANDLE DriverHandle); 05922 05923 NDISAPI 05924 VOID 05925 NTAPI 05926 NdisTransferData( 05927 OUT PNDIS_STATUS Status, 05928 IN NDIS_HANDLE NdisBindingHandle, 05929 IN NDIS_HANDLE MacReceiveContext, 05930 IN UINT ByteOffset, 05931 IN UINT BytesToTransfer, 05932 IN OUT PNDIS_PACKET Packet, 05933 OUT PUINT BytesTransferred); 05934 05935 NDISAPI 05936 VOID 05937 NTAPI 05938 NdisSend( 05939 OUT PNDIS_STATUS Status, 05940 IN NDIS_HANDLE NdisBindingHandle, 05941 IN PNDIS_PACKET Packet); 05942 05943 NDISAPI 05944 VOID 05945 NTAPI 05946 NdisSendPackets( 05947 IN NDIS_HANDLE NdisBindingHandle, 05948 IN PPNDIS_PACKET PacketArray, 05949 IN UINT NumberOfPackets); 05950 05951 _IRQL_requires_max_(DISPATCH_LEVEL) 05952 NDISAPI 05953 VOID 05954 NTAPI 05955 NdisRequest( 05956 _Out_ PNDIS_STATUS Status, 05957 _In_ NDIS_HANDLE NdisBindingHandle, 05958 _In_ PNDIS_REQUEST NdisRequest); 05959 05960 _IRQL_requires_max_(DISPATCH_LEVEL) 05961 NDISAPI 05962 VOID 05963 NTAPI 05964 NdisReset( 05965 _Out_ PNDIS_STATUS Status, 05966 _In_ NDIS_HANDLE NdisBindingHandle); 05967 05968 _IRQL_requires_max_(DISPATCH_LEVEL) 05969 NDISAPI 05970 VOID 05971 NTAPI 05972 NdisDeregisterProtocol( 05973 _Out_ PNDIS_STATUS Status, 05974 _In_ NDIS_HANDLE NdisProtocolHandle); 05975 05976 _IRQL_requires_(PASSIVE_LEVEL) 05977 NDISAPI 05978 VOID 05979 NTAPI 05980 NdisOpenAdapter( 05981 _At_(*Status, _Must_inspect_result_) _Out_ PNDIS_STATUS Status, 05982 _Out_ PNDIS_STATUS OpenErrorStatus, 05983 _Out_ PNDIS_HANDLE NdisBindingHandle, 05984 _Out_ PUINT SelectedMediumIndex, 05985 _In_reads_(MediumArraySize) PNDIS_MEDIUM MediumArray, 05986 _In_ UINT MediumArraySize, 05987 _In_ NDIS_HANDLE NdisProtocolHandle, 05988 _In_ NDIS_HANDLE ProtocolBindingContext, 05989 _In_ PNDIS_STRING AdapterName, 05990 _In_ UINT OpenOptions, 05991 _In_opt_ PSTRING AddressingInformation); 05992 05993 _IRQL_requires_(PASSIVE_LEVEL) 05994 NDISAPI 05995 VOID 05996 NTAPI 05997 NdisCloseAdapter( 05998 _Out_ PNDIS_STATUS Status, 05999 _In_ NDIS_HANDLE NdisBindingHandle); 06000 06001 _IRQL_requires_(PASSIVE_LEVEL) 06002 NDISAPI 06003 VOID 06004 NTAPI 06005 NdisCompleteBindAdapter( 06006 _In_ NDIS_HANDLE BindAdapterContext, 06007 _In_ NDIS_STATUS Status, 06008 _In_ NDIS_STATUS OpenStatus); 06009 06010 _IRQL_requires_(PASSIVE_LEVEL) 06011 NDISAPI 06012 VOID 06013 NTAPI 06014 NdisCompleteUnbindAdapter( 06015 _In_ NDIS_HANDLE UnbindAdapterContext, 06016 _In_ NDIS_STATUS Status); 06017 06018 NDISAPI 06019 VOID 06020 NTAPI 06021 NdisSetProtocolFilter( 06022 _At_(*Status, _Must_inspect_result_) _Out_ PNDIS_STATUS Status, 06023 _In_ NDIS_HANDLE NdisBindingHandle, 06024 _In_ RECEIVE_HANDLER ReceiveHandler, 06025 _In_ RECEIVE_PACKET_HANDLER ReceivePacketHandler, 06026 _In_ NDIS_MEDIUM Medium, 06027 _In_ UINT Offset, 06028 _In_ UINT Size, 06029 _In_ PUCHAR Pattern); 06030 06031 _IRQL_requires_max_(DISPATCH_LEVEL) 06032 NDISAPI 06033 VOID 06034 NTAPI 06035 NdisGetDriverHandle( 06036 _In_ PNDIS_HANDLE NdisBindingHandle, 06037 _Out_ PNDIS_HANDLE NdisDriverHandle); 06038 06039 _IRQL_requires_(PASSIVE_LEVEL) 06040 NDISAPI 06041 VOID 06042 NTAPI 06043 NdisOpenProtocolConfiguration( 06044 _Out_ PNDIS_STATUS Status, 06045 _Out_ PNDIS_HANDLE ConfigurationHandle, 06046 _In_ PNDIS_STRING ProtocolSection); 06047 06048 _IRQL_requires_(PASSIVE_LEVEL) 06049 NDISAPI 06050 VOID 06051 NTAPI 06052 NdisCompletePnPEvent( 06053 _In_ NDIS_STATUS Status, 06054 _In_ NDIS_HANDLE NdisBindingHandle, 06055 _In_ PNET_PNP_EVENT NetPnPEvent); 06056 06057 /* 06058 * VOID 06059 * NdisSetSendFlags( 06060 * IN PNDIS_PACKET Packet, 06061 * IN UINT Flags); 06062 */ 06063 #define NdisSetSendFlags(_Packet,_Flags)(_Packet)->Private.Flags = (_Flags) 06064 06065 #define NdisQuerySendFlags(_Packet,_Flags) *(_Flags) = (_Packet)->Private.Flags 06066 06067 _IRQL_requires_max_(DISPATCH_LEVEL) 06068 NDISAPI 06069 VOID 06070 NTAPI 06071 NdisReturnPackets( 06072 _In_reads_(NumberOfPackets) PNDIS_PACKET *PacketsToReturn, 06073 _In_ UINT NumberOfPackets); 06074 06075 _Must_inspect_result_ 06076 _IRQL_requires_max_(DISPATCH_LEVEL) 06077 NDISAPI 06078 PNDIS_PACKET 06079 NTAPI 06080 NdisGetReceivedPacket( 06081 _In_ PNDIS_HANDLE NdisBindingHandle, 06082 _In_ PNDIS_HANDLE MacContext); 06083 06084 _IRQL_requires_max_(DISPATCH_LEVEL) 06085 NDISAPI 06086 VOID 06087 NTAPI 06088 NdisCancelSendPackets( 06089 _In_ NDIS_HANDLE NdisBindingHandle, 06090 _In_ _Points_to_data_ PVOID CancelId); 06091 06092 _Must_inspect_result_ 06093 _IRQL_requires_max_(DISPATCH_LEVEL) 06094 NDISAPI 06095 NDIS_STATUS 06096 NTAPI 06097 NdisQueryPendingIOCount( 06098 _In_ _Points_to_data_ PVOID NdisBindingHandle, 06099 _Out_ PULONG IoCount); 06100 06101 _IRQL_requires_(PASSIVE_LEVEL) 06102 NDISAPI 06103 VOID 06104 NTAPI 06105 NdisRegisterProtocol( 06106 _Out_ PNDIS_STATUS Status, 06107 _Out_ PNDIS_HANDLE NdisProtocolHandle, 06108 _In_ PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics, 06109 _In_ UINT CharacteristicsLength); 06110 06111 #endif /* NDIS_LEGACY_PROTOCOL */ 06112 06113 _IRQL_requires_max_(DISPATCH_LEVEL) 06114 NDISAPI 06115 UCHAR 06116 NTAPI 06117 NdisGeneratePartialCancelId(VOID); 06118 06119 _IRQL_requires_(PASSIVE_LEVEL) 06120 NDISAPI 06121 VOID 06122 NTAPI 06123 NdisReEnumerateProtocolBindings( 06124 _In_ NDIS_HANDLE NdisProtocolHandle); 06125 06126 NDISAPI 06127 VOID 06128 NTAPI 06129 NdisRegisterTdiCallBack( 06130 _In_ TDI_REGISTER_CALLBACK RegisterCallback, 06131 _In_ TDI_PNP_HANDLER PnPHandler); 06132 06133 NDISAPI 06134 VOID 06135 NTAPI 06136 NdisDeregisterTdiCallBack(VOID); 06137 06138 /* Obsoleted in Windows XP */ 06139 06140 /* Prototypes for NDIS_MAC_CHARACTERISTICS */ 06141 06142 typedef NDIS_STATUS (*OPEN_ADAPTER_HANDLER)( 06143 OUT PNDIS_STATUS OpenErrorStatus, 06144 OUT NDIS_HANDLE *MacBindingHandle, 06145 OUT PUINT SelectedMediumIndex, 06146 IN PNDIS_MEDIUM MediumArray, 06147 IN UINT MediumArraySize, 06148 IN NDIS_HANDLE NdisBindingContext, 06149 IN NDIS_HANDLE MacAdapterContext, 06150 IN UINT OpenOptions, 06151 IN PSTRING AddressingInformation OPTIONAL); 06152 06153 typedef NDIS_STATUS (NTAPI *CLOSE_ADAPTER_HANDLER)( 06154 IN NDIS_HANDLE MacBindingHandle); 06155 06156 typedef NDIS_STATUS (NTAPI *WAN_TRANSFER_DATA_HANDLER)( 06157 VOID); 06158 06159 typedef NDIS_STATUS (NTAPI *QUERY_GLOBAL_STATISTICS_HANDLER)( 06160 IN NDIS_HANDLE MacAdapterContext, 06161 IN PNDIS_REQUEST NdisRequest); 06162 06163 typedef VOID (NTAPI *UNLOAD_MAC_HANDLER)( 06164 IN NDIS_HANDLE MacMacContext); 06165 06166 typedef NDIS_STATUS (NTAPI *ADD_ADAPTER_HANDLER)( 06167 IN NDIS_HANDLE MacMacContext, 06168 IN NDIS_HANDLE WrapperConfigurationContext, 06169 IN PNDIS_STRING AdapterName); 06170 06171 typedef VOID (*REMOVE_ADAPTER_HANDLER)( 06172 IN NDIS_HANDLE MacAdapterContext); 06173 06174 typedef struct _NDIS_MAC_CHARACTERISTICS { 06175 UCHAR MajorNdisVersion; 06176 UCHAR MinorNdisVersion; 06177 USHORT Filler; 06178 UINT Reserved; 06179 OPEN_ADAPTER_HANDLER OpenAdapterHandler; 06180 CLOSE_ADAPTER_HANDLER CloseAdapterHandler; 06181 SEND_HANDLER SendHandler; 06182 TRANSFER_DATA_HANDLER TransferDataHandler; 06183 RESET_HANDLER ResetHandler; 06184 REQUEST_HANDLER RequestHandler; 06185 QUERY_GLOBAL_STATISTICS_HANDLER QueryGlobalStatisticsHandler; 06186 UNLOAD_MAC_HANDLER UnloadMacHandler; 06187 ADD_ADAPTER_HANDLER AddAdapterHandler; 06188 REMOVE_ADAPTER_HANDLER RemoveAdapterHandler; 06189 NDIS_STRING Name; 06190 } NDIS_MAC_CHARACTERISTICS, *PNDIS_MAC_CHARACTERISTICS; 06191 06192 typedef NDIS_MAC_CHARACTERISTICS NDIS_WAN_MAC_CHARACTERISTICS; 06193 typedef NDIS_WAN_MAC_CHARACTERISTICS *PNDIS_WAN_MAC_CHARACTERISTICS; 06194 06195 #ifdef __cplusplus 06196 } 06197 #endif 06198 06199 #endif /* _NDIS_ */ 06200 06201 /* EOF */ Generated on Sun May 27 2012 04:30:01 for ReactOS by
1.7.6.1
|