📄 tdikrnl.h
字号:
_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 0x0001typedef 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 0x4typedef 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); \}TDIKRNLAPINTSTATUSDDKAPITdiCopyBufferToMdl( /*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)TDIKRNLAPINTSTATUSDDKAPITdiCopyMdlChainToMdlChain ( /*IN*/ PMDL SourceMdlChain, /*IN*/ ULONG SourceOffset, /*IN*/ PMDL DestinationMdlChain, /*IN*/ ULONG DestinationOffset, /*OUT*/ PULONG BytesCopied);TDIKRNLAPINTSTATUSDDKAPITdiCopyMdlToBuffer( /*IN*/ PMDL SourceMdlChain, /*IN*/ ULONG SourceOffset, /*IN*/ PVOID DestinationBuffer, /*IN*/ ULONG DestinationOffset, /*IN*/ ULONG DestinationBufferSize, /*OUT*/ PULONG BytesCopied);TDIKRNLAPINTSTATUSDDKAPITdiDeregisterAddressChangeHandler( /*IN*/ HANDLE BindingHandle);TDIKRNLAPINTSTATUSDDKAPITdiDeregisterDeviceObject( /*IN*/ HANDLE DevRegistrationHandle);TDIKRNLAPINTSTATUSDDKAPITdiDeregisterNetAddress( /*IN*/ HANDLE AddrRegistrationHandle);TDIKRNLAPINTSTATUSDDKAPITdiDeregisterPnPHandlers( /*IN*/ HANDLE BindingHandle);TDIKRNLAPINTSTATUSDDKAPITdiDeregisterProvider( /*IN*/ HANDLE ProviderHandle);TDIKRNLAPINTSTATUSDDKAPITdiEnumerateAddresses( /*IN*/ HANDLE BindingHandle);TDIKRNLAPIVOIDDDKAPITdiInitialize( VOID);TDIKRNLAPIVOIDDDKAPITdiMapBuffer( /*IN*/ PMDL MdlChain);TDIKRNLAPINTSTATUSDDKAPITdiMapUserRequest( /*IN*/ PDEVICE_OBJECT DeviceObject, /*IN*/ PIRP Irp, /*IN*/ PIO_STACK_LOCATION IrpSp);TDIKRNLAPIBOOLEANDDKAPITdiMatchPdoWithChainedReceiveContext( /*IN*/ PVOID TsduDescriptor, /*IN*/ PVOID PDO);TDIKRNLAPIVOIDDDKAPITdiPnPPowerComplete( /*IN*/ HANDLE BindingHandle, /*IN*/ PNET_PNP_EVENT PowerEvent, /*IN*/ NTSTATUS Status);TDIKRNLAPINTSTATUSDDKAPITdiPnPPowerRequest( /*IN*/ PUNICODE_STRING DeviceName, /*IN*/ PNET_PNP_EVENT PowerEvent, /*IN*/ PTDI_PNP_CONTEXT Context1, /*IN*/ PTDI_PNP_CONTEXT Context2, /*IN*/ ProviderPnPPowerComplete ProtocolCompletionHandler);TDIKRNLAPINTSTATUSDDKAPITdiProviderReady( /*IN*/ HANDLE ProviderHandle);TDIKRNLAPINTSTATUSDDKAPITdiRegisterAddressChangeHandler( /*IN*/ TDI_ADD_ADDRESS_HANDLER AddHandler, /*IN*/ TDI_DEL_ADDRESS_HANDLER DeleteHandler, /*OUT*/ HANDLE *BindingHandle);TDIKRNLAPINTSTATUSDDKAPITdiRegisterDeviceObject( /*IN*/ PUNICODE_STRING DeviceName, /*OUT*/ HANDLE *DevRegistrationHandle);TDIKRNLAPINTSTATUSDDKAPITdiRegisterNetAddress( /*IN*/ PTA_ADDRESS Address, /*IN*/ PUNICODE_STRING DeviceName, /*IN*/ PTDI_PNP_CONTEXT Context, /*OUT*/ HANDLE *AddrRegistrationHandle);TDIKRNLAPINTSTATUSDDKAPITdiRegisterNotificationHandler( /*IN*/ TDI_BIND_HANDLER BindHandler, /*IN*/ TDI_UNBIND_HANDLER UnbindHandler, /*OUT*/ HANDLE *BindingHandle);TDIKRNLAPINTSTATUSDDKAPITdiRegisterPnPHandlers( /*IN*/ PTDI_CLIENT_INTERFACE_INFO ClientInterfaceInfo, /*IN*/ ULONG InterfaceInfoSize, /*OUT*/ HANDLE *BindingHandle);TDIKRNLAPINTSTATUSDDKAPITdiRegisterProvider( /*IN*/ PUNICODE_STRING ProviderName, /*OUT*/ HANDLE *ProviderHandle);TDIKRNLAPIVOIDDDKAPITdiReturnChainedReceives( /*IN*/ PVOID *TsduDescriptors, /*IN*/ ULONG NumberOfTsdus);TDIKRNLAPIVOIDDDKAPITdiUnmapBuffer( /*IN*/ PMDL MdlChain);#ifdef __cplusplus}#endif#endif /* __TDIKRNL_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -