ReactOS  0.4.15-dev-1377-ga59cecd
tdikrnl.h File Reference
#include "tdi.h"
Include dependency graph for tdikrnl.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _TDI_REQUEST_KERNEL
 
struct  _TDI_REQUEST_KERNEL_ASSOCIATE
 
struct  _TDI_REQUEST_KERNEL_ACCEPT
 
struct  _TDI_REQUEST_KERNEL_RECEIVE
 
struct  _TDI_REQUEST_KERNEL_RECEIVEDG
 
struct  _TDI_REQUEST_KERNEL_SEND
 
struct  _TDI_REQUEST_KERNEL_SENDDG
 
struct  _TDI_REQUEST_KERNEL_SET_EVENT
 
struct  _TDI_REQUEST_KERNEL_QUERY_INFO
 
struct  _TDI_REQUEST_KERNEL_SET_INFO
 
struct  _TDI_PNP_CONTEXT
 
struct  _TDI20_CLIENT_INTERFACE_INFO
 

Macros

#define TDIKRNLAPI   DECLSPEC_IMPORT
 
#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
 
#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)
 
#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
 
#define TdiBuildBaseIrp( bIrp, bDevObj, bFileObj, bCompRoutine, bContxt, bIrpSp, bMinor)
 
#define TdiBuildAccept( Irp, DevObj, FileObj, CompRoutine, Contxt, RequestConnectionInfo, ReturnConnectionInfo)
 
#define TdiBuildAction( Irp, DevObj, FileObj, CompRoutine, Contxt, MdlAddr)
 
#define TdiBuildAssociateAddress( Irp, DevObj, FileObj, CompRoutine, Contxt, AddrHandle)
 
#define TdiBuildConnect( Irp, DevObj, FileObj, CompRoutine, Contxt, Time, RequestConnectionInfo, ReturnConnectionInfo)
 
#define TdiBuildDisassociateAddress( Irp, DevObj, FileObj, CompRoutine, Contxt)
 
#define TdiBuildDisconnect( Irp, DevObj, FileObj, CompRoutine, Contxt, Time, Flags, RequestConnectionInfo, ReturnConnectionInfo)
 
#define TdiBuildInternalDeviceControlIrp(IrpSubFunction, DeviceObject, FileObject, Event, IoStatusBlock)
 
#define TdiBuildListen( Irp, DevObj, FileObj, CompRoutine, Contxt, Flags, RequestConnectionInfo, ReturnConnectionInfo)
 
#define TdiBuildQueryInformation( Irp, DevObj, FileObj, CompRoutine, Contxt, QType, MdlAddr)
 
#define TdiBuildReceive( Irp, DevObj, FileObj, CompRoutine, Contxt, MdlAddr, InFlags, ReceiveLen)
 
#define TdiBuildReceiveDatagram( Irp, DevObj, FileObj, CompRoutine, Contxt, MdlAddr, ReceiveLen, ReceiveDatagramInfo, ReturnInfo, InFlags)
 
#define TdiBuildSend( Irp, DevObj, FileObj, CompRoutine, Contxt, MdlAddr, InFlags, SendLen)
 
#define TdiBuildSendDatagram( Irp, DevObj, FileObj, CompRoutine, Contxt, MdlAddr, SendLen, SendDatagramInfo)
 
#define TdiBuildSetEventHandler( Irp, DevObj, FileObj, CompRoutine, Contxt, InEventType, InEventHandler, InEventContext)
 
#define TdiBuildSetInformation( Irp, DevObj, FileObj, CompRoutine, Contxt, SType, MdlAddr)
 
#define TDI_CURRENT_MAJOR_VERSION   2
 
#define TDI_CURRENT_MINOR_VERSION   0
 
#define TDI_CURRENT_VERSION
 
#define TDI_VERSION_ONE   0x0001
 
#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
 
#define TdiCompleteRequest(Irp, Status)
 
#define TdiCopyLookaheadData(Destination, Source, Length, ReceiveFlags)   RtlCopyMemory(Destination, Source, Length)
 

Typedefs

typedef struct _TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL
 
typedef struct _TDI_REQUEST_KERNELPTDI_REQUEST_KERNEL
 
typedef struct _TDI_REQUEST_KERNEL_ASSOCIATE TDI_REQUEST_KERNEL_ASSOCIATE
 
typedef struct _TDI_REQUEST_KERNEL_ASSOCIATEPTDI_REQUEST_KERNEL_ASSOCIATE
 
typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_DISASSOCIATE
 
typedef TDI_REQUEST_KERNELPTDI_REQUEST_KERNEL_DISASSOCIATE
 
typedef struct _TDI_REQUEST_KERNEL_ACCEPT TDI_REQUEST_KERNEL_ACCEPT
 
typedef struct _TDI_REQUEST_KERNEL_ACCEPTPTDI_REQUEST_KERNEL_ACCEPT
 
typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_CONNECT
 
typedef TDI_REQUEST_KERNELPTDI_REQUEST_KERNEL_CONNECT
 
typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_DISCONNECT
 
typedef TDI_REQUEST_KERNELPTDI_REQUEST_KERNEL_DISCONNECT
 
typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_LISTEN
 
typedef TDI_REQUEST_KERNELPTDI_REQUEST_KERNEL_LISTEN
 
typedef struct _TDI_REQUEST_KERNEL_RECEIVE TDI_REQUEST_KERNEL_RECEIVE
 
typedef struct _TDI_REQUEST_KERNEL_RECEIVEPTDI_REQUEST_KERNEL_RECEIVE
 
typedef struct _TDI_REQUEST_KERNEL_RECEIVEDG TDI_REQUEST_KERNEL_RECEIVEDG
 
typedef struct _TDI_REQUEST_KERNEL_RECEIVEDGPTDI_REQUEST_KERNEL_RECEIVEDG
 
typedef struct _TDI_REQUEST_KERNEL_SEND TDI_REQUEST_KERNEL_SEND
 
typedef struct _TDI_REQUEST_KERNEL_SENDPTDI_REQUEST_KERNEL_SEND
 
typedef struct _TDI_REQUEST_KERNEL_SENDDG TDI_REQUEST_KERNEL_SENDDG
 
typedef struct _TDI_REQUEST_KERNEL_SENDDGPTDI_REQUEST_KERNEL_SENDDG
 
typedef struct _TDI_REQUEST_KERNEL_SET_EVENT TDI_REQUEST_KERNEL_SET_EVENT
 
typedef struct _TDI_REQUEST_KERNEL_SET_EVENTPTDI_REQUEST_KERNEL_SET_EVENT
 
typedef struct _TDI_REQUEST_KERNEL_QUERY_INFO TDI_REQUEST_KERNEL_QUERY_INFORMATION
 
typedef struct _TDI_REQUEST_KERNEL_QUERY_INFOPTDI_REQUEST_KERNEL_QUERY_INFORMATION
 
typedef struct _TDI_REQUEST_KERNEL_SET_INFO TDI_REQUEST_KERNEL_SET_INFORMATION
 
typedef struct _TDI_REQUEST_KERNEL_SET_INFOPTDI_REQUEST_KERNEL_SET_INFORMATION
 
typedef NTSTATUS(NTAPIPTDI_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)
 
typedef NTSTATUS(NTAPIPTDI_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)
 
typedef NTSTATUS(NTAPIPTDI_IND_ERROR) (_In_opt_ PVOID TdiEventContext, _In_ NTSTATUS Status)
 
typedef NTSTATUS(NTAPIPTDI_IND_ERROR_EX) (_In_opt_ PVOID TdiEventContext, _In_ NTSTATUS Status, _In_ PVOID Buffer)
 
typedef NTSTATUS(NTAPIPTDI_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)
 
typedef NTSTATUS(NTAPIPTDI_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)
 
typedef NTSTATUS(NTAPIPTDI_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)
 
typedef NTSTATUS(NTAPIPTDI_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)
 
typedef NTSTATUS(NTAPIPTDI_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)
 
typedef NTSTATUS(NTAPIPTDI_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)
 
typedef NTSTATUS(NTAPIPTDI_IND_SEND_POSSIBLE) (_In_opt_ PVOID TdiEventContext, _In_opt_ PVOID ConnectionContext, _In_ ULONG BytesAvailable)
 
typedef enum _TDI_PNP_OPCODE TDI_PNP_OPCODE
 
typedef struct _TDI_PNP_CONTEXT TDI_PNP_CONTEXT
 
typedef struct _TDI_PNP_CONTEXTPTDI_PNP_CONTEXT
 
typedef VOID(NTAPITDI_ADD_ADDRESS_HANDLER) (_In_ PTA_ADDRESS Address)
 
typedef VOID(NTAPITDI_ADD_ADDRESS_HANDLER_V2) (_In_ PTA_ADDRESS Address, _In_ PUNICODE_STRING DeviceName, _In_ PTDI_PNP_CONTEXT Context)
 
typedef VOID(NTAPITDI_BINDING_HANDLER) (_In_ TDI_PNP_OPCODE PnPOpcode, _In_ PUNICODE_STRING DeviceName, _In_ PWSTR MultiSZBindList)
 
typedef VOID(NTAPITDI_BIND_HANDLER) (_In_ PUNICODE_STRING DeviceName)
 
typedef VOID(NTAPITDI_DEL_ADDRESS_HANDLER) (_In_ PTA_ADDRESS Address)
 
typedef VOID(NTAPITDI_DEL_ADDRESS_HANDLER_V2) (_In_ PTA_ADDRESS Address, _In_ PUNICODE_STRING DeviceName, _In_ PTDI_PNP_CONTEXT Context)
 
typedef NTSTATUS(NTAPITDI_PNP_POWER_HANDLER) (_In_ PUNICODE_STRING DeviceName, _In_ PNET_PNP_EVENT PowerEvent, _In_ PTDI_PNP_CONTEXT Context1, _In_ PTDI_PNP_CONTEXT Context2)
 
typedef VOID(NTAPITDI_UNBIND_HANDLER) (_In_ PUNICODE_STRING DeviceName)
 
typedef VOID(NTAPIProviderPnPPowerComplete) (_In_ PNET_PNP_EVENT NetEvent, _In_ NTSTATUS ProviderStatus)
 
typedef struct _TDI20_CLIENT_INTERFACE_INFO TDI20_CLIENT_INTERFACE_INFO
 
typedef struct _TDI20_CLIENT_INTERFACE_INFOPTDI20_CLIENT_INTERFACE_INFO
 
typedef TDI20_CLIENT_INTERFACE_INFO TDI_CLIENT_INTERFACE_INFO
 
typedef TDI_CLIENT_INTERFACE_INFOPTDI_CLIENT_INTERFACE_INFO
 

Enumerations

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
}
 

Functions

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 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)
 
TDIKRNLAPI NTSTATUS NTAPI TdiDefaultErrorHandler (_In_opt_ PVOID TdiEventContext, _In_ NTSTATUS Status)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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 TdiDefaultSendPossibleHandler (_In_opt_ PVOID TdiEventContext, _In_opt_ PVOID ConnectionContext, _In_ ULONG BytesAvailable)
 
TDIKRNLAPI VOID NTAPI TdiBuildNetbiosAddress (_In_ PUCHAR NetbiosName, _In_ BOOLEAN IsGroupName, _Inout_ PTA_NETBIOS_ADDRESS NetworkName)
 
TDIKRNLAPI NTSTATUS NTAPI TdiBuildNetbiosAddressEa (_Out_ PUCHAR Buffer, _In_ BOOLEAN IsGroupName, _In_ PUCHAR NetbiosName)
 
 _IRQL_requires_max_ (DISPATCH_LEVEL) TDIKRNLAPI NTSTATUS NTAPI TdiCopyBufferToMdl(_In_ PVOID SourceBuffer
 
_In_ ULONG _Out_writes_bytes_ (DestinationBufferSize) PVOID DestinationBuffer
 
TDIKRNLAPI NTSTATUS NTAPI TdiDeregisterAddressChangeHandler (_In_ HANDLE BindingHandle)
 
 _IRQL_requires_max_ (APC_LEVEL) TDIKRNLAPI NTSTATUS NTAPI TdiDeregisterDeviceObject(_In_ HANDLE DevRegistrationHandle)
 
 _IRQL_requires_max_ (PASSIVE_LEVEL) TDIKRNLAPI VOID NTAPI TdiInitialize(VOID)
 
TDIKRNLAPI VOID NTAPI TdiMapBuffer (_In_ PMDL MdlChain)
 
TDIKRNLAPI BOOLEAN NTAPI TdiMatchPdoWithChainedReceiveContext (_In_ PVOID TsduDescriptor, _In_ PVOID PDO)
 
TDIKRNLAPI NTSTATUS NTAPI TdiRegisterAddressChangeHandler (_In_ TDI_ADD_ADDRESS_HANDLER AddHandler, _In_ TDI_DEL_ADDRESS_HANDLER DeleteHandler, _Out_ HANDLE *BindingHandle)
 
TDIKRNLAPI NTSTATUS NTAPI TdiRegisterNotificationHandler (_In_ TDI_BIND_HANDLER BindHandler, _In_ TDI_UNBIND_HANDLER UnbindHandler, _Out_ HANDLE *BindingHandle)
 
TDIKRNLAPI VOID NTAPI TdiUnmapBuffer (_In_ PMDL MdlChain)
 

Variables

_In_ ULONG SourceOffset
 
_In_ ULONG _In_ ULONG SourceBytesToCopy
 
_In_ ULONG _In_ ULONG _In_ PMDL DestinationMdlChain
 
_In_ ULONG _In_ ULONG _In_ PMDL _In_ ULONG DestinationOffset
 
_In_ ULONG _In_ ULONG _In_ PMDL _In_ ULONG _Out_ PULONG BytesCopied
 
_In_ ULONG _In_ ULONG _In_ ULONG DestinationBufferSize
 
_In_ PIRP Irp
 
_In_ PIRP _In_ PIO_STACK_LOCATION IrpSp
 
_In_ PNET_PNP_EVENT PowerEvent
 
_In_ PNET_PNP_EVENT _In_ NTSTATUS Status
 
_In_ PNET_PNP_EVENT _In_ PTDI_PNP_CONTEXT Context1
 
_In_ PNET_PNP_EVENT _In_ PTDI_PNP_CONTEXT _In_ PTDI_PNP_CONTEXT Context2
 
_In_ PNET_PNP_EVENT _In_ PTDI_PNP_CONTEXT _In_ PTDI_PNP_CONTEXT _In_ ProviderPnPPowerComplete ProtocolCompletionHandler
 
_Out_ HANDLEDevRegistrationHandle
 
_In_ PUNICODE_STRING DeviceName
 
_In_ PUNICODE_STRING _In_ PTDI_PNP_CONTEXT Context
 
_In_ PUNICODE_STRING _In_ PTDI_PNP_CONTEXT _Out_ HANDLEAddrRegistrationHandle
 
_In_ ULONG InterfaceInfoSize
 
_In_ ULONG _Out_ HANDLEBindingHandle
 
_Out_ HANDLEProviderHandle
 
_In_ ULONG NumberOfTsdus
 

Macro Definition Documentation

◆ IOCTL_TDI_QUERY_DIRECT_SEND_HANDLER

#define IOCTL_TDI_QUERY_DIRECT_SEND_HANDLER   _TDI_CONTROL_CODE(0x80, METHOD_NEITHER)

Definition at line 70 of file tdikrnl.h.

◆ IOCTL_TDI_QUERY_DIRECT_SENDDG_HANDLER

#define IOCTL_TDI_QUERY_DIRECT_SENDDG_HANDLER   _TDI_CONTROL_CODE(0x81, METHOD_NEITHER)

Definition at line 71 of file tdikrnl.h.

◆ TDI_ACCEPT

#define TDI_ACCEPT   0x05

Definition at line 51 of file tdikrnl.h.

◆ TDI_ACTION

#define TDI_ACTION   0x0E

Definition at line 60 of file tdikrnl.h.

◆ TDI_ASSOCIATE_ADDRESS

#define TDI_ASSOCIATE_ADDRESS   0x01

Definition at line 47 of file tdikrnl.h.

◆ TDI_CONNECT

#define TDI_CONNECT   0x03

Definition at line 49 of file tdikrnl.h.

◆ TDI_CONNECTION_FILE

#define TDI_CONNECTION_FILE   2

Definition at line 66 of file tdikrnl.h.

◆ TDI_CONTROL_CHANNEL_FILE

#define TDI_CONTROL_CHANNEL_FILE   3

Definition at line 67 of file tdikrnl.h.

◆ TDI_CURRENT_MAJOR_VERSION

#define TDI_CURRENT_MAJOR_VERSION   2

Definition at line 838 of file tdikrnl.h.

◆ TDI_CURRENT_MINOR_VERSION

#define TDI_CURRENT_MINOR_VERSION   0

Definition at line 839 of file tdikrnl.h.

◆ TDI_CURRENT_VERSION

#define TDI_CURRENT_VERSION
Value:
#define TDI_CURRENT_MAJOR_VERSION
Definition: tdikrnl.h:838
#define TDI_CURRENT_MINOR_VERSION
Definition: tdikrnl.h:839

Definition at line 841 of file tdikrnl.h.

◆ TDI_DIRECT_SEND

#define TDI_DIRECT_SEND   0x27

Definition at line 62 of file tdikrnl.h.

◆ TDI_DIRECT_SEND_DATAGRAM

#define TDI_DIRECT_SEND_DATAGRAM   0x29

Definition at line 63 of file tdikrnl.h.

◆ TDI_DISASSOCIATE_ADDRESS

#define TDI_DISASSOCIATE_ADDRESS   0x02

Definition at line 48 of file tdikrnl.h.

◆ TDI_DISCONNECT

#define TDI_DISCONNECT   0x06

Definition at line 52 of file tdikrnl.h.

◆ TDI_EVENT_CHAINED_RECEIVE

#define TDI_EVENT_CHAINED_RECEIVE   7

Definition at line 153 of file tdikrnl.h.

◆ TDI_EVENT_CHAINED_RECEIVE_DATAGRAM

#define TDI_EVENT_CHAINED_RECEIVE_DATAGRAM   8

Definition at line 154 of file tdikrnl.h.

◆ TDI_EVENT_CHAINED_RECEIVE_EXPEDITED

#define TDI_EVENT_CHAINED_RECEIVE_EXPEDITED   9

Definition at line 155 of file tdikrnl.h.

◆ TDI_EVENT_CONNECT

#define TDI_EVENT_CONNECT   0

Definition at line 146 of file tdikrnl.h.

◆ TDI_EVENT_DISCONNECT

#define TDI_EVENT_DISCONNECT   1

Definition at line 147 of file tdikrnl.h.

◆ TDI_EVENT_ERROR

#define TDI_EVENT_ERROR   2

Definition at line 148 of file tdikrnl.h.

◆ TDI_EVENT_ERROR_EX

#define TDI_EVENT_ERROR_EX   10

Definition at line 156 of file tdikrnl.h.

◆ TDI_EVENT_RECEIVE

#define TDI_EVENT_RECEIVE   3

Definition at line 149 of file tdikrnl.h.

◆ TDI_EVENT_RECEIVE_DATAGRAM

#define TDI_EVENT_RECEIVE_DATAGRAM   4

Definition at line 150 of file tdikrnl.h.

◆ TDI_EVENT_RECEIVE_EXPEDITED

#define TDI_EVENT_RECEIVE_EXPEDITED   5

Definition at line 151 of file tdikrnl.h.

◆ TDI_EVENT_SEND_POSSIBLE

#define TDI_EVENT_SEND_POSSIBLE   6

Definition at line 152 of file tdikrnl.h.

◆ TDI_LISTEN

#define TDI_LISTEN   0x04

Definition at line 50 of file tdikrnl.h.

◆ TDI_PNP_CONTEXT_TYPE_FIRST_OR_LAST_IF

#define TDI_PNP_CONTEXT_TYPE_FIRST_OR_LAST_IF   0x4

Definition at line 862 of file tdikrnl.h.

◆ TDI_PNP_CONTEXT_TYPE_IF_ADDR

#define TDI_PNP_CONTEXT_TYPE_IF_ADDR   0x2

Definition at line 860 of file tdikrnl.h.

◆ TDI_PNP_CONTEXT_TYPE_IF_NAME

#define TDI_PNP_CONTEXT_TYPE_IF_NAME   0x1

Definition at line 859 of file tdikrnl.h.

◆ TDI_PNP_CONTEXT_TYPE_PDO

#define TDI_PNP_CONTEXT_TYPE_PDO   0x3

Definition at line 861 of file tdikrnl.h.

◆ TDI_QUERY_INFORMATION

#define TDI_QUERY_INFORMATION   0x0C

Definition at line 58 of file tdikrnl.h.

◆ TDI_RECEIVE

#define TDI_RECEIVE   0x08

Definition at line 54 of file tdikrnl.h.

◆ TDI_RECEIVE_DATAGRAM

#define TDI_RECEIVE_DATAGRAM   0x0A

Definition at line 56 of file tdikrnl.h.

◆ TDI_SEND

#define TDI_SEND   0x07

Definition at line 53 of file tdikrnl.h.

◆ TDI_SEND_DATAGRAM

#define TDI_SEND_DATAGRAM   0x09

Definition at line 55 of file tdikrnl.h.

◆ TDI_SET_EVENT_HANDLER

#define TDI_SET_EVENT_HANDLER   0x0B

Definition at line 57 of file tdikrnl.h.

◆ TDI_SET_INFORMATION

#define TDI_SET_INFORMATION   0x0D

Definition at line 59 of file tdikrnl.h.

◆ TDI_TRANSPORT_ADDRESS_FILE

#define TDI_TRANSPORT_ADDRESS_FILE   1

Definition at line 65 of file tdikrnl.h.

◆ TDI_VERSION_ONE

#define TDI_VERSION_ONE   0x0001

Definition at line 844 of file tdikrnl.h.

◆ TdiBuildAccept

#define TdiBuildAccept (   Irp,
  DevObj,
  FileObj,
  CompRoutine,
  Contxt,
  RequestConnectionInfo,
  ReturnConnectionInfo 
)
Value:
{ \
PTDI_REQUEST_KERNEL_ACCEPT _Request; \
PIO_STACK_LOCATION _IrpSp; \
\
TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
Contxt, _IrpSp, TDI_ACCEPT); \
\
_Request = (PTDI_REQUEST_KERNEL_ACCEPT)&_IrpSp->Parameters; \
_Request->RequestConnectionInformation = (RequestConnectionInfo); \
_Request->ReturnConnectionInformation = (ReturnConnectionInfo); \
}
struct _TDI_REQUEST_KERNEL_ACCEPT * PTDI_REQUEST_KERNEL_ACCEPT
#define TDI_ACCEPT
Definition: tdikrnl.h:51
#define TdiBuildBaseIrp( bIrp, bDevObj, bFileObj, bCompRoutine, bContxt, bIrpSp, bMinor)
Definition: tdikrnl.h:391
_In_ PIRP Irp
Definition: csq.h:116
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
Definition: iofuncs.h:2691

Definition at line 417 of file tdikrnl.h.

◆ TdiBuildAction

#define TdiBuildAction (   Irp,
  DevObj,
  FileObj,
  CompRoutine,
  Contxt,
  MdlAddr 
)
Value:
{ \
PIO_STACK_LOCATION _IrpSp; \
\
TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
Contxt, _IrpSp, TDI_ACTION); \
\
(Irp)->MdlAddress = (MdlAddr); \
}
#define TdiBuildBaseIrp( bIrp, bDevObj, bFileObj, bCompRoutine, bContxt, bIrpSp, bMinor)
Definition: tdikrnl.h:391
_In_ PIRP Irp
Definition: csq.h:116
#define TDI_ACTION
Definition: tdikrnl.h:60
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
Definition: iofuncs.h:2691
_In_ PIRP Irp
Definition: tdikrnl.h:1069

Definition at line 444 of file tdikrnl.h.

◆ TdiBuildAssociateAddress

#define TdiBuildAssociateAddress (   Irp,
  DevObj,
  FileObj,
  CompRoutine,
  Contxt,
  AddrHandle 
)
Value:
{ \
PTDI_REQUEST_KERNEL_ASSOCIATE _Request; \
PIO_STACK_LOCATION _IrpSp; \
\
TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
Contxt, _IrpSp, TDI_ASSOCIATE_ADDRESS); \
\
_Request = (PTDI_REQUEST_KERNEL_ASSOCIATE)&_IrpSp->Parameters; \
_Request->AddressHandle = (HANDLE)(AddrHandle); \
}
struct _TDI_REQUEST_KERNEL_ASSOCIATE * PTDI_REQUEST_KERNEL_ASSOCIATE
#define TDI_ASSOCIATE_ADDRESS
Definition: tdikrnl.h:47
#define TdiBuildBaseIrp( bIrp, bDevObj, bFileObj, bCompRoutine, bContxt, bIrpSp, bMinor)
Definition: tdikrnl.h:391
_In_ PIRP Irp
Definition: csq.h:116
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
Definition: iofuncs.h:2691

Definition at line 467 of file tdikrnl.h.

◆ TdiBuildBaseIrp

#define TdiBuildBaseIrp (   bIrp,
  bDevObj,
  bFileObj,
  bCompRoutine,
  bContxt,
  bIrpSp,
  bMinor 
)
Value:
{ \
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);\
} \
}
#define TRUE
Definition: types.h:120
#define IoSetCompletionRoutine(_Irp, _CompletionRoutine, _Context, _InvokeOnSuccess, _InvokeOnError, _InvokeOnCancel)
Definition: irp.cpp:498
#define FALSE
Definition: types.h:117
#define IRP_MJ_INTERNAL_DEVICE_CONTROL
#define NULL
Definition: types.h:112

Definition at line 391 of file tdikrnl.h.

◆ TdiBuildConnect

#define TdiBuildConnect (   Irp,
  DevObj,
  FileObj,
  CompRoutine,
  Contxt,
  Time,
  RequestConnectionInfo,
  ReturnConnectionInfo 
)
Value:
{ \
PTDI_REQUEST_KERNEL _Request; \
PIO_STACK_LOCATION _IrpSp; \
\
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); \
}
#define TdiBuildBaseIrp( bIrp, bDevObj, bFileObj, bCompRoutine, bContxt, bIrpSp, bMinor)
Definition: tdikrnl.h:391
_In_ PIRP Irp
Definition: csq.h:116
#define TDI_CONNECT
Definition: tdikrnl.h:49
void * PVOID
Definition: retypes.h:9
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
Definition: iofuncs.h:2691
struct _TDI_REQUEST_KERNEL * PTDI_REQUEST_KERNEL
static PLARGE_INTEGER Time
Definition: time.c:105

Definition at line 494 of file tdikrnl.h.

◆ TdiBuildDisassociateAddress

#define TdiBuildDisassociateAddress (   Irp,
  DevObj,
  FileObj,
  CompRoutine,
  Contxt 
)
Value:
{ \
PIO_STACK_LOCATION _IrpSp; \
\
TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
Contxt, _IrpSp, TDI_DISASSOCIATE_ADDRESS); \
}
#define TdiBuildBaseIrp( bIrp, bDevObj, bFileObj, bCompRoutine, bContxt, bIrpSp, bMinor)
Definition: tdikrnl.h:391
_In_ PIRP Irp
Definition: csq.h:116
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
Definition: iofuncs.h:2691
#define TDI_DISASSOCIATE_ADDRESS
Definition: tdikrnl.h:48

Definition at line 521 of file tdikrnl.h.

◆ TdiBuildDisconnect

#define TdiBuildDisconnect (   Irp,
  DevObj,
  FileObj,
  CompRoutine,
  Contxt,
  Time,
  Flags,
  RequestConnectionInfo,
  ReturnConnectionInfo 
)
Value:
{ \
PTDI_REQUEST_KERNEL _Request; \
PIO_STACK_LOCATION _IrpSp; \
\
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); \
}
#define TdiBuildBaseIrp( bIrp, bDevObj, bFileObj, bCompRoutine, bContxt, bIrpSp, bMinor)
Definition: tdikrnl.h:391
#define TDI_DISCONNECT
Definition: tdikrnl.h:52
_In_ PIRP Irp
Definition: csq.h:116
void * PVOID
Definition: retypes.h:9
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
Definition: iofuncs.h:2691
struct _TDI_REQUEST_KERNEL * PTDI_REQUEST_KERNEL
static PLARGE_INTEGER Time
Definition: time.c:105

Definition at line 545 of file tdikrnl.h.

◆ TdiBuildInternalDeviceControlIrp

#define TdiBuildInternalDeviceControlIrp (   IrpSubFunction,
  DeviceObject,
  FileObject,
  Event,
  IoStatusBlock 
)
Value:
IrpSubFunction, DeviceObject, \
NULL, 0, NULL, 0, \
#define TRUE
Definition: types.h:120
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
static OUT PIO_STATUS_BLOCK IoStatusBlock
Definition: pipe.c:75
#define NULL
Definition: types.h:112
PIRP NTAPI IoBuildDeviceIoControlRequest(IN ULONG IoControlCode, IN PDEVICE_OBJECT DeviceObject, IN PVOID InputBuffer, IN ULONG InputBufferLength, IN PVOID OutputBuffer, IN ULONG OutputBufferLength, IN BOOLEAN InternalDeviceIoControl, IN PKEVENT Event, IN PIO_STATUS_BLOCK IoStatusBlock)
Definition: irp.c:881

Definition at line 573 of file tdikrnl.h.

◆ TdiBuildListen

#define TdiBuildListen (   Irp,
  DevObj,
  FileObj,
  CompRoutine,
  Contxt,
  Flags,
  RequestConnectionInfo,
  ReturnConnectionInfo 
)
Value:
{ \
PTDI_REQUEST_KERNEL _Request; \
PIO_STACK_LOCATION _IrpSp; \
\
TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \
Contxt, _IrpSp, TDI_LISTEN); \
\
_Request = (PTDI_REQUEST_KERNEL)&_IrpSp->Parameters; \
_Request->RequestConnectionInformation = (RequestConnectionInfo); \
_Request->ReturnConnectionInformation = (ReturnConnectionInfo); \
_Request->RequestFlags = (Flags); \
}
#define TDI_LISTEN
Definition: tdikrnl.h:50
#define TdiBuildBaseIrp( bIrp, bDevObj, bFileObj, bCompRoutine, bContxt, bIrpSp, bMinor)
Definition: tdikrnl.h:391
_In_ PIRP Irp
Definition: csq.h:116
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
Definition: iofuncs.h:2691
struct _TDI_REQUEST_KERNEL * PTDI_REQUEST_KERNEL

Definition at line 593 of file tdikrnl.h.

◆ TdiBuildQueryInformation

#define TdiBuildQueryInformation (   Irp,
  DevObj,
  FileObj,
  CompRoutine,
  Contxt,
  QType,
  MdlAddr 
)
Value:
{ \
PTDI_REQUEST_KERNEL_QUERY_INFORMATION _Request; \
PIO_STACK_LOCATION _IrpSp; \
\
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); \
}
struct _TDI_REQUEST_KERNEL_QUERY_INFO * PTDI_REQUEST_KERNEL_QUERY_INFORMATION
#define TdiBuildBaseIrp( bIrp, bDevObj, bFileObj, bCompRoutine, bContxt, bIrpSp, bMinor)
Definition: tdikrnl.h:391
_In_ PIRP Irp
Definition: csq.h:116
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
Definition: iofuncs.h:2691
#define TDI_QUERY_INFORMATION
Definition: tdikrnl.h:58
_In_ PIRP Irp
Definition: tdikrnl.h:1069
#define NULL
Definition: types.h:112
unsigned int ULONG
Definition: retypes.h:1

Definition at line 638 of file tdikrnl.h.

◆ TdiBuildReceive

#define TdiBuildReceive (   Irp,
  DevObj,
  FileObj,
  CompRoutine,
  Contxt,
  MdlAddr,
  InFlags,
  ReceiveLen 
)
Value:
{ \
PTDI_REQUEST_KERNEL_RECEIVE _Request; \
PIO_STACK_LOCATION _IrpSp; \
\
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); \
}
#define TdiBuildBaseIrp( bIrp, bDevObj, bFileObj, bCompRoutine, bContxt, bIrpSp, bMinor)
Definition: tdikrnl.h:391
_In_ PIRP Irp
Definition: csq.h:116
#define TDI_RECEIVE
Definition: tdikrnl.h:54
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
Definition: iofuncs.h:2691
_In_ PIRP Irp
Definition: tdikrnl.h:1069
struct _TDI_REQUEST_KERNEL_RECEIVE * PTDI_REQUEST_KERNEL_RECEIVE

Definition at line 667 of file tdikrnl.h.

◆ TdiBuildReceiveDatagram

#define TdiBuildReceiveDatagram (   Irp,
  DevObj,
  FileObj,
  CompRoutine,
  Contxt,
  MdlAddr,
  ReceiveLen,
  ReceiveDatagramInfo,
  ReturnInfo,
  InFlags 
)
Value:
{ \
PTDI_REQUEST_KERNEL_RECEIVEDG _Request; \
PIO_STACK_LOCATION _IrpSp; \
\
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); \
}
struct _TDI_REQUEST_KERNEL_RECEIVEDG * PTDI_REQUEST_KERNEL_RECEIVEDG
#define TdiBuildBaseIrp( bIrp, bDevObj, bFileObj, bCompRoutine, bContxt, bIrpSp, bMinor)
Definition: tdikrnl.h:391
_In_ PIRP Irp
Definition: csq.h:116
#define TDI_RECEIVE_DATAGRAM
Definition: tdikrnl.h:56
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
Definition: iofuncs.h:2691
_In_ PIRP Irp
Definition: tdikrnl.h:1069

Definition at line 699 of file tdikrnl.h.

◆ TdiBuildSend

#define TdiBuildSend (   Irp,
  DevObj,
  FileObj,
  CompRoutine,
  Contxt,
  MdlAddr,
  InFlags,
  SendLen 
)
Value:
{ \
PTDI_REQUEST_KERNEL_SEND _Request; \
PIO_STACK_LOCATION _IrpSp; \
\
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); \
}
#define TdiBuildBaseIrp( bIrp, bDevObj, bFileObj, bCompRoutine, bContxt, bIrpSp, bMinor)
Definition: tdikrnl.h:391
_In_ PIRP Irp
Definition: csq.h:116
struct _TDI_REQUEST_KERNEL_SEND * PTDI_REQUEST_KERNEL_SEND
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
Definition: iofuncs.h:2691
_In_ PIRP Irp
Definition: tdikrnl.h:1069
#define TDI_SEND
Definition: tdikrnl.h:53

Definition at line 731 of file tdikrnl.h.

◆ TdiBuildSendDatagram

#define TdiBuildSendDatagram (   Irp,
  DevObj,
  FileObj,
  CompRoutine,
  Contxt,
  MdlAddr,
  SendLen,
  SendDatagramInfo 
)
Value:
{ \
PTDI_REQUEST_KERNEL_SENDDG _Request; \
PIO_STACK_LOCATION _IrpSp; \
\
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); \
}
#define TdiBuildBaseIrp( bIrp, bDevObj, bFileObj, bCompRoutine, bContxt, bIrpSp, bMinor)
Definition: tdikrnl.h:391
_In_ PIRP Irp
Definition: csq.h:116
struct _TDI_REQUEST_KERNEL_SENDDG * PTDI_REQUEST_KERNEL_SENDDG
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
Definition: iofuncs.h:2691
_In_ PIRP Irp
Definition: tdikrnl.h:1069
#define TDI_SEND_DATAGRAM
Definition: tdikrnl.h:55

Definition at line 761 of file tdikrnl.h.

◆ TdiBuildSetEventHandler

#define TdiBuildSetEventHandler (   Irp,
  DevObj,
  FileObj,
  CompRoutine,
  Contxt,
  InEventType,
  InEventHandler,
  InEventContext 
)
Value:
{ \
PTDI_REQUEST_KERNEL_SET_EVENT _Request; \
PIO_STACK_LOCATION _IrpSp; \
\
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); \
}
struct _TDI_REQUEST_KERNEL_SET_EVENT * PTDI_REQUEST_KERNEL_SET_EVENT
#define TdiBuildBaseIrp( bIrp, bDevObj, bFileObj, bCompRoutine, bContxt, bIrpSp, bMinor)
Definition: tdikrnl.h:391
_In_ PIRP Irp
Definition: csq.h:116
#define TDI_SET_EVENT_HANDLER
Definition: tdikrnl.h:57
void * PVOID
Definition: retypes.h:9
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
Definition: iofuncs.h:2691

Definition at line 791 of file tdikrnl.h.

◆ TdiBuildSetInformation

#define TdiBuildSetInformation (   Irp,
  DevObj,
  FileObj,
  CompRoutine,
  Contxt,
  SType,
  MdlAddr 
)
Value:
{ \
PTDI_REQUEST_KERNEL_SET_INFORMATION _Request; \
PIO_STACK_LOCATION _IrpSp; \
\
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); \
}
#define TdiBuildBaseIrp( bIrp, bDevObj, bFileObj, bCompRoutine, bContxt, bIrpSp, bMinor)
Definition: tdikrnl.h:391
#define TDI_SET_INFORMATION
Definition: tdikrnl.h:59
struct _TDI_REQUEST_KERNEL_SET_INFO * PTDI_REQUEST_KERNEL_SET_INFORMATION
_In_ PIRP Irp
Definition: csq.h:116
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
Definition: iofuncs.h:2691
_In_ PIRP Irp
Definition: tdikrnl.h:1069
#define NULL
Definition: types.h:112
unsigned int ULONG
Definition: retypes.h:1

Definition at line 820 of file tdikrnl.h.

◆ TdiCompleteRequest

#define TdiCompleteRequest (   Irp,
  Status 
)
Value:
{ \
(Irp)->IoStatus.Status = (Status); \
IoCompleteRequest((Irp), IO_NETWORK_INCREMENT); \
}
_In_ PIRP Irp
Definition: csq.h:116
#define IO_NETWORK_INCREMENT
Definition: tcpip.h:43
Status
Definition: gdiplustypes.h:24
_In_ PIRP Irp
Definition: tdikrnl.h:1069
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
Definition: mxum.h:155

Definition at line 958 of file tdikrnl.h.

◆ TdiCopyLookaheadData

#define TdiCopyLookaheadData (   Destination,
  Source,
  Length,
  ReceiveFlags 
)    RtlCopyMemory(Destination, Source, Length)

Definition at line 984 of file tdikrnl.h.

◆ TDIKRNLAPI

#define TDIKRNLAPI   DECLSPEC_IMPORT

Definition at line 35 of file tdikrnl.h.

Typedef Documentation

◆ ProviderPnPPowerComplete

typedef VOID(NTAPI * ProviderPnPPowerComplete) (_In_ PNET_PNP_EVENT NetEvent, _In_ NTSTATUS ProviderStatus)

Definition at line 912 of file tdikrnl.h.

◆ PTDI20_CLIENT_INTERFACE_INFO

◆ PTDI_CLIENT_INTERFACE_INFO

Definition at line 947 of file tdikrnl.h.

◆ PTDI_IND_CHAINED_RECEIVE

typedef 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)

Definition at line 302 of file tdikrnl.h.

◆ PTDI_IND_CHAINED_RECEIVE_DATAGRAM

typedef 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)

Definition at line 324 of file tdikrnl.h.

◆ PTDI_IND_CHAINED_RECEIVE_EXPEDITED

typedef 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)

Definition at line 352 of file tdikrnl.h.

◆ PTDI_IND_CONNECT

typedef 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)

Definition at line 159 of file tdikrnl.h.

◆ PTDI_IND_DISCONNECT

typedef 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)

Definition at line 185 of file tdikrnl.h.

◆ PTDI_IND_ERROR

typedef NTSTATUS(NTAPI * PTDI_IND_ERROR) (_In_opt_ PVOID TdiEventContext, _In_ NTSTATUS Status)

Definition at line 207 of file tdikrnl.h.

◆ PTDI_IND_ERROR_EX

typedef NTSTATUS(NTAPI * PTDI_IND_ERROR_EX) (_In_opt_ PVOID TdiEventContext, _In_ NTSTATUS Status, _In_ PVOID Buffer)

Definition at line 212 of file tdikrnl.h.

◆ PTDI_IND_RECEIVE

typedef 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)

Definition at line 225 of file tdikrnl.h.

◆ PTDI_IND_RECEIVE_DATAGRAM

typedef 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)

Definition at line 249 of file tdikrnl.h.

◆ PTDI_IND_RECEIVE_EXPEDITED

typedef 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)

Definition at line 278 of file tdikrnl.h.

◆ PTDI_IND_SEND_POSSIBLE

typedef NTSTATUS(NTAPI * PTDI_IND_SEND_POSSIBLE) (_In_opt_ PVOID TdiEventContext, _In_opt_ PVOID ConnectionContext, _In_ ULONG BytesAvailable)

Definition at line 374 of file tdikrnl.h.

◆ PTDI_PNP_CONTEXT

◆ PTDI_REQUEST_KERNEL

◆ PTDI_REQUEST_KERNEL_ACCEPT

◆ PTDI_REQUEST_KERNEL_ASSOCIATE

◆ PTDI_REQUEST_KERNEL_CONNECT

Definition at line 89 of file tdikrnl.h.

◆ PTDI_REQUEST_KERNEL_DISASSOCIATE

Definition at line 79 of file tdikrnl.h.

◆ PTDI_REQUEST_KERNEL_DISCONNECT

Definition at line 93 of file tdikrnl.h.

◆ PTDI_REQUEST_KERNEL_LISTEN

Definition at line 97 of file tdikrnl.h.

◆ PTDI_REQUEST_KERNEL_QUERY_INFORMATION

◆ PTDI_REQUEST_KERNEL_RECEIVE

◆ PTDI_REQUEST_KERNEL_RECEIVEDG

◆ PTDI_REQUEST_KERNEL_SEND

◆ PTDI_REQUEST_KERNEL_SENDDG

◆ PTDI_REQUEST_KERNEL_SET_EVENT

◆ PTDI_REQUEST_KERNEL_SET_INFORMATION

◆ TDI20_CLIENT_INTERFACE_INFO

◆ TDI_ADD_ADDRESS_HANDLER

typedef VOID(NTAPI * TDI_ADD_ADDRESS_HANDLER) (_In_ PTA_ADDRESS Address)

Definition at line 871 of file tdikrnl.h.

◆ TDI_ADD_ADDRESS_HANDLER_V2

Definition at line 875 of file tdikrnl.h.

◆ TDI_BIND_HANDLER

typedef VOID(NTAPI * TDI_BIND_HANDLER) (_In_ PUNICODE_STRING DeviceName)

Definition at line 887 of file tdikrnl.h.

◆ TDI_BINDING_HANDLER

typedef VOID(NTAPI * TDI_BINDING_HANDLER) (_In_ TDI_PNP_OPCODE PnPOpcode, _In_ PUNICODE_STRING DeviceName, _In_ PWSTR MultiSZBindList)

Definition at line 881 of file tdikrnl.h.

◆ TDI_CLIENT_INTERFACE_INFO

◆ TDI_DEL_ADDRESS_HANDLER

typedef VOID(NTAPI * TDI_DEL_ADDRESS_HANDLER) (_In_ PTA_ADDRESS Address)

Definition at line 891 of file tdikrnl.h.

◆ TDI_DEL_ADDRESS_HANDLER_V2

Definition at line 895 of file tdikrnl.h.

◆ TDI_PNP_CONTEXT

◆ TDI_PNP_OPCODE

◆ TDI_PNP_POWER_HANDLER

◆ TDI_REQUEST_KERNEL

◆ TDI_REQUEST_KERNEL_ACCEPT

◆ TDI_REQUEST_KERNEL_ASSOCIATE

◆ TDI_REQUEST_KERNEL_CONNECT

Definition at line 89 of file tdikrnl.h.

◆ TDI_REQUEST_KERNEL_DISASSOCIATE

Definition at line 79 of file tdikrnl.h.

◆ TDI_REQUEST_KERNEL_DISCONNECT

Definition at line 93 of file tdikrnl.h.

◆ TDI_REQUEST_KERNEL_LISTEN

Definition at line 97 of file tdikrnl.h.

◆ TDI_REQUEST_KERNEL_QUERY_INFORMATION

◆ TDI_REQUEST_KERNEL_RECEIVE

◆ TDI_REQUEST_KERNEL_RECEIVEDG

◆ TDI_REQUEST_KERNEL_SEND

◆ TDI_REQUEST_KERNEL_SENDDG

◆ TDI_REQUEST_KERNEL_SET_EVENT

◆ TDI_REQUEST_KERNEL_SET_INFORMATION

◆ TDI_UNBIND_HANDLER

typedef VOID(NTAPI * TDI_UNBIND_HANDLER) (_In_ PUNICODE_STRING DeviceName)

Definition at line 908 of file tdikrnl.h.

Enumeration Type Documentation

◆ _TDI_PNP_OPCODE

Enumerator
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 

Definition at line 846 of file tdikrnl.h.

Function Documentation

◆ _IRQL_requires_max_() [1/3]

_IRQL_requires_max_ ( DISPATCH_LEVEL  )

Definition at line 3557 of file common.c.

3587 {
3588  NTSTATUS status;
3589  BOOLEAN requestSent = FALSE;
3590 
3591  BOOLEAN shouldRetry = TRUE;
3592  PCDB cdb = (PCDB)DeviceExtension->PowerContext.Srb.Cdb;
3593  ULONG timeoutValue = DeviceExtension->TimeOutValue;
3594  ULONG retryCount = 1;
3595 
3596  // reset some fields.
3597  DeviceExtension->PowerContext.RetryIntervalIn100ns = 0;
3598  status = PowerContextReuseRequest(DeviceExtension);
3599  RequestClearSendTime(DeviceExtension->PowerContext.PowerRequest);
3600 
3601  if (!NT_SUCCESS(status))
3602  {
3603  return status;
3604  }
3605 
3606  // set proper timeout value and max retry count.
3607  switch(DeviceExtension->PowerContext.PowerChangeState.PowerDown)
3608  {
3612  break;
3613 
3614  case PowerDownDeviceLocked:
3615  // Case of issuing SYNC CACHE command. Do not use power irp timeout remaining time in this case
3616  // as we want to give best try on SYNC CACHE command.
3617  retryCount = MAXIMUM_RETRIES;
3618  timeoutValue = DeviceExtension->TimeOutValue;
3619  break;
3620 
3622  {
3623  // Case of issuing STOP UNIT command
3624  // As "Imme" bit is set to '1', this command should be completed in short time.
3625  // This command is at low importance, failure of this command has very small impact.
3626  ULONG secondsRemaining = 0;
3627 
3628 #if (WINVER >= 0x0601)
3629  // this API is introduced in Windows7
3630  PoQueryWatchdogTime(DeviceExtension->LowerPdo, &secondsRemaining);
3631 #endif
3632 
3633  if (secondsRemaining == 0)
3634  {
3635  // not able to retrieve remaining time from PoQueryWatchdogTime API, use default values.
3636  retryCount = MAXIMUM_RETRIES;
3637  timeoutValue = SCSI_CDROM_TIMEOUT;
3638  }
3639  else
3640  {
3641  // plan to leave about 30 seconds to lower level drivers if possible.
3642  if (secondsRemaining >= 32)
3643  {
3644  retryCount = (secondsRemaining - 30)/SCSI_CDROM_TIMEOUT + 1;
3645  timeoutValue = SCSI_CDROM_TIMEOUT;
3646 
3647  if (retryCount > MAXIMUM_RETRIES)
3648  {
3649  retryCount = MAXIMUM_RETRIES;
3650  }
3651 
3652  if (retryCount == 1)
3653  {
3654  timeoutValue = secondsRemaining - 30;
3655  }
3656  }
3657  else
3658  {
3659  // issue the command with minimal timeout value and do not retry on it.
3660  retryCount = 1;
3661  timeoutValue = 2;
3662  }
3663  }
3664  }
3665  break;
3666  default:
3667  NT_ASSERT( FALSE );
3669  return status;
3670  }
3671 
3672  DeviceExtension->PowerContext.RetryCount = retryCount;
3673 
3674  // issue command.
3675  while (shouldRetry)
3676  {
3677 
3678  // set SRB fields.
3679  DeviceExtension->PowerContext.Srb.SrbFlags = SRB_FLAGS_NO_DATA_TRANSFER |
3684 
3685  DeviceExtension->PowerContext.Srb.Function = SRB_FUNCTION_EXECUTE_SCSI;
3686  DeviceExtension->PowerContext.Srb.TimeOutValue = timeoutValue;
3687 
3688  if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceInitial)
3689  {
3690  DeviceExtension->PowerContext.Srb.Function = SRB_FUNCTION_LOCK_QUEUE;
3691  }
3692  else if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceLocked)
3693  {
3694  DeviceExtension->PowerContext.Srb.Function = SRB_FUNCTION_QUIESCE_DEVICE;
3695  }
3696  else if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceQuiesced)
3697  {
3698  // Case of issuing SYNC CACHE command.
3699  DeviceExtension->PowerContext.Srb.CdbLength = 10;
3700  cdb->SYNCHRONIZE_CACHE10.OperationCode = SCSIOP_SYNCHRONIZE_CACHE;
3701  }
3702  else if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceFlushed)
3703  {
3704  // Case of issuing STOP UNIT command.
3705  DeviceExtension->PowerContext.Srb.CdbLength = 6;
3706  cdb->START_STOP.OperationCode = SCSIOP_START_STOP_UNIT;
3707  cdb->START_STOP.Start = 0;
3708  cdb->START_STOP.Immediate = 1;
3709  }
3710  else if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceStopped)
3711  {
3712  DeviceExtension->PowerContext.Srb.Function = SRB_FUNCTION_UNLOCK_QUEUE;
3713  }
3714 
3715  // Set up completion routine and context if requested
3716  if (CompletionRoutine)
3717  {
3718  WdfRequestSetCompletionRoutine(DeviceExtension->PowerContext.PowerRequest,
3720  Context);
3721  }
3722 
3723  status = RequestSend(DeviceExtension,
3724  DeviceExtension->PowerContext.PowerRequest,
3725  DeviceExtension->IoTarget,
3727  &requestSent);
3728 
3729  if (requestSent)
3730  {
3731  if ((CompletionRoutine == NULL) &&
3732  (SRB_STATUS(DeviceExtension->PowerContext.Srb.SrbStatus) != SRB_STATUS_SUCCESS))
3733  {
3734  TracePrint((TRACE_LEVEL_ERROR,
3735  TRACE_FLAG_POWER,
3736  "%p\tError occured when issuing %s command to device. Srb %p, Status %x\n",
3737  DeviceExtension->PowerContext.PowerRequest,
3738  (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceQuiesced) ? "SYNC CACHE" : "STOP UNIT",
3739  &DeviceExtension->PowerContext.Srb,
3740  DeviceExtension->PowerContext.Srb.SrbStatus));
3741 
3742  NT_ASSERT(!(TEST_FLAG(DeviceExtension->PowerContext.Srb.SrbStatus, SRB_STATUS_QUEUE_FROZEN)));
3743 
3744  shouldRetry = RequestSenseInfoInterpret(DeviceExtension,
3745  DeviceExtension->PowerContext.PowerRequest,
3746  &(DeviceExtension->PowerContext.Srb),
3747  retryCount - DeviceExtension->PowerContext.RetryCount,
3748  &status,
3749  &(DeviceExtension->PowerContext.RetryIntervalIn100ns));
3750 
3751  if (shouldRetry && (DeviceExtension->PowerContext.RetryCount-- == 0))
3752  {
3753  shouldRetry = FALSE;
3754  }
3755  }
3756  else
3757  {
3758  // succeeded, do not need to retry.
3759  shouldRetry = FALSE;
3760  }
3761 
3762  }
3763  else
3764  {
3765  // request failed to be sent
3766  shouldRetry = FALSE;
3767  }
3768 
3769  if (shouldRetry)
3770  {
3771  LARGE_INTEGER t;
3772  t.QuadPart = -DeviceExtension->PowerContext.RetryIntervalIn100ns;
3774 
3775  status = PowerContextReuseRequest(DeviceExtension);
3776  if (!NT_SUCCESS(status))
3777  {
3778  shouldRetry = FALSE;
3779  }
3780  }
3781  }
3782 
3783  if (DeviceExtension->PowerContext.PowerChangeState.PowerDown == PowerDownDeviceQuiesced)
3784  {
3785  // record SYNC CACHE command completion time stamp.
3786  KeQueryTickCount(&DeviceExtension->PowerContext.Step1CompleteTime);
3787  }
3788 
3789  return status;
3790 }
#define SRB_FUNCTION_UNLOCK_QUEUE
Definition: srb.h:325
#define SCSIOP_SYNCHRONIZE_CACHE
Definition: cdrw_hw.h:918
#define SRB_FUNCTION_QUIESCE_DEVICE
Definition: srb.h:90
#define SRB_FLAGS_NO_QUEUE_FREEZE
Definition: srb.h:396
#define TRUE
Definition: types.h:120
Definition: cdrw_hw.h:28
LONG NTSTATUS
Definition: precomp.h:26
struct _CDB::_SYNCHRONIZE_CACHE10 SYNCHRONIZE_CACHE10
GLdouble GLdouble t
Definition: gl.h:2047
#define SRB_STATUS(Status)
Definition: srb.h:381
VOID RequestClearSendTime(_In_ WDFREQUEST Request)
Definition: common.c:111
#define MAXIMUM_RETRIES
Definition: cdrom.h:124
return STATUS_NOT_IMPLEMENTED
#define SCSI_CDROM_TIMEOUT
Definition: cdrom.c:170
#define FALSE
Definition: types.h:117
NTSTATUS NTAPI KeDelayExecutionThread(IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Interval OPTIONAL)
Definition: wait.c:283
#define SRB_FLAGS_BYPASS_LOCKED_QUEUE
Definition: srb.h:402
unsigned char BOOLEAN
union _CDB * PCDB
struct _CDB::_START_STOP START_STOP
VOID NTAPI KeQueryTickCount(IN PLARGE_INTEGER TickCount)
Definition: clock.c:165
#define TEST_FLAG(Flags, Bit)
Definition: cdrom.h:1495
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define SRB_FLAGS_DISABLE_SYNCH_TRANSFER
Definition: srb.h:389
#define SRB_FLAGS_NO_DATA_TRANSFER
Definition: srb.h:394
BOOLEAN RequestSenseInfoInterpret(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ PSCSI_REQUEST_BLOCK Srb, _In_ ULONG RetriedCount, _Out_ NTSTATUS *Status, _Out_opt_ _Deref_out_range_(0, MAXIMUM_RETRY_FOR_SINGLE_IO_IN_100NS_UNITS) LONGLONG *RetryIntervalIn100ns)
Definition: sense.c:2467
#define SRB_STATUS_QUEUE_FROZEN
Definition: srb.h:378
NTSTATUS RequestSend(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ WDFREQUEST Request, _In_ WDFIOTARGET IoTarget, _In_ ULONG Flags, _Out_opt_ PBOOLEAN RequestSent)
Definition: common.c:3793
#define TRACE_LEVEL_ERROR
Definition: storswtr.h:27
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine
Definition: wdfrequest.h:893
#define NULL
Definition: types.h:112
#define SRB_FUNCTION_EXECUTE_SCSI
Definition: srb.h:307
unsigned int ULONG
Definition: retypes.h:1
#define SRB_STATUS_SUCCESS
Definition: srb.h:333
#define SRB_FLAGS_D3_PROCESSING
Definition: srb.h:156
static SERVICE_STATUS status
Definition: service.c:31
#define SCSIOP_START_STOP_UNIT
Definition: cdrw_hw.h:897
#define SRB_FUNCTION_LOCK_QUEUE
Definition: srb.h:324
#define NT_ASSERT
Definition: rtlfuncs.h:3312
Definition: ps.c:97

◆ _IRQL_requires_max_() [2/3]

_IRQL_requires_max_ ( APC_LEVEL  )

Definition at line 197 of file cddata.c.

254 {
255  THREAD_CONTEXT ThreadContext = {0};
256  PIRP_CONTEXT IrpContext = NULL;
257  BOOLEAN Wait;
258 
259 #ifdef CD_SANITY
260  PVOID PreviousTopLevel;
261 #endif
262 
264 
265 #if DBG
266 
267  KIRQL SaveIrql = KeGetCurrentIrql();
268 
269 #endif
270 
272 
274 
276 
277 #ifdef CD_SANITY
278  PreviousTopLevel = IoGetTopLevelIrp();
279 #endif
280 
281  //
282  // Loop until this request has been completed or posted.
283  //
284 
285  do {
286 
287  //
288  // Use a try-except to handle the exception cases.
289  //
290 
291  _SEH2_TRY {
292 
293  //
294  // If the IrpContext is NULL then this is the first pass through
295  // this loop.
296  //
297 
298  if (IrpContext == NULL) {
299 
300  //
301  // Decide if this request is waitable an allocate the IrpContext.
302  // If the file object in the stack location is NULL then this
303  // is a mount which is always waitable. Otherwise we look at
304  // the file object flags.
305  //
306 
308 
309  Wait = TRUE;
310 
311  } else {
312 
313  Wait = CanFsdWait( Irp );
314  }
315 
316  IrpContext = CdCreateIrpContext( Irp, Wait );
317 
318  //
319  // Update the thread context information.
320  //
321 
322  CdSetThreadContext( IrpContext, &ThreadContext );
323 
324 #ifdef CD_SANITY
325  NT_ASSERT( !CdTestTopLevel ||
326  SafeNodeType( IrpContext->TopLevel ) == CDFS_NTC_IRP_CONTEXT );
327 #endif
328 
329  //
330  // Otherwise cleanup the IrpContext for the retry.
331  //
332 
333  } else {
334 
335  //
336  // Set the MORE_PROCESSING flag to make sure the IrpContext
337  // isn't inadvertently deleted here. Then cleanup the
338  // IrpContext to perform the retry.
339  //
340 
341  SetFlag( IrpContext->Flags, IRP_CONTEXT_FLAG_MORE_PROCESSING );
342  CdCleanupIrpContext( IrpContext, FALSE );
343  }
344 
345  //
346  // Case on the major irp code.
347  //
348 
349  switch (IrpContext->MajorFunction) {
350 
351  case IRP_MJ_CREATE :
352 
353  Status = CdCommonCreate( IrpContext, Irp );
354  break;
355 
356  case IRP_MJ_CLOSE :
357 
358  Status = CdCommonClose( IrpContext, Irp );
359  break;
360 
361  case IRP_MJ_READ :
362 
363  //
364  // If this is an Mdl complete request, don't go through
365  // common read.
366  //
367 
368  if (FlagOn( IrpContext->MinorFunction, IRP_MN_COMPLETE )) {
369 
370  Status = CdCompleteMdl( IrpContext, Irp );
371 
372  } else {
373 
374  Status = CdCommonRead( IrpContext, Irp );
375  }
376 
377  break;
378 
379  case IRP_MJ_WRITE :
380 
381  Status = CdCommonWrite( IrpContext, Irp );
382  break;
383 
385 
386  Status = CdCommonQueryInfo( IrpContext, Irp );
387  break;
388 
390 
391  Status = CdCommonSetInfo( IrpContext, Irp );
392  break;
393 
395 
396  Status = CdCommonQueryVolInfo( IrpContext, Irp );
397  break;
398 
400 
401  Status = CdCommonDirControl( IrpContext, Irp );
402  break;
403 
405 
406  Status = CdCommonFsControl( IrpContext, Irp );
407  break;
408 
409  case IRP_MJ_DEVICE_CONTROL :
410 
411  Status = CdCommonDevControl( IrpContext, Irp );
412  break;
413 
414  case IRP_MJ_LOCK_CONTROL :
415 
416  Status = CdCommonLockControl( IrpContext, Irp );
417  break;
418 
419  case IRP_MJ_CLEANUP :
420 
421  Status = CdCommonCleanup( IrpContext, Irp );
422  break;
423 
424  case IRP_MJ_PNP :
425 
426  Status = CdCommonPnp( IrpContext, Irp );
427  break;
428 
429  case IRP_MJ_SHUTDOWN :
430 
431  Status = CdCommonShutdown( IrpContext, Irp );
432  break;
433 
434  default :
435 
437  CdCompleteRequest( IrpContext, Irp, Status );
438  }
439 
441 
442  Status = CdProcessException( IrpContext, Irp, _SEH2_GetExceptionCode() );
443  } _SEH2_END;
444 
445  } while (Status == STATUS_CANT_WAIT);
446 
447 #ifdef CD_SANITY
448  NT_ASSERT( !CdTestTopLevel ||
449  (PreviousTopLevel == IoGetTopLevelIrp()) );
450 #endif
451 
453 
454  NT_ASSERT( SaveIrql == KeGetCurrentIrql( ));
455 
456  return Status;
457 }
#define KeGetCurrentIrql()
Definition: env_spec_w32.h:706
VOID CdSetThreadContext(_Inout_ PIRP_CONTEXT IrpContext, _In_ PTHREAD_CONTEXT ThreadContext)
Definition: cddata.c:981
#define IRP_MJ_CREATE
Definition: rdpdr.c:44
#define FsRtlEnterFileSystem
#define FsRtlExitFileSystem
#define IRP_MJ_SHUTDOWN
#define TRUE
Definition: types.h:120
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:317
#define IRP_CONTEXT_FLAG_MORE_PROCESSING
Definition: cdstruc.h:1214
_In_ WDFDPC _In_ BOOLEAN Wait
Definition: wdfdpc.h:167
#define SafeNodeType(Ptr)
Definition: nodetype.h:54
#define IRP_MJ_PNP
Definition: cdrw_usr.h:52
LONG NTSTATUS
Definition: precomp.h:26
#define STATUS_INVALID_DEVICE_REQUEST
Definition: udferr_usr.h:138
_SEH2_TRY
Definition: create.c:4226
#define IRP_MN_COMPLETE
Definition: iotypes.h:4399
UCHAR KIRQL
Definition: env_spec_w32.h:591
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
#define FALSE
Definition: types.h:117
_In_ PIRP Irp
Definition: csq.h:116
VOID CdCompleteRequest(_Inout_opt_ PIRP_CONTEXT IrpContext, _Inout_opt_ PIRP Irp, _In_ NTSTATUS Status)
Definition: cddata.c:914
#define _SEH2_GetExceptionInformation()
Definition: pseh2_64.h:11
unsigned char BOOLEAN
#define IRP_MJ_QUERY_VOLUME_INFORMATION
Definition: rdpdr.c:50
#define IRP_MJ_DIRECTORY_CONTROL
Definition: rdpdr.c:51
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
Definition: wdfdevice.h:547
Status
Definition: gdiplustypes.h:24
#define IRP_MJ_FILE_SYSTEM_CONTROL
PIRP NTAPI IoGetTopLevelIrp(VOID)
Definition: irp.c:1843
#define CanFsdWait(I)
Definition: cdprocs.h:2001
NTSTATUS CdCompleteMdl(_In_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: cachesup.c:411
#define IRP_MJ_CLOSE
Definition: rdpdr.c:45
NTSTATUS CdCommonDevControl(_Inout_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: devctrl.c:46
#define FlagOn(_F, _SF)
Definition: ext2fs.h:179
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
Definition: iofuncs.h:2789
#define SetFlag(_F, _SF)
Definition: ext2fs.h:187
_SEH2_END
Definition: create.c:4400
LONG CdExceptionFilter(_Inout_ PIRP_CONTEXT IrpContext, _In_ PEXCEPTION_POINTERS ExceptionPointer)
Definition: cddata.c:525
#define ASSERT_OPTIONAL_IRP(I)
Definition: cddata.h:252
#define NULL
Definition: types.h:112
VOID CdCleanupIrpContext(_In_ PIRP_CONTEXT IrpContext, _In_ BOOLEAN Post)
Definition: strucsup.c:1733
NTSTATUS CdCommonLockControl(_Inout_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: lockctrl.c:35
#define CDFS_NTC_IRP_CONTEXT
Definition: nodetype.h:34
#define IRP_MJ_LOCK_CONTROL
Definition: rdpdr.c:53
#define IRP_MJ_READ
Definition: rdpdr.c:46
#define IRP_MJ_CLEANUP
#define IRP_MJ_SET_INFORMATION
Definition: rdpdr.c:49
#define IRP_MJ_WRITE
Definition: rdpdr.c:47
#define IRP_MJ_QUERY_INFORMATION
Definition: rdpdr.c:48
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:6
#define _SEH2_GetExceptionCode()
Definition: pseh2_64.h:12
_Ret_valid_ PIRP_CONTEXT CdCreateIrpContext(_In_ PIRP Irp, _In_ BOOLEAN Wait)
Definition: strucsup.c:1573
#define IRP_MJ_DEVICE_CONTROL
Definition: rdpdr.c:52
#define STATUS_CANT_WAIT
Definition: ntstatus.h:452
#define NT_ASSERT
Definition: rtlfuncs.h:3312

◆ _IRQL_requires_max_() [3/3]

_IRQL_requires_max_ ( PASSIVE_LEVEL  )

Definition at line 64 of file Messaging.c.

75 {
76  PFLT_SERVER_PORT_OBJECT PortObject;
78 
79  /* The caller must allow at least one connection */
80  if (MaxConnections == 0)
81  {
83  }
84 
85  /* The request must be for a kernel handle */
86  if (!(ObjectAttributes->Attributes & OBJ_KERNEL_HANDLE))
87  {
89  }
90 
91  /*
92  * Get rundown protection on the target to stop the owner
93  * from unloading whilst this port object is open. It gets
94  * removed in the FltpServerPortClose callback
95  */
97  if (!NT_SUCCESS(Status))
98  {
99  return Status;
100  }
101 
102  /* Create the server port object for this filter */
106  KernelMode,
107  NULL,
108  sizeof(FLT_SERVER_PORT_OBJECT),
109  0,
110  0,
111  (PVOID *)&PortObject);
112  if (NT_SUCCESS(Status))
113  {
114  /* Zero out the struct */
115  RtlZeroMemory(PortObject, sizeof(FLT_SERVER_PORT_OBJECT));
116 
117  /* Increment the ref count on the target filter */
119 
120  /* Setup the filter port object */
121  PortObject->Filter = Filter;
122  PortObject->ConnectNotify = ConnectNotifyCallback;
124  PortObject->MessageNotify = MessageNotifyCallback;
125  PortObject->Cookie = ServerPortCookie;
126  PortObject->MaxConnections = MaxConnections;
127 
128  /* Insert the object */
129  Status = ObInsertObject(PortObject,
130  NULL,
132  0,
133  NULL,
135  if (NT_SUCCESS(Status))
136  {
137  /* Lock the connection list */
139 
140  /* Add the new port object to the connection list and increment the count */
143 
144  /* Unlock the connection list*/
146  }
147  }
148 
149  if (!NT_SUCCESS(Status))
150  {
151  /* Allow the filter to be cleaned up */
153  }
154 
155  return Status;
156 }
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:35
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
_Must_inspect_result_ _Outptr_ PFLT_PORT * ServerPort
Definition: fltkernel.h:1873
PFLT_CONNECT_NOTIFY ConnectNotify
Definition: fltmgrint.h:191
VOID FLTAPI FltObjectDereference(_Inout_ PVOID Object)
Definition: Object.c:53
LONG NTSTATUS
Definition: precomp.h:26
#define InsertTailList(ListHead, Entry)
#define OBJ_KERNEL_HANDLE
Definition: winternl.h:231
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
Definition: fmutex.c:31
ULONG FltpObjectPointerReference(_In_ PFLT_OBJECT Object)
Definition: Object.c:322
LIST_ENTRY mList
Definition: fltmgrint.h:56
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
Definition: fltkernel.h:1802
#define FILE_READ_DATA
Definition: nt_native.h:628
NTSTATUS NTAPI ObCreateObject(IN KPROCESSOR_MODE ProbeMode OPTIONAL, IN POBJECT_TYPE Type, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN KPROCESSOR_MODE AccessMode, IN OUT PVOID ParseContext OPTIONAL, IN ULONG ObjectSize, IN ULONG PagedPoolCharge OPTIONAL, IN ULONG NonPagedPoolCharge OPTIONAL, OUT PVOID *Object)
Definition: oblife.c:952
Status
Definition: gdiplustypes.h:24
POBJECT_TYPE ServerPortObjectType
Definition: Messaging.c:24
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY DisconnectNotifyCallback
Definition: fltkernel.h:1873
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:454
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY ConnectNotifyCallback
Definition: fltkernel.h:1873
NTSTATUS NTAPI ObInsertObject(IN PVOID Object, IN PACCESS_STATE AccessState OPTIONAL, IN ACCESS_MASK DesiredAccess, IN ULONG ObjectPointerBias, OUT PVOID *NewObject OPTIONAL, OUT PHANDLE Handle)
Definition: obhandle.c:2932
#define STANDARD_RIGHTS_ALL
Definition: nt_native.h:69
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
Definition: fmutex.c:23
NTSTATUS FLTAPI FltObjectReference(_Inout_ PVOID Object)
Definition: Object.c:41
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID ServerPortCookie
Definition: fltkernel.h:1873
#define NULL
Definition: types.h:112
FAST_MUTEX mLock
Definition: fltmgrint.h:55
PFLT_MESSAGE_NOTIFY MessageNotify
Definition: fltmgrint.h:193
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY _In_opt_ PFLT_MESSAGE_NOTIFY _In_ LONG MaxConnections
Definition: fltkernel.h:1873
PFLT_DISCONNECT_NOTIFY DisconnectNotify
Definition: fltmgrint.h:192
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY _In_opt_ PFLT_MESSAGE_NOTIFY MessageNotifyCallback
Definition: fltkernel.h:1873
FLT_MUTEX_LIST_HEAD ConnectionList
Definition: fltmgrint.h:121

◆ _Out_writes_bytes_()

_In_ ULONG _Out_writes_bytes_ ( DestinationBufferSize  )

◆ TdiBuildNetbiosAddress()

TDIKRNLAPI VOID NTAPI TdiBuildNetbiosAddress ( _In_ PUCHAR  NetbiosName,
_In_ BOOLEAN  IsGroupName,
_Inout_ PTA_NETBIOS_ADDRESS  NetworkName 
)

◆ TdiBuildNetbiosAddressEa()

TDIKRNLAPI NTSTATUS NTAPI TdiBuildNetbiosAddressEa ( _Out_ PUCHAR  Buffer,
_In_ BOOLEAN  IsGroupName,
_In_ PUCHAR  NetbiosName 
)

◆ TdiDefaultChainedRcvDatagramHandler()

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 
)

◆ TdiDefaultChainedRcvExpeditedHandler()

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 
)

◆ TdiDefaultChainedReceiveHandler()

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 
)

◆ TdiDefaultConnectHandler()

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 
)

◆ TdiDefaultDisconnectHandler()

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 
)

◆ TdiDefaultErrorHandler()

TDIKRNLAPI NTSTATUS NTAPI TdiDefaultErrorHandler ( _In_opt_ PVOID  TdiEventContext,
_In_ NTSTATUS  Status 
)

◆ TdiDefaultRcvDatagramHandler()

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 
)

◆ TdiDefaultRcvExpeditedHandler()

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 
)

◆ TdiDefaultReceiveHandler()

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 
)

◆ TdiDefaultSendPossibleHandler()

TDIKRNLAPI NTSTATUS NTAPI TdiDefaultSendPossibleHandler ( _In_opt_ PVOID  TdiEventContext,
_In_opt_ PVOID  ConnectionContext,
_In_ ULONG  BytesAvailable 
)

◆ TdiDeregisterAddressChangeHandler()

TDIKRNLAPI NTSTATUS NTAPI TdiDeregisterAddressChangeHandler ( _In_ HANDLE  BindingHandle)

◆ TdiMapBuffer()

TDIKRNLAPI VOID NTAPI TdiMapBuffer ( _In_ PMDL  MdlChain)

◆ TdiMatchPdoWithChainedReceiveContext()

TDIKRNLAPI BOOLEAN NTAPI TdiMatchPdoWithChainedReceiveContext ( _In_ PVOID  TsduDescriptor,
_In_ PVOID  PDO 
)

◆ TdiRegisterAddressChangeHandler()

TDIKRNLAPI NTSTATUS NTAPI TdiRegisterAddressChangeHandler ( _In_ TDI_ADD_ADDRESS_HANDLER  AddHandler,
_In_ TDI_DEL_ADDRESS_HANDLER  DeleteHandler,
_Out_ HANDLE BindingHandle 
)

◆ TdiRegisterNotificationHandler()

TDIKRNLAPI NTSTATUS NTAPI TdiRegisterNotificationHandler ( _In_ TDI_BIND_HANDLER  BindHandler,
_In_ TDI_UNBIND_HANDLER  UnbindHandler,
_Out_ HANDLE BindingHandle 
)

◆ TdiUnmapBuffer()

TDIKRNLAPI VOID NTAPI TdiUnmapBuffer ( _In_ PMDL  MdlChain)

Variable Documentation

◆ AddrRegistrationHandle

Definition at line 1128 of file tdikrnl.h.

◆ BindingHandle

_In_ ULONG _Out_ HANDLE* BindingHandle

Definition at line 1146 of file tdikrnl.h.

Referenced by CM_Add_Empty_Log_Conf_Ex(), CM_Add_ID_ExW(), CM_Create_DevNode_ExW(), CM_Delete_Class_Key_Ex(), CM_Delete_DevNode_Key_Ex(), CM_Disable_DevNode_Ex(), CM_Enable_DevNode_Ex(), CM_Enumerate_Classes_Ex(), CM_Enumerate_Enumerators_ExW(), CM_Free_Log_Conf_Ex(), CM_Get_Child_Ex(), CM_Get_Class_Name_ExW(), CM_Get_Class_Registry_PropertyW(), CM_Get_Depth_Ex(), CM_Get_Device_ID_List_ExW(), CM_Get_Device_ID_List_Size_ExW(), CM_Get_Device_Interface_Alias_ExW(), CM_Get_Device_Interface_List_ExW(), CM_Get_Device_Interface_List_Size_ExW(), CM_Get_DevNode_Custom_Property_ExW(), CM_Get_DevNode_Registry_Property_ExW(), CM_Get_DevNode_Status_Ex(), CM_Get_First_Log_Conf_Ex(), CM_Get_Global_State_Ex(), CM_Get_Hardware_Profile_Info_ExW(), CM_Get_HW_Prof_Flags_ExW(), CM_Get_Log_Conf_Priority_Ex(), CM_Get_Next_Log_Conf_Ex(), CM_Get_Next_Res_Des_Ex(), CM_Get_Parent_Ex(), CM_Get_Sibling_Ex(), CM_Get_Version_Ex(), CM_Is_Dock_Station_Present_Ex(), CM_Is_Version_Available_Ex(), CM_Locate_DevNode_ExW(), CM_Move_DevNode_Ex(), CM_Open_DevNode_Key_Ex(), CM_Query_And_Remove_SubTree_ExW(), CM_Query_Arbitrator_Free_Data_Ex(), CM_Query_Arbitrator_Free_Size_Ex(), CM_Query_Resource_Conflict_List(), CM_Reenumerate_DevNode_Ex(), CM_Register_Device_Driver_Ex(), CM_Register_Device_Interface_ExW(), CM_Request_Device_Eject_ExW(), CM_Request_Eject_PC_Ex(), CM_Run_Detection_Ex(), CM_Set_DevNode_Problem_Ex(), CM_Set_DevNode_Registry_Property_ExW(), CM_Set_HW_Prof_Ex(), CM_Set_HW_Prof_Flags_ExW(), CM_Setup_DevNode_Ex(), CM_Uninstall_DevNode_Ex(), CM_Unregister_Device_Interface_ExW(), CMP_GetBlockedDriverInfo(), CMP_GetServerSideDeviceInstallFlags(), CMP_Init_Detection(), CMP_RegisterNotification(), CMP_Report_LogOn(), CMP_UnregisterNotification(), CMP_WaitServicesAvailable(), GetDeviceInstanceKeyPath(), NetAddAlternateComputerName(), NetGetJoinableOUs(), NetJoinDomain(), NetpUnbind(), NetRemoveAlternateComputerName(), NetRenameMachineInDomain(), NetSetPrimaryComputerName(), NetUnjoinDomain(), NetValidateName(), PnpBindRpc(), PnpGetLocalHandles(), PnpUnbindRpc(), RpcBindingSetOption(), RpcImpersonateClient(), RpcMgmtSetComTimeout(), RpcRevertToSelfEx(), and SamrGetDomainPasswordInformation().

◆ BytesCopied

Definition at line 970 of file tdikrnl.h.

◆ Context

◆ Context1

◆ Context2

◆ DestinationBufferSize

_In_ ULONG _In_ ULONG _In_ ULONG DestinationBufferSize

Definition at line 1006 of file tdikrnl.h.

Referenced by SacTranslateUnicodeToUtf8().

◆ DestinationMdlChain

_In_ ULONG _In_ PMDL DestinationMdlChain

Definition at line 970 of file tdikrnl.h.

◆ DestinationOffset

Definition at line 970 of file tdikrnl.h.

◆ DeviceName

Definition at line 1128 of file tdikrnl.h.

◆ DevRegistrationHandle

_Out_ HANDLE* DevRegistrationHandle

Definition at line 1120 of file tdikrnl.h.

◆ InterfaceInfoSize

_In_ ULONG InterfaceInfoSize

Definition at line 1146 of file tdikrnl.h.

◆ Irp

Definition at line 1069 of file tdikrnl.h.

◆ IrpSp

Definition at line 1069 of file tdikrnl.h.

◆ NumberOfTsdus

_In_ ULONG NumberOfTsdus

Definition at line 1163 of file tdikrnl.h.

◆ PowerEvent

_In_ PNET_PNP_EVENT PowerEvent

Definition at line 1085 of file tdikrnl.h.

◆ ProtocolCompletionHandler

◆ ProviderHandle

_Out_ HANDLE* ProviderHandle

Definition at line 1155 of file tdikrnl.h.

◆ SourceBytesToCopy

_In_ ULONG _In_ ULONG SourceBytesToCopy

Definition at line 970 of file tdikrnl.h.

◆ SourceOffset

Definition at line 970 of file tdikrnl.h.

◆ Status

Definition at line 1085 of file tdikrnl.h.