📄 ndis.h
字号:
/*IN*/ NDIS_STATUS DropStatus,
/*IN*/ NDIS_HANDLE ProtocolPartyContext,
/*IN*/ PVOID CloseData /*OPTIONAL*/,
/*IN*/ UINT Size /*OPTIONAL*/);
typedef VOID DDKAPI
(*CL_CALL_CONNECTED_HANDLER)(
/*IN*/ NDIS_HANDLE ProtocolVcContext);
typedef struct _NDIS_CLIENT_CHARACTERISTICS {
UCHAR MajorVersion;
UCHAR MinorVersion;
USHORT Filler;
UINT Reserved;
CO_CREATE_VC_HANDLER ClCreateVcHandler;
CO_DELETE_VC_HANDLER ClDeleteVcHandler;
CO_REQUEST_HANDLER ClRequestHandler;
CO_REQUEST_COMPLETE_HANDLER ClRequestCompleteHandler;
CL_OPEN_AF_COMPLETE_HANDLER ClOpenAfCompleteHandler;
CL_CLOSE_AF_COMPLETE_HANDLER ClCloseAfCompleteHandler;
CL_REG_SAP_COMPLETE_HANDLER ClRegisterSapCompleteHandler;
CL_DEREG_SAP_COMPLETE_HANDLER ClDeregisterSapCompleteHandler;
CL_MAKE_CALL_COMPLETE_HANDLER ClMakeCallCompleteHandler;
CL_MODIFY_CALL_QOS_COMPLETE_HANDLER ClModifyCallQoSCompleteHandler;
CL_CLOSE_CALL_COMPLETE_HANDLER ClCloseCallCompleteHandler;
CL_ADD_PARTY_COMPLETE_HANDLER ClAddPartyCompleteHandler;
CL_DROP_PARTY_COMPLETE_HANDLER ClDropPartyCompleteHandler;
CL_INCOMING_CALL_HANDLER ClIncomingCallHandler;
CL_INCOMING_CALL_QOS_CHANGE_HANDLER ClIncomingCallQoSChangeHandler;
CL_INCOMING_CLOSE_CALL_HANDLER ClIncomingCloseCallHandler;
CL_INCOMING_DROP_PARTY_HANDLER ClIncomingDropPartyHandler;
CL_CALL_CONNECTED_HANDLER ClCallConnectedHandler;
} NDIS_CLIENT_CHARACTERISTICS, *PNDIS_CLIENT_CHARACTERISTICS;
/* NDIS protocol structures */
/* Prototypes for NDIS 3.0 protocol characteristics */
typedef VOID DDKAPI
(*OPEN_ADAPTER_COMPLETE_HANDLER)(
/*IN*/ NDIS_HANDLE ProtocolBindingContext,
/*IN*/ NDIS_STATUS Status,
/*IN*/ NDIS_STATUS OpenErrorStatus);
typedef VOID DDKAPI
(*CLOSE_ADAPTER_COMPLETE_HANDLER)(
/*IN*/ NDIS_HANDLE ProtocolBindingContext,
/*IN*/ NDIS_STATUS Status);
typedef VOID DDKAPI
(*RESET_COMPLETE_HANDLER)(
/*IN*/ NDIS_HANDLE ProtocolBindingContext,
/*IN*/ NDIS_STATUS Status);
typedef VOID DDKAPI
(*REQUEST_COMPLETE_HANDLER)(
/*IN*/ NDIS_HANDLE ProtocolBindingContext,
/*IN*/ PNDIS_REQUEST NdisRequest,
/*IN*/ NDIS_STATUS Status);
typedef VOID DDKAPI
(*STATUS_HANDLER)(
/*IN*/ NDIS_HANDLE ProtocolBindingContext,
/*IN*/ NDIS_STATUS GeneralStatus,
/*IN*/ PVOID StatusBuffer,
/*IN*/ UINT StatusBufferSize);
typedef VOID DDKAPI
(*STATUS_COMPLETE_HANDLER)(
/*IN*/ NDIS_HANDLE ProtocolBindingContext);
typedef VOID DDKAPI
(*SEND_COMPLETE_HANDLER)(
/*IN*/ NDIS_HANDLE ProtocolBindingContext,
/*IN*/ PNDIS_PACKET Packet,
/*IN*/ NDIS_STATUS Status);
typedef VOID DDKAPI
(*WAN_SEND_COMPLETE_HANDLER)(
/*IN*/ NDIS_HANDLE ProtocolBindingContext,
/*IN*/ PNDIS_WAN_PACKET Packet,
/*IN*/ NDIS_STATUS Status);
typedef VOID DDKAPI
(*TRANSFER_DATA_COMPLETE_HANDLER)(
/*IN*/ NDIS_HANDLE ProtocolBindingContext,
/*IN*/ PNDIS_PACKET Packet,
/*IN*/ NDIS_STATUS Status,
/*IN*/ UINT BytesTransferred);
typedef VOID DDKAPI
(*WAN_TRANSFER_DATA_COMPLETE_HANDLER)(
VOID);
typedef NDIS_STATUS DDKAPI
(*RECEIVE_HANDLER)(
/*IN*/ NDIS_HANDLE ProtocolBindingContext,
/*IN*/ NDIS_HANDLE MacReceiveContext,
/*IN*/ PVOID HeaderBuffer,
/*IN*/ UINT HeaderBufferSize,
/*IN*/ PVOID LookAheadBuffer,
/*IN*/ UINT LookaheadBufferSize,
/*IN*/ UINT PacketSize);
typedef NDIS_STATUS DDKAPI
(*WAN_RECEIVE_HANDLER)(
/*IN*/ NDIS_HANDLE NdisLinkHandle,
/*IN*/ PUCHAR Packet,
/*IN*/ ULONG PacketSize);
typedef VOID DDKAPI
(*RECEIVE_COMPLETE_HANDLER)(
/*IN*/ NDIS_HANDLE ProtocolBindingContext);
/* Protocol characteristics for NDIS 3.0 protocols */
#define NDIS30_PROTOCOL_CHARACTERISTICS_S \
UCHAR MajorNdisVersion; \
UCHAR MinorNdisVersion; \
_ANONYMOUS_UNION union { \
UINT Reserved; \
UINT Flags; \
} DUMMYUNIONNAME; \
OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler; \
CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler; \
_ANONYMOUS_UNION union { \
SEND_COMPLETE_HANDLER SendCompleteHandler; \
WAN_SEND_COMPLETE_HANDLER WanSendCompleteHandler; \
} DUMMYUNIONNAME2; \
_ANONYMOUS_UNION union { \
TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; \
WAN_TRANSFER_DATA_COMPLETE_HANDLER WanTransferDataCompleteHandler; \
} DUMMYUNIONNAME3; \
RESET_COMPLETE_HANDLER ResetCompleteHandler; \
REQUEST_COMPLETE_HANDLER RequestCompleteHandler; \
_ANONYMOUS_UNION union { \
RECEIVE_HANDLER ReceiveHandler; \
WAN_RECEIVE_HANDLER WanReceiveHandler; \
} DUMMYUNIONNAME4; \
RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; \
STATUS_HANDLER StatusHandler; \
STATUS_COMPLETE_HANDLER StatusCompleteHandler; \
NDIS_STRING Name;
typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS {
NDIS30_PROTOCOL_CHARACTERISTICS_S
} NDIS30_PROTOCOL_CHARACTERISTICS, *PNDIS30_PROTOCOL_CHARACTERISTICS;
/* Prototypes for NDIS 4.0 protocol characteristics */
typedef INT DDKAPI
(*RECEIVE_PACKET_HANDLER)(
/*IN*/ NDIS_HANDLE ProtocolBindingContext,
/*IN*/ PNDIS_PACKET Packet);
typedef VOID DDKAPI
(*BIND_HANDLER)(
/*OUT*/ PNDIS_STATUS Status,
/*IN*/ NDIS_HANDLE BindContext,
/*IN*/ PNDIS_STRING DeviceName,
/*IN*/ PVOID SystemSpecific1,
/*IN*/ PVOID SystemSpecific2);
typedef VOID DDKAPI
(*UNBIND_HANDLER)(
/*OUT*/ PNDIS_STATUS Status,
/*IN*/ NDIS_HANDLE ProtocolBindingContext,
/*IN*/ NDIS_HANDLE UnbindContext);
typedef NDIS_STATUS DDKAPI
(*PNP_EVENT_HANDLER)(
/*IN*/ NDIS_HANDLE ProtocolBindingContext,
/*IN*/ PNET_PNP_EVENT NetPnPEvent);
typedef VOID DDKAPI
(*UNLOAD_PROTOCOL_HANDLER)(
VOID);
/* Protocol characteristics for NDIS 4.0 protocols */
#ifdef __cplusplus
#define NDIS40_PROTOCOL_CHARACTERISTICS_S \
NDIS30_PROTOCOL_CHARACTERISTICS Ndis30Chars; \
RECEIVE_PACKET_HANDLER ReceivePacketHandler; \
BIND_HANDLER BindAdapterHandler; \
UNBIND_HANDLER UnbindAdapterHandler; \
PNP_EVENT_HANDLER PnPEventHandler; \
UNLOAD_PROTOCOL_HANDLER UnloadHandler;
#else /* !__cplusplus */
#define NDIS40_PROTOCOL_CHARACTERISTICS_S \
NDIS30_PROTOCOL_CHARACTERISTICS_S \
RECEIVE_PACKET_HANDLER ReceivePacketHandler; \
BIND_HANDLER BindAdapterHandler; \
UNBIND_HANDLER UnbindAdapterHandler; \
PNP_EVENT_HANDLER PnPEventHandler; \
UNLOAD_PROTOCOL_HANDLER UnloadHandler;
#endif /* __cplusplus */
typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS {
NDIS40_PROTOCOL_CHARACTERISTICS_S
} NDIS40_PROTOCOL_CHARACTERISTICS, *PNDIS40_PROTOCOL_CHARACTERISTICS;
/* Prototypes for NDIS 5.0 protocol characteristics */
typedef VOID DDKAPI
(*CO_SEND_COMPLETE_HANDLER)(
/*IN*/ NDIS_STATUS Status,
/*IN*/ NDIS_HANDLE ProtocolVcContext,
/*IN*/ PNDIS_PACKET Packet);
typedef VOID DDKAPI
(*CO_STATUS_HANDLER)(
/*IN*/ NDIS_HANDLE ProtocolBindingContext,
/*IN*/ NDIS_HANDLE ProtocolVcContext /*OPTIONAL*/,
/*IN*/ NDIS_STATUS GeneralStatus,
/*IN*/ PVOID StatusBuffer,
/*IN*/ UINT StatusBufferSize);
typedef UINT DDKAPI
(*CO_RECEIVE_PACKET_HANDLER)(
/*IN*/ NDIS_HANDLE ProtocolBindingContext,
/*IN*/ NDIS_HANDLE ProtocolVcContext,
/*IN*/ PNDIS_PACKET Packet);
typedef VOID DDKAPI
(*CO_AF_REGISTER_NOTIFY_HANDLER)(
/*IN*/ NDIS_HANDLE ProtocolBindingContext,
/*IN*/ PCO_ADDRESS_FAMILY AddressFamily);
#ifdef __cplusplus \
#define NDIS50_PROTOCOL_CHARACTERISTICS_S \
NDIS40_PROTOCOL_CHARACTERISTICS Ndis40Chars; \
PVOID ReservedHandlers[4]; \
CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler; \
CO_STATUS_HANDLER CoStatusHandler; \
CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler; \
CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler;
#else /* !__cplusplus */
#define NDIS50_PROTOCOL_CHARACTERISTICS_S \
NDIS40_PROTOCOL_CHARACTERISTICS_S \
PVOID ReservedHandlers[4]; \
CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler; \
CO_STATUS_HANDLER CoStatusHandler; \
CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler; \
CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler;
#endif /* !__cplusplus */
typedef struct _NDIS50_PROTOCOL_CHARACTERISTICS {
NDIS50_PROTOCOL_CHARACTERISTICS_S
} NDIS50_PROTOCOL_CHARACTERISTICS, *PNDIS50_PROTOCOL_CHARACTERISTICS;
#if defined(NDIS50) || defined(NDIS51)
typedef struct _NDIS_PROTOCOL_CHARACTERISTICS {
NDIS50_PROTOCOL_CHARACTERISTICS_S;
} NDIS_PROTOCOL_CHARACTERISTICS, *PNDIS_PROTOCOL_CHARACTERISTICS;
#elif defined(NDIS40)
typedef struct _NDIS_PROTOCOL_CHARACTERISTICS {
NDIS40_PROTOCOL_CHARACTERISTICS_S;
} NDIS_PROTOCOL_CHARACTERISTICS, *PNDIS_PROTOCOL_CHARACTERISTICS;
#elif defined(NDIS30)
typedef struct _NDIS_PROTOCOL_CHARACTERISTICS {
NDIS30_PROTOCOL_CHARACTERISTICS_S
} NDIS_PROTOCOL_CHARACTERISTICS, *PNDIS_PROTOCOL_CHARACTERISTICS;
#else
#error Define an NDIS version
#endif /* NDIS30 */
/* Buffer management routines */
NDISAPI
VOID
DDKAPI
NdisAllocateBuffer(
/*OUT*/ PNDIS_STATUS Status,
/*OUT*/ PNDIS_BUFFER *Buffer,
/*IN*/ NDIS_HANDLE PoolHandle,
/*IN*/ PVOID VirtualAddress,
/*IN*/ UINT Length);
NDISAPI
VOID
DDKAPI
NdisAllocateBufferPool(
/*OUT*/ PNDIS_STATUS Status,
/*OUT*/ PNDIS_HANDLE PoolHandle,
/*IN*/ UINT NumberOfDescriptors);
NDISAPI
VOID
DDKAPI
NdisAllocatePacket(
/*OUT*/ PNDIS_STATUS Status,
/*OUT*/ PNDIS_PACKET *Packet,
/*IN*/ NDIS_HANDLE PoolHandle);
NDISAPI
VOID
DDKAPI
NdisAllocatePacketPool(
/*OUT*/ PNDIS_STATUS Status,
/*OUT*/ PNDIS_HANDLE PoolHandle,
/*IN*/ UINT NumberOfDescriptors,
/*IN*/ UINT ProtocolReservedLength);
NDISAPI
VOID
DDKAPI
NdisCopyBuffer(
/*OUT*/ PNDIS_STATUS Status,
/*OUT*/ PNDIS_BUFFER *Buffer,
/*IN*/ NDIS_HANDLE PoolHandle,
/*IN*/ PVOID MemoryDescriptor,
/*IN*/ UINT Offset,
/*IN*/ UINT Length);
NDISAPI
VOID
DDKAPI
NdisCopyFromPacketToPacket(
/*IN*/ PNDIS_PACKET Destination,
/*IN*/ UINT DestinationOffset,
/*IN*/ UINT BytesToCopy,
/*IN*/ PNDIS_PACKET Source,
/*IN*/ UINT SourceOffset,
/*OUT*/ PUINT BytesCopied);
NDISAPI
VOID
DDKAPI
NdisDprAllocatePacket(
/*OUT*/ PNDIS_STATUS Status,
/*OUT*/ PNDIS_PACKET *Packet,
/*IN*/ NDIS_HANDLE PoolHandle);
NDISAPI
VOID
DDKAPI
NdisDprAllocatePacketNonInterlocked(
/*OUT*/ PNDIS_STATUS Status,
/*OUT*/ PNDIS_PACKET *Packet,
/*IN*/ NDIS_HANDLE PoolHandle);
NDISAPI
VOID
DDKAPI
NdisDprFreePacket(
/*IN*/ PNDIS_PACKET Packet);
NDISAPI
VOID
DDKAPI
NdisDprFreePacketNonInterlocked(
/*IN*/ PNDIS_PACKET Packet);
NDISAPI
VOID
DDKAPI
NdisFreeBufferPool(
/*IN*/ NDIS_HANDLE PoolHandle);
NDISAPI
VOID
DDKAPI
NdisFreePacket(
/*IN*/ PNDIS_PACKET Packet);
NDISAPI
VOID
DDKAPI
NdisFreePacketPool(
/*IN*/ NDIS_HANDLE PoolHandle);
NDISAPI
VOID
DDKAPI
NdisReturnPackets(
/*IN*/ PNDIS_PACKET *PacketsToReturn,
/*IN*/ UINT NumberOfPackets);
NDISAPI
VOID
DDKAPI
NdisUnchainBufferAtBack(
/*IN OUT*/ PNDIS_PACKET Packet,
/*OUT*/ PNDIS_BUFFER *Buffer);
NDISAPI
VOID
DDKAPI
NdisUnchainBufferAtFront(
/*IN OUT*/ PNDIS_PACKET Packet,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -