PFN_WSK_RECEIVE fonction de rappel (wsk.h)
La fonction WskReceive reçoit des données via un socket orienté connexion ou flux à partir d’une adresse de transport distante.
Syntaxe
PFN_WSK_RECEIVE PfnWskReceive;
NTSTATUS PfnWskReceive(
[in] PWSK_SOCKET Socket,
[in] PWSK_BUF Buffer,
[in] ULONG Flags,
[in, out] PIRP Irp
)
{...}
Paramètres
[in] Socket
Pointeur vers une structure WSK_SOCKET qui spécifie l’objet socket pour le socket à partir duquel recevoir les données.
[in] Buffer
Pointeur vers une structure WSK_BUF initialisée qui décrit la mémoire tampon de données qui reçoit les données du socket.
[in] Flags
Valeur ULONG qui contient un OR au niveau du bit d’une combinaison des indicateurs suivants :
WSK_FLAG_WAITALL
Attendez que la mémoire tampon de données soit complètement remplie. Si cet indicateur est spécifié, l’IRP spécifié dans le paramètre Irp n’est pas terminé tant que l’un des événements suivants ne se produit pas :
- La mémoire tampon de données décrite par la structure WSK_BUF pointée par le paramètre Buffer est entièrement remplie.
- La connexion est correctement déconnectée par l’expéditeur distant.
- La connexion est interrompue par l’application WSK ou par l’expéditeur distant.
- L’IRP spécifié est annulé.
WSK_FLAG_DRAIN
Attendez que le socket soit déconnecté, en ignorant toutes les données reçues sur le socket. Si cet indicateur est spécifié, l’IRP spécifié n’est pas terminé tant que l’un des événements suivants ne se produit pas :
- La connexion est correctement déconnectée par l’expéditeur distant.
- La connexion est interrompue par l’application WSK ou par l’expéditeur distant.
- L’IRP spécifié est annulé.
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.
Les indicateurs WSK_FLAG_WAITALL et WSK_FLAG_DRAIN s’excluent mutuellement. Une application WSK ne doit pas spécifier ces deux indicateurs en même temps.
[in, out] Irp
Pointeur vers un IRP alloué à l’appelant que le sous-système WSK utilise pour terminer l’opération de réception 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
WskReceive retourne l’un des codes NTSTATUS suivants :
Code de retour | Description |
---|---|
|
Les données ont été reçues avec succès à partir du socket. Le IRP sera terminé avec succès status. Le champ IoStatus.Information de l’IRP contient le nombre d’octets reçus. |
|
Le sous-système WSK n’a pas pu recevoir les données du socket immédiatement. Le sous-système WSK termine l’IRP une fois qu’il a reçu les données du socket. Le status de l’opération de réception 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 reçus. |
|
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. |
|
Un indicateur spécifié n’est pas pris en charge par le transport réseau sous-jacent. |
|
Une erreur est survenue. L’IRP sera terminé avec l’échec status. |
Remarques
Une application WSK peut appeler la fonction WskReceive 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.
Une application WSK peut appeler la fonction WskReceive avec une longueur nulle spécifiée dans le membre Length de la structure WSK_BUF vers laquelle pointe le paramètre Buffer . La spécification d’une longueur nulle dans ce membre est utile dans les situations suivantes :
- Lors de la réactivation de la fonction de rappel d’événement WskReceiveEvent pour un socket après que la fonction de rappel d’événement WskReceiveEvent a précédemment retournée STATUS_DATA_NOT_ACCEPTED
- Lors de la spécification de l’indicateur WSK_FLAG_DRAIN pour ignorer toutes les données supplémentaires reçues sur le socket
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_PROVIDER_CONNECTION_DISPATCHCommentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour