00001
#include <afilter.h>
00002
#include <efilter.h>
00003
#include <tfilter.h>
00004
#include <ffilter.h>
00005
00006 #define NDIS_M_MAX_LOOKAHEAD 526
00007
00008
00009
00010
00011
00012 typedef struct _NDIS_M_DRIVER_BLOCK NDIS_M_DRIVER_BLOCK, *
PNDIS_M_DRIVER_BLOCK;
00013 typedef struct _NDIS_MINIPORT_BLOCK NDIS_MINIPORT_BLOCK,*
PNDIS_MINIPORT_BLOCK;
00014 typedef struct _CO_CALL_PARAMETERS CO_CALL_PARAMETERS, *
PCO_CALL_PARAMETERS;
00015 typedef struct _CO_MEDIA_PARAMETERS CO_MEDIA_PARAMETERS, *
PCO_MEDIA_PARAMETERS;
00016 typedef struct _NDIS_CALL_MANAGER_CHARACTERISTICS *
PNDIS_CALL_MANAGER_CHARACTERISTICS;
00017 typedef struct _NDIS_AF_LIST NDIS_AF_LIST, *
PNDIS_AF_LIST;
00018 typedef struct _NULL_FILTER NULL_FILTER, *
PNULL_FILTER;
00019
00020
00021
00022
00023
00024
00025
typedef
00026 BOOLEAN
00027 (*W_CHECK_FOR_HANG_HANDLER)(
00028 IN
NDIS_HANDLE MiniportAdapterContext
00029 );
00030
00031
typedef
00032
VOID
00033 (*W_DISABLE_INTERRUPT_HANDLER)(
00034 IN
NDIS_HANDLE MiniportAdapterContext
00035 );
00036
00037
typedef
00038
VOID
00039 (*W_ENABLE_INTERRUPT_HANDLER)(
00040 IN
NDIS_HANDLE MiniportAdapterContext
00041 );
00042
00043
typedef
00044
VOID
00045 (*W_HALT_HANDLER)(
00046 IN
NDIS_HANDLE MiniportAdapterContext
00047 );
00048
00049
typedef
00050
VOID
00051 (*W_HANDLE_INTERRUPT_HANDLER)(
00052 IN
NDIS_HANDLE MiniportAdapterContext
00053 );
00054
00055
typedef
00056
NDIS_STATUS
00057 (*W_INITIALIZE_HANDLER)(
00058 OUT
PNDIS_STATUS OpenErrorStatus,
00059 OUT
PUINT SelectedMediumIndex,
00060 IN PNDIS_MEDIUM MediumArray,
00061 IN
UINT MediumArraySize,
00062 IN
NDIS_HANDLE MiniportAdapterContext,
00063 IN
NDIS_HANDLE WrapperConfigurationContext
00064 );
00065
00066
typedef
00067
VOID
00068 (*W_ISR_HANDLER)(
00069 OUT PBOOLEAN InterruptRecognized,
00070 OUT PBOOLEAN QueueMiniportHandleInterrupt,
00071 IN
NDIS_HANDLE MiniportAdapterContext
00072 );
00073
00074
typedef
00075
NDIS_STATUS
00076 (*W_QUERY_INFORMATION_HANDLER)(
00077 IN
NDIS_HANDLE MiniportAdapterContext,
00078 IN NDIS_OID Oid,
00079 IN PVOID InformationBuffer,
00080 IN ULONG InformationBufferLength,
00081 OUT PULONG BytesWritten,
00082 OUT PULONG BytesNeeded
00083 );
00084
00085
typedef
00086
NDIS_STATUS
00087 (*W_RECONFIGURE_HANDLER)(
00088 OUT
PNDIS_STATUS OpenErrorStatus,
00089 IN
NDIS_HANDLE MiniportAdapterContext OPTIONAL,
00090 IN
NDIS_HANDLE WrapperConfigurationContext
00091 );
00092
00093
typedef
00094
NDIS_STATUS
00095 (*W_RESET_HANDLER)(
00096 OUT PBOOLEAN AddressingReset,
00097 IN
NDIS_HANDLE MiniportAdapterContext
00098 );
00099
00100
typedef
00101
NDIS_STATUS
00102 (*W_SEND_HANDLER)(
00103 IN
NDIS_HANDLE MiniportAdapterContext,
00104 IN
PNDIS_PACKET Packet,
00105 IN
UINT Flags
00106 );
00107
00108
typedef
00109
NDIS_STATUS
00110 (*WM_SEND_HANDLER)(
00111 IN
NDIS_HANDLE MiniportAdapterContext,
00112 IN
NDIS_HANDLE NdisLinkHandle,
00113 IN
PNDIS_WAN_PACKET Packet
00114 );
00115
00116
typedef
00117
NDIS_STATUS
00118 (*W_SET_INFORMATION_HANDLER)(
00119 IN
NDIS_HANDLE MiniportAdapterContext,
00120 IN NDIS_OID Oid,
00121 IN PVOID InformationBuffer,
00122 IN ULONG InformationBufferLength,
00123 OUT PULONG BytesRead,
00124 OUT PULONG BytesNeeded
00125 );
00126
00127
typedef
00128
NDIS_STATUS
00129 (*W_TRANSFER_DATA_HANDLER)(
00130 OUT
PNDIS_PACKET Packet,
00131 OUT
PUINT BytesTransferred,
00132 IN
NDIS_HANDLE MiniportAdapterContext,
00133 IN
NDIS_HANDLE MiniportReceiveContext,
00134 IN
UINT ByteOffset,
00135 IN
UINT BytesToTransfer
00136 );
00137
00138
typedef
00139
NDIS_STATUS
00140 (*WM_TRANSFER_DATA_HANDLER)(
00141
VOID
00142 );
00143
00144 typedef struct _NDIS30_MINIPORT_CHARACTERISTICS
00145 {
00146 UCHAR
MajorNdisVersion;
00147 UCHAR
MinorNdisVersion;
00148 USHORT Filler;
00149 UINT Reserved;
00150 W_CHECK_FOR_HANG_HANDLER CheckForHangHandler;
00151 W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler;
00152 W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler;
00153 W_HALT_HANDLER HaltHandler;
00154 W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler;
00155 W_INITIALIZE_HANDLER InitializeHandler;
00156 W_ISR_HANDLER ISRHandler;
00157 W_QUERY_INFORMATION_HANDLER QueryInformationHandler;
00158 W_RECONFIGURE_HANDLER ReconfigureHandler;
00159 W_RESET_HANDLER ResetHandler;
00160
union
00161
{
00162 W_SEND_HANDLER SendHandler;
00163 WM_SEND_HANDLER WanSendHandler;
00164 };
00165 W_SET_INFORMATION_HANDLER SetInformationHandler;
00166
union
00167
{
00168 W_TRANSFER_DATA_HANDLER TransferDataHandler;
00169 WM_TRANSFER_DATA_HANDLER WanTransferDataHandler;
00170 };
00171 }
NDIS30_MINIPORT_CHARACTERISTICS;
00172
00173
00174
00175
00176
typedef
00177
VOID
00178 (*W_RETURN_PACKET_HANDLER)(
00179 IN
NDIS_HANDLE MiniportAdapterContext,
00180 IN
PNDIS_PACKET Packet
00181 );
00182
00183
00184
00185
00186
typedef
00187
VOID
00188 (*W_SEND_PACKETS_HANDLER)(
00189 IN
NDIS_HANDLE MiniportAdapterContext,
00190 IN
PPNDIS_PACKET PacketArray,
00191 IN
UINT NumberOfPackets
00192 );
00193
00194
typedef
00195
VOID
00196 (*W_ALLOCATE_COMPLETE_HANDLER)(
00197 IN
NDIS_HANDLE MiniportAdapterContext,
00198 IN PVOID VirtualAddress,
00199 IN
PNDIS_PHYSICAL_ADDRESS PhysicalAddress,
00200 IN ULONG Length,
00201 IN PVOID Context
00202 );
00203
00204 typedef struct _NDIS40_MINIPORT_CHARACTERISTICS
00205 {
00206
#ifdef __cplusplus
00207
NDIS30_MINIPORT_CHARACTERISTICS Ndis30Chars;
00208
#else
00209 NDIS30_MINIPORT_CHARACTERISTICS;
00210
#endif
00211
00212
00213
00214 W_RETURN_PACKET_HANDLER ReturnPacketHandler;
00215 W_SEND_PACKETS_HANDLER SendPacketsHandler;
00216 W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler;
00217
00218 }
NDIS40_MINIPORT_CHARACTERISTICS;
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
typedef
00232
NDIS_STATUS
00233 (*W_CO_CREATE_VC_HANDLER)(
00234 IN
NDIS_HANDLE MiniportAdapterContext,
00235 IN
NDIS_HANDLE NdisVcHandle,
00236 OUT
PNDIS_HANDLE MiniportVcContext
00237 );
00238
00239
typedef
00240
NDIS_STATUS
00241 (*W_CO_DELETE_VC_HANDLER)(
00242 IN
NDIS_HANDLE MiniportVcContext
00243 );
00244
00245
typedef
00246
NDIS_STATUS
00247 (*W_CO_ACTIVATE_VC_HANDLER)(
00248 IN
NDIS_HANDLE MiniportVcContext,
00249 IN OUT
PCO_CALL_PARAMETERS CallParameters
00250 );
00251
00252
typedef
00253
NDIS_STATUS
00254 (*W_CO_DEACTIVATE_VC_HANDLER)(
00255 IN
NDIS_HANDLE MiniportVcContext
00256 );
00257
00258
typedef
00259
VOID
00260 (*W_CO_SEND_PACKETS_HANDLER)(
00261 IN
NDIS_HANDLE MiniportVcContext,
00262 IN
PPNDIS_PACKET PacketArray,
00263 IN
UINT NumberOfPackets
00264 );
00265
00266
typedef
00267
NDIS_STATUS
00268 (*W_CO_REQUEST_HANDLER)(
00269 IN
NDIS_HANDLE MiniportAdapterContext,
00270 IN
NDIS_HANDLE MiniportVcContext OPTIONAL,
00271 IN OUT
PNDIS_REQUEST NdisRequest
00272 );
00273
00274 typedef struct _NDIS50_MINIPORT_CHARACTERISTICS
00275 {
00276
#ifdef __cplusplus
00277
NDIS40_MINIPORT_CHARACTERISTICS Ndis40Chars;
00278
#else
00279 NDIS40_MINIPORT_CHARACTERISTICS;
00280
#endif
00281
00282
00283
00284 W_CO_CREATE_VC_HANDLER CoCreateVcHandler;
00285 W_CO_DELETE_VC_HANDLER CoDeleteVcHandler;
00286 W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler;
00287 W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler;
00288 W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler;
00289 W_CO_REQUEST_HANDLER CoRequestHandler;
00290 }
NDIS50_MINIPORT_CHARACTERISTICS;
00291
00292
#ifdef NDIS50_MINIPORT
00293
typedef struct _NDIS50_MINIPORT_CHARACTERISTICS NDIS_MINIPORT_CHARACTERISTICS;
00294
#else
00295
#ifdef NDIS40_MINIPORT
00296
typedef struct _NDIS40_MINIPORT_CHARACTERISTICS NDIS_MINIPORT_CHARACTERISTICS;
00297
#else
00298 typedef struct _NDIS30_MINIPORT_CHARACTERISTICS NDIS_MINIPORT_CHARACTERISTICS;
00299
#endif
00300
#endif
00301 typedef NDIS_MINIPORT_CHARACTERISTICS *
PNDIS_MINIPORT_CHARACTERISTICS;
00302 typedef NDIS_MINIPORT_CHARACTERISTICS NDIS_WAN_MINIPORT_CHARACTERISTICS;
00303
typedef NDIS_WAN_MINIPORT_CHARACTERISTICS *
PNDIS_MINIPORT_CHARACTERISTICS;
00304
00305 typedef struct _NDIS_MINIPORT_INTERRUPT
00306 {
00307 PKINTERRUPT InterruptObject;
00308 KSPIN_LOCK
DpcCountLock;
00309 PVOID
MiniportIdField;
00310 W_ISR_HANDLER MiniportIsr;
00311 W_HANDLE_INTERRUPT_HANDLER MiniportDpc;
00312 KDPC InterruptDpc;
00313 PNDIS_MINIPORT_BLOCK Miniport;
00314
00315 UCHAR
DpcCount;
00316 BOOLEAN
Filler1;
00317
00318
00319
00320
00321
00322 KEVENT DpcsCompletedEvent;
00323
00324 BOOLEAN
SharedInterrupt;
00325 BOOLEAN
IsrRequested;
00326
00327 }
NDIS_MINIPORT_INTERRUPT, *
PNDIS_MINIPORT_INTERRUPT;
00328
00329
00330 typedef struct _NDIS_MINIPORT_TIMER
00331 {
00332 KTIMER Timer;
00333 KDPC Dpc;
00334 PNDIS_TIMER_FUNCTION MiniportTimerFunction;
00335 PVOID
MiniportTimerContext;
00336 PNDIS_MINIPORT_BLOCK Miniport;
00337 struct _NDIS_MINIPORT_TIMER *
NextTimer;
00338 }
NDIS_MINIPORT_TIMER, *
PNDIS_MINIPORT_TIMER;
00339
00340
typedef
00341
VOID
00342 (*FILTER_PACKET_INDICATION_HANDLER)(
00343 IN
NDIS_HANDLE Miniport,
00344 IN
PPNDIS_PACKET PacketArray,
00345 IN
UINT NumberOfPackets
00346 );
00347
00348
typedef
00349
VOID
00350 (*ETH_RCV_INDICATE_HANDLER)(
00351 IN PETH_FILTER
Filter,
00352 IN
NDIS_HANDLE MacReceiveContext,
00353 IN PCHAR Address,
00354 IN PVOID HeaderBuffer,
00355 IN
UINT HeaderBufferSize,
00356 IN PVOID LookaheadBuffer,
00357 IN
UINT LookaheadBufferSize,
00358 IN
UINT PacketSize
00359 );
00360
00361
typedef
00362
VOID
00363 (*ETH_RCV_COMPLETE_HANDLER)(
00364 IN PETH_FILTER
Filter
00365 );
00366
00367
typedef
00368
VOID
00369 (*FDDI_RCV_INDICATE_HANDLER)(
00370 IN PFDDI_FILTER
Filter,
00371 IN
NDIS_HANDLE MacReceiveContext,
00372 IN PCHAR Address,
00373 IN
UINT AddressLength,
00374 IN PVOID HeaderBuffer,
00375 IN
UINT HeaderBufferSize,
00376 IN PVOID LookaheadBuffer,
00377 IN
UINT LookaheadBufferSize,
00378 IN
UINT PacketSize
00379 );
00380
00381
typedef
00382
VOID
00383 (*FDDI_RCV_COMPLETE_HANDLER)(
00384 IN PFDDI_FILTER
Filter
00385 );
00386
00387
typedef
00388
VOID
00389 (*TR_RCV_INDICATE_HANDLER)(
00390 IN PTR_FILTER
Filter,
00391 IN
NDIS_HANDLE MacReceiveContext,
00392 IN PVOID HeaderBuffer,
00393 IN
UINT HeaderBufferSize,
00394 IN PVOID LookaheadBuffer,
00395 IN
UINT LookaheadBufferSize,
00396 IN
UINT PacketSize
00397 );
00398
00399
typedef
00400
VOID
00401 (*TR_RCV_COMPLETE_HANDLER)(
00402 IN PTR_FILTER
Filter
00403 );
00404
00405
typedef
00406
VOID
00407 (*WAN_RCV_HANDLER)(
00408 OUT
PNDIS_STATUS Status,
00409 IN
NDIS_HANDLE MiniportAdapterHandle,
00410 IN
NDIS_HANDLE NdisLinkContext,
00411 IN PUCHAR Packet,
00412 IN ULONG PacketSize
00413 );
00414
00415
typedef
00416
VOID
00417 (*WAN_RCV_COMPLETE_HANDLER)(
00418 IN
NDIS_HANDLE MiniportAdapterHandle,
00419 IN
NDIS_HANDLE NdisLinkContext
00420 );
00421
00422
typedef
00423
VOID
00424 (*NDIS_M_SEND_COMPLETE_HANDLER)(
00425 IN
NDIS_HANDLE MiniportAdapterHandle,
00426 IN
PNDIS_PACKET Packet,
00427 IN
NDIS_STATUS Status
00428 );
00429
00430
typedef
00431
VOID
00432 (*NDIS_WM_SEND_COMPLETE_HANDLER)(
00433 IN
NDIS_HANDLE MiniportAdapterHandle,
00434 IN PVOID Packet,
00435 IN
NDIS_STATUS Status
00436 );
00437
00438
typedef
00439
VOID
00440 (*NDIS_M_TD_COMPLETE_HANDLER)(
00441 IN
NDIS_HANDLE MiniportAdapterHandle,
00442 IN
PNDIS_PACKET Packet,
00443 IN
NDIS_STATUS Status,
00444 IN
UINT BytesTransferred
00445 );
00446
00447
typedef
00448
VOID
00449 (*NDIS_M_SEND_RESOURCES_HANDLER)(
00450 IN
NDIS_HANDLE MiniportAdapterHandle
00451 );
00452
00453
typedef
00454
VOID
00455 (*NDIS_M_STATUS_HANDLER)(
00456 IN
NDIS_HANDLE MiniportHandle,
00457 IN
NDIS_STATUS GeneralStatus,
00458 IN PVOID StatusBuffer,
00459 IN
UINT StatusBufferSize
00460 );
00461
00462
typedef
00463
VOID
00464 (*NDIS_M_STS_COMPLETE_HANDLER)(
00465 IN
NDIS_HANDLE MiniportAdapterHandle
00466 );
00467
00468
typedef
00469
VOID
00470 (*NDIS_M_REQ_COMPLETE_HANDLER)(
00471 IN
NDIS_HANDLE MiniportAdapterHandle,
00472 IN
NDIS_STATUS Status
00473 );
00474
00475
typedef
00476
VOID
00477 (*NDIS_M_RESET_COMPLETE_HANDLER)(
00478 IN
NDIS_HANDLE MiniportAdapterHandle,
00479 IN
NDIS_STATUS Status,
00480 IN BOOLEAN AddressingReset
00481 );
00482
00483
typedef
00484
VOID
00485 (
FASTCALL *
NDIS_M_PROCESS_DEFERRED)(
00486 IN
PNDIS_MINIPORT_BLOCK Miniport
00487 );
00488
00489
typedef
00490 BOOLEAN
00491 (
FASTCALL *
NDIS_M_START_SENDS)(
00492 IN
PNDIS_MINIPORT_BLOCK Miniport
00493 );
00494
00495
00496
00497
00498 typedef enum _NDIS_WORK_ITEM_TYPE
00499 {
00500
NdisWorkItemRequest,
00501
NdisWorkItemSend,
00502
NdisWorkItemReturnPackets,
00503
NdisWorkItemResetRequested,
00504
NdisWorkItemResetInProgress,
00505
NdisWorkItemHalt,
00506
#if !(NDIS_NT)
00507
NdisWorkItemSendLoopback,
00508
#endif
00509
NdisWorkItemMiniportCallback,
00510
NdisMaxWorkItems
00511 }
NDIS_WORK_ITEM_TYPE, *
PNDIS_WORK_ITEM_TYPE;
00512
00513
00514 #define NUMBER_OF_WORK_ITEM_TYPES NdisMaxWorkItems
00515 #define NUMBER_OF_SINGLE_WORK_ITEMS 6
00516
00517
00518
00519
00520 typedef struct _NDIS_MINIPORT_WORK_ITEM
00521 {
00522
00523
00524
00525 SINGLE_LIST_ENTRY
Link;
00526
00527
00528
00529
00530 NDIS_WORK_ITEM_TYPE WorkItemType;
00531 PVOID
WorkItemContext;
00532 }
NDIS_MINIPORT_WORK_ITEM, *
PNDIS_MINIPORT_WORK_ITEM;
00533
00534
typedef
00535
NDIS_STATUS
00536 (
FASTCALL *
NDIS_M_QUEUE_WORK_ITEM)(
00537 IN
PNDIS_MINIPORT_BLOCK Miniport,
00538 IN
NDIS_WORK_ITEM_TYPE WorkItemType,
00539 IN PVOID WorkItemContext
00540 );
00541
00542
typedef
00543
NDIS_STATUS
00544 (
FASTCALL *
NDIS_M_QUEUE_NEW_WORK_ITEM)(
00545 IN
PNDIS_MINIPORT_BLOCK Miniport,
00546 IN
NDIS_WORK_ITEM_TYPE WorkItemType,
00547 IN PVOID WorkItemContext
00548 );
00549
00550
typedef
00551
VOID
00552 (
FASTCALL *
NDIS_M_DEQUEUE_WORK_ITEM)(
00553 IN
PNDIS_MINIPORT_BLOCK Miniport,
00554 IN
NDIS_WORK_ITEM_TYPE WorkItemType,
00555 OUT PVOID * WorkItemContext
00556 );
00557
00558
#if defined(NDIS_WRAPPER)
00559
00560
00561
00562
00563
typedef struct _NDIS_LOG
00564 {
00565
PNDIS_MINIPORT_BLOCK Miniport;
00566 KSPIN_LOCK LogLock;
00567
PIRP Irp;
00568
UINT TotalSize;
00569
UINT CurrentSize;
00570
UINT InPtr;
00571
UINT OutPtr;
00572 UCHAR LogBuf[1];
00573 } NDIS_LOG, *PNDIS_LOG;
00574
00575
00576
00577
00578
#define ARC_SEND_BUFFERS 8
00579
#define ARC_HEADER_SIZE 4
00580
00581
typedef struct _NDIS_ARC_BUF
00582 {
00583
NDIS_HANDLE ArcnetBufferPool;
00584 PUCHAR ArcnetLookaheadBuffer;
00585
UINT NumFree;
00586 ARC_BUFFER_LIST ArcnetBuffers[ARC_SEND_BUFFERS];
00587 } NDIS_ARC_BUF, *PNDIS_ARC_BUF;
00588
00589
#endif
00590
00591 typedef struct _NDIS_BIND_PATHS
00592 {
00593 UINT Number;
00594 NDIS_STRING Paths[1];
00595 }
NDIS_BIND_PATHS, *
PNDIS_BIND_PATHS;
00596
00597
00598
00599
00600 typedef struct
00601
{
00602
union
00603
{
00604 PETH_FILTER EthDB;
00605 PNULL_FILTER NullDB;
00606 };
00607 PTR_FILTER TrDB;
00608 PFDDI_FILTER FddiDB;
00609 PARC_FILTER ArcDB;
00610 }
FILTERDBS, *
PFILTERDBS;
00611
00612
00613
00614
00615 struct _NDIS_MINIPORT_BLOCK
00616 {
00617 ULONG
NullValue;
00618 PNDIS_MINIPORT_BLOCK NextMiniport;
00619 PNDIS_M_DRIVER_BLOCK DriverHandle;
00620 NDIS_HANDLE MiniportAdapterContext;
00621 UNICODE_STRING
MiniportName;
00622 PNDIS_BIND_PATHS BindPaths;
00623 NDIS_HANDLE OpenQueue;
00624 REFERENCE Ref;
00625
00626 NDIS_HANDLE DeviceContext;
00627
00628 UCHAR
Padding1;
00629
00630
00631
00632
00633
00634
00635 UCHAR
LockAcquired;
00636
00637 UCHAR
PmodeOpens;
00638
00639
00640
00641
00642
00643 UCHAR
AssignedProcessor;
00644
00645 KSPIN_LOCK
Lock;
00646
00647 PNDIS_REQUEST MediaRequest;
00648
00649 PNDIS_MINIPORT_INTERRUPT Interrupt;
00650
00651 ULONG
Flags;
00652
00653 ULONG
PnPFlags;
00654
00655
00656
00657
00658 LIST_ENTRY
PacketList;
00659 PNDIS_PACKET FirstPendingPacket;
00660
00661 PNDIS_PACKET ReturnPacketsQueue;
00662
00663
00664
00665
00666 ULONG
RequestBuffer;
00667 PVOID
SetMCastBuffer;
00668
00669 PNDIS_MINIPORT_BLOCK PrimaryMiniport;
00670 PVOID
WrapperContext;
00671
00672
00673
00674
00675 PVOID
BusDataContext;
00676
00677
00678
00679
00680 ULONG
PnPCapabilities;
00681
00682
00683
00684
00685 PCM_RESOURCE_LIST
Resources;
00686
00687
00688
00689
00690 NDIS_TIMER WakeUpDpcTimer;
00691
00692
00693
00694
00695
00696
00697
00698
00699
00700 UNICODE_STRING
BaseName;
00701 UNICODE_STRING
SymbolicLinkName;
00702
00703
00704
00705
00706 ULONG
CheckForHangSeconds;
00707 USHORT CFHangTicks;
00708 USHORT CFHangCurrentTick;
00709
00710
00711
00712
00713 NDIS_STATUS ResetStatus;
00714 NDIS_HANDLE ResetOpen;
00715
00716
00717
00718
00719
#ifdef __cplusplus
00720
FILTERDBS FilterDbs;
00721
#else
00722 FILTERDBS;
00723
#endif
00724
00725 FILTER_PACKET_INDICATION_HANDLER PacketIndicateHandler;
00726 NDIS_M_SEND_COMPLETE_HANDLER SendCompleteHandler;
00727 NDIS_M_SEND_RESOURCES_HANDLER SendResourcesHandler;
00728 NDIS_M_RESET_COMPLETE_HANDLER ResetCompleteHandler;
00729
00730 NDIS_MEDIUM
MediaType;
00731
00732
00733
00734
00735 ULONG
BusNumber;
00736 NDIS_INTERFACE_TYPE BusType;
00737 NDIS_INTERFACE_TYPE AdapterType;
00738
00739 PDEVICE_OBJECT DeviceObject;
00740 PDEVICE_OBJECT PhysicalDeviceObject;
00741 PDEVICE_OBJECT NextDeviceObject;
00742
00743
00744
00745
00746 PMAP_REGISTER_ENTRY MapRegisters;
00747
00748
00749
00750
00751 PNDIS_AF_LIST CallMgrAfList;
00752
00753 PVOID
MiniportThread;
00754 PVOID
SetInfoBuf;
00755 USHORT SetInfoBufLen;
00756 USHORT MaxSendPackets;
00757
00758
00759
00760
00761 NDIS_STATUS FakeStatus;
00762
00763 PVOID
LockHandler;
00764
00765
00766
00767
00768
00769 PUNICODE_STRING
pAdapterInstanceName;
00770
00771 PADAPTER_OBJECT SystemAdapterObject;
00772
00773 UINT MacOptions;
00774
00775
00776
00777
00778 PNDIS_REQUEST PendingRequest;
00779 UINT MaximumLongAddresses;
00780 UINT MaximumShortAddresses;
00781 UINT CurrentLookahead;
00782 UINT MaximumLookahead;
00783
00784
00785
00786
00787 W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler;
00788 W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler;
00789 W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler;
00790 W_SEND_PACKETS_HANDLER SendPacketsHandler;
00791 NDIS_M_START_SENDS DeferredSendHandler;
00792
00793
00794
00795
00796 ETH_RCV_INDICATE_HANDLER EthRxIndicateHandler;
00797 TR_RCV_INDICATE_HANDLER TrRxIndicateHandler;
00798 FDDI_RCV_INDICATE_HANDLER FddiRxIndicateHandler;
00799
00800 ETH_RCV_COMPLETE_HANDLER EthRxCompleteHandler;
00801 TR_RCV_COMPLETE_HANDLER TrRxCompleteHandler;
00802 FDDI_RCV_COMPLETE_HANDLER FddiRxCompleteHandler;
00803
00804 NDIS_M_STATUS_HANDLER StatusHandler;
00805 NDIS_M_STS_COMPLETE_HANDLER StatusCompleteHandler;
00806 NDIS_M_TD_COMPLETE_HANDLER TDCompleteHandler;
00807 NDIS_M_REQ_COMPLETE_HANDLER QueryCompleteHandler;
00808 NDIS_M_REQ_COMPLETE_HANDLER SetCompleteHandler;
00809
00810 NDIS_WM_SEND_COMPLETE_HANDLER WanSendCompleteHandler;
00811 WAN_RCV_HANDLER WanRcvHandler;
00812 WAN_RCV_COMPLETE_HANDLER WanRcvCompleteHandler;
00813
00814
00815
00816
00817
00818
00819
00820
#if defined(NDIS_WRAPPER)
00821
00822
00823
00824
00825 SINGLE_LIST_ENTRY WorkQueue[
NUMBER_OF_WORK_ITEM_TYPES];
00826 SINGLE_LIST_ENTRY SingleWorkItems[
NUMBER_OF_SINGLE_WORK_ITEMS];
00827
00828
PNDIS_MAC_BLOCK FakeMac;
00829
00830 UCHAR SendFlags;
00831 UCHAR TrResetRing;
00832 UCHAR ArcnetAddress;
00833
00834
union
00835
{
00836 PNDIS_ARC_BUF ArcBuf;
00837
00838
00839
00840
#if NDIS_NT
00841
PVOID BusInterface;
00842
#else
00843
PVOID PhysicalAddressArray;
00844
#endif
00845
};
00846
00847
00848
00849
00850 ULONG ChannelNumber;
00851
00852 PNDIS_LOG Log;
00853
00854
00855
00856
00857 ULONG BusId;
00858 ULONG SlotNumber;
00859
00860 PCM_RESOURCE_LIST AllocatedResources;
00861 PCM_RESOURCE_LIST AllocatedResourcesTranslated;
00862
00863
00864
00865
00866
00867 SINGLE_LIST_ENTRY PatternList;
00868
00869
00870
00871
00872 NDIS_PNP_CAPABILITIES PMCapabilities;
00873
00874
00875
00876
00877
DEVICE_CAPABILITIES DeviceCaps;
00878
00879
00880
00881
00882 ULONG WakeUpEnable;
00883
00884
00885
00886
00887 DEVICE_POWER_STATE CurrentDeviceState;
00888
00889
00890
00891
00892
00893
00894
PIRP pIrpWaitWake;
00895
00896 SYSTEM_POWER_STATE WaitWakeSystemState;
00897
00898
00899
00900
00901
00902
00903
00904 LARGE_INTEGER VcIndex;
00905 KSPIN_LOCK VcCountLock;
00906 LIST_ENTRY WmiEnabledVcs;
00907 PNDIS_GUID pNdisGuidMap;
00908
00909
00910 PNDIS_GUID pCustomGuidMap;
00911
00912
00913
USHORT VcCount;
00914
00915
USHORT cNdisGuidMap;
00916
USHORT cCustomGuidMap;
00917
00918
00919
00920
00921
USHORT CurrentMapRegister;
00922
PKEVENT AllocationEvent;
00923
00924
USHORT PhysicalMapRegistersNeeded;
00925
USHORT SGMapRegistersNeeded;
00926 ULONG MaximumPhysicalMapping;
00927
00928
00929
00930
00931
NDIS_TIMER MediaDisconnectTimer;
00932
00933
00934
00935
00936
00937
USHORT MediaDisconnectTimeOut;
00938
00939
00940
00941
00942
USHORT InstanceNumber;
00943
00944
00945
00946
00947
NDIS_EVENT OpenReadyEvent;
00948
00949
00950
00951
00952 NDIS_PNP_DEVICE_STATE PnPDeviceState;
00953
00954
00955
00956
00957 NDIS_PNP_DEVICE_STATE OldPnPDeviceState;
00958
00959
00960
00961
00962
PGET_SET_DEVICE_DATA SetBusData;
00963
PGET_SET_DEVICE_DATA GetBusData;
00964
00965 POID_LIST OidList;
00966
00967
KDPC DeferredDpc;
00968
00969
00970
00971
00972 NDIS_STATS NdisStats;
00973
00974
00975
00976
00977
PNDIS_PACKET IndicatedPacket[
MAXIMUM_PROCESSORS];
00978
00979
00980
00981
00982
00983
PKEVENT RemoveReadyEvent;
00984
00985
00986
00987
00988
PKEVENT AllOpensClosedEvent;
00989
00990
00991
00992
00993
PKEVENT AllRequestsCompletedEvent;
00994
00995
00996
00997
00998 ULONG InitTimeMs;
00999
01000
NDIS_MINIPORT_WORK_ITEM WorkItemBuffer[
NUMBER_OF_SINGLE_WORK_ITEMS];
01001
PNDIS_MINIPORT_TIMER TimerQueue;
01002
01003
01004
01005
01006 ULONG DriverVerifyFlags;
01007
01008
01009
01010
01011
PNDIS_MINIPORT_BLOCK NextGlobalMiniport;
01012
01013
01014
01015
01016
01017
USHORT InternalResetCount;
01018
USHORT MiniportResetCount;
01019
01020
USHORT MediaSenseConnectCount;
01021
USHORT MediaSenseDisconnectCount;
01022
01023
PNDIS_PACKET * xPackets;
01024
01025
01026
01027
01028 ULONG UserModeOpenReferences;
01029
01030
#if LOCK_DBG
01031
ULONG LockDbg;
01032 ULONG LockDbgX;
01033 PVOID LockThread;
01034
#endif
01035
01036
#if !(NDIS_NT)
01037
PNDIS_PACKET LoopbackHead;
01038
PNDIS_PACKET LoopbackTail;
01039
#endif
01040
01041
#endif // NDIS_WRAPPER defined
01042
};
01043
01044
01045
01046
01047
typedef
01048
VOID
01049 (*W_MINIPORT_CALLBACK)(
01050 IN
NDIS_HANDLE MiniportAdapterContext,
01051 IN PVOID CallbackContext
01052 );
01053
01054
01055
01056
01057
EXPORT
01058
NDIS_STATUS
01059
NdisIMQueueMiniportCallback(
01060 IN NDIS_HANDLE MiniportAdapterHandle,
01061 IN
W_MINIPORT_CALLBACK CallbackRoutine,
01062 IN PVOID CallbackContext
01063 );
01064
01065
EXPORT
01066 BOOLEAN
01067
NdisIMSwitchToMiniport(
01068 IN NDIS_HANDLE MiniportAdapterHandle,
01069 OUT PNDIS_HANDLE SwitchHandle
01070 );
01071
01072
EXPORT
01073
VOID
01074
NdisIMRevertBack(
01075 IN NDIS_HANDLE MiniportAdapterHandle,
01076 IN NDIS_HANDLE SwitchHandle
01077 );
01078
01079
EXPORT
01080
NDIS_STATUS
01081
NdisIMRegisterLayeredMiniport(
01082 IN NDIS_HANDLE NdisWrapperHandle,
01083 IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics,
01084 IN UINT CharacteristicsLength,
01085 OUT PNDIS_HANDLE DriverHandle
01086 );
01087
01088
EXPORT
01089
VOID
01090
NdisIMDeregisterLayeredMiniport(
01091 IN NDIS_HANDLE DriverHandle
01092 );
01093
01094
EXPORT
01095
VOID
01096
NdisIMAssociateMiniport(
01097 IN NDIS_HANDLE DriverHandle,
01098 IN NDIS_HANDLE ProtocolHandle
01099 );
01100
01101
EXPORT
01102
NDIS_STATUS
01103
NdisMRegisterDevice(
01104 IN NDIS_HANDLE NdisWrapperHandle,
01105 IN PNDIS_STRING DeviceName,
01106 IN PNDIS_STRING SymbolicName,
01107 IN PDRIVER_DISPATCH MajorFunctions[],
01108 OUT
PDEVICE_OBJECT * pDeviceObject,
01109 OUT NDIS_HANDLE * NdisDeviceHandle
01110 );
01111
01112
EXPORT
01113
NDIS_STATUS
01114
NdisMDeregisterDevice(
01115 IN NDIS_HANDLE NdisDeviceHandle
01116 );
01117
01118
EXPORT
01119
VOID
01120
NdisMRegisterUnloadHandler(
01121 IN NDIS_HANDLE NdisWrapperHandle,
01122 IN PDRIVER_UNLOAD UnloadHandler
01123 );
01124
01125
01126
01127
01128 typedef UCHAR
NDIS_DMA_SIZE;
01129
01130 #define NDIS_DMA_24BITS ((NDIS_DMA_SIZE)0)
01131 #define NDIS_DMA_32BITS ((NDIS_DMA_SIZE)1)
01132 #define NDIS_DMA_64BITS ((NDIS_DMA_SIZE)2)
01133
01134
EXPORT
01135
NDIS_STATUS
01136
NdisMAllocateMapRegisters(
01137 IN NDIS_HANDLE MiniportAdapterHandle,
01138 IN UINT DmaChannel,
01139 IN NDIS_DMA_SIZE DmaSize,
01140 IN ULONG PhysicalMapRegistersNeeded,
01141 IN ULONG MaximumPhysicalMapping
01142 );
01143
01144
EXPORT
01145
VOID
01146
NdisMFreeMapRegisters(
01147 IN NDIS_HANDLE MiniportAdapterHandle
01148 );
01149
01150
EXPORT
01151
NDIS_STATUS
01152
NdisMInitializeScatterGatherDma(
01153 IN NDIS_HANDLE MiniportAdapterHandle,
01154 IN BOOLEAN Dma64BitAddresses,
01155 IN ULONG MaximumPhysicalMapping
01156 );
01157
01158
EXPORT
01159
NDIS_STATUS
01160
NdisMRegisterIoPortRange(
01161 OUT PVOID * PortOffset,
01162 IN NDIS_HANDLE MiniportAdapterHandle,
01163 IN UINT InitialPort,
01164 IN UINT NumberOfPorts
01165 );
01166
01167
EXPORT
01168
VOID
01169
NdisMDeregisterIoPortRange(
01170 IN NDIS_HANDLE MiniportAdapterHandle,
01171 IN UINT InitialPort,
01172 IN UINT NumberOfPorts,
01173 IN PVOID PortOffset
01174 );
01175
01176
EXPORT
01177
NDIS_STATUS
01178
NdisMMapIoSpace(
01179 OUT PVOID * VirtualAddress,
01180 IN NDIS_HANDLE MiniportAdapterHandle,
01181 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
01182 IN UINT Length
01183 );
01184
01185
EXPORT
01186
VOID
01187
NdisMUnmapIoSpace(
01188 IN NDIS_HANDLE MiniportAdapterHandle,
01189 IN PVOID VirtualAddress,
01190 IN UINT Length
01191 );
01192
01193
EXPORT
01194
NDIS_STATUS
01195
NdisMRegisterInterrupt(
01196 OUT PNDIS_MINIPORT_INTERRUPT Interrupt,
01197 IN NDIS_HANDLE MiniportAdapterHandle,
01198 IN UINT InterruptVector,
01199 IN UINT InterruptLevel,
01200 IN BOOLEAN RequestIsr,
01201 IN BOOLEAN SharedInterrupt,
01202 IN NDIS_INTERRUPT_MODE InterruptMode
01203 );
01204
01205
EXPORT
01206
VOID
01207
NdisMDeregisterInterrupt(
01208 IN PNDIS_MINIPORT_INTERRUPT Interrupt
01209 );
01210
01211
EXPORT
01212 BOOLEAN
01213
NdisMSynchronizeWithInterrupt(
01214 IN PNDIS_MINIPORT_INTERRUPT Interrupt,
01215 IN PVOID SynchronizeFunction,
01216 IN PVOID SynchronizeContext
01217 );
01218
01219
01220
EXPORT
01221
VOID
01222
NdisMQueryAdapterResources(
01223 OUT PNDIS_STATUS Status,
01224 IN NDIS_HANDLE WrapperConfigurationContext,
01225 OUT PNDIS_RESOURCE_LIST ResourceList,
01226 IN OUT PUINT BufferSize
01227 );
01228
01229
01230
01231
01232
01233
01234
01235
01236
01237 #define NdisMSetTimer(_Timer, _Delay) NdisSetTimer((PNDIS_TIMER)_Timer, _Delay)
01238
01239
VOID
01240
NdisMSetPeriodicTimer(
01241 IN PNDIS_MINIPORT_TIMER Timer,
01242 IN UINT MillisecondPeriod
01243 );
01244
01245
EXPORT
01246
VOID
01247
NdisMInitializeTimer(
01248 IN OUT PNDIS_MINIPORT_TIMER Timer,
01249 IN NDIS_HANDLE MiniportAdapterHandle,
01250 IN PNDIS_TIMER_FUNCTION TimerFunction,
01251 IN PVOID FunctionContext
01252 );
01253
01254
EXPORT
01255
VOID
01256
NdisMCancelTimer(
01257 IN PNDIS_MINIPORT_TIMER Timer,
01258 OUT PBOOLEAN TimerCancelled
01259 );
01260
01261
EXPORT
01262
VOID
01263
NdisMSleep(
01264 IN ULONG MicrosecondsToSleep
01265 );
01266
01267
01268
01269
01270
EXPORT
01271
VOID
01272
NdisMStartBufferPhysicalMapping(
01273 IN NDIS_HANDLE MiniportAdapterHandle,
01274 IN
PNDIS_BUFFER Buffer,
01275 IN ULONG PhysicalMapRegister,
01276 IN BOOLEAN WriteToDevice,
01277 OUT
PNDIS_PHYSICAL_ADDRESS_UNIT PhysicalAddressArray,
01278 OUT PUINT ArraySize
01279 );
01280
01281
EXPORT
01282
VOID
01283
NdisMCompleteBufferPhysicalMapping(
01284 IN NDIS_HANDLE MiniportAdapterHandle,
01285 IN
PNDIS_BUFFER Buffer,
01286 IN ULONG PhysicalMapRegister
01287 );
01288
01289
01290
01291
01292
01293
EXPORT
01294
VOID
01295
NdisMAllocateSharedMemory(
01296 IN NDIS_HANDLE MiniportAdapterHandle,
01297 IN ULONG Length,
01298 IN BOOLEAN Cached,
01299 OUT PVOID * VirtualAddress,
01300 OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress
01301 );
01302
01303
EXPORT
01304
NDIS_STATUS
01305
NdisMAllocateSharedMemoryAsync(
01306 IN NDIS_HANDLE MiniportAdapterHandle,
01307 IN ULONG Length,
01308 IN BOOLEAN Cached,
01309 IN PVOID Context
01310 );
01311
01312
01313
01314
01315
01316
01317
01318
01319
01320
01321 #define NdisMUpdateSharedMemory(_H, _L, _V, _P) NdisUpdateSharedMemory(_H, _L, _V, _P)
01322
01323
01324
EXPORT
01325
VOID
01326
NdisMFreeSharedMemory(
01327 IN NDIS_HANDLE MiniportAdapterHandle,
01328 IN ULONG Length,
01329 IN BOOLEAN Cached,
01330 IN PVOID VirtualAddress,
01331 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
01332 );
01333
01334
01335
01336
01337
01338
EXPORT
01339
NDIS_STATUS
01340
NdisMRegisterDmaChannel(
01341 OUT PNDIS_HANDLE MiniportDmaHandle,
01342 IN NDIS_HANDLE MiniportAdapterHandle,
01343 IN UINT DmaChannel,
01344 IN BOOLEAN Dma32BitAddresses,
01345 IN
PNDIS_DMA_DESCRIPTION DmaDescription,
01346 IN ULONG MaximumLength
01347 );
01348
01349
01350
EXPORT
01351
VOID
01352
NdisMDeregisterDmaChannel(
01353 IN NDIS_HANDLE MiniportDmaHandle
01354 );
01355
01356
01357
01358
01359
01360
01361
01362
01363
01364
01365
01366
01367 #define NdisMSetupDmaTransfer(_S, _H, _B, _O, _L, _M_) \
01368
NdisSetupDmaTransfer(_S, _H, _B, _O, _L, _M_)
01369
01370
01371
01372
01373
01374
01375
01376
01377
01378
01379
01380
01381 #define NdisMCompleteDmaTransfer(_S, _H, _B, _O, _L, _M_) \
01382
NdisCompleteDmaTransfer(_S, _H, _B, _O, _L, _M_)
01383
01384
EXPORT
01385 ULONG
01386
NdisMReadDmaCounter(
01387 IN NDIS_HANDLE MiniportDmaHandle
01388 );
01389
01390
01391
01392
01393
01394 #define NdisMInitializeWrapper(_a,_b,_c,_d) NdisInitializeWrapper((_a),(_b),(_c),(_d))
01395
01396
EXPORT
01397
NDIS_STATUS
01398
NdisMRegisterMiniport(
01399 IN NDIS_HANDLE NdisWrapperHandle,
01400 IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics,
01401 IN UINT CharacteristicsLength
01402 );
01403
01404
01405
01406
01407
01408
01409
01410 #define NdisIMInitializeDeviceInstance(_H_, _I_) \
01411
NdisIMInitializeDeviceInstanceEx(_H_, _I_, NULL)
01412
01413
EXPORT
01414
NDIS_STATUS
01415
NdisIMInitializeDeviceInstanceEx(
01416 IN NDIS_HANDLE DriverHandle,
01417 IN PNDIS_STRING DriverInstance,
01418 IN NDIS_HANDLE DeviceContext OPTIONAL
01419 );
01420
01421
EXPORT
01422
NDIS_STATUS
01423
NdisIMCancelInitializeDeviceInstance(
01424 IN NDIS_HANDLE DriverHandle,
01425 IN PNDIS_STRING DeviceInstance
01426 );
01427
01428
EXPORT
01429
NDIS_HANDLE
01430
NdisIMGetDeviceContext(
01431 IN NDIS_HANDLE MiniportAdapterHandle
01432 );
01433
01434
EXPORT
01435
NDIS_HANDLE
01436
NdisIMGetBindingContext(
01437 IN NDIS_HANDLE NdisBindingHandle
01438 );
01439
01440
EXPORT
01441
NDIS_STATUS
01442
NdisIMDeInitializeDeviceInstance(
01443 IN NDIS_HANDLE NdisMiniportHandle
01444 );
01445
01446
EXPORT
01447
VOID
01448
NdisIMCopySendPerPacketInfo(
01449 IN
PNDIS_PACKET DstPacket,
01450 IN
PNDIS_PACKET SrcPacket
01451 );
01452
01453
EXPORT
01454
VOID
01455
NdisIMCopySendCompletePerPacketInfo(
01456 IN
PNDIS_PACKET DstPacket,
01457
PNDIS_PACKET SrcPacket
01458 );
01459
01460
01461
01462
01463
01464
01465
01466
01467
01468 #define NdisMSetAttributes(_H_, _C_, _M_, _T_) \
01469
NdisMSetAttributesEx(_H_, \
01470
_C_, \
01471
0, \
01472
(_M_) ? NDIS_ATTRIBUTE_BUS_MASTER : 0, \
01473
_T_) \
01474
01475
01476
EXPORT
01477
VOID
01478
NdisMSetAttributesEx(
01479 IN NDIS_HANDLE MiniportAdapterHandle,
01480 IN NDIS_HANDLE MiniportAdapterContext,
01481 IN UINT CheckForHangTimeInSeconds OPTIONAL,
01482 IN ULONG AttributeFlags,
01483 IN NDIS_INTERFACE_TYPE AdapterType OPTIONAL
01484 );
01485
01486 #define NDIS_ATTRIBUTE_IGNORE_PACKET_TIMEOUT 0x00000001
01487 #define NDIS_ATTRIBUTE_IGNORE_REQUEST_TIMEOUT 0x00000002
01488 #define NDIS_ATTRIBUTE_IGNORE_TOKEN_RING_ERRORS 0x00000004
01489 #define NDIS_ATTRIBUTE_BUS_MASTER 0x00000008
01490 #define NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER 0x00000010
01491 #define NDIS_ATTRIBUTE_DESERIALIZE 0x00000020
01492 #define NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND 0x00000040
01493
01494
EXPORT
01495
NDIS_STATUS
01496
NdisMSetMiniportSecondary(
01497 IN NDIS_HANDLE MiniportHandle,
01498 IN NDIS_HANDLE PrimaryMiniportHandle
01499 );
01500
01501
EXPORT
01502
NDIS_STATUS
01503
NdisMPromoteMiniport(
01504 IN NDIS_HANDLE MiniportHandle
01505 );
01506
01507
EXPORT
01508
NDIS_STATUS
01509
NdisMRemoveMiniport(
01510 IN NDIS_HANDLE MiniportHandle
01511 );
01512
01513 #define NdisMSendComplete(_M, _P, _S) (*((PNDIS_MINIPORT_BLOCK)(_M))->SendCompleteHandler)(_M, _P, _S)
01514
01515 #define NdisMSendResourcesAvailable(_M) (*((PNDIS_MINIPORT_BLOCK)(_M))->SendResourcesHandler)(_M)
01516
01517 #define NdisMResetComplete(_M, _S, _A) (*((PNDIS_MINIPORT_BLOCK)(_M))->ResetCompleteHandler)(_M, _S, _A)
01518
01519 #define NdisMTransferDataComplete(_M, _P, _S, _B) \
01520
(*((PNDIS_MINIPORT_BLOCK)(_M))->TDCompleteHandler)(_M, _P, _S, _B)
01521
01522
01523
01524
01525
01526
01527
01528
01529
01530
01531
01532
01533 #define NdisMWanSendComplete(_M_, _P_, _S_) \
01534
(*((PNDIS_MINIPORT_BLOCK)(_M_))->WanSendCompleteHandler)(_M_, _P_, _S_)
01535
01536 #define NdisMQueryInformationComplete(_M, _S) \
01537
(*((PNDIS_MINIPORT_BLOCK)(_M))->QueryCompleteHandler)(_M, _S)
01538
01539 #define NdisMSetInformationComplete(_M, _S) \
01540
(*((PNDIS_MINIPORT_BLOCK)(_M))->SetCompleteHandler)(_M, _S)
01541
01542
01543
01544
01545
01546
01547
01548
01549
01550
01551
01552 #define NdisMIndicateReceivePacket(_H, _P, _N) \
01553
{ \
01554
(*((PNDIS_MINIPORT_BLOCK)(_H))->PacketIndicateHandler)( \
01555
_H, \
01556
_P, \
01557
_N); \
01558
}
01559
01560
01561
01562
01563
01564
01565
01566
01567
01568
01569
01570
01571
01572
01573 #define NdisMWanIndicateReceive(_S_, _M_, _C_, _P_, _Z_) \
01574
(*((PNDIS_MINIPORT_BLOCK)(_M_))->WanRcvHandler)(_S_, _M_, _C_, _P_, _Z_)
01575
01576
01577
01578
01579
01580
01581
01582
01583
01584
01585
01586 #define NdisMWanIndicateReceiveComplete(_M_, _C_) \
01587
(*((PNDIS_MINIPORT_BLOCK)(_M_))->WanRcvCompleteHandler)(_M_, _C_)
01588
01589
01590
01591
01592
01593
01594
01595
01596
01597
01598
01599
01600
01601
01602
01603 #define NdisMEthIndicateReceive( _H, _C, _B, _SZ, _L, _LSZ, _PSZ) \
01604
{ \
01605
(*((PNDIS_MINIPORT_BLOCK)(_H))->EthRxIndicateHandler)( \
01606
((PNDIS_MINIPORT_BLOCK)(_H))->EthDB, \
01607
_C, \
01608
_B, \
01609
_B, \
01610
_SZ, \
01611
_L, \
01612
_LSZ, \
01613
_PSZ \
01614
); \
01615
}
01616
01617
01618
01619
01620
01621
01622
01623
01624
01625
01626
01627
01628
01629
01630
01631 #define NdisMTrIndicateReceive( _H, _C, _B, _SZ, _L, _LSZ, _PSZ) \
01632
{ \
01633
(*((PNDIS_MINIPORT_BLOCK)(_H))->TrRxIndicateHandler)( \
01634
((PNDIS_MINIPORT_BLOCK)(_H))->TrDB, \
01635
_C, \
01636
_B, \
01637
_SZ, \
01638
_L, \
01639
_LSZ, \
01640
_PSZ \
01641
); \
01642
}
01643
01644
01645
01646
01647
01648
01649
01650
01651
01652
01653
01654
01655
01656
01657
01658
01659 #define NdisMFddiIndicateReceive( _H, _C, _B, _SZ, _L, _LSZ, _PSZ) \
01660
{ \
01661
(*((PNDIS_MINIPORT_BLOCK)(_H))->FddiRxIndicateHandler)( \
01662
((PNDIS_MINIPORT_BLOCK)(_H))->FddiDB, \
01663
_C, \
01664
(PUCHAR)_B + 1, \
01665
((((PUCHAR)_B)[0] & 0x40) ? FDDI_LENGTH_OF_LONG_ADDRESS \
01666
: FDDI_LENGTH_OF_SHORT_ADDRESS), \
01667
_B, \
01668
_SZ, \
01669
_L, \
01670
_LSZ, \
01671
_PSZ \
01672
); \
01673
}
01674
01675
01676
01677
01678
01679
01680
01681
01682
01683
01684
01685
01686 #define NdisMArcIndicateReceive( _H, _HD, _D, _SZ) \
01687
{ \
01688
ArcFilterDprIndicateReceive(((PNDIS_MINIPORT_BLOCK)(_H))->ArcDB, \
01689
_HD, \
01690
_D, \
01691
_SZ \
01692
); \
01693
}
01694
01695
01696
01697
01698
01699
01700
01701
01702
01703
01704
01705 #define NdisMEthIndicateReceiveComplete( _H ) \
01706
{ \
01707
(*((PNDIS_MINIPORT_BLOCK)(_H))->EthRxCompleteHandler)( \
01708
((PNDIS_MINIPORT_BLOCK)_H)->EthDB); \
01709
}
01710
01711
01712
01713
01714
01715
01716
01717
01718
01719
01720 #define NdisMTrIndicateReceiveComplete( _H ) \
01721
{ \
01722
(*((PNDIS_MINIPORT_BLOCK)(_H))->TrRxCompleteHandler)( \
01723
((PNDIS_MINIPORT_BLOCK)_H)->TrDB); \
01724
}
01725
01726
01727
01728
01729
01730
01731
01732
01733
01734
01735 #define NdisMFddiIndicateReceiveComplete( _H ) \
01736
{ \
01737
(*((PNDIS_MINIPORT_BLOCK)(_H))->FddiRxCompleteHandler)( \
01738
((PNDIS_MINIPORT_BLOCK)_H)->FddiDB); \
01739
}
01740
01741
01742
01743
01744
01745
01746
01747
01748
01749
01750 #define NdisMArcIndicateReceiveComplete( _H ) \
01751
{ \
01752
if (((PNDIS_MINIPORT_BLOCK)_H)->EthDB) \
01753
{ \
01754
NdisMEthIndicateReceiveComplete(_H); \
01755
} \
01756
\
01757
ArcFilterDprIndicateReceiveComplete(((PNDIS_MINIPORT_BLOCK)_H)->ArcDB); \
01758
}
01759
01760
01761
01762
01763
01764
01765
01766
01767
01768
01769
01770
01771
01772 #define NdisMIndicateStatus(_M, _G, _SB, _BS) (*((PNDIS_MINIPORT_BLOCK)(_M))->StatusHandler)(_M, _G, _SB, _BS)
01773
01774
01775
01776
01777
01778
01779
01780
01781
01782
01783
01784 #define NdisMIndicateStatusComplete(_M) (*((PNDIS_MINIPORT_BLOCK)(_M))->StatusCompleteHandler)(_M)
01785
01786
EXPORT
01787
VOID
01788
NdisMRegisterAdapterShutdownHandler(
01789 IN NDIS_HANDLE MiniportHandle,
01790 IN PVOID ShutdownContext,
01791 IN ADAPTER_SHUTDOWN_HANDLER ShutdownHandler
01792 );
01793
01794
EXPORT
01795
VOID
01796
NdisMDeregisterAdapterShutdownHandler(
01797 IN NDIS_HANDLE MiniportHandle
01798 );
01799
01800
EXPORT
01801
NDIS_STATUS
01802
NdisMPciAssignResources(
01803 IN NDIS_HANDLE MiniportHandle,
01804 IN ULONG SlotNumber,
01805 IN PNDIS_RESOURCE_LIST * AssignedResources
01806 );
01807
01808
01809
01810
01811
01812
EXPORT
01813
NDIS_STATUS
01814
NdisMCreateLog(
01815 IN NDIS_HANDLE MiniportAdapterHandle,
01816 IN UINT Size,
01817 OUT PNDIS_HANDLE LogHandle
01818 );
01819
01820
EXPORT
01821
VOID
01822
NdisMCloseLog(
01823 IN NDIS_HANDLE LogHandle
01824 );
01825
01826
EXPORT
01827
NDIS_STATUS
01828
NdisMWriteLogData(
01829 IN NDIS_HANDLE LogHandle,
01830 IN PVOID LogBuffer,
01831 IN UINT LogBufferSize
01832 );
01833
01834
EXPORT
01835
VOID
01836
NdisMFlushLog(
01837 IN NDIS_HANDLE LogHandle
01838 );
01839
01840
EXPORT
01841
VOID
01842
NdisMGetDeviceProperty(
01843 IN NDIS_HANDLE MiniportAdapterHandle,
01844 IN OUT
PDEVICE_OBJECT * PhysicalDeviceObject OPTIONAL,
01845 IN OUT
PDEVICE_OBJECT * FunctionalDeviceObject OPTIONAL,
01846 IN OUT
PDEVICE_OBJECT * NextDeviceObject OPTIONAL,
01847 IN OUT PCM_RESOURCE_LIST * AllocatedResources OPTIONAL,
01848 IN OUT PCM_RESOURCE_LIST * AllocatedResourcesTranslated OPTIONAL
01849 );
01850
01851
01852
01853
01854
EXPORT
01855
NDIS_STATUS
01856
NdisMQueryAdapterInstanceName(
01857 OUT PNDIS_STRING pAdapterInstanceName,
01858 IN NDIS_HANDLE MiniportHandle
01859 );
01860
01861
01862
01863
01864
01865
EXPORT
01866
VOID
01867
NdisMCoIndicateReceivePacket(
01868 IN NDIS_HANDLE NdisVcHandle,
01869 IN
PPNDIS_PACKET PacketArray,
01870 IN UINT NumberOfPackets
01871 );
01872
01873
EXPORT
01874
VOID
01875
NdisMCoIndicateStatus(
01876 IN NDIS_HANDLE MiniportAdapterHandle,
01877 IN NDIS_HANDLE NdisVcHandle OPTIONAL,
01878 IN NDIS_STATUS GeneralStatus,
01879 IN PVOID StatusBuffer OPTIONAL,
01880 IN ULONG StatusBufferSize
01881 );
01882
01883
EXPORT
01884
VOID
01885
NdisMCoReceiveComplete(
01886 IN NDIS_HANDLE MiniportAdapterHandle
01887 );
01888
01889
EXPORT
01890
VOID
01891
NdisMCoSendComplete(
01892 IN NDIS_STATUS Status,
01893 IN NDIS_HANDLE NdisVcHandle,
01894 IN
PNDIS_PACKET Packet
01895 );
01896
01897
EXPORT
01898
VOID
01899
NdisMCoActivateVcComplete(
01900 IN NDIS_STATUS Status,
01901 IN NDIS_HANDLE NdisVcHandle,
01902 IN PCO_CALL_PARAMETERS CallParameters
01903 );
01904
01905
EXPORT
01906
VOID
01907
NdisMCoDeactivateVcComplete(
01908 IN NDIS_STATUS Status,
01909 IN NDIS_HANDLE NdisVcHandle
01910 );
01911
01912
EXPORT
01913
VOID
01914
NdisMCoRequestComplete(
01915 IN NDIS_STATUS Status,
01916 IN NDIS_HANDLE MiniportAdapterHandle,
01917 IN
PNDIS_REQUEST Request
01918 );
01919
01920
EXPORT
01921
NDIS_STATUS
01922
NdisMCmRegisterAddressFamily(
01923 IN NDIS_HANDLE MiniportAdapterHandle,
01924 IN PCO_ADDRESS_FAMILY AddressFamily,
01925 IN
PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics,
01926 IN UINT SizeOfCmCharacteristics
01927 );
01928
01929
EXPORT
01930
NDIS_STATUS
01931
NdisMCmCreateVc(
01932 IN NDIS_HANDLE MiniportAdapterHandle,
01933 IN NDIS_HANDLE NdisAfHandle,
01934 IN NDIS_HANDLE MiniportVcContext,
01935 OUT PNDIS_HANDLE NdisVcHandle
01936 );
01937
01938
EXPORT
01939
NDIS_STATUS
01940
NdisMCmDeleteVc(
01941 IN NDIS_HANDLE NdisVcHandle
01942 );
01943
01944
01945
EXPORT
01946
NDIS_STATUS
01947
NdisMCmActivateVc(
01948 IN NDIS_HANDLE NdisVcHandle,
01949 IN PCO_CALL_PARAMETERS CallParameters
01950 );
01951
01952
EXPORT
01953
NDIS_STATUS
01954
NdisMCmDeactivateVc(
01955 IN NDIS_HANDLE NdisVcHandle
01956 );
01957
01958
01959
EXPORT
01960
NDIS_STATUS
01961
NdisMCmRequest(
01962 IN NDIS_HANDLE NdisAfHandle,
01963 IN NDIS_HANDLE NdisVcHandle OPTIONAL,
01964 IN NDIS_HANDLE NdisPartyHandle OPTIONAL,
01965 IN OUT
PNDIS_REQUEST NdisRequest
01966 );
01967
01968
01969
01970
01971
01972
01973
01974
01975
01976
01977 #define NdisMCmRequestComplete(_S_, _AH_, _VH_, _PH_, _R_) \
01978
NdisCoRequestComplete(_S_, _AH_, _VH_, _PH_, _R_)
01979
01980
01981
01982
01983
01984
01985
01986
01987
01988 #define NdisMCmOpenAddressFamilyComplete(_S_, _H_, _C_) \
01989
NdisCmOpenAddressFamilyComplete(_S_, _H_, _C_)
01990
01991
01992
01993
01994
01995
01996
01997
01998
01999 #define NdisMCmCloseAddressFamilyComplete(_S_, _H_) \
02000
NdisCmCloseAddressFamilyComplete(_S_, _H_)
02001
02002
02003
02004
02005
02006
02007
02008
02009
02010
02011
02012 #define NdisMCmRegisterSapComplete(_S_, _H_, _C_) \
02013
NdisCmRegisterSapComplete(_S_, _H_, _C_)
02014
02015
02016
02017
02018
02019
02020
02021
02022
02023 #define NdisMCmDeregisterSapComplete(_S_, _H_) \
02024
NdisCmDeregisterSapComplete(_S_, _H_)
02025
02026
02027
02028
02029
02030
02031
02032
02033
02034
02035
02036
02037 #define NdisMCmMakeCallComplete(_S_, _VH_, _PH_, _CC_, _CP_) \
02038
NdisCmMakeCallComplete(_S_, _VH_, _PH_, _CC_, _CP_)
02039
02040
02041
02042
02043
02044
02045
02046
02047
02048
02049 #define NdisMCmCloseCallComplete(_S_, _VH_, _PH_) \
02050
NdisCmCloseCallComplete(_S_, _VH_, _PH_)
02051
02052
02053
02054
02055
02056
02057
02058
02059
02060
02061
02062 #define NdisMCmAddPartyComplete(_S_, _H_, _C_, _P_) \
02063
NdisCmAddPartyComplete(_S_, _H_, _C_, _P_)
02064
02065
02066
02067
02068
02069
02070
02071
02072
02073 #define NdisMCmDropPartyComplete(_S_, _H_) \
02074
NdisCmDropPartyComplete(_S_, _H_)
02075
02076
02077
02078
02079
02080
02081
02082
02083
02084
02085 #define NdisMCmDispatchIncomingCall(_SH_, _VH_, _CP_) \
02086
NdisCmDispatchIncomingCall(_SH_, _VH_, _CP_)
02087
02088
02089
02090
02091
02092
02093
02094
02095 #define NdisMCmDispatchCallConnected(_H_) \
02096
NdisCmDispatchCallConnected(_H_)
02097
02098
02099
02100
02101
02102
02103
02104
02105
02106 #define NdisMCmModifyCallQoSComplete(_S_, _H_, _P_) \
02107
NdisCmModifyCallQoSComplete(_S_, _H_, _P_)
02108
02109
02110
02111
02112
02113
02114
02115
02116
02117
02118 #define NdisMCmDispatchIncomingCallQoSChange(_H_, _P_) \
02119
NdisCmDispatchIncomingCallQoSChange(_H_, _P_)
02120
02121
02122
02123
02124
02125
02126
02127
02128
02129
02130
02131 #define NdisMCmDispatchIncomingCloseCall(_S_, _H_, _B_, _Z_) \
02132
NdisCmDispatchIncomingCloseCall(_S_, _H_, _B_, _Z_)
02133
02134
02135
02136
02137
02138
02139
02140
02141
02142
02143 #define NdisMCmDispatchIncomingDropParty(_S_, _H_, _B_, _Z_) \
02144
NdisCmDispatchIncomingDropParty(_S_, _H_, _B_, _Z_)
02145
02146
02147
02148
02149