TDI_PROVIDER_INFO structure
The TDI_PROVIDER_INFO structure defines the information returned for a TDI_QUERY_INFORMATION request, in which IrpSp->Parameters is cast to a pointer of a TDI_REQUEST_KERNEL_QUERY_INFORMATION structure. The request sets the QueryType member of TDI_REQUEST_KERNEL_QUERY_INFORMATION to the TDI_QUERY_PROVIDER_INFO query type.
Syntax
typedef 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;
Members
Version
Specifies the TDI version number. The low-order bytes specify the minor version number, and the high-order bytes specify the major version number.For the current release of TDI, the version number is 0x0200.
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 (using the OR operator) 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
This 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.TDI_SERVICE_DGRAM_CONNECTION
This transport supports pseudodatagram connections to handle QoS, GPC, and so forth.TDI_SERVICE_FORCE_ACCESS_CHECK
This transport requires a security access check during the creation of TDI address objects.The TDI client calls IoCreateFile to create address objects over the TDI provider. If the transport sets the TDI_SERVICE_FORCE_ACCESS_CHECK flag, the TDI client must set the IO_FORCE_ACCESS_CHECK option flag in the Options parameter of IoCreateFile.
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 lookahead 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.
Remarks
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. The client might also use the values to allocate buffers of an appropriate size before it registers ClientEvent(Chained)Receive and/or ClientEvent(Chained)ReceiveDatagram handlers.
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).
Requirements
Header |
Tdi.h (include Tdi.h or TdiKrnl.h) |
See also
ClientEventChainedReceiveDatagram
ClientEventChainedReceiveExpedited