TDI_REQUEST_KERNEL structure

The TDI_REQUEST_KERNEL structure defines a parameter format common to certain kernel-mode TDI_XXX IOCTL requests.

Syntax

typedef struct _TDI_REQUEST_KERNEL {
  ULONG_PTR                   RequestFlags;
  PTDI_CONNECTION_INFORMATION RequestConnectionInformation;
  PTDI_CONNECTION_INFORMATION ReturnConnectionInformation;
  PVOID                       RequestSpecific;
} TDI_REQUEST_KERNEL, *PTDI_REQUEST_KERNEL;

Members

  • RequestFlags
    Specifies a flag or combination of flags for certain TDI_XXX IOCTLs.

  • RequestConnectionInformation
    Pointer to a TDI_CONNECTION_INFORMATION structure containing client-supplied data.

  • ReturnConnectionInformation
    Pointer to a caller-supplied buffer in which the transport returns data, formatted as a TDI_CONNECTION_INFORMATION structure.

  • RequestSpecific
    Pointer to a caller-supplied value of a request-specific nature, used only for IOCTL requests that need additional parameters, such as a time-out value.

Remarks

Although not all members of the TDI_REQUEST_KERNEL structure are relevant to each such TDI_XXX IOCTL code, this structure is used as the common format at IrpSp->Parameters in the following TDI_XXX IOCTL requests to TDI transport drivers:

  • For TDI_CONNECT requests, the client supplies a remote-node address to which a connection should be offered, and possibly user connect data, at RequestConnectionInformation. The client can supply a time-out for its connection offer at RequestSpecific, or this member can be NULL, which directs the transport to use its own default time-out for the connection operation. The transport returns connection acceptance information at ReturnConnectionInformation.

  • For TDI_DISCONNECT requests, the client can set RequestFlags if the transport supports controlled disconnects; otherwise, this member is zero. The client can supply a time-out for the disconnection at RequestSpecific, or this member can be NULL, which directs the transport to use its own default time-out for the disconnection operation. The transport returns any disconnect data and status information supplied by the corresponding remote-node transport at ReturnConnectionInformation.

  • For TDI_LISTEN requests, the client can set RequestFlags with TDI_QUERY_ACCEPT if the transport supports delayed-connection acceptances; otherwise, this member is zero, which directs the transport to immediately accept any appropriate connection offer that comes in from a remote node. The client can specify a remote-node address from which a connection offer should be accepted and, if RequestFlags is zero, also some connect data to be transmitted to the remote node when the connection offer is accepted at RequestConnectionInformation. The transport returns any connect data transmitted from the remote node, as well as the remote-node address, at ReturnConnectionInformation when it accepts an endpoint-to-endpoint connection for its client, thereby satisfying its client's listen request.

Kernel-mode clients use the TdiBuildXxx macros to set up Parameters in the transport's I/O stack location of a given IRP with the TDI_KERNEL_REQUEST structure for the preceding kernel-mode IOCTL requests. For TDI_DISASSOCIATE_ADDRESS requests, neither the client nor the transport pass any information in this structure.

The format at Parameters is request-specific for all other TDI_XXX. For more information about these structures, see the TDI_XXX references in TDI IOCTLs for Transport Drivers.

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

Tdikrnl.h (include TdiKrnl.h)

See also

TdiBuildConnect

TdiBuildDisconnect

TdiBuildListen

TDI_CONNECT

TDI_CONNECTION_INFORMATION

TDI_DISCONNECT

TDI_LISTEN

 

 

Send comments about this topic to Microsoft