File Objects Represent Control Channels
A network management process can query or set global configuration or statistical information with respect to a specific transport provider. To do so, such a process must have a means of identifying a particular transport among several possible transport providers.
Such a client opens a file object that represents a control channel so that it can query the appropriate transport. In effect, the client opens a file object that represents the device object created by the underlying transport driver when the client opens a control channel, either by calling ZwCreateFile or IoGetDeviceObjectPointer.
Other TDI clients that send and receive data across the network also can open a control channel to query their underlying transports. For example, such a client might issue a query to determine the transport's limit on datagram size so the client could effectively size the buffers that it will allocate to send and receive datagrams subsequently.
In general, a TDI transport maintains global state information about its features and current statistics, rather than process-specific state information tied to a particular open file object. For example, a client that queries the current state of its open transport address passes a pointer to a client-specific file object representing that address, but the transport returns information common to all clients that currently have the same address open.
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).