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 |
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 |
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 |
|
WSK_EVENT_RECEIVE |
|
WSK_EVENT_SEND_BACKLOG |
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) |