3.2.3 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 about the number of clients that currently have the same address open.