Partager via


PFN_WSK_SEND fonction de rappel (wsk.h)

La fonction WskSend envoie des données via un socket orienté connexion ou de flux à une adresse de transport distante.

Syntaxe

PFN_WSK_SEND PfnWskSend;

NTSTATUS PfnWskSend(
  [in]      PWSK_SOCKET Socket,
  [in]      PWSK_BUF Buffer,
  [in]      ULONG Flags,
  [in, out] PIRP Irp
)
{...}

Paramètres

[in] Socket

Pointeur vers une structure de WSK_SOCKET qui spécifie l’objet socket pour le socket sur lequel envoyer les données.

[in] Buffer

Pointeur vers une structure de WSK_BUF initialisée qui décrit la mémoire tampon de données qui contient les données envoyées par le socket.

[in] Flags

Valeur ULONG qui contient un OR au niveau du bit d’une combinaison des indicateurs suivants :

WSK_FLAG_NODELAY

Dirige le transport sous-jacent pour envoyer immédiatement les données, et toutes les données précédemment mises en file d’attente, à l’application distante sans délai.

Cet indicateur est pris en charge par le protocole de transport TCP/IP Microsoft. Cet indicateur peut ne pas être pris en charge par d’autres protocoles de transport.

[in, out] Irp

Pointeur vers un IRP alloué à l’appelant que le sous-système WSK utilise pour terminer l’opération d’envoi de manière asynchrone. Pour plus d’informations sur l’utilisation des irps avec des fonctions WSK, consultez Utilisation des irps avec les fonctions du noyau Winsock.

Valeur retournée

WskSend retourne l’un des codes NTSTATUS suivants :

Code de retour Description
STATUS_SUCCESS
Les données ont été correctement envoyées via le socket. Le IRP sera terminé avec succès status. Le champ IoStatus.Information de l’IRP contient le nombre d’octets qui ont été envoyés.
STATUS_PENDING
Le sous-système WSK n’a pas pu envoyer les données sur le socket immédiatement. Le sous-système WSK termine l’IRP une fois qu’il a envoyé les données sur le socket. Le status de l’opération d’envoi sera retourné dans le champ IoStatus.Status de l’IRP. Si l’opération réussit, le champ IoStatus.Information de l’IRP contiendra le nombre d’octets qui ont été envoyés.
STATUS_FILE_FORCED_CLOSED
Le socket n’est plus fonctionnel. L’IRP sera terminé avec l’échec status. L’application WSK doit appeler la fonction WskCloseSocket pour fermer le socket dès que possible.
STATUS_NOT_SUPPORTED
Un indicateur spécifié n’est pas pris en charge par le transport réseau sous-jacent.
Autres codes status
Une erreur est survenue. L’IRP sera terminé avec l’échec status.

Remarques

Une application WSK peut appeler la fonction WskSend uniquement sur un socket orienté connexion ou de flux qui a été précédemment connecté à une adresse de transport distante. Un socket orienté connexion est connecté à une adresse de transport distante par l’une des méthodes suivantes :

  • L’application WSK connecte le socket en appelant la fonction WskConnect .
  • L’application WSK crée, lie et connecte le socket en appelant la fonction WskSocketConnect .
  • Le sous-système WSK connecte le socket lorsque l’application WSK accepte une demande de connexion entrante sur un socket d’écoute.
Si la fonction WskSend retourne STATUS_PENDING, la chaîne MDL décrite dans la structure WSK_BUF pointée par le paramètre Buffer doit rester verrouillée dans la mémoire jusqu’à ce que l’IRP soit terminée.

Le sous-système WSK n’effectue aucune mise en mémoire tampon des données lorsqu’il envoie des données via un socket. Par conséquent, un appel à la fonction WskSend ne sera pas effectué par le sous-système WSK tant que toutes les données n’auront pas été réellement envoyées.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows Vista et les versions ultérieures des systèmes d’exploitation Windows.
Plateforme cible Universal
En-tête wsk.h (inclure Wsk.h)
IRQL <= DISPATCH_LEVEL

Voir aussi

WSK_BUF

WSK_PROVIDER_CONNECTION_DISPATCH

WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskCloseSocket

WskReceive

WskReceiveEvent