struct _TDI_PROVIDER_INFO {
ULONG Version;
ULONG MaxSendSize;
ULONG MaxConnectionUserData;
ULONG MaxDatagramSize;
ULONG ServiceFlags;
ULONG MinimumLookaheadData;
ULONG MaximumLookaheadData;
ULONG NumberOfResources;
LARGE_INTEGER StartTime;
} TDI_PROVIDER_INFO, *PTDI_PROVIDER_INFO;
TDI_PROVIDER_INFO defines the structure of the information returned for a TDI_QUERY_INFORMATION request in which the IrpSp->Parameters.QueryType is set to TDI_QUERY_PROVIDER_INFO or TDI_QUERY_PROVIDER_INFORMATION.
Members
Version
Specifies the TDI version number. The low-order bytes specify the minor version number, and the high-order bytes the major version number.
MaxSendSize
Specifies the maximum number of bytes a client can provide per TDI_SEND request.
MaxConnectionUserData
Specifies the maximum number of bytes a client can provide as user data in a TDI_CONNECT, TDI_LISTEN, or TDI_ACCEPT request.
MaxDatagramSize
Specifies the maximum size, in bytes, of a datagram a client can send (or receive).
ServiceFlags
Specifies features that the transport offers as a combination (Ored) of the following flags:
TDI_SERVICE_CONNECTION_MODE
This transport supports connection-oriented traffic (endpoint-to-endpoint transfers).
TDI_SERVICE_CONNECTIONLESS_MODE
This transport supports connectionless traffic (datagram sends and receives).
TDI_SERVICE_BROADCAST_SUPPORTED
This transport supports broadcast datagrams.
TDI_SERVICE_MULTICAST_SUPPORTED
This transport supports multicast datagrams.
TDI_SERVICE_ROUTE_DIRECTED
This transport supports directed packets, which can reach remote nodes that datagrams cannot reach.
TDI_SERVICE_ORDERLY_RELEASE
This transport supports controlled disconnects.
TDI_SERVICE_DELAYED_ACCEPTANCE
This transport supports delayed-connection acceptances of incoming connection offers from remote nodes.
TDI_SERVICE_EXPEDITED_DATA
This transport supports expedited sends and receives.
TDI_SERVICE_INTERNAL_BUFFERING
This transport buffers TSDUs internally.
TDI_SERVICE_MESSAGE_MODE
This transport supports message-mode sends and receives.
TDI_SERVICE_NO_ZERO_LENGTH
This transport does not support zero-length sends.
TDI_SERVICE_ERROR_FREE_DELIVERY
This transport supports error-free delivery.
TDI_SERVICE_POINT_TO_POINT
This transport is bound to an underlying point-to-point WAN NIC driver of type NdisMediumWan.
TDI_SERVICE_SECURITY_LEVEL
This transport supports a security validator.
TDI_SERVICE_HALF_DUPLEX
The transport supports controlled disconnect operations such that after receiving a disconnect request from the remote node, it continues to indicate receives to the local-node client until its client also acknowledges the disconnection.
MinimumLookaheadData
Specifies the lower limit on the number of bytes this transport guarantees to indicate as lookahead data for receive and receive-datagram events.
MaximumLookaheadData
Specifies the upper limit on the number of bytes this transport guarantees to indicate as lookhead data for receive and receive-datagram events. If the underlying NIC driver supports multipacket receive indications, this value can be the maximum packet size supported by the network.
NumberOfResources
Specifies the number of TDI_PROVIDER_RESOURCE_STATS structures (resources) this transport returns if a client submits a query-information request of the type TDI_QUERY_PROVIDER_STATISTICS.
StartTime
Specifies the current system time at which the TDI driver became active.
Comments
Any kernel-mode client that has opened a control channel can make a query to determine the supported features and limits of its underlying transport. Such a client sets up an IRP with TdiBuildQueryInformation, passing in the QType TDI_QUERY_PROVIDER_INFO, and submits the IRP to the underlying transport to get this information.
TDI_PROVIDER_INFO defines the format in which the transport returns the requested information for such a query.
For example, a client might use the values returned in the XxxLookaheadData and NumberOfResources members to size client-allocated buffers for subsequent client requests to the transport or to allocate buffers of an appropriate size before it registers ClientEvent(Chained)Receive and/or ClientEvent(Chained)ReceiveDatagram handlers.
See Also
ClientEventChainedReceive, ClientEventChainedReceiveDatagram, ClientEventChainedReceiveExpedited, ClientEventReceive, ClientEventReceiveDatagram, ClientEventReceiveExpedited, TdiBuildQueryInformation, TdiBuildSetEventHandler, TDI_ACCEPT, TDI_CONNECT, TDI_LISTEN, TDI_QUERY_INFORMATION, TDI_PROVIDER_STATISTICS