Fonction RxCeBuildConnectionOverMultipleTransports (rxce.h)

RxCeBuildConnectionOverMultipleTransports établit une connexion entre une adresse de connexion RDBSS locale et une adresse distante donnée et prend en charge plusieurs transports. Un ensemble d’adresses locales est spécifié et cette routine tente de se connecter au serveur cible via tous les transports associés aux adresses locales. Une connexion est choisie comme gagnant en fonction des options de connexion.

Syntaxe

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
);

Paramètres

[in, out] pMiniRedirectorDeviceObject

Pointeur vers l’objet d’appareil de mini-redirecteur.

CreateOption

Créez des options qui déterminent le transport qui sera sélectionné pour établir une connexion. Ces options peuvent être l’une des énumérations suivantes pour RXCE_CONNECTION_CREATE_OPTIONS :

RxCeSelectFirstSuccessfulTransport

Sélectionnez le premier transport réussi qui répond.

RxCeSelectBestSuccessfulTransport

Sélectionnez le transport le mieux réussi qui répond.

RxCeSelectAllSuccessfulTransports

Sélectionnez tous les transports réussis qui répondent.

[in] NumberOfAddresses

Nombre d’adresses locales (transports).

[in] pLocalAddressPointers

Pointeur vers un tableau des handles d’adresses locales.

[in] pServerName

Pointeur vers le nom du serveur (pour l’énumération de la connexion).

[in] pConnectionInformation

Pointeur vers les informations de connexion qui spécifient l’adresse distante.

[in] pHandler

Pointeur vers le gestionnaire d’événements pour le traitement des indications de réception.

[in] pEventContext

Pointeur vers le paramètre de contexte à renvoyer au gestionnaire d’événements et à utiliser pour les indications.

[in] pCompletionRoutine

Pointeur vers une routine d’achèvement de connexion lorsque cette routine s’est terminée si STATUS_PENDING est initialement retourné.

[in, out] pCompletionContext

En entrée, ce paramètre contient un pointeur vers une structure de RXCE_CONNECTION_COMPLETION_CONTEXT non initialisée. Lors de la sortie, lorsque cet appel réussit, le circuit virtuel est associé à la connexion et le circuit virtuel et la connexion sont correctement initialisés.

Valeur retournée

RxCeBuildConnectionOverMultipleTransports retourne STATUS_SUCCESS en cas de réussite ou l’un des codes d’erreur suivants en cas d’échec :

Code de retour Description
STATUS_INSUFFICIENT_RESOURCES
L’allocation de la mémoire de pool non paginé nécessaire à cette routine a échoué.
STATUS_INVALID_HANDLE
Il n’a pas été possible d’initialiser une connexion et un circuit virtuel avec l’un des transports multiples. Cette erreur peut se produire si tous les transports RDBSS ou les adresses du moteur de connexion RBDSS pointées vers le tableau pLocalAddressPointers ne sont pas valides.
STATUS_INVALID_PARAMETER
L’un des paramètres passés à cette routine n’était pas valide.
STATUS_PENDING
L’un des appels asynchrones aux différents transports passés en tant que paramètres d’entrée à la routine est toujours en cours et n’est pas terminé.

Remarques

RxCeBuildConnectionOverMultipleTransports lance une série d’appels asynchrones à tous les différents transports passés en tant que paramètres pour essayer de créer une connexion. Le mini-redirecteur réseau ne peut pas être déchargé tant que toutes ces requêtes asynchrones ne sont pas terminées.

RxCeBuildConnectionOverMultipleTransports doit être appelé dans le contexte d’un thread de travail système.

Lorsque RxCeBuildConnectionOverMultipleTransports réussit , le circuit virtuel est correctement initialisé et les connexions sont établies.

RXCE_CONNECTION_INFORMATION est un typedef pour une structure TDI_CONNECTION_INFORMATION .

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête rxce.h (inclure Rxce.h)
IRQL <= APC_LEVEL

Voir aussi

RxCeBuildConnection

RxCeTearDownConnection

TDI_CONNECTION_INFORMATION