PFN_WSK_INSPECT_EVENT fonction de rappel (wsk.h)

La fonction de rappel d’événement WskInspectEvent avertit une application WSK qu’une demande de connexion entrante sur un socket d’écoute pour lequel le mode d’acceptation conditionnelle est activé a été reçue.

Syntaxe

PFN_WSK_INSPECT_EVENT PfnWskInspectEvent;

WSK_INSPECT_ACTION PfnWskInspectEvent(
  [in, optional] PVOID SocketContext,
  [in]           PSOCKADDR LocalAddress,
  [in]           PSOCKADDR RemoteAddress,
  [in, optional] PWSK_INSPECT_ID InspectID
)
{...}

Paramètres

[in, optional] SocketContext

Pointeur vers le contexte de socket pour le socket d’écoute sur lequel la demande de connexion entrante a été reçue. L’application WSK a fourni ce pointeur vers le sous-système WSK lorsqu’elle a appelé la fonction WskSocket pour créer le socket d’écoute.

[in] LocalAddress

Pointeur vers une mémoire tampon qui contient l’adresse de transport locale à laquelle la demande de connexion entrante est arrivée. La mémoire tampon contient le type de structure SOCKADDR spécifique qui correspond à la famille d’adresses spécifiée par l’application WSK lors de la création du socket d’écoute.

[in] RemoteAddress

Pointeur vers une mémoire tampon qui contient l’adresse de transport distante d’où provient la demande de connexion entrante. La mémoire tampon contient le type de structure SOCKADDR spécifique qui correspond à la famille d’adresses spécifiée par l’application WSK lors de la création du socket d’écoute.

[in, optional] InspectID

Pointeur vers une structure WSK_INSPECT_ID . Le contenu de la structure identifie la demande de connexion entrante en cours d’inspection. Si ce pointeur a la valeur NULL, le socket d’écoute n’est plus fonctionnel et l’application WSK doit appeler la fonction WskCloseSocket pour fermer le socket d’écoute dès que possible.

Valeur retournée

La fonction de rappel d’événement WskInspectEvent d’une application WSK peut retourner l’une des valeurs de WSK_INSPECT_ACTION suivantes :

Code de retour Description
WskInspectAccept
La demande de connexion entrante est acceptée.
WskInspectReject
La demande de connexion entrante est rejetée.
WskInspectPend
L’application WSK n’a pas pu déterminer si la demande de connexion entrante doit être acceptée ou rejetée immédiatement.

Remarques

Le sous-système WSK appelle la fonction de rappel d’événement WskInspectEvent d’une application WSK sur un socket d’écoute pour lequel le mode d’acceptation conditionnelle est activé. Une application WSK peut activer le mode d’acceptation conditionnelle sur un socket d’écoute en activant l’option de socket SO_CONDITIONAL_ACCEPT . Pour plus d’informations sur l’acceptation conditionnelle des connexions entrantes, consultez Écoute et acceptation des Connections entrantes.

Si une application WSK retourne WskInspectAccept à partir de sa fonction de rappel d’événement WskInspectEvent , le sous-système WSK continue d’établir la connexion de socket. Le sous-système WSK retourne le socket à l’application WSK en effectuant un appel à la fonction WskAccept ou en appelant la fonction de rappel d’événement WskAcceptEvent de l’application WSK si la fonction de rappel d’événement est activée. Si la demande de connexion entrante est supprimée avant que la connexion de socket soit entièrement établie, le sous-système WSK appelle la fonction de rappel d’événement WskAbortEvent de l’application WSK.

Si une application WSK retourne WskInspectReject à partir de sa fonction de rappel d’événement WskInspectEvent , la demande de connexion entrante est supprimée et la connexion de socket n’est pas établie.

Si une application WSK renvoie WskInspectPend à partir de sa fonction de rappel d’événement WskInspectEvent , l’application doit appeler la fonction WskInspectComplete après avoir déterminé si la demande de connexion entrante doit être acceptée ou rejetée (sauf si la demande de connexion entrante est abandonnée entre-temps). L’application WSK doit copier le contenu de la structure WSK_INSPECT_ID pointée par le paramètre InspectID vers sa propre structure WSK_INSPECT_ID avant de retourner à partir de la fonction de rappel d’événement WskInspectEvent . L’application WSK transmet un pointeur vers sa propre structure WSK_INSPECT_ID à la fonction WskInspectComplete lorsqu’elle termine l’inspection. L’application WSK utilise également cette structure pour identifier la demande de connexion entrante si la demande est abandonnée avant la fin de l’inspection.

Les structures SOCKADDR pointées par les paramètres LocalAddress et RemoteAddress sont valides uniquement pendant la durée de l’appel à la fonction de rappel d’événement WskInspectEvent . Si une application WSK retourne WskInspectPend à partir de sa fonction de rappel d’événement WskInspectEvent et qu’elle a besoin de ces adresses de transport pendant le reste de l’inspection, elle doit copier le contenu de ces structures vers ses propres structures SOCKADDR avant de revenir à partir de la fonction de rappel d’événement WskInspectEvent .

Le sous-système WSK appelle la fonction de rappel d’événement WskInspectEvent d’une application WSK à l’adresse IRQL <= DISPATCH_LEVEL.

La fonction de rappel d’événement WskInspectEvent d’une application WSK ne doit pas attendre l’achèvement d’autres requêtes WSK dans le contexte des fonctions d’achèvement WSK ou 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), mais il ne doit pas attendre leur achèvement même lorsque le rappel est appelé à IRQL = PASSIVE_LEVEL.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows Vista et versions ultérieures des systèmes d’exploitation Windows.
Plateforme cible Windows
En-tête wsk.h (inclure Wsk.h)
IRQL <= DISPATCH_LEVEL

Voir aussi

SOCKADDR

WSK_CLIENT_LISTEN_DISPATCH

WSK_INSPECT_ID

WskAbortEvent

WskAccept

WskAcceptEvent

WskCloseSocket

WskControlSocket

WskInspectComplete

WskSocket