É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. |
|
Une demande de connexion entrante est arrivée. |
|
Une demande de connexion entrante a été supprimée. |
* 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. |
Sockets orientés connexion
Événement | Fonction de rappel d’événement |
---|---|
De nouvelles données ont été reçues. |
|
Le socket a été déconnecté. |
|
La taille de backlog d’envoi idéale a changé. |
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.