Partager via


PFN_WSK_INSPECT_EVENT fonction de rappel (wsk.h)

La fonction de rappel d’événements WskInspectEvent avertit une application WSK qu’une demande de connexion entrante sur un socket d’écoute 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 au 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 sur 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 à partir de laquelle la demande de connexion entrante provient. 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 est 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 de retour

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

Retourner le code 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 WSK WskInspectEvent sur un socket d’écoute sur 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 l’écoute et l’acceptation des connexions 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 WSK WskAcceptEvent fonction de rappel d’événement si la fonction de rappel d’événement est activée. Si la demande de connexion entrante est supprimée avant l’établissement complet de la connexion de socket, le sous-système WSK appelle la fonction de rappel d’événements WskAbortEvent de l’application WSK.

Si une application WSK retourne WskInspectReject à partir de son 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 retourne WskInspectPend à partir de son 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 en attendant). L’application WSK doit copier le contenu de la structure WSK_INSPECT_ID pointée par le paramètre InspectID dans sa propre structure de WSK_INSPECT_ID avant de retourner à partir de la fonction de rappel d’événement WskInspectEvent. L’application WSK transmet un pointeur à sa propre structure de 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 le LocalAddress et les paramètres 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 son 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 dans 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énements WSK WskInspectEvent au <IRQL = DISPATCH_LEVEL.

La fonction de rappel d’événements WskInspectEvent d’une application WSK ne doit pas attendre l’achèvement d’autres requêtes WSK dans le contexte des fonctions de rappel d’événements ou de saisie semi-automatique WSK. 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.

Exigences

Exigence Valeur
client minimum pris en charge Disponible dans Windows Vista et versions ultérieures des systèmes d’exploitation Windows.
plateforme cible Windows
d’en-tête wsk.h (include Wsk.h)
IRQL <= DISPATCH_LEVEL

Voir aussi

SOCKADDR

WSK_CLIENT_LISTEN_DISPATCH

WSK_INSPECT_ID

WskAbortEvent

WskAccept

WskAcceptEvent

WskCloseSocket

WskControlSocket

WskInspectComplete

WskSocket