00001 
00002 
00003 
00004 
00005 
typedef
00006 
VOID
00007 (*OPEN_ADAPTER_COMPLETE_HANDLER)(
00008         IN      
NDIS_HANDLE                             ProtocolBindingContext,
00009         IN      
NDIS_STATUS                             Status,
00010         IN      
NDIS_STATUS                             OpenErrorStatus
00011         );
00012 
00013 
typedef
00014 
VOID
00015 (*CLOSE_ADAPTER_COMPLETE_HANDLER)(
00016         IN      
NDIS_HANDLE                             ProtocolBindingContext,
00017         IN      
NDIS_STATUS                             Status
00018         );
00019 
00020 
typedef
00021 
VOID
00022 (*RESET_COMPLETE_HANDLER)(
00023         IN      
NDIS_HANDLE                             ProtocolBindingContext,
00024         IN      
NDIS_STATUS                             Status
00025         );
00026 
00027 
typedef
00028 
VOID
00029 (*REQUEST_COMPLETE_HANDLER)(
00030         IN      
NDIS_HANDLE                             ProtocolBindingContext,
00031         IN      
PNDIS_REQUEST                   NdisRequest,
00032         IN      
NDIS_STATUS                             Status
00033         );
00034 
00035 
typedef
00036 
VOID
00037 (*STATUS_HANDLER)(
00038         IN      
NDIS_HANDLE                             ProtocolBindingContext,
00039         IN      
NDIS_STATUS                             GeneralStatus,
00040         IN      PVOID                                   StatusBuffer,
00041         IN      
UINT                                    StatusBufferSize
00042         );
00043 
00044 
typedef
00045 
VOID
00046 (*STATUS_COMPLETE_HANDLER)(
00047         IN      
NDIS_HANDLE                             ProtocolBindingContext
00048         );
00049 
00050 
typedef
00051 
VOID
00052 (*SEND_COMPLETE_HANDLER)(
00053         IN      
NDIS_HANDLE                             ProtocolBindingContext,
00054         IN      
PNDIS_PACKET                    Packet,
00055         IN      
NDIS_STATUS                             Status
00056         );
00057 
00058 
typedef
00059 
VOID
00060 (*WAN_SEND_COMPLETE_HANDLER) (
00061         IN      
NDIS_HANDLE                             ProtocolBindingContext,
00062         IN      
PNDIS_WAN_PACKET                Packet,
00063         IN      
NDIS_STATUS                             Status
00064         );
00065 
00066 
typedef
00067 
VOID
00068 (*TRANSFER_DATA_COMPLETE_HANDLER)(
00069         IN      
NDIS_HANDLE                             ProtocolBindingContext,
00070         IN      
PNDIS_PACKET                    Packet,
00071         IN      
NDIS_STATUS                             Status,
00072         IN      
UINT                                    BytesTransferred
00073         );
00074 
00075 
typedef
00076 
VOID
00077 (*WAN_TRANSFER_DATA_COMPLETE_HANDLER)(
00078         
VOID
00079     );
00080 
00081 
typedef
00082 
NDIS_STATUS
00083 (*RECEIVE_HANDLER)(
00084         IN      
NDIS_HANDLE                             ProtocolBindingContext,
00085         IN      
NDIS_HANDLE                             MacReceiveContext,
00086         IN      PVOID                                   HeaderBuffer,
00087         IN      
UINT                                    HeaderBufferSize,
00088         IN      PVOID                                   LookAheadBuffer,
00089         IN      
UINT                                    LookaheadBufferSize,
00090         IN      
UINT                                    PacketSize
00091         );
00092 
00093 
typedef
00094 
NDIS_STATUS
00095 (*WAN_RECEIVE_HANDLER)(
00096         IN      
NDIS_HANDLE                             NdisLinkHandle,
00097         IN      PUCHAR                                  Packet,
00098         IN      ULONG                                   PacketSize
00099     );
00100 
00101 
typedef
00102 
VOID
00103 (*RECEIVE_COMPLETE_HANDLER)(
00104         IN      
NDIS_HANDLE                             ProtocolBindingContext
00105         );
00106 
00107 
00108 
00109 
00110 typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS
00111 {
00112         UCHAR                                                   
MajorNdisVersion;
00113         UCHAR                                                   
MinorNdisVersion;
00114         USHORT                                                  Filler;
00115         
union
00116 
        {
00117                 UINT                                            Reserved;
00118                 UINT                                            Flags;
00119         };
00120         OPEN_ADAPTER_COMPLETE_HANDLER   OpenAdapterCompleteHandler;
00121         CLOSE_ADAPTER_COMPLETE_HANDLER  CloseAdapterCompleteHandler;
00122         
union
00123 
        {
00124                 SEND_COMPLETE_HANDLER           SendCompleteHandler;
00125                 WAN_SEND_COMPLETE_HANDLER       WanSendCompleteHandler;
00126         };
00127         
union
00128 
        {
00129          TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler;
00130          WAN_TRANSFER_DATA_COMPLETE_HANDLER WanTransferDataCompleteHandler;
00131         };
00132 
00133         RESET_COMPLETE_HANDLER                  ResetCompleteHandler;
00134         REQUEST_COMPLETE_HANDLER                RequestCompleteHandler;
00135         
union
00136 
        {
00137                 RECEIVE_HANDLER                         ReceiveHandler;
00138                 WAN_RECEIVE_HANDLER                     WanReceiveHandler;
00139         };
00140         RECEIVE_COMPLETE_HANDLER                ReceiveCompleteHandler;
00141         STATUS_HANDLER                                  StatusHandler;
00142         STATUS_COMPLETE_HANDLER                 StatusCompleteHandler;
00143         NDIS_STRING                                             Name;
00144 } 
NDIS30_PROTOCOL_CHARACTERISTICS;
00145 
00146 
00147 
00148 
00149 
typedef
00150 
INT
00151 (*RECEIVE_PACKET_HANDLER)(
00152         IN      
NDIS_HANDLE                             ProtocolBindingContext,
00153         IN      
PNDIS_PACKET                    Packet
00154         );
00155 
00156 
typedef
00157 
VOID
00158 (*BIND_HANDLER)(
00159         OUT     
PNDIS_STATUS                    Status,
00160         IN      
NDIS_HANDLE                             BindContext,
00161         IN      
PNDIS_STRING                    DeviceName,
00162         IN      PVOID                                   SystemSpecific1,
00163         IN      PVOID                                   SystemSpecific2
00164         );
00165 
00166 
typedef
00167 
VOID
00168 (*UNBIND_HANDLER)(
00169         OUT     
PNDIS_STATUS                    Status,
00170         IN      
NDIS_HANDLE                             ProtocolBindingContext,
00171         IN      
NDIS_HANDLE                             UnbindContext
00172         );
00173 
00174 
typedef
00175 
NDIS_STATUS
00176 (*PNP_EVENT_HANDLER)(
00177         IN      
NDIS_HANDLE                             ProtocolBindingContext,
00178         IN      PNET_PNP_EVENT                  NetPnPEvent
00179         );
00180 
00181 
typedef
00182 
VOID
00183 (*UNLOAD_PROTOCOL_HANDLER)(
00184         
VOID
00185         );
00186 
00187 
00188 
00189 
00190 typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS
00191 {
00192 
#ifdef __cplusplus
00193 
        NDIS30_PROTOCOL_CHARACTERISTICS Ndis30Chars;
00194 
#else
00195         NDIS30_PROTOCOL_CHARACTERISTICS;
00196 
#endif
00197 
00198         
00199         
00200         
00201         RECEIVE_PACKET_HANDLER                  ReceivePacketHandler;
00202 
00203         
00204         
00205         
00206         BIND_HANDLER                                    BindAdapterHandler;
00207         UNBIND_HANDLER                                  UnbindAdapterHandler;
00208         PNP_EVENT_HANDLER                               PnPEventHandler;
00209         UNLOAD_PROTOCOL_HANDLER                 UnloadHandler;
00210 
00211 } 
NDIS40_PROTOCOL_CHARACTERISTICS;
00212 
00213 
00214 
00215 
00216 
00217 
typedef
00218 
VOID
00219 (*CO_SEND_COMPLETE_HANDLER)(
00220         IN      
NDIS_STATUS                             Status,
00221         IN      
NDIS_HANDLE                             ProtocolVcContext,
00222         IN      
PNDIS_PACKET                    Packet
00223         );
00224 
00225 
typedef
00226 
VOID
00227 (*CO_STATUS_HANDLER)(
00228         IN      
NDIS_HANDLE                             ProtocolBindingContext,
00229         IN      
NDIS_HANDLE                             ProtocolVcContext       OPTIONAL,
00230         IN      
NDIS_STATUS                             GeneralStatus,
00231         IN      PVOID                                   StatusBuffer,
00232         IN      
UINT                                    StatusBufferSize
00233         );
00234 
00235 
typedef
00236 
UINT
00237 (*CO_RECEIVE_PACKET_HANDLER)(
00238         IN      
NDIS_HANDLE                             ProtocolBindingContext,
00239         IN      
NDIS_HANDLE                             ProtocolVcContext,
00240         IN      
PNDIS_PACKET                    Packet
00241         );
00242 
00243 
typedef
00244 
NDIS_STATUS
00245 (*CO_REQUEST_HANDLER)(
00246         IN      
NDIS_HANDLE                             ProtocolAfContext,
00247         IN      
NDIS_HANDLE                             ProtocolVcContext               OPTIONAL,
00248         IN      
NDIS_HANDLE                             ProtocolPartyContext    OPTIONAL,
00249         IN OUT 
PNDIS_REQUEST            NdisRequest
00250         );
00251 
00252 
typedef
00253 
VOID
00254 (*CO_REQUEST_COMPLETE_HANDLER)(
00255         IN      
NDIS_STATUS                             Status,
00256         IN      
NDIS_HANDLE                             ProtocolAfContext               OPTIONAL,
00257         IN      
NDIS_HANDLE                             ProtocolVcContext               OPTIONAL,
00258         IN      
NDIS_HANDLE                             ProtocolPartyContext    OPTIONAL,
00259         IN      
PNDIS_REQUEST                   NdisRequest
00260         );
00261 
00262 
00263 
00264 
00265 
typedef
00266 
NDIS_STATUS
00267 (*CO_CREATE_VC_HANDLER)(
00268         IN      
NDIS_HANDLE                             ProtocolAfContext,
00269         IN      
NDIS_HANDLE                             NdisVcHandle,
00270         OUT     
PNDIS_HANDLE                    ProtocolVcContext
00271         );
00272 
00273 
typedef
00274 
NDIS_STATUS
00275 (*CO_DELETE_VC_HANDLER)(
00276         IN      
NDIS_HANDLE                             ProtocolVcContext
00277         );
00278 
00279 
typedef
00280 
VOID
00281 (*CO_AF_REGISTER_NOTIFY_HANDLER)(
00282         IN      
NDIS_HANDLE                             ProtocolBindingContext,
00283         IN      
PCO_ADDRESS_FAMILY              AddressFamily
00284         );
00285 
00286 typedef struct _NDIS50_PROTOCOL_CHARACTERISTICS
00287 {
00288 
#ifdef __cplusplus
00289 
        NDIS40_PROTOCOL_CHARACTERISTICS Ndis40Chars;
00290 
#else
00291         NDIS40_PROTOCOL_CHARACTERISTICS;
00292 
#endif
00293 
        
00294         
00295         
00296         
00297         PVOID                                                   
ReservedHandlers[4];
00298 
00299         
00300         
00301         
00302 
00303         CO_SEND_COMPLETE_HANDLER                CoSendCompleteHandler;
00304         CO_STATUS_HANDLER                               CoStatusHandler;
00305         CO_RECEIVE_PACKET_HANDLER               CoReceivePacketHandler;
00306         CO_AF_REGISTER_NOTIFY_HANDLER   CoAfRegisterNotifyHandler;
00307 
00308 } 
NDIS50_PROTOCOL_CHARACTERISTICS;
00309 
00310 
#if NDIS50
00311 
typedef NDIS50_PROTOCOL_CHARACTERISTICS  NDIS_PROTOCOL_CHARACTERISTICS;
00312 
#else
00313 
#if NDIS40
00314 
typedef NDIS40_PROTOCOL_CHARACTERISTICS  NDIS_PROTOCOL_CHARACTERISTICS;
00315 
#else
00316 typedef NDIS30_PROTOCOL_CHARACTERISTICS  NDIS_PROTOCOL_CHARACTERISTICS;
00317 
#endif
00318 
#endif
00319 typedef NDIS_PROTOCOL_CHARACTERISTICS *
PNDIS_PROTOCOL_CHARACTERISTICS;
00320 
00321 
00322 
00323 
00324 
00325 
EXPORT
00326 
VOID
00327 
NdisRegisterProtocol(
00328         OUT     PNDIS_STATUS                    Status,
00329         OUT     PNDIS_HANDLE                    NdisProtocolHandle,
00330         IN      PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics,
00331         IN      UINT                                    CharacteristicsLength
00332         );
00333 
00334 
EXPORT
00335 
VOID
00336 
NdisDeregisterProtocol(
00337         OUT     PNDIS_STATUS                    Status,
00338         IN      NDIS_HANDLE                             NdisProtocolHandle
00339         );
00340 
00341 
00342 
EXPORT
00343 
VOID
00344 
NdisOpenAdapter(
00345         OUT     PNDIS_STATUS                    Status,
00346         OUT     PNDIS_STATUS                    OpenErrorStatus,
00347         OUT     PNDIS_HANDLE                    NdisBindingHandle,
00348         OUT     PUINT                                   SelectedMediumIndex,
00349         IN      PNDIS_MEDIUM                    MediumArray,
00350         IN      UINT                                    MediumArraySize,
00351         IN      NDIS_HANDLE                             NdisProtocolHandle,
00352         IN      NDIS_HANDLE                             ProtocolBindingContext,
00353         IN      PNDIS_STRING                    AdapterName,
00354         IN      UINT                                    OpenOptions,
00355         IN      PSTRING                                 AddressingInformation OPTIONAL
00356         );
00357 
00358 
00359 
EXPORT
00360 
VOID
00361 
NdisCloseAdapter(
00362         OUT     PNDIS_STATUS                    Status,
00363         IN      NDIS_HANDLE                             NdisBindingHandle
00364         );
00365 
00366 
00367 
EXPORT
00368 
VOID
00369 
NdisCompleteBindAdapter(
00370         IN       NDIS_HANDLE                    BindAdapterContext,
00371         IN       NDIS_STATUS                    Status,
00372         IN       NDIS_STATUS                    OpenStatus
00373         );
00374 
00375 
EXPORT
00376 
VOID
00377 
NdisCompleteUnbindAdapter(
00378         IN       NDIS_HANDLE                    UnbindAdapterContext,
00379         IN       NDIS_STATUS                    Status
00380         );
00381 
00382 
EXPORT
00383 
VOID
00384 
NdisSetProtocolFilter(
00385         OUT     PNDIS_STATUS                    Status,
00386         IN      NDIS_HANDLE                             NdisBindingHandle,
00387         IN      
RECEIVE_HANDLER                 ReceiveHandler,
00388         IN      
RECEIVE_PACKET_HANDLER  ReceivePacketHandler,
00389         IN      NDIS_MEDIUM                             Medium,
00390         IN      UINT                                    Offset,
00391         IN      UINT                                    Size,
00392         IN      PUCHAR                                  Pattern
00393         );
00394 
00395 
EXPORT
00396 
VOID
00397 
NdisOpenProtocolConfiguration(
00398         OUT     PNDIS_STATUS                    Status,
00399         OUT     PNDIS_HANDLE                    ConfigurationHandle,
00400         IN      PNDIS_STRING                    ProtocolSection
00401 );
00402 
00403 
EXPORT
00404 
VOID
00405 
NdisGetDriverHandle(
00406         IN      NDIS_HANDLE                             NdisBindingHandle,
00407         OUT     PNDIS_HANDLE                    NdisDriverHandle
00408         );
00409 
00410 
EXPORT
00411 
VOID
00412 
NdisReEnumerateProtocolBindings(
00413         IN      NDIS_HANDLE                             NdisProtocolHandle
00414         );
00415 
00416 
EXPORT
00417 
NDIS_STATUS
00418 
NdisWriteEventLogEntry(
00419         IN      PVOID                                   LogHandle,
00420         IN      NDIS_STATUS                             EventCode,
00421         IN      ULONG                                   UniqueEventValue,
00422         IN      USHORT                                  NumStrings,
00423         IN      PVOID                                   StringsList             OPTIONAL,
00424         IN      ULONG                                   DataSize,
00425         IN      PVOID                                   Data                    OPTIONAL
00426         );
00427 
00428 
00429 
00430 
00431 
00432 
EXPORT
00433 
VOID
00434 
NdisCompletePnPEvent(
00435         IN      NDIS_STATUS             Status,
00436         IN      NDIS_HANDLE             NdisBindingHandle,
00437         IN      PNET_PNP_EVENT  NetPnPEvent
00438         );
00439 
00440 
00441 
00442 
00443 
00444 
00445 
00446 
00447 
EXPORT
00448 
NDIS_STATUS
00449 
NdisQueryAdapterInstanceName(
00450         OUT     PNDIS_STRING    pAdapterInstanceName,
00451         IN      NDIS_HANDLE             NdisBindingHandle
00452         );
00453 
00454 
EXPORT
00455 
NDIS_STATUS
00456 
NdisQueryBindInstanceName(
00457         OUT     PNDIS_STRING    pAdapterInstanceName,
00458         IN      NDIS_HANDLE             BindingContext
00459         );
00460 
00461 
00462 
00463 
00464 
00465 
typedef
00466 
NTSTATUS
00467 (*TDI_REGISTER_CALLBACK)(
00468         IN      PUNICODE_STRING                 DeviceName,
00469         OUT     HANDLE  *                               TdiHandle
00470         );
00471 
00472 
typedef
00473 
NTSTATUS
00474 (*TDI_PNP_HANDLER)(
00475         IN      PUNICODE_STRING                 UpperComponent,
00476         IN      PUNICODE_STRING                 LowerComponent,
00477         IN      PUNICODE_STRING                 BindList,
00478         IN      PVOID                                   ReconfigBuffer,
00479         IN      
UINT                                    ReconfigBufferSize,
00480         IN      
UINT                                    Operation
00481         );
00482 
00483 
EXPORT
00484 
VOID
00485 
NdisRegisterTdiCallBack(
00486         IN      
TDI_REGISTER_CALLBACK   RegsterCallback,
00487         IN      
TDI_PNP_HANDLER                 PnPHandler
00488         );
00489 
00490 
EXPORT
00491 
VOID
00492 
NdisRegisterTdiPnpHandler(
00493         IN      TDI_PNP_HANDLER                 PnPHandler
00494         );
00495 
00496 
#if BINARY_COMPATIBLE
00497 
00498 
VOID
00499 
NdisSend(
00500         OUT     PNDIS_STATUS                    Status,
00501         IN      NDIS_HANDLE                             NdisBindingHandle,
00502         IN      
PNDIS_PACKET                    Packet
00503         );
00504 
00505 
VOID
00506 
NdisSendPackets(
00507         IN      NDIS_HANDLE                             NdisBindingHandle,
00508         IN      
PPNDIS_PACKET                   PacketArray,
00509         IN      UINT                                    NumberOfPackets
00510         );
00511 
00512 
VOID
00513 
NdisTransferData(
00514         OUT     PNDIS_STATUS                    Status,
00515         IN      NDIS_HANDLE                             NdisBindingHandle,
00516         IN      NDIS_HANDLE                             MacReceiveContext,
00517         IN      UINT                                    ByteOffset,
00518         IN      UINT                                    BytesToTransfer,
00519         IN OUT  
PNDIS_PACKET            Packet,
00520         OUT     PUINT                                   BytesTransferred
00521         );
00522 
00523 
VOID
00524 
NdisReset(
00525         OUT     PNDIS_STATUS                    Status,
00526         IN      NDIS_HANDLE                             NdisBindingHandle
00527         );
00528 
00529 
VOID
00530 
NdisRequest(
00531         OUT     PNDIS_STATUS                    Status,
00532         IN      NDIS_HANDLE                             NdisBindingHandle,
00533         IN      
PNDIS_REQUEST                   NdisRequest
00534         );
00535 
00536 
#else // BINARY_COMPATIBLE
00537 
00538 #define NdisSend(Status, NdisBindingHandle, Packet)                                                     \
00539 
{                                                                                                                                                       \
00540 
        *(Status) =                                                                                                                             \
00541 
                (((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->SendHandler)(                         \
00542 
                        ((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->MacBindingHandle,              \
00543 
                (Packet));                                                                                                                      \
00544 
}
00545 
00546 #define NdisSendPackets(NdisBindingHandle, PacketArray, NumberOfPackets)        \
00547 
{                                                                                                                                                       \
00548 
        (((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->SendPacketsHandler)(                  \
00549 
                (PNDIS_OPEN_BLOCK)(NdisBindingHandle),                                                          \
00550 
                (PacketArray),                                                                                                          \
00551 
                (NumberOfPackets));                                                                                             \
00552 
}
00553 
00554 
#define WanMiniportSend(Status,                                                                                         \
00555 
                                                NdisBindingHandle,                                                                      \
00556 
                                                NdisLinkHandle,                                                                         \
00557                                                 WanPacket)                                                                                      \
00558 
{                                                                                                                                                       \
00559 
        *(Status) =                                                                                                                             \
00560 
                ((((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->WanSendHandler))(            \
00561 
                        ((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->MacBindingHandle,              \
00562 
                        (NdisLinkHandle),                                                                                               \
00563 
                        (PNDIS_PACKET)(WanPacket));                                                                             \
00564 
}
00565 
00566 
#define NdisTransferData(Status,                                                                                        \
00567 
                                                 NdisBindingHandle,                                                             \
00568 
                                                 MacReceiveContext,                                                             \
00569 
                                                 ByteOffset,                                                                            \
00570 
                                                 BytesToTransfer,                                                                       \
00571 
                                                 Packet,                                                                                        \
00572                                                  BytesTransferred)                                                                      \
00573 
{                                                                                                                                                       \
00574 
        *(Status) =                                                                                                                             \
00575 
                (((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->TransferDataHandler)(         \
00576 
                        ((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->MacBindingHandle,              \
00577 
                        (MacReceiveContext),                                                                                    \
00578 
                        (ByteOffset),                                                                                                   \
00579 
                        (BytesToTransfer),                                                                                              \
00580 
                        (Packet),                                                                                                               \
00581 
                        (BytesTransferred));                                                                                    \
00582 
}
00583 
00584 
00585 #define NdisReset(Status, NdisBindingHandle)                                                            \
00586 
{                                                                                                                                                       \
00587 
        *(Status) =                                                                                                                             \
00588 
                (((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->ResetHandler)(                        \
00589 
                        ((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->MacBindingHandle);             \
00590 
}
00591 
00592 #define NdisRequest(Status, NdisBindingHandle, NdisRequest)                                     \
00593 
{                                                                                                                                                       \
00594 
        *(Status) =                                                                                                                             \
00595 
                (((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->RequestHandler)(                      \
00596 
                        ((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->MacBindingHandle,              \
00597 
                        (NdisRequest));                                                                                                 \
00598 
}
00599 
00600 
#endif // BINARY_COMPATIBLE
00601 
00602 
00603 
00604 
00605 
00606 
00607 
00608 
00609 
00610 
00611 
00612 
00613 
00614 
00615 
00616 #define NdisSetSendFlags(_Packet,_Flags)        (_Packet)->Private.Flags = (_Flags)
00617 
00618 
00619 
00620 
00621 
00622 
00623 
00624 
00625 
00626 
00627 
00628 #define NdisQuerySendFlags(_Packet,_Flags)      *(_Flags) = (_Packet)->Private.Flags
00629 
00630 
00631 
00632 
00633 
00634 #define PROTOCOL_RESERVED_SIZE_IN_PACKET        (4 * sizeof(PVOID))
00635 
00636 
EXPORT
00637 
VOID
00638 
NdisReturnPackets(
00639         IN      
PNDIS_PACKET    *               PacketsToReturn,
00640         IN      UINT                                    NumberOfPackets
00641         );
00642 
00643 
EXPORT
00644 
PNDIS_PACKET
00645 
NdisGetReceivedPacket(
00646         IN      NDIS_HANDLE                     NdisBindingHandle,
00647         IN      NDIS_HANDLE                     MacContext
00648         );
00649 
00650 
00651 
00652 
00653 
#if     BINARY_COMPATIBLE
00654 
00655 
EXPORT
00656 ULONG
00657 
NdisBufferLength(
00658         IN      
PNDIS_BUFFER                    Buffer
00659         );
00660 
00661 
EXPORT
00662 PVOID
00663 
NdisBufferVirtualAddress(
00664         IN      
PNDIS_BUFFER                    Buffer
00665         );
00666 
00667 
#else // BINARY_COMPATIBLE
00668 
00669 
#ifdef  NDIS_NT
00670 
#define NdisBufferLength(Buffer)                                                        MmGetMdlByteCount(Buffer)
00671 
#define NdisBufferVirtualAddress(_Buffer)                                       MmGetSystemAddressForMdl(_Buffer)
00672 
#define NdisBufferVirtualAddressSafe(_Buffer, _Priority)        MmGetSystemAddressForMdlSafe(_Buffer, _Priority)
00673 
#else
00674 #define NdisBufferLength(_Buffer)                                                       (_Buffer)->Length
00675 #define NdisBufferVirtualAddress(_Buffer)                                       (_Buffer)->VirtualAddress
00676 #define NdisBufferVirtualAddressSafe(_Buffer, _Priority)        (_Buffer)->VirtualAddress
00677 
#endif
00678 
00679 
#endif  // BINARY_COMPATIBLE
00680 
00681