35#define TDIKRNLAPI DECLSPEC_IMPORT
47#define TDI_ASSOCIATE_ADDRESS 0x01
48#define TDI_DISASSOCIATE_ADDRESS 0x02
49#define TDI_CONNECT 0x03
50#define TDI_LISTEN 0x04
51#define TDI_ACCEPT 0x05
52#define TDI_DISCONNECT 0x06
54#define TDI_RECEIVE 0x08
55#define TDI_SEND_DATAGRAM 0x09
56#define TDI_RECEIVE_DATAGRAM 0x0A
57#define TDI_SET_EVENT_HANDLER 0x0B
58#define TDI_QUERY_INFORMATION 0x0C
59#define TDI_SET_INFORMATION 0x0D
60#define TDI_ACTION 0x0E
62#define TDI_DIRECT_SEND 0x27
63#define TDI_DIRECT_SEND_DATAGRAM 0x29
65#define TDI_TRANSPORT_ADDRESS_FILE 1
66#define TDI_CONNECTION_FILE 2
67#define TDI_CONTROL_CHANNEL_FILE 3
70#define IOCTL_TDI_QUERY_DIRECT_SEND_HANDLER _TDI_CONTROL_CODE(0x80, METHOD_NEITHER)
71#define IOCTL_TDI_QUERY_DIRECT_SENDDG_HANDLER _TDI_CONTROL_CODE(0x81, METHOD_NEITHER)
146#define TDI_EVENT_CONNECT 0
147#define TDI_EVENT_DISCONNECT 1
148#define TDI_EVENT_ERROR 2
149#define TDI_EVENT_RECEIVE 3
150#define TDI_EVENT_RECEIVE_DATAGRAM 4
151#define TDI_EVENT_RECEIVE_EXPEDITED 5
152#define TDI_EVENT_SEND_POSSIBLE 6
153#define TDI_EVENT_CHAINED_RECEIVE 7
154#define TDI_EVENT_CHAINED_RECEIVE_DATAGRAM 8
155#define TDI_EVENT_CHAINED_RECEIVE_EXPEDITED 9
156#define TDI_EVENT_ERROR_EX 10
190 _In_ LONG DisconnectInformationLength,
202 _In_ LONG DisconnectInformationLength,
391#define TdiBuildBaseIrp( \
392 bIrp, bDevObj, bFileObj, bCompRoutine, bContxt, bIrpSp, bMinor) \
394 bIrpSp->MajorFunction = IRP_MJ_INTERNAL_DEVICE_CONTROL; \
395 bIrpSp->MinorFunction = (bMinor); \
396 bIrpSp->DeviceObject = (bDevObj); \
397 bIrpSp->FileObject = (bFileObj); \
400 IoSetCompletionRoutine(bIrp, bCompRoutine, bContxt, TRUE, TRUE, TRUE);\
403 IoSetCompletionRoutine(bIrp, NULL, NULL, FALSE, FALSE, FALSE); \
417#define TdiBuildAccept( \
418 Irp, DevObj, FileObj, CompRoutine, Contxt, \
419 RequestConnectionInfo, ReturnConnectionInfo) \
421 PTDI_REQUEST_KERNEL_ACCEPT _Request; \
422 PIO_STACK_LOCATION _IrpSp; \
424 _IrpSp = IoGetNextIrpStackLocation(Irp); \
426 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
427 Contxt, _IrpSp, TDI_ACCEPT); \
429 _Request = (PTDI_REQUEST_KERNEL_ACCEPT)&_IrpSp->Parameters; \
430 _Request->RequestConnectionInformation = (RequestConnectionInfo); \
431 _Request->ReturnConnectionInformation = (ReturnConnectionInfo); \
444#define TdiBuildAction( \
445 Irp, DevObj, FileObj, CompRoutine, Contxt, MdlAddr) \
447 PIO_STACK_LOCATION _IrpSp; \
449 _IrpSp = IoGetNextIrpStackLocation(Irp); \
451 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
452 Contxt, _IrpSp, TDI_ACTION); \
454 (Irp)->MdlAddress = (MdlAddr); \
467#define TdiBuildAssociateAddress( \
468 Irp, DevObj, FileObj, CompRoutine, Contxt, AddrHandle) \
470 PTDI_REQUEST_KERNEL_ASSOCIATE _Request; \
471 PIO_STACK_LOCATION _IrpSp; \
473 _IrpSp = IoGetNextIrpStackLocation(Irp); \
475 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
476 Contxt, _IrpSp, TDI_ASSOCIATE_ADDRESS); \
478 _Request = (PTDI_REQUEST_KERNEL_ASSOCIATE)&_IrpSp->Parameters; \
479 _Request->AddressHandle = (HANDLE)(AddrHandle); \
494#define TdiBuildConnect( \
495 Irp, DevObj, FileObj, CompRoutine, Contxt, \
496 Time, RequestConnectionInfo, ReturnConnectionInfo) \
498 PTDI_REQUEST_KERNEL _Request; \
499 PIO_STACK_LOCATION _IrpSp; \
501 _IrpSp = IoGetNextIrpStackLocation(Irp); \
503 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
504 Contxt, _IrpSp, TDI_CONNECT); \
506 _Request = (PTDI_REQUEST_KERNEL)&_IrpSp->Parameters; \
507 _Request->RequestConnectionInformation = (RequestConnectionInfo); \
508 _Request->ReturnConnectionInformation = (ReturnConnectionInfo); \
509 _Request->RequestSpecific = (PVOID)(Time); \
521#define TdiBuildDisassociateAddress( \
522 Irp, DevObj, FileObj, CompRoutine, Contxt) \
524 PIO_STACK_LOCATION _IrpSp; \
526 _IrpSp = IoGetNextIrpStackLocation(Irp); \
528 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
529 Contxt, _IrpSp, TDI_DISASSOCIATE_ADDRESS); \
545#define TdiBuildDisconnect( \
546 Irp, DevObj, FileObj, CompRoutine, Contxt, Time, \
547 Flags, RequestConnectionInfo, ReturnConnectionInfo) \
549 PTDI_REQUEST_KERNEL _Request; \
550 PIO_STACK_LOCATION _IrpSp; \
552 _IrpSp = IoGetNextIrpStackLocation(Irp); \
554 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
555 Contxt, _IrpSp, TDI_DISCONNECT); \
557 _Request = (PTDI_REQUEST_KERNEL)&_IrpSp->Parameters; \
558 _Request->RequestConnectionInformation = (RequestConnectionInfo); \
559 _Request->ReturnConnectionInformation = (ReturnConnectionInfo); \
560 _Request->RequestSpecific = (PVOID)(Time); \
561 _Request->RequestFlags = (Flags); \
573#define TdiBuildInternalDeviceControlIrp( \
574 IrpSubFunction, DeviceObject, \
575 FileObject, Event, IoStatusBlock) \
576 IoBuildDeviceIoControlRequest( \
577 IrpSubFunction, DeviceObject, \
579 TRUE, Event, IoStatusBlock)
593#define TdiBuildListen( \
594 Irp, DevObj, FileObj, CompRoutine, Contxt, \
595 Flags, RequestConnectionInfo, ReturnConnectionInfo) \
597 PTDI_REQUEST_KERNEL _Request; \
598 PIO_STACK_LOCATION _IrpSp; \
600 _IrpSp = IoGetNextIrpStackLocation(Irp); \
602 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
603 Contxt, _IrpSp, TDI_LISTEN); \
605 _Request = (PTDI_REQUEST_KERNEL)&_IrpSp->Parameters; \
606 _Request->RequestConnectionInformation = (RequestConnectionInfo); \
607 _Request->ReturnConnectionInformation = (ReturnConnectionInfo); \
608 _Request->RequestFlags = (Flags); \
638#define TdiBuildQueryInformation( \
639 Irp, DevObj, FileObj, CompRoutine, Contxt, QType, MdlAddr) \
641 PTDI_REQUEST_KERNEL_QUERY_INFORMATION _Request; \
642 PIO_STACK_LOCATION _IrpSp; \
644 _IrpSp = IoGetNextIrpStackLocation(Irp); \
646 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
647 Contxt, _IrpSp, TDI_QUERY_INFORMATION); \
649 _Request = (PTDI_REQUEST_KERNEL_QUERY_INFORMATION)&_IrpSp->Parameters; \
650 _Request->RequestConnectionInformation = NULL; \
651 _Request->QueryType = (ULONG)(QType); \
652 (Irp)->MdlAddress = (MdlAddr); \
667#define TdiBuildReceive( \
668 Irp, DevObj, FileObj, CompRoutine, Contxt, \
669 MdlAddr, InFlags, ReceiveLen) \
671 PTDI_REQUEST_KERNEL_RECEIVE _Request; \
672 PIO_STACK_LOCATION _IrpSp; \
674 _IrpSp = IoGetNextIrpStackLocation(Irp); \
676 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
677 Contxt, _IrpSp, TDI_RECEIVE); \
679 _Request = (PTDI_REQUEST_KERNEL_RECEIVE)&_IrpSp->Parameters; \
680 _Request->ReceiveFlags = (InFlags); \
681 _Request->ReceiveLength = (ReceiveLen); \
682 (Irp)->MdlAddress = (MdlAddr); \
699#define TdiBuildReceiveDatagram( \
700 Irp, DevObj, FileObj, CompRoutine, Contxt, MdlAddr, \
701 ReceiveLen, ReceiveDatagramInfo, ReturnInfo, InFlags) \
703 PTDI_REQUEST_KERNEL_RECEIVEDG _Request; \
704 PIO_STACK_LOCATION _IrpSp; \
706 _IrpSp = IoGetNextIrpStackLocation(Irp); \
708 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
709 Contxt, _IrpSp, TDI_RECEIVE_DATAGRAM); \
711 _Request = (PTDI_REQUEST_KERNEL_RECEIVEDG)&_IrpSp->Parameters; \
712 _Request->ReceiveDatagramInformation = (ReceiveDatagramInfo); \
713 _Request->ReturnDatagramInformation = (ReturnInfo); \
714 _Request->ReceiveLength = (ReceiveLen); \
715 _Request->ReceiveFlags = (InFlags); \
716 (Irp)->MdlAddress = (MdlAddr); \
731#define TdiBuildSend( \
732 Irp, DevObj, FileObj, CompRoutine, Contxt, \
733 MdlAddr, InFlags, SendLen) \
735 PTDI_REQUEST_KERNEL_SEND _Request; \
736 PIO_STACK_LOCATION _IrpSp; \
738 _IrpSp = IoGetNextIrpStackLocation(Irp); \
740 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
741 Contxt, _IrpSp, TDI_SEND); \
743 _Request = (PTDI_REQUEST_KERNEL_SEND)&_IrpSp->Parameters; \
744 _Request->SendFlags = (InFlags); \
745 _Request->SendLength = (SendLen); \
746 (Irp)->MdlAddress = (MdlAddr); \
761#define TdiBuildSendDatagram( \
762 Irp, DevObj, FileObj, CompRoutine, Contxt, \
763 MdlAddr, SendLen, SendDatagramInfo) \
765 PTDI_REQUEST_KERNEL_SENDDG _Request; \
766 PIO_STACK_LOCATION _IrpSp; \
768 _IrpSp = IoGetNextIrpStackLocation(Irp); \
770 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
771 Contxt, _IrpSp, TDI_SEND_DATAGRAM); \
773 _Request = (PTDI_REQUEST_KERNEL_SENDDG)&_IrpSp->Parameters; \
774 _Request->SendDatagramInformation = (SendDatagramInfo); \
775 _Request->SendLength = (SendLen); \
776 (Irp)->MdlAddress = (MdlAddr); \
791#define TdiBuildSetEventHandler( \
792 Irp, DevObj, FileObj, CompRoutine, Contxt, \
793 InEventType, InEventHandler, InEventContext) \
795 PTDI_REQUEST_KERNEL_SET_EVENT _Request; \
796 PIO_STACK_LOCATION _IrpSp; \
798 _IrpSp = IoGetNextIrpStackLocation(Irp); \
800 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
801 Contxt, _IrpSp, TDI_SET_EVENT_HANDLER); \
803 _Request = (PTDI_REQUEST_KERNEL_SET_EVENT)&_IrpSp->Parameters; \
804 _Request->EventType = (InEventType); \
805 _Request->EventHandler = (PVOID)(InEventHandler); \
806 _Request->EventContext = (PVOID)(InEventContext); \
820#define TdiBuildSetInformation( \
821 Irp, DevObj, FileObj, CompRoutine, Contxt, SType, MdlAddr) \
823 PTDI_REQUEST_KERNEL_SET_INFORMATION _Request; \
824 PIO_STACK_LOCATION _IrpSp; \
826 _IrpSp = IoGetNextIrpStackLocation(Irp); \
828 TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
829 Contxt, _IrpSp, TDI_SET_INFORMATION); \
831 _Request = (PTDI_REQUEST_KERNEL_SET_INFORMATION)&_IrpSp->Parameters; \
832 _Request->RequestConnectionInformation = NULL; \
833 _Request->SetType = (ULONG)(SType); \
834 (Irp)->MdlAddress = (MdlAddr); \
838#define TDI_CURRENT_MAJOR_VERSION 2
839#define TDI_CURRENT_MINOR_VERSION 0
841#define TDI_CURRENT_VERSION ((TDI_CURRENT_MINOR_VERSION) << 8 \
842 | (TDI_CURRENT_MAJOR_VERSION))
844#define TDI_VERSION_ONE 0x0001
859#define TDI_PNP_CONTEXT_TYPE_IF_NAME 0x1
860#define TDI_PNP_CONTEXT_TYPE_IF_ADDR 0x2
861#define TDI_PNP_CONTEXT_TYPE_PDO 0x3
862#define TDI_PNP_CONTEXT_TYPE_FIRST_OR_LAST_IF 0x4
958#define TdiCompleteRequest(Irp, Status) \
960 (Irp)->IoStatus.Status = (Status); \
961 IoCompleteRequest((Irp), IO_NETWORK_INCREMENT); \
984#define TdiCopyLookaheadData(Destination, Source, Length, ReceiveFlags) \
985 RtlCopyMemory(Destination, Source, Length)
991TdiCopyMdlChainToMdlChain(
1041TdiDeregisterProvider(
1048TdiEnumerateAddresses(
_In_ PFCB _In_ LONGLONG StartingOffset
NTSTATUS NTAPI TdiRegisterNetAddress(IN PTA_ADDRESS Address, IN PUNICODE_STRING DeviceName, IN PTDI_PNP_CONTEXT Context, OUT HANDLE *RegistrationHandle)
NTSTATUS NTAPI TdiDeregisterDeviceObject(IN HANDLE RegistrationHandle)
NTSTATUS NTAPI TdiDeregisterNetAddress(IN HANDLE RegistrationHandle)
NTSTATUS NTAPI TdiRegisterDeviceObject(IN PUNICODE_STRING DeviceName, OUT HANDLE *RegistrationHandle)
VOID NTAPI TdiInitialize()
VOID NTAPI TdiReturnChainedReceives(IN PVOID *TsduDescriptors, IN ULONG NumberOfTsdus)
NTSTATUS NTAPI TdiCopyBufferToMdl(IN PVOID SourceBuffer, IN ULONG SourceOffset, IN ULONG SourceBytesToCopy, IN PMDL DestinationMdlChain, IN ULONG DestinationOffset, IN PULONG BytesCopied)
NTSTATUS NTAPI TdiCopyMdlToBuffer(IN PMDL SourceMdlChain, IN ULONG SourceOffset, IN PVOID DestinationBuffer, IN ULONG DestinationOffset, IN ULONG DestinationBufferSize, OUT PULONG BytesCopied)
NTSTATUS NTAPI TdiMapUserRequest(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp)
#define _IRQL_requires_max_(irql)
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _Outptr_ PMDL * MdlChain
NTSTATUS NTAPI TdiDeregisterPnPHandlers(_In_ HANDLE BindingHandle)
NTSTATUS NTAPI TdiRegisterPnPHandlers(_In_ PTDI_CLIENT_INTERFACE_INFO ClientInterfaceInfo, _In_ ULONG InterfaceInfoSize, _Out_ HANDLE *BindingHandle)
#define _In_reads_bytes_(size)
#define _Out_writes_bytes_(size)
#define _In_reads_bytes_opt_(size)
#define _ANONYMOUS_STRUCT
TDI_BIND_HANDLER BindHandler
TDI_PNP_POWER_HANDLER PnPPowerHandler
_ANONYMOUS_STRUCT struct _TDI20_CLIENT_INTERFACE_INFO::@2251::@2254 DUMMYSTRUCTNAME
TDI_DEL_ADDRESS_HANDLER DelAddressHandler
_ANONYMOUS_UNION union _TDI20_CLIENT_INTERFACE_INFO::@2251 DUMMYUNIONNAME
PUNICODE_STRING ClientName
TDI_BINDING_HANDLER BindingHandler
TDI_ADD_ADDRESS_HANDLER_V2 AddAddressHandlerV2
TDI_ADD_ADDRESS_HANDLER AddAddressHandler
TDI_DEL_ADDRESS_HANDLER_V2 DelAddressHandlerV2
_ANONYMOUS_UNION union _TDI20_CLIENT_INTERFACE_INFO::@2253 DUMMYUNIONNAME3
_ANONYMOUS_STRUCT struct _TDI20_CLIENT_INTERFACE_INFO::@2253::@2257 DUMMYSTRUCTNAME2
_ANONYMOUS_UNION union _TDI20_CLIENT_INTERFACE_INFO::@2252 DUMMYUNIONNAME2
TDI_UNBIND_HANDLER UnBindHandler
PTDI_CONNECTION_INFORMATION RequestConnectionInformation
PTDI_CONNECTION_INFORMATION ReturnConnectionInformation
PTDI_CONNECTION_INFORMATION RequestConnectionInformation
PTDI_CONNECTION_INFORMATION ReceiveDatagramInformation
PTDI_CONNECTION_INFORMATION ReturnDatagramInformation
_Field_size_bytes_(SendLength) PTDI_CONNECTION_INFORMATION SendDatagramInformation
PTDI_CONNECTION_INFORMATION RequestConnectionInformation
PTDI_CONNECTION_INFORMATION RequestConnectionInformation
PTDI_CONNECTION_INFORMATION ReturnConnectionInformation
NTSTATUS(NTAPI * PTDI_IND_RECEIVE_EXPEDITED)(_In_opt_ PVOID TdiEventContext, _In_opt_ CONNECTION_CONTEXT ConnectionContext, _In_ ULONG ReceiveFlags, _In_ ULONG BytesIndicated, _In_ ULONG BytesAvailable, _Out_ ULONG *BytesTaken, _In_ PVOID Tsdu, _Out_opt_ PIRP *IoRequestPacket)
struct _TDI_REQUEST_KERNEL_ACCEPT * PTDI_REQUEST_KERNEL_ACCEPT
TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_CONNECT
TDIKRNLAPI NTSTATUS NTAPI TdiDefaultReceiveHandler(_In_opt_ PVOID TdiEventContext, _In_opt_ CONNECTION_CONTEXT ConnectionContext, _In_ ULONG ReceiveFlags, _In_ ULONG BytesIndicated, _In_ ULONG BytesAvailable, _Out_ ULONG *BytesTaken, _In_ PVOID Tsdu, _Out_opt_ PIRP *IoRequestPacket)
VOID(NTAPI * TDI_DEL_ADDRESS_HANDLER_V2)(_In_ PTA_ADDRESS Address, _In_ PUNICODE_STRING DeviceName, _In_ PTDI_PNP_CONTEXT Context)
struct _TDI_REQUEST_KERNEL_ACCEPT TDI_REQUEST_KERNEL_ACCEPT
struct _TDI_REQUEST_KERNEL_SENDDG TDI_REQUEST_KERNEL_SENDDG
TDI_REQUEST_KERNEL * PTDI_REQUEST_KERNEL_DISASSOCIATE
_In_ PNET_PNP_EVENT PowerEvent
struct _TDI_REQUEST_KERNEL_QUERY_INFO TDI_REQUEST_KERNEL_QUERY_INFORMATION
struct _TDI_REQUEST_KERNEL_SEND TDI_REQUEST_KERNEL_SEND
_Out_ HANDLE * ProviderHandle
_In_ PNET_PNP_EVENT _In_ NTSTATUS Status
TDIKRNLAPI NTSTATUS NTAPI TdiDefaultErrorHandler(_In_opt_ PVOID TdiEventContext, _In_ NTSTATUS Status)
TDIKRNLAPI NTSTATUS NTAPI TdiDefaultChainedRcvDatagramHandler(_In_opt_ PVOID TdiEventContext, _In_ LONG SourceAddressLength, _In_reads_bytes_(SourceAddressLength) PVOID SourceAddress, _In_ LONG OptionsLength, _In_reads_bytes_opt_(OptionsLength) PVOID Options, _In_ ULONG ReceiveDatagramFlags, _In_ ULONG ReceiveDatagramLength, _In_ ULONG StartingOffset, _In_ PMDL Tsdu, _In_ PVOID TsduDescriptor)
struct _TDI_PNP_CONTEXT TDI_PNP_CONTEXT
_In_ ULONG _In_ ULONG _In_ PMDL DestinationMdlChain
VOID(NTAPI * ProviderPnPPowerComplete)(_In_ PNET_PNP_EVENT NetEvent, _In_ NTSTATUS ProviderStatus)
NTSTATUS(NTAPI * TDI_PNP_POWER_HANDLER)(_In_ PUNICODE_STRING DeviceName, _In_ PNET_PNP_EVENT PowerEvent, _In_ PTDI_PNP_CONTEXT Context1, _In_ PTDI_PNP_CONTEXT Context2)
_In_ PUNICODE_STRING _In_ PTDI_PNP_CONTEXT Context
struct _TDI_REQUEST_KERNEL_RECEIVEDG * PTDI_REQUEST_KERNEL_RECEIVEDG
TDIKRNLAPI NTSTATUS NTAPI TdiDefaultRcvExpeditedHandler(_In_opt_ PVOID TdiEventContext, _In_opt_ CONNECTION_CONTEXT ConnectionContext, _In_ ULONG ReceiveFlags, _In_ ULONG BytesIndicated, _In_ ULONG BytesAvailable, _Out_ ULONG *BytesTaken, _In_ PVOID Tsdu, _Out_opt_ PIRP *IoRequestPacket)
NTSTATUS(NTAPI * PTDI_IND_CHAINED_RECEIVE_DATAGRAM)(_In_opt_ PVOID TdiEventContext, _In_ LONG SourceAddressLength, _In_reads_bytes_(SourceAddressLength) PVOID SourceAddress, _In_ LONG OptionsLength, _In_reads_bytes_opt_(OptionsLength) PVOID Options, _In_ ULONG ReceiveDatagramFlags, _In_ ULONG ReceiveDatagramLength, _In_ ULONG StartingOffset, _In_ PMDL Tsdu, _In_ PVOID TsduDescriptor)
TDIKRNLAPI NTSTATUS NTAPI TdiDefaultRcvDatagramHandler(_In_opt_ PVOID TdiEventContext, _In_ LONG SourceAddressLength, _In_reads_bytes_(SourceAddressLength) PVOID SourceAddress, _In_ LONG OptionsLength, _In_reads_bytes_opt_(OptionsLength) PVOID Options, _In_ ULONG ReceiveDatagramFlags, _In_ ULONG BytesIndicated, _In_ ULONG BytesAvailable, _Out_ ULONG *BytesTaken, _In_ PVOID Tsdu, _Out_opt_ PIRP *IoRequestPacket)
_In_ PNET_PNP_EVENT _In_ PTDI_PNP_CONTEXT _In_ PTDI_PNP_CONTEXT _In_ ProviderPnPPowerComplete ProtocolCompletionHandler
TDI_CLIENT_INTERFACE_INFO * PTDI_CLIENT_INTERFACE_INFO
_In_ PNET_PNP_EVENT _In_ PTDI_PNP_CONTEXT Context1
struct _TDI_REQUEST_KERNEL_SENDDG * PTDI_REQUEST_KERNEL_SENDDG
struct _TDI_REQUEST_KERNEL_ASSOCIATE TDI_REQUEST_KERNEL_ASSOCIATE
TDIKRNLAPI VOID NTAPI TdiMapBuffer(_In_ PMDL MdlChain)
TDIKRNLAPI NTSTATUS NTAPI TdiDeregisterAddressChangeHandler(_In_ HANDLE BindingHandle)
TDIKRNLAPI NTSTATUS NTAPI TdiDefaultChainedRcvExpeditedHandler(_In_opt_ PVOID TdiEventContext, _In_opt_ CONNECTION_CONTEXT ConnectionContext, _In_ ULONG ReceiveFlags, _In_ ULONG ReceiveLength, _In_ ULONG StartingOffset, _In_ PMDL Tsdu, _In_ PVOID TsduDescriptor)
TDIKRNLAPI NTSTATUS NTAPI TdiRegisterAddressChangeHandler(_In_ TDI_ADD_ADDRESS_HANDLER AddHandler, _In_ TDI_DEL_ADDRESS_HANDLER DeleteHandler, _Out_ HANDLE *BindingHandle)
_In_ ULONG _In_ ULONG SourceBytesToCopy
TDI20_CLIENT_INTERFACE_INFO TDI_CLIENT_INTERFACE_INFO
TDIKRNLAPI NTSTATUS NTAPI TdiRegisterNotificationHandler(_In_ TDI_BIND_HANDLER BindHandler, _In_ TDI_UNBIND_HANDLER UnbindHandler, _Out_ HANDLE *BindingHandle)
@ TDI_PNP_OP_ADD_IGNORE_BINDING
@ TDI_PNP_OP_DELETE_IGNORE_BINDING
@ TDI_PNP_OP_PROVIDERREADY
struct _TDI_REQUEST_KERNEL_SET_INFO * PTDI_REQUEST_KERNEL_SET_INFORMATION
struct _TDI20_CLIENT_INTERFACE_INFO TDI20_CLIENT_INTERFACE_INFO
VOID(NTAPI * TDI_BINDING_HANDLER)(_In_ TDI_PNP_OPCODE PnPOpcode, _In_ PUNICODE_STRING DeviceName, _In_ PWSTR MultiSZBindList)
VOID(NTAPI * TDI_DEL_ADDRESS_HANDLER)(_In_ PTA_ADDRESS Address)
struct _TDI_REQUEST_KERNEL_RECEIVE TDI_REQUEST_KERNEL_RECEIVE
_In_ PIRP _In_ PIO_STACK_LOCATION IrpSp
TDI_REQUEST_KERNEL * PTDI_REQUEST_KERNEL_CONNECT
VOID(NTAPI * TDI_ADD_ADDRESS_HANDLER_V2)(_In_ PTA_ADDRESS Address, _In_ PUNICODE_STRING DeviceName, _In_ PTDI_PNP_CONTEXT Context)
NTSTATUS(NTAPI * PTDI_IND_CHAINED_RECEIVE)(_In_opt_ PVOID TdiEventContext, _In_opt_ CONNECTION_CONTEXT ConnectionContext, _In_ ULONG ReceiveFlags, _In_ ULONG ReceiveLength, _In_ ULONG StartingOffset, _In_ PMDL Tsdu, _In_ PVOID TsduDescriptor)
_In_ ULONG _In_ ULONG _In_ PMDL _In_ ULONG _Out_ PULONG BytesCopied
TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_DISCONNECT
TDIKRNLAPI VOID NTAPI TdiUnmapBuffer(_In_ PMDL MdlChain)
NTSTATUS(NTAPI * PTDI_IND_ERROR)(_In_opt_ PVOID TdiEventContext, _In_ NTSTATUS Status)
struct _TDI_REQUEST_KERNEL_SET_EVENT * PTDI_REQUEST_KERNEL_SET_EVENT
struct _TDI_PNP_CONTEXT * PTDI_PNP_CONTEXT
NTSTATUS(NTAPI * PTDI_IND_CHAINED_RECEIVE_EXPEDITED)(_In_opt_ PVOID TdiEventContext, _In_opt_ CONNECTION_CONTEXT ConnectionContext, _In_ ULONG ReceiveFlags, _In_ ULONG ReceiveLength, _In_ ULONG StartingOffset, _In_ PMDL Tsdu, _In_ PVOID TsduDescriptor)
struct _TDI_REQUEST_KERNEL * PTDI_REQUEST_KERNEL
enum _TDI_PNP_OPCODE TDI_PNP_OPCODE
struct _TDI20_CLIENT_INTERFACE_INFO * PTDI20_CLIENT_INTERFACE_INFO
TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_DISASSOCIATE
VOID(NTAPI * TDI_BIND_HANDLER)(_In_ PUNICODE_STRING DeviceName)
struct _TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL
struct _TDI_REQUEST_KERNEL_RECEIVE * PTDI_REQUEST_KERNEL_RECEIVE
_In_ ULONG _Out_ HANDLE * BindingHandle
TDIKRNLAPI NTSTATUS NTAPI TdiDefaultDisconnectHandler(_In_opt_ PVOID TdiEventContext, _In_opt_ CONNECTION_CONTEXT ConnectionContext, _In_ LONG DisconnectDataLength, _In_reads_bytes_opt_(DisconnectDataLength) PVOID DisconnectData, _In_ LONG DisconnectInformationLength, _In_reads_bytes_opt_(DisconnectInformationLength) PVOID DisconnectInformation, _In_ ULONG DisconnectFlags)
NTSTATUS(NTAPI * PTDI_IND_RECEIVE_DATAGRAM)(_In_opt_ PVOID TdiEventContext, _In_ LONG SourceAddressLength, _In_reads_bytes_(SourceAddressLength) PVOID SourceAddress, _In_ LONG OptionsLength, _In_reads_bytes_opt_(OptionsLength) PVOID Options, _In_ ULONG ReceiveDatagramFlags, _In_ ULONG BytesIndicated, _In_ ULONG BytesAvailable, _Out_ ULONG *BytesTaken, _In_ PVOID Tsdu, _Out_opt_ PIRP *IoRequestPacket)
NTSTATUS(NTAPI * PTDI_IND_ERROR_EX)(_In_opt_ PVOID TdiEventContext, _In_ NTSTATUS Status, _In_ PVOID Buffer)
_In_ ULONG InterfaceInfoSize
_In_ PUNICODE_STRING _In_ PTDI_PNP_CONTEXT _Out_ HANDLE * AddrRegistrationHandle
struct _TDI_REQUEST_KERNEL_SEND * PTDI_REQUEST_KERNEL_SEND
TDIKRNLAPI NTSTATUS NTAPI TdiDefaultChainedReceiveHandler(_In_opt_ PVOID TdiEventContext, _In_opt_ CONNECTION_CONTEXT ConnectionContext, _In_ ULONG ReceiveFlags, _In_ ULONG ReceiveLength, _In_ ULONG StartingOffset, _In_ PMDL Tsdu, _In_ PVOID TsduDescriptor)
NTSTATUS(NTAPI * PTDI_IND_RECEIVE)(_In_opt_ PVOID TdiEventContext, _In_opt_ CONNECTION_CONTEXT ConnectionContext, _In_ ULONG ReceiveFlags, _In_ ULONG BytesIndicated, _In_ ULONG BytesAvailable, _Out_ ULONG *BytesTaken, _In_ PVOID Tsdu, _Out_opt_ PIRP *IoRequestPacket)
struct _TDI_REQUEST_KERNEL_QUERY_INFO * PTDI_REQUEST_KERNEL_QUERY_INFORMATION
TDI_REQUEST_KERNEL * PTDI_REQUEST_KERNEL_LISTEN
NTSTATUS(NTAPI * PTDI_IND_CONNECT)(_In_opt_ PVOID TdiEventContext, _In_ LONG RemoteAddressLength, _In_reads_bytes_(RemoteAddressLength) PVOID RemoteAddress, _In_ LONG UserDataLength, _In_reads_bytes_opt_(UserDataLength) PVOID UserData, _In_ LONG OptionsLength, _In_reads_bytes_opt_(OptionsLength) PVOID Options, _Out_ CONNECTION_CONTEXT *ConnectionContext, _Out_ PIRP *AcceptIrp)
_In_ ULONG _In_ ULONG _In_ ULONG DestinationBufferSize
_Out_ HANDLE * DevRegistrationHandle
_In_ PNET_PNP_EVENT _In_ PTDI_PNP_CONTEXT _In_ PTDI_PNP_CONTEXT Context2
struct _TDI_REQUEST_KERNEL_RECEIVEDG TDI_REQUEST_KERNEL_RECEIVEDG
struct _TDI_REQUEST_KERNEL_ASSOCIATE * PTDI_REQUEST_KERNEL_ASSOCIATE
TDIKRNLAPI VOID NTAPI TdiBuildNetbiosAddress(_In_ PUCHAR NetbiosName, _In_ BOOLEAN IsGroupName, _Inout_ PTA_NETBIOS_ADDRESS NetworkName)
_In_ PUNICODE_STRING DeviceName
struct _TDI_REQUEST_KERNEL_SET_INFO TDI_REQUEST_KERNEL_SET_INFORMATION
TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_LISTEN
VOID(NTAPI * TDI_ADD_ADDRESS_HANDLER)(_In_ PTA_ADDRESS Address)
TDIKRNLAPI NTSTATUS NTAPI TdiDefaultSendPossibleHandler(_In_opt_ PVOID TdiEventContext, _In_opt_ PVOID ConnectionContext, _In_ ULONG BytesAvailable)
struct _TDI_REQUEST_KERNEL_SET_EVENT TDI_REQUEST_KERNEL_SET_EVENT
TDIKRNLAPI NTSTATUS NTAPI TdiDefaultConnectHandler(_In_opt_ PVOID TdiEventContext, _In_ LONG RemoteAddressLength, _In_reads_bytes_(RemoteAddressLength) PVOID RemoteAddress, _In_ LONG UserDataLength, _In_reads_bytes_opt_(UserDataLength) PVOID UserData, _In_ LONG OptionsLength, _In_reads_bytes_opt_(OptionsLength) PVOID Options, _Out_ CONNECTION_CONTEXT *ConnectionContext, _Out_ PIRP *AcceptIrp)
TDIKRNLAPI BOOLEAN NTAPI TdiMatchPdoWithChainedReceiveContext(_In_ PVOID TsduDescriptor, _In_ PVOID PDO)
TDIKRNLAPI NTSTATUS NTAPI TdiBuildNetbiosAddressEa(_Out_ PUCHAR Buffer, _In_ BOOLEAN IsGroupName, _In_ PUCHAR NetbiosName)
VOID(NTAPI * TDI_UNBIND_HANDLER)(_In_ PUNICODE_STRING DeviceName)
NTSTATUS(NTAPI * PTDI_IND_DISCONNECT)(_In_opt_ PVOID TdiEventContext, _In_opt_ CONNECTION_CONTEXT ConnectionContext, _In_ LONG DisconnectDataLength, _In_reads_bytes_opt_(DisconnectDataLength) PVOID DisconnectData, _In_ LONG DisconnectInformationLength, _In_reads_bytes_opt_(DisconnectInformationLength) PVOID DisconnectInformation, _In_ ULONG DisconnectFlags)
NTSTATUS(NTAPI * PTDI_IND_SEND_POSSIBLE)(_In_opt_ PVOID TdiEventContext, _In_opt_ PVOID ConnectionContext, _In_ ULONG BytesAvailable)
TDI_REQUEST_KERNEL * PTDI_REQUEST_KERNEL_DISCONNECT
_In_ PDEVICE_OBJECT DeviceObject
_In_ PWDFDEVICE_INIT _In_ PWDF_REMOVE_LOCK_OPTIONS Options
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
_Must_inspect_result_ _In_ WDFMEMORY _In_ size_t SourceOffset
_Must_inspect_result_ _In_ WDFMEMORY _In_ size_t DestinationOffset
_Must_inspect_result_ _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR RemoteAddress
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS SourceAddress