diff options
Diffstat (limited to 'winsup/w32api/include/ddk/tdikrnl.h')
-rw-r--r-- | winsup/w32api/include/ddk/tdikrnl.h | 1162 |
1 files changed, 0 insertions, 1162 deletions
diff --git a/winsup/w32api/include/ddk/tdikrnl.h b/winsup/w32api/include/ddk/tdikrnl.h deleted file mode 100644 index 1223c265a..000000000 --- a/winsup/w32api/include/ddk/tdikrnl.h +++ /dev/null @@ -1,1162 +0,0 @@ -/* - * tdikrnl.h - * - * TDI kernel mode definitions - * - * This file is part of the w32api package. - * - * Contributors: - * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> - * - * THIS SOFTWARE IS NOT COPYRIGHTED - * - * This source code is offered for use in the public domain. You may - * use, modify or distribute it freely. - * - * This code is distributed in the hope that it will be useful but - * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY - * DISCLAIMED. This includes but is not limited to warranties of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - */ - -#ifndef __TDIKRNL_H -#define __TDIKRNL_H - -#if __GNUC__ >=3 -#pragma GCC system_header -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#include "ntddk.h" -#include "tdi.h" - -#if defined(_TDI_) - #define TDIKRNLAPI DECLSPEC_EXPORT -#else - #define TDIKRNLAPI DECLSPEC_IMPORT -#endif - - -typedef struct _TDI_REQUEST_KERNEL { - ULONG RequestFlags; - PTDI_CONNECTION_INFORMATION RequestConnectionInformation; - PTDI_CONNECTION_INFORMATION ReturnConnectionInformation; - PVOID RequestSpecific; -} TDI_REQUEST_KERNEL, *PTDI_REQUEST_KERNEL; - -/* Request codes */ -#define TDI_ASSOCIATE_ADDRESS 0x01 -#define TDI_DISASSOCIATE_ADDRESS 0x02 -#define TDI_CONNECT 0x03 -#define TDI_LISTEN 0x04 -#define TDI_ACCEPT 0x05 -#define TDI_DISCONNECT 0x06 -#define TDI_SEND 0x07 -#define TDI_RECEIVE 0x08 -#define TDI_SEND_DATAGRAM 0x09 -#define TDI_RECEIVE_DATAGRAM 0x0A -#define TDI_SET_EVENT_HANDLER 0x0B -#define TDI_QUERY_INFORMATION 0x0C -#define TDI_SET_INFORMATION 0x0D -#define TDI_ACTION 0x0E - -#define TDI_DIRECT_SEND 0x27 -#define TDI_DIRECT_SEND_DATAGRAM 0x29 - -#define TDI_TRANSPORT_ADDRESS_FILE 1 -#define TDI_CONNECTION_FILE 2 -#define TDI_CONTROL_CHANNEL_FILE 3 - -/* Internal TDI IOCTLS */ -#define IOCTL_TDI_QUERY_DIRECT_SEND_HANDLER _TDI_CONTROL_CODE(0x80, METHOD_NEITHER) -#define IOCTL_TDI_QUERY_DIRECT_SENDDG_HANDLER _TDI_CONTROL_CODE(0x81, METHOD_NEITHER) - -/* TdiAssociateAddress */ -typedef struct _TDI_REQUEST_KERNEL_ASSOCIATE { - HANDLE AddressHandle; -} TDI_REQUEST_KERNEL_ASSOCIATE, *PTDI_REQUEST_KERNEL_ASSOCIATE; - -/* TdiDisassociateAddress */ -typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_DISASSOCIATE, - *PTDI_REQUEST_KERNEL_DISASSOCIATE; - -/* TdiAccept */ -typedef struct _TDI_REQUEST_KERNEL_ACCEPT { - PTDI_CONNECTION_INFORMATION RequestConnectionInformation; - PTDI_CONNECTION_INFORMATION ReturnConnectionInformation; -} TDI_REQUEST_KERNEL_ACCEPT, *PTDI_REQUEST_KERNEL_ACCEPT; - -/* TdiConnect */ -typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_CONNECT, - *PTDI_REQUEST_KERNEL_CONNECT; - -/* TdiDisconnect */ -typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_DISCONNECT, - *PTDI_REQUEST_KERNEL_DISCONNECT; - -/* TdiListen */ -typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_LISTEN, - *PTDI_REQUEST_KERNEL_LISTEN; - -/* TdiReceive */ -typedef struct _TDI_REQUEST_KERNEL_RECEIVE { - ULONG ReceiveLength; - ULONG ReceiveFlags; -} TDI_REQUEST_KERNEL_RECEIVE, *PTDI_REQUEST_KERNEL_RECEIVE; - -/* TdiReceiveDatagram */ -typedef struct _TDI_REQUEST_KERNEL_RECEIVEDG { - ULONG ReceiveLength; - PTDI_CONNECTION_INFORMATION ReceiveDatagramInformation; - PTDI_CONNECTION_INFORMATION ReturnDatagramInformation; - ULONG ReceiveFlags; -} TDI_REQUEST_KERNEL_RECEIVEDG, *PTDI_REQUEST_KERNEL_RECEIVEDG; - -/* TdiSend */ -typedef struct _TDI_REQUEST_KERNEL_SEND { - ULONG SendLength; - ULONG SendFlags; -} TDI_REQUEST_KERNEL_SEND, *PTDI_REQUEST_KERNEL_SEND; - -/* TdiSendDatagram */ -typedef struct _TDI_REQUEST_KERNEL_SENDDG { - ULONG SendLength; - PTDI_CONNECTION_INFORMATION SendDatagramInformation; -} TDI_REQUEST_KERNEL_SENDDG, *PTDI_REQUEST_KERNEL_SENDDG; - -/* TdiSetEventHandler */ -typedef struct _TDI_REQUEST_KERNEL_SET_EVENT { - LONG EventType; - PVOID EventHandler; - PVOID EventContext; -} TDI_REQUEST_KERNEL_SET_EVENT, *PTDI_REQUEST_KERNEL_SET_EVENT; - -/* TdiQueryInformation */ -typedef struct _TDI_REQUEST_KERNEL_QUERY_INFO { - LONG QueryType; - PTDI_CONNECTION_INFORMATION RequestConnectionInformation; -} TDI_REQUEST_KERNEL_QUERY_INFORMATION, *PTDI_REQUEST_KERNEL_QUERY_INFORMATION; - -/* TdiSetInformation */ -typedef struct _TDI_REQUEST_KERNEL_SET_INFO { - LONG SetType; - PTDI_CONNECTION_INFORMATION RequestConnectionInformation; -} TDI_REQUEST_KERNEL_SET_INFORMATION, *PTDI_REQUEST_KERNEL_SET_INFORMATION; - - -/* Event types */ -#define TDI_EVENT_CONNECT 0 -#define TDI_EVENT_DISCONNECT 1 -#define TDI_EVENT_ERROR 2 -#define TDI_EVENT_RECEIVE 3 -#define TDI_EVENT_RECEIVE_DATAGRAM 4 -#define TDI_EVENT_RECEIVE_EXPEDITED 5 -#define TDI_EVENT_SEND_POSSIBLE 6 -#define TDI_EVENT_CHAINED_RECEIVE 7 -#define TDI_EVENT_CHAINED_RECEIVE_DATAGRAM 8 -#define TDI_EVENT_CHAINED_RECEIVE_EXPEDITED 9 -#define TDI_EVENT_ERROR_EX 10 - -typedef NTSTATUS DDKAPI -(*PTDI_IND_CONNECT)( - /*IN*/ PVOID TdiEventContext, - /*IN*/ LONG RemoteAddressLength, - /*IN*/ PVOID RemoteAddress, - /*IN*/ LONG UserDataLength, - /*IN*/ PVOID UserData, - /*IN*/ LONG OptionsLength, - /*IN*/ PVOID Options, - /*OUT*/ CONNECTION_CONTEXT *ConnectionContext, - /*OUT*/ PIRP *AcceptIrp); - -TDIKRNLAPI -NTSTATUS -DDKAPI -TdiDefaultConnectHandler( - /*IN*/ PVOID TdiEventContext, - /*IN*/ LONG RemoteAddressLength, - /*IN*/ PVOID RemoteAddress, - /*IN*/ LONG UserDataLength, - /*IN*/ PVOID UserData, - /*IN*/ LONG OptionsLength, - /*IN*/ PVOID Options, - /*OUT*/ CONNECTION_CONTEXT *ConnectionContext, - /*OUT*/ PIRP *AcceptIrp); - -typedef NTSTATUS DDKAPI -(*PTDI_IND_DISCONNECT)( - /*IN*/ PVOID TdiEventContext, - /*IN*/ CONNECTION_CONTEXT ConnectionContext, - /*IN*/ LONG DisconnectDataLength, - /*IN*/ PVOID DisconnectData, - /*IN*/ LONG DisconnectInformationLength, - /*IN*/ PVOID DisconnectInformation, - /*IN*/ ULONG DisconnectFlags); - -TDIKRNLAPI -NTSTATUS -DDKAPI -TdiDefaultDisconnectHandler( - /*IN*/ PVOID TdiEventContext, - /*IN*/ CONNECTION_CONTEXT ConnectionContext, - /*IN*/ LONG DisconnectDataLength, - /*IN*/ PVOID DisconnectData, - /*IN*/ LONG DisconnectInformationLength, - /*IN*/ PVOID DisconnectInformation, - /*IN*/ ULONG DisconnectFlags); - -typedef NTSTATUS DDKAPI -(*PTDI_IND_ERROR)( - /*IN*/ PVOID TdiEventContext, - /*IN*/ NTSTATUS Status); - -typedef NTSTATUS DDKAPI -(*PTDI_IND_ERROR_EX)( - /*IN*/ PVOID TdiEventContext, - /*IN*/ NTSTATUS Status, - /*IN*/ PVOID Buffer); - -TDIKRNLAPI -NTSTATUS -DDKAPI -TdiDefaultErrorHandler( - /*IN*/ PVOID TdiEventContext, - /*IN*/ NTSTATUS Status); - -typedef NTSTATUS DDKAPI -(*PTDI_IND_RECEIVE)( - /*IN*/ PVOID TdiEventContext, - /*IN*/ CONNECTION_CONTEXT ConnectionContext, - /*IN*/ ULONG ReceiveFlags, - /*IN*/ ULONG BytesIndicated, - /*IN*/ ULONG BytesAvailable, - /*OUT*/ ULONG *BytesTaken, - /*IN*/ PVOID Tsdu, - /*OUT*/ PIRP *IoRequestPacket); - -TDIKRNLAPI -NTSTATUS -DDKAPI -TdiDefaultReceiveHandler( - /*IN*/ PVOID TdiEventContext, - /*IN*/ CONNECTION_CONTEXT ConnectionContext, - /*IN*/ ULONG ReceiveFlags, - /*IN*/ ULONG BytesIndicated, - /*IN*/ ULONG BytesAvailable, - /*OUT*/ ULONG *BytesTaken, - /*IN*/ PVOID Tsdu, - /*OUT*/ PIRP *IoRequestPacket); - -typedef NTSTATUS DDKAPI -(*PTDI_IND_RECEIVE_DATAGRAM)( - /*IN*/ PVOID TdiEventContext, - /*IN*/ LONG SourceAddressLength, - /*IN*/ PVOID SourceAddress, - /*IN*/ LONG OptionsLength, - /*IN*/ PVOID Options, - /*IN*/ ULONG ReceiveDatagramFlags, - /*IN*/ ULONG BytesIndicated, - /*IN*/ ULONG BytesAvailable, - /*OUT*/ ULONG *BytesTaken, - /*IN*/ PVOID Tsdu, - /*OUT*/ PIRP *IoRequestPacket); - -TDIKRNLAPI -NTSTATUS DDKAPI -TdiDefaultRcvDatagramHandler( - /*IN*/ PVOID TdiEventContext, - /*IN*/ LONG SourceAddressLength, - /*IN*/ PVOID SourceAddress, - /*IN*/ LONG OptionsLength, - /*IN*/ PVOID Options, - /*IN*/ ULONG ReceiveDatagramFlags, - /*IN*/ ULONG BytesIndicated, - /*IN*/ ULONG BytesAvailable, - /*OUT*/ ULONG *BytesTaken, - /*IN*/ PVOID Tsdu, - /*OUT*/ PIRP *IoRequestPacket); - -typedef NTSTATUS DDKAPI -(*PTDI_IND_RECEIVE_EXPEDITED)( - /*IN*/ PVOID TdiEventContext, - /*IN*/ CONNECTION_CONTEXT ConnectionContext, - /*IN*/ ULONG ReceiveFlags, - /*IN*/ ULONG BytesIndicated, - /*IN*/ ULONG BytesAvailable, - /*OUT*/ ULONG *BytesTaken, - /*IN*/ PVOID Tsdu, - /*OUT*/ PIRP *IoRequestPacket); - -TDIKRNLAPI -NTSTATUS -DDKAPI -TdiDefaultRcvExpeditedHandler( - /*IN*/ PVOID TdiEventContext, - /*IN*/ CONNECTION_CONTEXT ConnectionContext, - /*IN*/ ULONG ReceiveFlags, - /*IN*/ ULONG BytesIndicated, - /*IN*/ ULONG BytesAvailable, - /*OUT*/ ULONG *BytesTaken, - /*IN*/ PVOID Tsdu, - /*OUT*/ PIRP *IoRequestPacket); - -typedef NTSTATUS DDKAPI -(*PTDI_IND_CHAINED_RECEIVE)( - /*IN*/ PVOID TdiEventContext, - /*IN*/ CONNECTION_CONTEXT ConnectionContext, - /*IN*/ ULONG ReceiveFlags, - /*IN*/ ULONG ReceiveLength, - /*IN*/ ULONG StartingOffset, - /*IN*/ PMDL Tsdu, - /*IN*/ PVOID TsduDescriptor); - -TDIKRNLAPI -NTSTATUS -DDKAPI -TdiDefaultChainedReceiveHandler( - /*IN*/ PVOID TdiEventContext, - /*IN*/ CONNECTION_CONTEXT ConnectionContext, - /*IN*/ ULONG ReceiveFlags, - /*IN*/ ULONG ReceiveLength, - /*IN*/ ULONG StartingOffset, - /*IN*/ PMDL Tsdu, - /*IN*/ PVOID TsduDescriptor); - -typedef NTSTATUS DDKAPI -(*PTDI_IND_CHAINED_RECEIVE_DATAGRAM)( - /*IN*/ PVOID TdiEventContext, - /*IN*/ LONG SourceAddressLength, - /*IN*/ PVOID SourceAddress, - /*IN*/ LONG OptionsLength, - /*IN*/ PVOID Options, - /*IN*/ ULONG ReceiveDatagramFlags, - /*IN*/ ULONG ReceiveDatagramLength, - /*IN*/ ULONG StartingOffset, - /*IN*/ PMDL Tsdu, - /*IN*/ PVOID TsduDescriptor); - -TDIKRNLAPI -NTSTATUS -DDKAPI -TdiDefaultChainedRcvDatagramHandler( - /*IN*/ PVOID TdiEventContext, - /*IN*/ LONG SourceAddressLength, - /*IN*/ PVOID SourceAddress, - /*IN*/ LONG OptionsLength, - /*IN*/ PVOID Options, - /*IN*/ ULONG ReceiveDatagramFlags, - /*IN*/ ULONG ReceiveDatagramLength, - /*IN*/ ULONG StartingOffset, - /*IN*/ PMDL Tsdu, - /*IN*/ PVOID TsduDescriptor); - -typedef NTSTATUS DDKAPI -(*PTDI_IND_CHAINED_RECEIVE_EXPEDITED)( - /*IN*/ PVOID TdiEventContext, - /*IN*/ CONNECTION_CONTEXT ConnectionContext, - /*IN*/ ULONG ReceiveFlags, - /*IN*/ ULONG ReceiveLength, - /*IN*/ ULONG StartingOffset, - /*IN*/ PMDL Tsdu, - /*IN*/ PVOID TsduDescriptor); - -TDIKRNLAPI -NTSTATUS -DDKAPI -TdiDefaultChainedRcvExpeditedHandler( - /*IN*/ PVOID TdiEventContext, - /*IN*/ CONNECTION_CONTEXT ConnectionContext, - /*IN*/ ULONG ReceiveFlags, - /*IN*/ ULONG ReceiveLength, - /*IN*/ ULONG StartingOffset, - /*IN*/ PMDL Tsdu, - /*IN*/ PVOID TsduDescriptor); - -typedef NTSTATUS DDKAPI -(*PTDI_IND_SEND_POSSIBLE)( - /*IN*/ PVOID TdiEventContext, - /*IN*/ PVOID ConnectionContext, - /*IN*/ ULONG BytesAvailable); - -TDIKRNLAPI -NTSTATUS -DDKAPI -TdiDefaultSendPossibleHandler( - /*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); \ -} - -TDIKRNLAPI -VOID -DDKAPI -TdiBuildNetbiosAddress( - /*IN*/ PUCHAR NetbiosName, - /*IN*/ BOOLEAN IsGroupName, - /*IN OUT*/ PTA_NETBIOS_ADDRESS NetworkName); - -TDIKRNLAPI -NTSTATUS -DDKAPI -TdiBuildNetbiosAddressEa( - /*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); \ - \ - _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 */ |