Condividi tramite


PFN_WSK_INSPECT_EVENT funzione di callback (wsk.h)

Il WskInspectEvent funzione di callback degli eventi 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 su 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 al momento della creazione del socket di ascolto.

[in] RemoteAddress

Puntatore a un buffer contenente 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 al momento della creazione del 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 controllata. Se questo puntatore è NULL, il socket di ascolto non è più funzionante e l'applicazione WSK deve chiamare il WskCloseSocket funzione per chiudere il socket di ascolto il prima possibile.

Valore restituito

Un'applicazione WSK WskInspectEvent funzione di callback degli eventi può restituire uno dei valori 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
L'applicazione WSK non è in grado di determinare se la richiesta di connessione in ingresso deve essere accettata o rifiutata immediatamente.

Osservazioni

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

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

Se un'applicazione WSK restituisce WskInspectReject dal relativo WskInspectEvent funzione di callback degli eventi, la richiesta di connessione in ingresso viene eliminata e la connessione socket non viene stabilita.

Se un'applicazione WSK restituisce WskInspectPend dal relativo WskInspectEvent funzione di callback degli eventi, 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 di WSK_INSPECT_ID a cui punta il parametro InspectID nella propria struttura WSK_INSPECT_ID prima di restituire dalla funzione di callback dell'evento 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 validi solo per la durata della chiamata alla funzione di callback dell'evento WskInspectEvent. Se un'applicazione WSK restituisce WskInspectPend dai relativi WskInspectEvent funzione di callback degli eventi 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 eventi WskInspectEvent.

Il sottosistema WSK chiama il WskInspectEvent di un'applicazione WskInspectEvent funzione di callback degli eventi in IRQL <= DISPATCH_LEVEL.

Un'applicazione WSK WskInspectEvent funzione di callback degli eventi non deve attendere il completamento di altre richieste WSK nel contesto delle funzioni di completamento WSK o callback degli eventi. 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.

Fabbisogno

Requisito Valore
client minimo supportato Disponibile in Windows Vista e versioni successive dei sistemi operativi Windows.
piattaforma di destinazione Finestre
intestazione wsk.h (include Wsk.h)
IRQL <= DISPATCH_LEVEL

Vedere anche

SOCKADDR

WSK_CLIENT_LISTEN_DISPATCH

WSK_INSPECT_ID

WskAbortEvent

WskAccept

WskAcceptEvent

WskCloseSocket

WskControlSocket

WskInspectComplete

WskSocket