SO_WSK_EVENT_CALLBACK

L’option de socket SO_WSK_EVENT_CALLBACK permet à une application WSK d’activer et de désactiver les fonctions de rappel d’événements d’un socket. Cette option de socket s’applique uniquement aux sockets d’écoute, aux sockets de datagrammes, aux sockets orientés connexion et aux sockets de base qui ont inscrit une interface d’extension pour laquelle au moins une fonction de rappel d’événement est définie.

Si une application WSK utilise cette option de socket pour activer ou désactiver les fonctions de rappel d’événements sur un socket d’écoute ou un socket de datagramme, elle doit le faire une fois que le socket a été lié à une adresse de transport locale.

Si une application WSK utilise cette option de socket pour activer ou désactiver les fonctions de rappel d’événements sur un socket orienté connexion, elle doit le faire une fois que le socket a été connecté à une adresse de transport distante.

Pour activer ou désactiver les fonctions de rappel d’événements sur un socket, une application WSK appelle la fonction WskControlSocket avec les paramètres suivants.

Paramètre Valeur

RequestType

WskSetOption

ControlCode

SO_WSK_EVENT_CALLBACK

Niveau

SOL_SOCKET

InputSize

sizeof(WSK_EVENT_CALLBACK_CONTROL)

InputBuffer

Pointeur vers une structure WSK_EVENT_CALLBACK_CONTROL

OutputSize

0

OutputBuffer

NULL

OutputSizeReturned

NULL

Une application WSK ne spécifie pas de pointeur vers un IRP lors de l’appel de la fonction WskControlSocket pour activer les fonctions de rappel d’événements sur un socket.

Une application WSK peut éventuellement spécifier un pointeur vers un IRP lors de l’appel de la fonction WskControlSocket pour désactiver une fonction de rappel d’événement sur un socket.

Lorsqu’une application WSK appelle WskControlSocket pour désactiver une fonction de rappel d’événement, le sous-système WSK se comporte comme suit :

  • S’il n’existe aucun appel en cours à la fonction de rappel d’événement qui est désactivée lorsque l’application WSK appelle la fonction WskControlSocket , la fonction de rappel d’événement est désactivée et la fonction WskControlSocket retourne STATUS_SUCCESS. Si l’application WSK spécifie un IRP, l’IRP est terminé avec succès status.

  • Si des appels en cours à la fonction de rappel d’événement sont désactivés lorsque l’application WSK appelle la fonction WskControlSocket et que l’application WSK a spécifié un IRP, la fonction WskControlSocket retourne STATUS_PENDING. Le sous-système WSK désactive la fonction de rappel d’événement et termine l’IRP une fois que tous les appels en cours à la fonction de rappel d’événement ont été retournés.

  • S’il existe des appels en cours à la fonction de rappel d’événements qui sont désactivés lorsque l’application WSK appelle la fonction WskControlSocket et que l’application WSK n’a pas spécifié d’IRP, la fonction WskControlSocket retourne STATUS_EVENT_PENDING. Le sous-système WSK désactive la fonction de rappel d’événement une fois que tous les appels en cours à la fonction de rappel d’événement ont été retournés.

Lors de l’activation ou de la désactivation d’une des fonctions de rappel d’événements WSK standard, une application WSK définit le membre NpiId de la structure WSK_EVENT_CALLBACK_CONTROL vers un pointeur vers l’identificateur de l’interface de programmation réseau (NPI) WSK, NPI_WSK_INTERFACE_ID.

Lors de l’activation ou de la désactivation de fonctions de rappel pour une interface d’extension, une application WSK définit le membre NpiId de la structure WSK_EVENT_CALLBACK_CONTROL vers un pointeur vers l’identificateur NPI pour cette interface d’extension.

Lors de l’activation des fonctions de rappel d’événements, une application WSK peut activer simultanément n’importe quelle combinaison des fonctions de rappel d’événements valides pour une catégorie particulière de socket WSK. L’application WSK active simultanément ces combinaisons en définissant le membre EventMask de la structure WSK_EVENT_CALLBACK_CONTROL sur un or au niveau du bit des indicateurs d’événement pour toutes les fonctions de rappel d’événements activées.

Lors de la désactivation des fonctions de rappel d’événements, une application WSK doit désactiver chaque fonction de rappel d’événement indépendamment. Une application WSK désactive indépendamment une fonction de rappel d’événement en définissant le membre EventMask de la structure WSK_EVENT_CALLBACK_CONTROL sur un OR au niveau du bit de l’indicateur d’événement pour la fonction de rappel d’événements qui est désactivée et l’indicateur WSK_EVENT_DISABLE.

Le tableau suivant montre les indicateurs d’événement valides pour un socket d’écoute.

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

WSK_EVENT_ACCEPT

WskAcceptEvent

Le tableau suivant montre les indicateurs d’événement valides pour un socket de datagramme.

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

WSK_EVENT_RECEIVE_FROM

WskReceiveFromEvent

Le tableau suivant montre les indicateurs d’événements valides pour un socket orienté connexion.

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

WSK_EVENT_DISCONNECT

WskDisconnectEvent

WSK_EVENT_RECEIVE

WskReceiveEvent

WSK_EVENT_SEND_BACKLOG

WskSendBacklogEvent

Un socket d’écoute peut activer automatiquement les fonctions de rappel d’événements sur les sockets orientés connexion qui sont acceptés par le socket d’écoute. Une application WSK active automatiquement ces fonctions de rappel en activant les fonctions de rappel d’événements socket orientées connexion sur le socket d’écoute. Les fonctions de rappel d’événement sont automatiquement activées sur un socket orienté connexion accepté uniquement si le socket est accepté par la fonction de rappel d’événement WskAcceptEvent du socket d’écoute. Si le socket orienté connexion est accepté par la fonction WskAccept du socket d’écoute, les fonctions de rappel d’événements du socket accepté ne sont pas automatiquement activées.

Une fois que les fonctions de rappel d’événements orientées connexion sont activées sur un socket d’écoute, elles ne peuvent pas être désactivées sur le socket d’écoute. Si la fonction de rappel d’événement WskAcceptEvent est désactivée, puis réactivée sur un socket d’écoute, toutes les fonctions de rappel d’événements orientées connexion qui étaient initialement activées sur ce socket d’écoute continueront d’être appliquées à tous les sockets orientés connexion qui sont acceptés par la fonction de rappel d’événement WskAcceptEvent .

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.

Spécifications

Version

Disponible dans Windows Vista et les versions ultérieures des systèmes d’exploitation Windows.

En-tête

Wsk.h (inclure Wsk.h)