RxCeBuildConnectionOverMultipleTransports function (rxce.h)
RxCeBuildConnectionOverMultipleTransports establishes a connection between a local RDBSS connection address and a given remote address and supports multiple transports. A set of local addresses are specified and this routine attempts to connect to the target server via all the transports associated with the local addresses. One connection is chosen as the winner depending on the connect options.
Syntax
NTSTATUS RxCeBuildConnectionOverMultipleTransports(
[in, out] IN OUT PRDBSS_DEVICE_OBJECT pMiniRedirectorDeviceObject,
IN RXCE_CONNECTION_CREATE_OPTIONS CreateOption,
[in] IN ULONG NumberOfAddresses,
[in] IN PRXCE_ADDRESS *pLocalAddressPointers,
[in] IN PUNICODE_STRING pServerName,
[in] IN PRXCE_CONNECTION_INFORMATION pConnectionInformation,
[in] IN PRXCE_CONNECTION_EVENT_HANDLER pHandler,
[in] IN PVOID pEventContext,
[in] IN PRXCE_CONNECTION_COMPLETION_ROUTINE pCompletionRoutine,
[in, out] IN OUT PRXCE_CONNECTION_COMPLETION_CONTEXT pCompletionContext
);
Parameters
[in, out] pMiniRedirectorDeviceObject
A pointer to the mini-redirector device object.
CreateOption
Create options that determine which transport will be selected for establishing a connection. These options can be one of the following enumerations for RXCE_CONNECTION_CREATE_OPTIONS:
- RxCeSelectFirstSuccessfulTransport
- RxCeSelectBestSuccessfulTransport
- RxCeSelectAllSuccessfulTransports
Select the first successful transport that responds.
Select the best successful transport that responds.
Select all of the successful transports that respond.
[in] NumberOfAddresses
The number of local addresses (transports).
[in] pLocalAddressPointers
A pointer to an array of the local address handles.
[in] pServerName
A pointer to the name of the server (for connection enumeration).
[in] pConnectionInformation
A pointer to the connection information that specifies the remote address.
[in] pHandler
A pointer to the event handler for processing receive indications.
[in] pEventContext
A pointer to the context parameter to be passed back to the event handler and used for indications.
[in] pCompletionRoutine
A pointer to a connection completion routine when this routine completed if STATUS_PENDING is initially returned.
[in, out] pCompletionContext
On input, this parameter contains a pointer to an uninitialized RXCE_CONNECTION_COMPLETION_CONTEXT structure. On output when this call is successful, the virtual circuit is associated with the connection and the virtual circuit and connection are properly initialized.
Return value
RxCeBuildConnectionOverMultipleTransports returns STATUS_SUCCESS on success or one of the following error codes on failure:
Return code | Description |
---|---|
|
The allocation of nonpaged pool memory needed by this routine failed. |
|
It was not possible to initialize a connection and a virtual circuit with any of the multiple transports. This error can occur if all of the RDBSS transports or the RBDSS connection engine addresses pointed to in the pLocalAddressPointers array are invalid. |
|
One of the parameters passed to this routine was invalid. |
|
One of the asynchronous calls to the different transports passed as input parameters to the routine is still outstanding and has not been completed. |
Remarks
RxCeBuildConnectionOverMultipleTransports will initiate a series of asynchronous calls to all of the different transports passed in as parameters to try and build a connection. The network mini-redirector cannot be unloaded until all of these asynchronous requests are completed.
RxCeBuildConnectionOverMultipleTransports must be called in the context of a system worker thread.
When RxCeBuildConnectionOverMultipleTransports is successful, the virtual circuit will be properly initialized and connections will be established.
RXCE_CONNECTION_INFORMATION is a typedef for a TDI_CONNECTION_INFORMATION structure.
Requirements
Requirement | Value |
---|---|
Target Platform | Desktop |
Header | rxce.h (include Rxce.h) |
IRQL | <= APC_LEVEL |