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

ClientEventChainedReceive

ClientEventChainedReceiveDatagram

ClientEventChainedReceiveExpedited

ClientEventReceive

ClientEventReceiveDatagram

ClientEventReceiveExpedited

TdiBuildQueryInformation

TdiBuildSetEventHandler

TDI_ACCEPT

TDI_CONNECT

TDI_LISTEN

TDI_QUERY_INFORMATION

TDI_PROVIDER_STATISTICS

 

 

Send comments about this topic to Microsoft