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 |
---|---|
|
L’allocation de la mémoire du pool non paginé nécessaire à cette routine a échoué. |
|
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 |