4.3 TDI IOCTL Requests

As already mentioned in the preceding section, 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 client-supplied event 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.