You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
216 lines
6.8 KiB
216 lines
6.8 KiB
#if defined(NDIS_WRAPPER)
|
|
|
|
typedef
|
|
BOOLEAN
|
|
(*PNDIS_INTERRUPT_SERVICE)(
|
|
IN PVOID InterruptContext
|
|
);
|
|
|
|
typedef
|
|
VOID
|
|
(*PNDIS_DEFERRED_PROCESSING)(
|
|
IN PVOID SystemSpecific1,
|
|
IN PVOID InterruptContext,
|
|
IN PVOID SystemSpecific2,
|
|
IN PVOID SystemSpecific3
|
|
);
|
|
|
|
#endif // defined(NDIS_WRAPPER)
|
|
|
|
//
|
|
// The following handlers are used in the OPEN_BLOCK
|
|
//
|
|
typedef
|
|
NDIS_STATUS
|
|
(*WAN_SEND_HANDLER)(
|
|
IN NDIS_HANDLE NdisBindingHandle,
|
|
IN NDIS_HANDLE LinkHandle,
|
|
IN PVOID Packet
|
|
);
|
|
|
|
typedef
|
|
NDIS_STATUS
|
|
(*SEND_HANDLER)(
|
|
IN NDIS_HANDLE NdisBindingHandle,
|
|
IN PNDIS_PACKET Packet
|
|
);
|
|
|
|
typedef
|
|
NDIS_STATUS
|
|
(*TRANSFER_DATA_HANDLER)(
|
|
IN NDIS_HANDLE NdisBindingHandle,
|
|
IN NDIS_HANDLE MacReceiveContext,
|
|
IN UINT ByteOffset,
|
|
IN UINT BytesToTransfer,
|
|
OUT PNDIS_PACKET Packet,
|
|
OUT PUINT BytesTransferred
|
|
);
|
|
|
|
typedef
|
|
NDIS_STATUS
|
|
(*RESET_HANDLER)(
|
|
IN NDIS_HANDLE NdisBindingHandle
|
|
);
|
|
|
|
typedef
|
|
NDIS_STATUS
|
|
(*REQUEST_HANDLER)(
|
|
IN NDIS_HANDLE NdisBindingHandle,
|
|
IN PNDIS_REQUEST NdisRequest
|
|
);
|
|
|
|
typedef
|
|
VOID
|
|
(*SEND_PACKETS_HANDLER)(
|
|
IN NDIS_HANDLE MiniportAdapterContext,
|
|
IN PPNDIS_PACKET PacketArray,
|
|
IN UINT NumberOfPackets
|
|
);
|
|
|
|
|
|
typedef struct _NDIS_COMMON_OPEN_BLOCK
|
|
{
|
|
PVOID MacHandle; // needed for backward compatibility
|
|
NDIS_HANDLE BindingHandle; // Miniport's open context
|
|
PNDIS_MINIPORT_BLOCK MiniportHandle; // pointer to the miniport
|
|
PNDIS_PROTOCOL_BLOCK ProtocolHandle; // pointer to our protocol
|
|
NDIS_HANDLE ProtocolBindingContext;// context when calling ProtXX funcs
|
|
PNDIS_OPEN_BLOCK MiniportNextOpen; // used by adapter's OpenQueue
|
|
PNDIS_OPEN_BLOCK ProtocolNextOpen; // used by protocol's OpenQueue
|
|
NDIS_HANDLE MiniportAdapterContext; // context for miniport
|
|
BOOLEAN Reserved1;
|
|
BOOLEAN Reserved2;
|
|
BOOLEAN Reserved3;
|
|
BOOLEAN Reserved4;
|
|
PNDIS_STRING BindDeviceName;
|
|
KSPIN_LOCK Reserved5;
|
|
PNDIS_STRING RootDeviceName;
|
|
|
|
//
|
|
// These are referenced by the macros used by protocols to call.
|
|
// All of the ones referenced by the macros are internal NDIS handlers for the miniports
|
|
//
|
|
union
|
|
{
|
|
SEND_HANDLER SendHandler;
|
|
WAN_SEND_HANDLER WanSendHandler;
|
|
};
|
|
TRANSFER_DATA_HANDLER TransferDataHandler;
|
|
|
|
//
|
|
// These are referenced internally by NDIS
|
|
//
|
|
SEND_COMPLETE_HANDLER SendCompleteHandler;
|
|
TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler;
|
|
RECEIVE_HANDLER ReceiveHandler;
|
|
RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler;
|
|
WAN_RECEIVE_HANDLER WanReceiveHandler;
|
|
REQUEST_COMPLETE_HANDLER RequestCompleteHandler;
|
|
|
|
//
|
|
// NDIS 4.0 extensions
|
|
//
|
|
RECEIVE_PACKET_HANDLER ReceivePacketHandler;
|
|
SEND_PACKETS_HANDLER SendPacketsHandler;
|
|
|
|
//
|
|
// More Cached Handlers
|
|
//
|
|
RESET_HANDLER ResetHandler;
|
|
REQUEST_HANDLER RequestHandler;
|
|
RESET_COMPLETE_HANDLER ResetCompleteHandler;
|
|
STATUS_HANDLER StatusHandler;
|
|
STATUS_COMPLETE_HANDLER StatusCompleteHandler;
|
|
|
|
#if defined(NDIS_WRAPPER)
|
|
ULONG Flags;
|
|
LONG References;
|
|
KSPIN_LOCK SpinLock; // guards Closing
|
|
NDIS_HANDLE FilterHandle;
|
|
ULONG ProtocolOptions;
|
|
USHORT CurrentLookahead;
|
|
USHORT ConnectDampTicks;
|
|
USHORT DisconnectDampTicks;
|
|
|
|
//
|
|
// These are optimizations for getting to driver routines. They are not
|
|
// necessary, but are here to save a dereference through the Driver block.
|
|
//
|
|
W_SEND_HANDLER WSendHandler;
|
|
W_TRANSFER_DATA_HANDLER WTransferDataHandler;
|
|
|
|
//
|
|
// NDIS 4.0 miniport entry-points
|
|
//
|
|
W_SEND_PACKETS_HANDLER WSendPacketsHandler;
|
|
|
|
W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler;
|
|
|
|
//
|
|
// Contains the wake-up events that are enabled for the open.
|
|
//
|
|
ULONG WakeUpEnable;
|
|
//
|
|
// event to be signalled when close complets
|
|
//
|
|
PKEVENT CloseCompleteEvent;
|
|
|
|
QUEUED_CLOSE QC;
|
|
|
|
LONG AfReferences;
|
|
|
|
PNDIS_OPEN_BLOCK NextGlobalOpen;
|
|
|
|
#endif
|
|
|
|
} NDIS_COMMON_OPEN_BLOCK;
|
|
|
|
//
|
|
// one of these per open on an adapter/protocol
|
|
//
|
|
struct _NDIS_OPEN_BLOCK
|
|
{
|
|
#ifdef __cplusplus
|
|
NDIS_COMMON_OPEN_BLOCK NdisCommonOpenBlock;
|
|
#else
|
|
NDIS_COMMON_OPEN_BLOCK;
|
|
#endif
|
|
|
|
#if defined(NDIS_WRAPPER)
|
|
|
|
//
|
|
// The stuff below is for CO drivers/protocols. This part is not allocated for CL drivers.
|
|
//
|
|
struct _NDIS_OPEN_CO
|
|
{
|
|
//
|
|
// this is the list of the call manager opens done on this adapter
|
|
//
|
|
struct _NDIS_CO_AF_BLOCK * NextAf;
|
|
|
|
//
|
|
// NDIS 5.0 miniport entry-points, filled in at open time.
|
|
//
|
|
W_CO_CREATE_VC_HANDLER MiniportCoCreateVcHandler;
|
|
W_CO_REQUEST_HANDLER MiniportCoRequestHandler;
|
|
|
|
//
|
|
// NDIS 5.0 protocol completion routines, filled in at RegisterAf/OpenAf time
|
|
//
|
|
CO_CREATE_VC_HANDLER CoCreateVcHandler;
|
|
CO_DELETE_VC_HANDLER CoDeleteVcHandler;
|
|
CM_ACTIVATE_VC_COMPLETE_HANDLER CmActivateVcCompleteHandler;
|
|
CM_DEACTIVATE_VC_COMPLETE_HANDLER CmDeactivateVcCompleteHandler;
|
|
CO_REQUEST_COMPLETE_HANDLER CoRequestCompleteHandler;
|
|
|
|
//
|
|
// lists for queuing connections. There is both a queue for currently
|
|
// active connections and a queue for connections that are not active.
|
|
//
|
|
LIST_ENTRY ActiveVcHead;
|
|
LIST_ENTRY InactiveVcHead;
|
|
LONG PendingAfNotifications;
|
|
PKEVENT AfNotifyCompleteEvent;
|
|
};
|
|
#endif
|
|
};
|