Partager via


Fonction RxCeSendDatagram (rxce.h)

RxCeSendDatagram envoie une unité de données de service de transport (TSDU) le long de la connexion spécifiée sur un circuit virtuel.

Syntaxe

NTSTATUS RxCeSendDatagram(
       IN PRXCE_ADDRESS                hAddress,
  [in] IN PRXCE_CONNECTION_INFORMATION pConnectionInformation,
       IN ULONG                        SendOptions,
  [in] IN PMDL                         pMdl,
  [in] IN ULONG                        SendLength,
  [in] IN PVOID                        pCompletionContext
);

Paramètres

hAddress

Pointeur vers le transport le long duquel le TSDU doit être envoyé.

[in] pConnectionInformation

Pointeur vers les informations de connexion qui contiennent l’adresse distante.

SendOptions

Pointeur vers les informations de connexion qui contiennent l’adresse distante.

[in] pMdl

Pointeur vers la mémoire tampon à envoyer.

[in] SendLength

Longueur des données à envoyer.

[in] pCompletionContext

Contexte passé à l’appelant pendant SendCompletion pour les opérations asynchrones. Ce paramètre n’est pas ignoré si le paramètre Options demande une opération d’envoi synchrone.

Valeur retournée

RxCeSendDatagram 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 du pool non paginé nécessaire à cette routine a échoué.
STATUS_INVALID_PARAMETER
Une longueur non valide a été passée dans le paramètre SendLength en fonction des options spécifiées.

Remarques

Les options asynchrones et synchrones indiquées dans le paramètre Options utilisé dans RxCeSendDatagram distinguent deux situations. Dans le cas asynchrone, le contrôle retourne à l’appelant une fois que la demande a été correctement envoyée au transport sous-jacent. Les résultats d’une requête donnée sont communiqués à l’aide de la routine de rappel SendCompletion . Le paramètre pCompletionContext dans RxCeSendDatagram est repassé dans la routine de rappel pour aider l’appelant à lever l’ambiguïté des requêtes.

Dans le cas synchrone, la demande est envoyée au transport sous-jacent et le contrôle ne retourne pas à l’appelant tant que la demande n’est pas terminée. Notez que dans le cas synchrone, le paramètre pCompletionContext est ignoré et le status retourné correspond à l’achèvement status des opérations.

L’avantage des options asynchrones et synchrones dépend du transport sous-jacent. Dans un environnement de circuit virtuel (TCP, par exemple), une option synchrone implique que le contrôle ne retourne pas tant que les données n’atteignent pas le serveur. En revanche, pour les transports orientés datagrammes (UDP, par exemple), il y a très peu de différence entre les deux options.

Notez que l’option synchrone est ignorée pour l’envoi de datagrammes, car les transports sous-jacents ne bloquent pas les envois de datagrammes.

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, Tdi.h)
IRQL <= APC_LEVEL

Voir aussi

MDL

RxCeSend

TDI_CONNECTION_INFORMATION