TDI_REQUEST_KERNEL

typedef struct _TDI_REQUEST_KERNEL {

    ULONG                        RequestFlags;

    PTDI_CONNECTION_INFORMATION  RequestConnectionInformation;

    PTDI_CONNECTION_INFORMATION  ReturnConnectionInformation;

    PVOID                        RequestSpecific;

} TDI_REQUEST_KERNEL, *PTDI_REQUEST_KERNEL;

 

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

Members

RequestFlags

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

RequestConnectionInformation

Points to a TDI_CONNECTION_INFORMATION structure containing client-supplied data.

ReturnConnectionInformation

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

RequestSpecific

Points 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.

Comments

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 Chapter 2.

See Also

TdiBuildConnect, TdiBuildDisconnect, TdiBuildListen, TDI_CONNECT, TDI_CONNECTION_INFORMATION, TDI_DISCONNECT, TDI_LISTEN