TDI_PROVIDER_INFO

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