📄 tdikrnl.h
字号:
/*IN*/ PVOID TdiEventContext, /*IN*/ PVOID ConnectionContext, /*IN*/ ULONG BytesAvailable); /* Macros and functions to build IRPs */#define TdiBuildBaseIrp( \ bIrp, bDevObj, bFileObj, bCompRoutine, bContxt, bIrpSp, bMinor) \{ \ bIrpSp->MajorFunction = IRP_MJ_INTERNAL_DEVICE_CONTROL; \ bIrpSp->MinorFunction = (bMinor); \ bIrpSp->DeviceObject = (bDevObj); \ bIrpSp->FileObject = (bFileObj); \ if (bCompRoutine) \ IoSetCompletionRoutine(bIrp, bCompRoutine, bContxt, TRUE, TRUE, TRUE) \ else \ IoSetCompletionRoutine(bIrp, NULL, NULL, FALSE, FALSE, FALSE); \} /* * VOID * TdiBuildAccept( * IN PIRP Irp, * IN PDEVICE_OBJECT DevObj, * IN PFILE_OBJECT FileObj, * IN PVOID CompRoutine, * IN PVOID Contxt, * IN PTDI_CONNECTION_INFORMATION RequestConnectionInfo, * OUT PTDI_CONNECTION_INFORMATION ReturnConnectionInfo); */#define TdiBuildAccept( \ Irp, DevObj, FileObj, CompRoutine, Contxt, \ RequestConnectionInfo, ReturnConnectionInfo) \{ \ PTDI_REQUEST_KERNEL_ACCEPT _Request; \ PIO_STACK_LOCATION _IrpSp; \ \ _IrpSp = IoGetNextIrpStackLocation(Irp); \ \ TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ Contxt, _IrpSp, TDI_ACCEPT); \ \ _Request = (PTDI_REQUEST_KERNEL_ACCEPT)&_IrpSp->Parameters; \ _Request->RequestConnectionInformation = (RequestConnectionInfo); \ _Request->ReturnConnectionInformation = (ReturnConnectionInfo); \} /* * VOID * TdiBuildAction( * IN PIRP Irp, * IN PDEVICE_OBJECT DevObj, * IN PFILE_OBJECT FileObj, * IN PVOID CompRoutine, * IN PVOID Contxt, * IN PMDL MdlAddr); */#define TdiBuildAction( \ Irp, DevObj, FileObj, CompRoutine, Contxt, MdlAddr) \{ \ PIO_STACK_LOCATION _IrpSp; \ \ _IrpSp = IoGetNextIrpStackLocation(Irp); \ \ TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ Contxt, _IrpSp, TDI_ACTION); \ \ (Irp)->MdlAddress = (MdlAddr); \} /* * VOID * TdiBuildAssociateAddress( * IN PIRP Irp, * IN PDEVICE_OBJECT DevObj, * IN PFILE_OBJECT FileObj, * IN PVOID CompRoutine, * IN PVOID Contxt, * IN HANDLE AddrHandle); */#define TdiBuildAssociateAddress( \ Irp, DevObj, FileObj, CompRoutine, Contxt, AddrHandle) \{ \ PTDI_REQUEST_KERNEL_ASSOCIATE _Request; \ PIO_STACK_LOCATION _IrpSp; \ \ _IrpSp = IoGetNextIrpStackLocation(Irp); \ \ TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ Contxt, _IrpSp, TDI_ASSOCIATE_ADDRESS); \ \ _Request = (PTDI_REQUEST_KERNEL_ASSOCIATE)&_IrpSp->Parameters; \ _Request->AddressHandle = (HANDLE)(AddrHandle); \} /* * VOID * TdiBuildConnect( * IN PIRP Irp, * IN PDEVICE_OBJECT DevObj, * IN PFILE_OBJECT FileObj, * IN PVOID CompRoutine, * IN PVOID Contxt, * IN PLARGE_INTEGER Time, * IN PTDI_CONNECTION_INFORMATION RequestConnectionInfo, * OUT PTDI_CONNECTION_INFORMATION ReturnConnectionInfo); */#define TdiBuildConnect( \ Irp, DevObj, FileObj, CompRoutine, Contxt, \ Time, RequestConnectionInfo, ReturnConnectionInfo) \{ \ PTDI_REQUEST_KERNEL _Request; \ PIO_STACK_LOCATION _IrpSp; \ \ _IrpSp = IoGetNextIrpStackLocation(Irp); \ \ TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ Contxt, _IrpSp, TDI_CONNECT); \ \ _Request = (PTDI_REQUEST_KERNEL)&_IrpSp->Parameters; \ _Request->RequestConnectionInformation = (RequestConnectionInfo); \ _Request->ReturnConnectionInformation = (ReturnConnectionInfo); \ _Request->RequestSpecific = (PVOID)(Time); \} /* * VOID * TdiBuildDisassociateAddress( * IN PIRP Irp, * IN PDEVICE_OBJECT DevObj, * IN PFILE_OBJECT FileObj, * IN PVOID CompRoutine, * IN PVOID Contxt); */#define TdiBuildDisassociateAddress( \ Irp, DevObj, FileObj, CompRoutine, Contxt) \{ \ PIO_STACK_LOCATION _IrpSp; \ \ _IrpSp = IoGetNextIrpStackLocation(Irp); \ \ TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ Contxt, _IrpSp, TDI_DISASSOCIATE_ADDRESS); \} /* * VOID * TdiBuildDisconnect( * IN PIRP Irp, * IN PDEVICE_OBJECT DevObj, * IN PFILE_OBJECT FileObj, * IN PVOID CompRoutine, * IN PVOID Contxt, * IN PLARGE_INTEGER Time, * IN PULONG Flags, * IN PTDI_CONNECTION_INFORMATION RequestConnectionInfo, * OUT PTDI_CONNECTION_INFORMATION ReturnConnectionInfo); */#define TdiBuildDisconnect( \ Irp, DevObj, FileObj, CompRoutine, Contxt, Time, \ Flags, RequestConnectionInfo, ReturnConnectionInfo) \{ \ PTDI_REQUEST_KERNEL _Request; \ PIO_STACK_LOCATION _IrpSp; \ \ _IrpSp = IoGetNextIrpStackLocation(Irp); \ \ TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ Contxt, _IrpSp, TDI_DISCONNECT); \ \ _Request = (PTDI_REQUEST_KERNEL)&_IrpSp->Parameters; \ _Request->RequestConnectionInformation = (RequestConnectionInfo); \ _Request->ReturnConnectionInformation = (ReturnConnectionInfo); \ _Request->RequestSpecific = (PVOID)(Time); \ _Request->RequestFlags = (Flags); \} /* * PIRP * TdiBuildInternalDeviceControlIrp( * IN CCHAR IrpSubFunction, * IN PDEVICE_OBJECT DeviceObject, * IN PFILE_OBJECT FileObject, * IN PKEVENT Event, * IN PIO_STATUS_BLOCK IoStatusBlock); */#define TdiBuildInternalDeviceControlIrp( \ IrpSubFunction, DeviceObject, \ FileObject, Event, IoStatusBlock) \ IoBuildDeviceIoControlRequest( \ 0x00000003, DeviceObject, \ NULL, 0, NULL, 0, \ TRUE, Event, IoStatusBlock) /* * VOID * TdiBuildListen( * IN PIRP Irp, * IN PDEVICE_OBJECT DevObj, * IN PFILE_OBJECT FileObj, * IN PVOID CompRoutine, * IN PVOID Contxt, * IN ULONG Flags, * IN PTDI_CONNECTION_INFORMATION RequestConnectionInfo, * OUT PTDI_CONNECTION_INFORMATION ReturnConnectionInfo); */#define TdiBuildListen( \ Irp, DevObj, FileObj, CompRoutine, Contxt, \ Flags, RequestConnectionInfo, ReturnConnectionInfo) \{ \ PTDI_REQUEST_KERNEL _Request; \ PIO_STACK_LOCATION _IrpSp; \ \ _IrpSp = IoGetNextIrpStackLocation(Irp); \ \ TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ Contxt, _IrpSp, TDI_LISTEN); \ \ _Request = (PTDI_REQUEST_KERNEL)&_IrpSp->Parameters; \ _Request->RequestConnectionInformation = (RequestConnectionInfo); \ _Request->ReturnConnectionInformation = (ReturnConnectionInfo); \ _Request->RequestFlags = (Flags); \}TDIKRNLAPIVOIDDDKAPITdiBuildNetbiosAddress( /*IN*/ PUCHAR NetbiosName, /*IN*/ BOOLEAN IsGroupName, /*IN OUT*/ PTA_NETBIOS_ADDRESS NetworkName);TDIKRNLAPINTSTATUSDDKAPITdiBuildNetbiosAddressEa( /*IN*/ PUCHAR Buffer, /*IN*/ BOOLEAN IsGroupName, /*IN*/ PUCHAR NetbiosName); /* * VOID * TdiBuildQueryInformation( * IN PIRP Irp, * IN PDEVICE_OBJECT DevObj, * IN PFILE_OBJECT FileObj, * IN PVOID CompRoutine, * IN PVOID Contxt, * IN UINT QType, * IN PMDL MdlAddr); */#define TdiBuildQueryInformation( \ Irp, DevObj, FileObj, CompRoutine, Contxt, QType, MdlAddr) \{ \ PTDI_REQUEST_KERNEL_QUERY_INFORMATION _Request; \ PIO_STACK_LOCATION _IrpSp; \ \ _IrpSp = IoGetNextIrpStackLocation(Irp); \ \ TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ Contxt, _IrpSp, TDI_QUERY_INFORMATION); \ \ _Request = (PTDI_REQUEST_KERNEL_QUERY_INFORMATION)&_IrpSp->Parameters; \ _Request->RequestConnectionInformation = NULL; \ _Request->QueryType = (ULONG)(QType); \ (Irp)->MdlAddress = (MdlAddr); \} /* * VOID * TdiBuildReceive( * IN PIRP Irp, * IN PDEVICE_OBJECT DevObj, * IN PFILE_OBJECT FileObj, * IN PVOID CompRoutine, * IN PVOID Contxt, * IN PMDL MdlAddr, * IN ULONG InFlags, * IN ULONG ReceiveLen); */#define TdiBuildReceive( \ Irp, DevObj, FileObj, CompRoutine, Contxt, \ MdlAddr, InFlags, ReceiveLen) \{ \ PTDI_REQUEST_KERNEL_RECEIVE _Request; \ PIO_STACK_LOCATION _IrpSp; \ \ _IrpSp = IoGetNextIrpStackLocation(Irp); \ \ TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ Contxt, _IrpSp, TDI_RECEIVE); \ \ _Request = (PTDI_REQUEST_KERNEL_RECEIVE)&_IrpSp->Parameters; \ _Request->ReceiveFlags = (InFlags); \ _Request->ReceiveLength = (ReceiveLen); \ (Irp)->MdlAddress = (MdlAddr); \} /* * VOID * TdiBuildReceiveDatagram( * IN PIRP Irp, * IN PDEVICE_OBJECT DevObj, * IN PFILE_OBJECT FileObj, * IN PVOID CompRoutine, * IN PVOID Contxt, * IN PMDL MdlAddr, * IN ULONG ReceiveLen, * IN PTDI_CONNECTION_INFORMATION ReceiveDatagramInfo, * OUT PTDI_CONNECTION_INFORMATION ReturnInfo, * ULONG InFlags); */#define TdiBuildReceiveDatagram( \ Irp, DevObj, FileObj, CompRoutine, Contxt, MdlAddr, \ ReceiveLen, ReceiveDatagramInfo, ReturnInfo, InFlags) \{ \ PTDI_REQUEST_KERNEL_RECEIVEDG _Request; \ PIO_STACK_LOCATION _IrpSp; \ \ _IrpSp = IoGetNextIrpStackLocation(Irp); \ \ TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ Contxt, _IrpSp, TDI_RECEIVE_DATAGRAM); \ \ _Request = (PTDI_REQUEST_KERNEL_RECEIVEDG)&_IrpSp->Parameters; \ _Request->ReceiveDatagramInformation = (ReceiveDatagramInfo); \ _Request->ReturnDatagramInformation = (ReturnInfo); \ _Request->ReceiveLength = (ReceiveLen); \ _Request->ReceiveFlags = (InFlags); \ (Irp)->MdlAddress = (MdlAddr); \} /* * VOID * TdiBuildSend( * IN PIRP Irp, * IN PDEVICE_OBJECT DevObj, * IN PFILE_OBJECT FileObj, * IN PVOID CompRoutine, * IN PVOID Contxt, * IN PMDL MdlAddr, * IN ULONG InFlags, * IN ULONG SendLen); */#define TdiBuildSend( \ Irp, DevObj, FileObj, CompRoutine, Contxt, \ MdlAddr, InFlags, SendLen) \{ \ PTDI_REQUEST_KERNEL_SEND _Request; \ PIO_STACK_LOCATION _IrpSp; \ \ _IrpSp = IoGetNextIrpStackLocation(Irp); \ \ TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ Contxt, _IrpSp, TDI_SEND); \ \ _Request = (PTDI_REQUEST_KERNEL_SEND)&_IrpSp->Parameters; \ _Request->SendFlags = (InFlags); \ _Request->SendLength = (SendLen); \ (Irp)->MdlAddress = (MdlAddr); \} /* * VOID * TdiBuildSendDatagram( * IN PIRP Irp, * IN PDEVICE_OBJECT DevObj, * IN PFILE_OBJECT FileObj, * IN PVOID CompRoutine, * IN PVOID Contxt, * IN PMDL MdlAddr, * IN ULONG SendLen, * IN PTDI_CONNECTION_INFORMATION SendDatagramInfo); */#define TdiBuildSendDatagram( \ Irp, DevObj, FileObj, CompRoutine, Contxt, \ MdlAddr, SendLen, SendDatagramInfo) \{ \ PTDI_REQUEST_KERNEL_SENDDG _Request; \ PIO_STACK_LOCATION _IrpSp; \ \ _IrpSp = IoGetNextIrpStackLocation(Irp); \ \ TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ Contxt, _IrpSp, TDI_SEND_DATAGRAM); \ \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -