tdikrnl.h
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C头文件 代码 · 共 1,163 行 · 第 1/3 页
H
1,163 行
_Request = (PTDI_REQUEST_KERNEL_SENDDG)&_IrpSp->Parameters; \
_Request->SendDatagramInformation = (SendDatagramInfo); \
_Request->SendLength = (SendLen); \
(Irp)->MdlAddress = (MdlAddr); \
}
/*
* VOID
* TdiBuildSetEventHandler(
* IN PIRP Irp,
* IN PDEVICE_OBJECT DevObj,
* IN PFILE_OBJECT FileObj,
* IN PVOID CompRoutine,
* IN PVOID Contxt,
* IN INT InEventType,
* IN PVOID InEventHandler,
* IN PVOID InEventContext);
*/
#define TdiBuildSetEventHandler( \
Irp, DevObj, FileObj, CompRoutine, Contxt, \
InEventType, InEventHandler, InEventContext) \
{ \
PTDI_REQUEST_KERNEL_SET_EVENT _Request; \
PIO_STACK_LOCATION _IrpSp; \
\
_IrpSp = IoGetNextIrpStackLocation(Irp); \
\
TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
Contxt, _IrpSp, TDI_SET_EVENT_HANDLER); \
\
_Request = (PTDI_REQUEST_KERNEL_SET_EVENT)&_IrpSp->Parameters; \
_Request->EventType = (InEventType); \
_Request->EventHandler = (PVOID)(InEventHandler); \
_Request->EventContext = (PVOID)(InEventContext); \
}
/*
* VOID
* TdiBuildSetInformation(
* IN PIRP Irp,
* IN PDEVICE_OBJECT DevObj,
* IN PFILE_OBJECT FileObj,
* IN PVOID CompRoutine,
* IN PVOID Contxt,
* IN UINT SType,
* IN PMDL MdlAddr);
*/
#define TdiBuildSetInformation( \
Irp, DevObj, FileObj, CompRoutine, Contxt, SType, MdlAddr) \
{ \
PTDI_REQUEST_KERNEL_SET_INFORMATION _Request; \
PIO_STACK_LOCATION _IrpSp; \
\
_IrpSp = IoGetNextIrpStackLocation(Irp); \
\
TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
Contxt, _IrpSp, TDI_SET_INFORMATION); \
\
_Request = (PTDI_REQUEST_KERNEL_SET_INFORMATION)&_IrpSp->Parameters; \
_Request->RequestConnectionInformation = NULL; \
_Request->SetType = (ULONG)(SType); \
(Irp)->MdlAddress = (MdlAddr); \
}
/* TDI20_CLIENT_INTERFACE_INFO.TdiVersion constants */
#define TDI_CURRENT_MAJOR_VERSION 2
#define TDI_CURRENT_MINOR_VERSION 0
#define TDI_CURRENT_VERSION ((TDI_CURRENT_MINOR_VERSION) << 8 \
| (TDI_CURRENT_MAJOR_VERSION))
#define TDI_VERSION_ONE 0x0001
typedef enum _TDI_PNP_OPCODE {
TDI_PNP_OP_MIN,
TDI_PNP_OP_ADD,
TDI_PNP_OP_DEL,
TDI_PNP_OP_UPDATE,
TDI_PNP_OP_PROVIDERREADY,
TDI_PNP_OP_NETREADY,
TDI_PNP_OP_ADD_IGNORE_BINDING,
TDI_PNP_OP_DELETE_IGNORE_BINDING,
TDI_PNP_OP_MAX
} TDI_PNP_OPCODE;
/* TDI_PNP_CONTEXT.ContextType */
#define TDI_PNP_CONTEXT_TYPE_IF_NAME 0x1
#define TDI_PNP_CONTEXT_TYPE_IF_ADDR 0x2
#define TDI_PNP_CONTEXT_TYPE_PDO 0x3
#define TDI_PNP_CONTEXT_TYPE_FIRST_OR_LAST_IF 0x4
typedef struct _TDI_PNP_CONTEXT {
USHORT ContextSize;
USHORT ContextType;
UCHAR ContextData[1];
} TDI_PNP_CONTEXT, *PTDI_PNP_CONTEXT;
typedef VOID DDKAPI
(*TDI_ADD_ADDRESS_HANDLER)(
/*IN*/ PTA_ADDRESS Address);
typedef VOID DDKAPI
(*TDI_ADD_ADDRESS_HANDLER_V2)(
/*IN*/ PTA_ADDRESS Address,
/*IN*/ PUNICODE_STRING DeviceName,
/*IN*/ PTDI_PNP_CONTEXT Context);
typedef VOID DDKAPI
(*TDI_BINDING_HANDLER)(
/*IN*/ TDI_PNP_OPCODE PnPOpcode,
/*IN*/ PUNICODE_STRING DeviceName,
/*IN*/ PWSTR MultiSZBindList);
typedef VOID DDKAPI
(*TDI_BIND_HANDLER)(
/*IN*/ PUNICODE_STRING DeviceName);
typedef VOID DDKAPI
(*TDI_DEL_ADDRESS_HANDLER)(
/*IN*/ PTA_ADDRESS Address);
typedef VOID DDKAPI
(*TDI_DEL_ADDRESS_HANDLER_V2)(
/*IN*/ PTA_ADDRESS Address,
/*IN*/ PUNICODE_STRING DeviceName,
/*IN*/ PTDI_PNP_CONTEXT Context);
typedef NTSTATUS DDKAPI
(*TDI_PNP_POWER_HANDLER)(
/*IN*/ PUNICODE_STRING DeviceName,
/*IN*/ PNET_PNP_EVENT PowerEvent,
/*IN*/ PTDI_PNP_CONTEXT Context1,
/*IN*/ PTDI_PNP_CONTEXT Context2);
typedef VOID DDKAPI
(*TDI_UNBIND_HANDLER)(
/*IN*/ PUNICODE_STRING DeviceName);
typedef VOID DDKAPI
(*ProviderPnPPowerComplete)(
/*IN*/ PNET_PNP_EVENT NetEvent,
/*IN*/ NTSTATUS ProviderStatus);
typedef struct _TDI20_CLIENT_INTERFACE_INFO {
_ANONYMOUS_UNION union {
_ANONYMOUS_STRUCT struct {
UCHAR MajorTdiVersion;
UCHAR MinorTdiVersion;
} DUMMYSTRUCTNAME;
USHORT TdiVersion;
} DUMMYUNIONNAME;
USHORT Unused;
PUNICODE_STRING ClientName;
TDI_PNP_POWER_HANDLER PnPPowerHandler;
_ANONYMOUS_UNION union {
TDI_BINDING_HANDLER BindingHandler;
_ANONYMOUS_STRUCT struct {
TDI_BIND_HANDLER BindHandler;
TDI_UNBIND_HANDLER UnBindHandler;
} DUMMYSTRUCTNAME;
}DUMMYUNIONNAME2;
_ANONYMOUS_UNION union {
_ANONYMOUS_STRUCT struct {
TDI_ADD_ADDRESS_HANDLER_V2 AddAddressHandlerV2;
TDI_DEL_ADDRESS_HANDLER_V2 DelAddressHandlerV2;
} DUMMYSTRUCTNAME;
_ANONYMOUS_STRUCT struct {
TDI_ADD_ADDRESS_HANDLER AddAddressHandler;
TDI_DEL_ADDRESS_HANDLER DelAddressHandler;
} DUMMYSTRUCTNAME2;
} DUMMYUNIONNAME3;
} TDI20_CLIENT_INTERFACE_INFO, *PTDI20_CLIENT_INTERFACE_INFO;
typedef TDI20_CLIENT_INTERFACE_INFO TDI_CLIENT_INTERFACE_INFO;
typedef TDI_CLIENT_INTERFACE_INFO *PTDI_CLIENT_INTERFACE_INFO;
/* TDI functions */
/*
* VOID
* TdiCompleteRequest(
* IN PIRP Irp,
* IN NTSTATUS Status);
*/
#define TdiCompleteRequest(Irp, Status) \
{ \
(Irp)->IoStatus.Status = (Status); \
IoCompleteRequest((Irp), IO_NETWORK_INCREMENT); \
}
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiCopyBufferToMdl(
/*IN*/ PVOID SourceBuffer,
/*IN*/ ULONG SourceOffset,
/*IN*/ ULONG SourceBytesToCopy,
/*IN*/ PMDL DestinationMdlChain,
/*IN*/ ULONG DestinationOffset,
/*IN*/ PULONG BytesCopied);
/*
* VOID
* TdiCopyLookaheadData(
* IN PVOID Destination,
* IN PVOID Source,
* IN ULONG Length,
* IN ULONG ReceiveFlags);
*/
#define TdiCopyLookaheadData(Destination, Source, Length, ReceiveFlags) \
RtlCopyMemory(Destination, Source, Length)
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiCopyMdlChainToMdlChain (
/*IN*/ PMDL SourceMdlChain,
/*IN*/ ULONG SourceOffset,
/*IN*/ PMDL DestinationMdlChain,
/*IN*/ ULONG DestinationOffset,
/*OUT*/ PULONG BytesCopied);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiCopyMdlToBuffer(
/*IN*/ PMDL SourceMdlChain,
/*IN*/ ULONG SourceOffset,
/*IN*/ PVOID DestinationBuffer,
/*IN*/ ULONG DestinationOffset,
/*IN*/ ULONG DestinationBufferSize,
/*OUT*/ PULONG BytesCopied);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiDeregisterAddressChangeHandler(
/*IN*/ HANDLE BindingHandle);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiDeregisterDeviceObject(
/*IN*/ HANDLE DevRegistrationHandle);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiDeregisterNetAddress(
/*IN*/ HANDLE AddrRegistrationHandle);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiDeregisterPnPHandlers(
/*IN*/ HANDLE BindingHandle);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiDeregisterProvider(
/*IN*/ HANDLE ProviderHandle);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiEnumerateAddresses(
/*IN*/ HANDLE BindingHandle);
TDIKRNLAPI
VOID
DDKAPI
TdiInitialize(
VOID);
TDIKRNLAPI
VOID
DDKAPI
TdiMapBuffer(
/*IN*/ PMDL MdlChain);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiMapUserRequest(
/*IN*/ PDEVICE_OBJECT DeviceObject,
/*IN*/ PIRP Irp,
/*IN*/ PIO_STACK_LOCATION IrpSp);
TDIKRNLAPI
BOOLEAN
DDKAPI
TdiMatchPdoWithChainedReceiveContext(
/*IN*/ PVOID TsduDescriptor,
/*IN*/ PVOID PDO);
TDIKRNLAPI
VOID
DDKAPI
TdiPnPPowerComplete(
/*IN*/ HANDLE BindingHandle,
/*IN*/ PNET_PNP_EVENT PowerEvent,
/*IN*/ NTSTATUS Status);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiPnPPowerRequest(
/*IN*/ PUNICODE_STRING DeviceName,
/*IN*/ PNET_PNP_EVENT PowerEvent,
/*IN*/ PTDI_PNP_CONTEXT Context1,
/*IN*/ PTDI_PNP_CONTEXT Context2,
/*IN*/ ProviderPnPPowerComplete ProtocolCompletionHandler);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiProviderReady(
/*IN*/ HANDLE ProviderHandle);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiRegisterAddressChangeHandler(
/*IN*/ TDI_ADD_ADDRESS_HANDLER AddHandler,
/*IN*/ TDI_DEL_ADDRESS_HANDLER DeleteHandler,
/*OUT*/ HANDLE *BindingHandle);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiRegisterDeviceObject(
/*IN*/ PUNICODE_STRING DeviceName,
/*OUT*/ HANDLE *DevRegistrationHandle);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiRegisterNetAddress(
/*IN*/ PTA_ADDRESS Address,
/*IN*/ PUNICODE_STRING DeviceName,
/*IN*/ PTDI_PNP_CONTEXT Context,
/*OUT*/ HANDLE *AddrRegistrationHandle);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiRegisterNotificationHandler(
/*IN*/ TDI_BIND_HANDLER BindHandler,
/*IN*/ TDI_UNBIND_HANDLER UnbindHandler,
/*OUT*/ HANDLE *BindingHandle);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiRegisterPnPHandlers(
/*IN*/ PTDI_CLIENT_INTERFACE_INFO ClientInterfaceInfo,
/*IN*/ ULONG InterfaceInfoSize,
/*OUT*/ HANDLE *BindingHandle);
TDIKRNLAPI
NTSTATUS
DDKAPI
TdiRegisterProvider(
/*IN*/ PUNICODE_STRING ProviderName,
/*OUT*/ HANDLE *ProviderHandle);
TDIKRNLAPI
VOID
DDKAPI
TdiReturnChainedReceives(
/*IN*/ PVOID *TsduDescriptors,
/*IN*/ ULONG NumberOfTsdus);
TDIKRNLAPI
VOID
DDKAPI
TdiUnmapBuffer(
/*IN*/ PMDL MdlChain);
#ifdef __cplusplus
}
#endif
#endif /* __TDIKRNL_H */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?