TDI IOCTL Requests
As already mentioned in the preceding topic, kernel-mode clients pass TDI IOCTLs in IRPs to the underlying transport driver with calls to IoCallDriver. These requests are passed with a MajorFunctionCode of IRP_MJ_INTERNAL_DEVICE_CONTROL and MinorFunctionCode that specifies one of the following TDI-defined operations:
TDI_ACCEPT
Allows the local-node client to accept an incoming connection offer from a remote-node peer so that it can send and receive connection-oriented data on the network.TDI_ACTION
Initiates transport-specific extension operations for an address, a connection endpoint, or a control channel.TDI_ASSOCIATE_ADDRESS
Associates an open connection endpoint with an open local transport address, which is a prerequisite to establishing an endpoint-to-endpoint connection with a remote-node peer process.TDI_CONNECT
Initiates a connection offer from one endpoint to another on a remote node.TDI_DISASSOCIATE_ADDRESS
Disassociates a connection endpoint for an inactive connection from its associated address object.TDI_DISCONNECT
Terminates an established endpoint-to-endpoint connection for the local-node client or acknowledges connection termination initiated by a remote-node peer.TDI_LISTEN
Passively listens for an incoming connection offer from a remote-node peer process.TDI_QUERY_INFORMATION
Queries the underlying TDI transport for a specific type of information.TDI_RECEIVE
Returns all or part of a TSDU received on an endpoint-to-endpoint connection.TDI_RECEIVE_DATAGRAM
Returns a datagram TSDU on an open transport address.TDI_SEND
Sends a normal or expedited TSDU to the remote-node peer on an endpoint-to-endpoint connection.TDI_SEND_DATAGRAM
Sends a datagram to a specified remote-node address.TDI_SET_EVENT_HANDLER
Registers a ClientEventXxx handler that the transport will call whenever the corresponding network event occurs.TDI_SET_INFORMATION
Sets a specific type of information in the underlying transport.
Note The TDI feature is deprecated and will be removed in future versions of Microsoft Windows. Depending on how you use TDI, use either the Winsock Kernel (WSK) or Windows Filtering Platform (WFP). For more information about WFP and WSK, see Windows Filtering Platform and Winsock Kernel. For a Windows Core Networking blog entry about WSK and TDI, see Introduction to Winsock Kernel (WSK).