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.