Partager via


Événements du noyau Winsock

Le sous-système WSK (Winsock Kernel) peut notifier de manière asynchrone une application WSK lorsque certains événements de socket se produisent, par exemple lorsque de nouvelles données ont été reçues sur un socket ou lorsqu’un socket a été déconnecté. Pour qu’une application WSK soit avertie de manière asynchrone des événements de socket, l’application WSK doit implémenter les fonctions de rappel d’événements appropriées et activer ces fonctions de rappel d’événements sur les sockets qu’elle crée.

Note Une application WSK n’est pas nécessaire pour implémenter ou utiliser des fonctions de rappel d’événements. Une application WSK peut effectuer la plupart des opérations de socket WSK en appelant les fonctions de socket WSK appropriées. La seule fonctionnalité WSK qui nécessite l’utilisation de fonctions de rappel d’événements est le mode d’acceptation conditionnelle sur les sockets d’écoute. Pour plus d’informations sur les avantages et les inconvénients entre l’utilisation de fonctions WSK et l’utilisation de fonctions de rappel d’événements, consultez Utilisation des fonctions de noyau Winsock et des fonctions de rappel d’événements.

Chaque catégorie de socket WSK prend en charge un ensemble différent d’événements de socket.

Sockets de base

Les sockets de base ne prennent pas en charge les événements de socket.

Sockets d’écoute

Événement Fonction de rappel d’événement

Une connexion entrante a été acceptée.

WskAcceptEvent

Une demande de connexion entrante est arrivée.

WskInspectEvent

Une demande de connexion entrante a été supprimée.

WskAbortEvent

* S’applique uniquement aux sockets d’écoute dont le mode d’acceptation conditionnelle est activé. Pour plus d’informations sur l’utilisation du mode d’acceptation conditionnelle avec des sockets d’écoute, consultez Écoute pour et acceptation des connexions entrantes.

Sockets de datagrammes

Événement Fonction de rappel d’événement

Un ou plusieurs nouveaux datagrammes ont été reçus.

WskReceiveFromEvent

Sockets orientés connexion

Événement Fonction de rappel d’événement

De nouvelles données ont été reçues.

WskReceiveEvent

Le socket a été déconnecté.

WskDisconnectEvent

La taille de backlog d’envoi idéale a changé.

WskSendBacklogEvent

Lorsqu’une application WSK crée un socket, les fonctions de rappel d’événements du socket sont désactivées par défaut. Une application WSK doit activer les fonctions de rappel d’événements d’un socket pour que le sous-système WSK appelle les fonctions de rappel d’événements du socket lorsque des événements de socket se produisent. Pour plus d’informations sur l’activation et la désactivation des fonctions de rappel d’événements d’un socket, consultez Activation et désactivation des fonctions de rappel d’événements.

Si une application WSK inscrit une interface d’extension pour un socket, l’interface d’extension peut prendre en charge des événements supplémentaires. Pour plus d’informations sur l’inscription d’une interface d’extension pour un socket, consultez Inscription d’une interface d’extension.

Le sous-système WSK peut également notifier une application WSK d’événements qui ne sont pas spécifiques à un socket particulier. Pour qu’une application WSK soit informée de ces événements, l’application WSK doit implémenter une fonction de rappel d’événement WskClientEvent . Il n’existe actuellement aucun événement défini qui ne soit pas spécifique à un socket particulier. La fonction de rappel d’événement WskClientEvent d’une application WSK est toujours activée et ne peut pas être désactivée.

Les fonctions de rappel d’événements d’une application WSK ne doivent pas attendre l’achèvement d’autres demandes WSK dans le contexte de l’achèvement WSK ou des fonctions de rappel d’événements. Le rappel peut lancer d’autres requêtes WSK en supposant qu’il ne passe pas trop de temps à DISPATCH_LEVEL ou épuise la pile du noyau, mais il ne doit pas attendre leur achèvement même lorsque le rappel est appelé à IRQL = PASSIVE_LEVEL.