Condividi tramite


PFN_WSK_INSPECT_EVENT funzione di callback (wsk.h)

La funzione di callback evento WskInspectEvent notifica a un'applicazione WSK che è stata ricevuta una richiesta di connessione in ingresso in un socket di ascolto con modalità di accettazione condizionale abilitata.

Sintassi

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
)
{...}

Parametri

[in, optional] SocketContext

Puntatore al contesto del socket per il socket in ascolto in cui è stata ricevuta la richiesta di connessione in ingresso. L'applicazione WSK ha fornito questo puntatore al sottosistema WSK quando ha chiamato la funzione WskSocket per creare il socket di ascolto.

[in] LocalAddress

Puntatore a un buffer contenente l'indirizzo di trasporto locale in cui è arrivata la richiesta di connessione in ingresso. Il buffer contiene il tipo di struttura SOCKADDR specifico che corrisponde alla famiglia di indirizzi specificata dall'applicazione WSK quando ha creato il socket di ascolto.

[in] RemoteAddress

Puntatore a un buffer che contiene l'indirizzo di trasporto remoto da cui ha avuto origine la richiesta di connessione in ingresso. Il buffer contiene il tipo di struttura SOCKADDR specifico che corrisponde alla famiglia di indirizzi specificata dall'applicazione WSK quando ha creato il socket di ascolto.

[in, optional] InspectID

Puntatore a una struttura WSK_INSPECT_ID . Il contenuto della struttura identifica la richiesta di connessione in ingresso che viene esaminata. Se questo puntatore è NULL, il socket di ascolto non è più funzionale e l'applicazione WSK deve chiamare la funzione WskCloseSocket per chiudere il socket di ascolto il prima possibile.

Valore restituito

La funzione di callback dell'evento WskInspectEvent dell'applicazione WskInspectEvent può restituire uno dei valori di WSK_INSPECT_ACTION seguenti:

Codice restituito Descrizione
WskInspectAccept
La richiesta di connessione in ingresso viene accettata.
WskInspectReject
La richiesta di connessione in ingresso viene rifiutata.
WskInspectPend
Impossibile determinare se la richiesta di connessione in ingresso deve essere accettata o rifiutata immediatamente.

Commenti

Il sottosistema WSK chiama la funzione di callback dell'evento WskInspectEvent dell'applicazione WskInspectEvent in un socket di ascolto con modalità di accettazione condizionale abilitata. Un'applicazione WSK può abilitare la modalità di accettazione condizionale in un socket in ascolto abilitando l'opzione socket SO_CONDITIONAL_ACCEPT . Per altre informazioni sull'accettazione condizionale delle connessioni in ingresso, vedere Ascolto e accettazione di Connections in ingresso.

Se un'applicazione WSK restituisce WskInspectAccept dalla relativa funzione di callback degli eventi WskInspectEvent , il sottosistema WSK continua a stabilire la connessione socket. Il sottosistema WSK restituisce il socket all'applicazione WSK completando una chiamata alla funzione WskAccept oppure chiamando la funzione di callback dell'evento WskAcceptEvent dell'applicazione WskAcceptEvent se la funzione di callback dell'evento è abilitata. Se la richiesta di connessione in ingresso viene eliminata prima che la connessione socket venga completamente stabilita, il sottosistema WSK chiama la funzione di callback dell'evento WskAbortEvent dell'applicazione WskAbortEvent .

Se un'applicazione WSK restituisce WskInspectReject dalla relativa funzione di callback dell'evento WskInspectEvent , la richiesta di connessione in ingresso viene eliminata e la connessione socket non viene stabilita.

Se un'applicazione WSK restituisce WskInspectPend dalla relativa funzione di callback degli eventi WskInspectEvent , l'applicazione deve chiamare la funzione WskInspectComplete dopo aver determinato se la richiesta di connessione in ingresso deve essere accettata o rifiutata (a meno che la richiesta di connessione in ingresso non venga interrotta nel frattempo). L'applicazione WSK deve copiare il contenuto della struttura WSK_INSPECT_ID a cui punta il parametro InspectID alla propria struttura WSK_INSPECT_ID prima di restituire dalla funzione di callback eventi WskInspectEvent . L'applicazione WSK passa un puntatore alla propria struttura WSK_INSPECT_ID alla funzione WskInspectComplete quando completa l'ispezione. L'applicazione WSK usa anche questa struttura per identificare la richiesta di connessione in ingresso se la richiesta viene interrotta prima del completamento dell'ispezione.

Le strutture SOCKADDR a cui puntano i parametri LocalAddress e RemoteAddress sono valide solo per la durata della chiamata alla funzione di callback dell'evento WskInspectEvent. Se un'applicazione WSK restituisce WskInspectPend dalla sua funzione di callback degli eventi WskInspectEvent e richiede questi indirizzi di trasporto durante il resto dell'ispezione, deve copiare il contenuto di queste strutture nelle proprie strutture SOCKADDR prima di restituire dalla funzione di callback dell'evento WskInspectEvent .

Il sottosistema WSK chiama la funzione di callback dell'evento WskInspectEvent dell'applicazione WskInspectEvent in IRQL <= DISPATCH_LEVEL.

La funzione di callback dell'evento WskInspectEvent dell'applicazione WskInspectEvent non deve attendere il completamento di altre richieste WSK nel contesto delle funzioni di completamento o callback degli eventi WSK. Il callback può avviare altre richieste WSK (presupponendo che non spenda troppo tempo in DISPATCH_LEVEL), ma non deve attendere il completamento anche quando il callback viene chiamato in IRQL = PASSIVE_LEVEL.

Requisiti

Requisito Valore
Client minimo supportato Disponibile in Windows Vista e versioni successive dei sistemi operativi Windows.
Piattaforma di destinazione Windows
Intestazione wsk.h (include Wsk.h)
IRQL <= DISPATCH_LEVEL

Vedi anche

SOCKADDR

WSK_CLIENT_LISTEN_DISPATCH

WSK_INSPECT_ID

WskAbortEvent

WskAccept

WskAcceptEvent

WskCloseSocket

WskControlSocket

WskInspectComplete

WskSocket