SO_WSK_EVENT_CALLBACK

L'opzione socket SO_WSK_EVENT_CALLBACK consente a un'applicazione WSK di abilitare e disabilitare le funzioni di callback degli eventi di un socket. Questa opzione socket si applica solo ai socket in ascolto, ai socket di datagrammi, ai socket orientati alla connessione e ai socket di base che hanno registrato un'interfaccia di estensione per la quale è definita almeno una funzione di callback degli eventi.

Se un'applicazione WSK usa questa opzione socket per abilitare o disabilitare le funzioni di callback di eventi su un socket di ascolto o un socket di datagram, è necessario farlo dopo che il socket è stato associato a un indirizzo di trasporto locale.

Se un'applicazione WSK usa questa opzione socket per abilitare o disabilitare le funzioni di callback degli eventi in un socket orientato alla connessione, è necessario farlo dopo che il socket è stato connesso a un indirizzo di trasporto remoto.

Per abilitare o disabilitare le funzioni di callback degli eventi in un socket, un'applicazione WSK chiama la funzione WskControlSocket con i parametri seguenti.

Parametro Valore

RequestType

WskSetOption

ControlCode

SO_WSK_EVENT_CALLBACK

Level

SOL_SOCKET

InputSize

sizeof(WSK_EVENT_CALLBACK_CONTROL)

Inputbuffer

Puntatore a una struttura WSK_EVENT_CALLBACK_CONTROL

OutputSize

0

OutputBuffer

NULL

OutputSizeReturned

NULL

Un'applicazione WSK non specifica un puntatore a un IRP quando si chiama la funzione WskControlSocket per abilitare le funzioni di callback degli eventi in un socket.

Un'applicazione WSK può facoltativamente specificare un puntatore a un IRP quando si chiama la funzione WskControlSocket per disabilitare una funzione di callback di eventi in un socket.

Quando un'applicazione WSK chiama WskControlSocket per disabilitare una funzione di callback di eventi, il sottosistema WSK si comporta come segue:

  • Se non sono presenti chiamate in corso alla funzione di callback dell'evento che viene disabilitata quando l'applicazione WSK chiama la funzione WskControlSocket , la funzione di callback dell'evento è disabilitata e la funzione WskControlSocket restituisce STATUS_SUCCESS. Se l'applicazione WSK specifica un IRP, l'IRP viene completato con lo stato di esito positivo.

  • Se sono in corso chiamate alla funzione di callback dell'evento che viene disabilitata quando l'applicazione WSK chiama la funzione WskControlSocket e l'applicazione WSK ha specificato un IRP, la funzione WskControlSocket restituisce STATUS_PENDING. Il sottosistema WSK disabilita la funzione di callback degli eventi e completa l'IRP dopo che tutte le chiamate in corso alla funzione di callback dell'evento sono state restituite.

  • Se sono presenti chiamate in corso alla funzione di callback dell'evento che viene disabilitata quando l'applicazione WSK chiama la funzione WskControlSocket e l'applicazione WSK non ha specificato un IRP, la funzione WskControlSocket restituisce STATUS_EVENT_PENDING. Il sottosistema WSK disabilita la funzione di callback degli eventi dopo che tutte le chiamate in corso alla funzione di callback dell'evento sono state restituite.

Quando si abilita o disabilita una delle funzioni di callback degli eventi WSK standard, un'applicazione WSK imposta il membro NpiId della struttura WSK_EVENT_CALLBACK_CONTROL su un puntatore all'identificatore NPI (WSK Network Programming Interface), NPI_WSK_INTERFACE_ID.

Quando si abilitano o disabilitano funzioni di callback per un'interfaccia di estensione, un'applicazione WSK imposta il membro NpiId della struttura WSK_EVENT_CALLBACK_CONTROL su un puntatore all'identificatore NPI per tale interfaccia di estensione.

Quando si abilitano le funzioni di callback degli eventi, un'applicazione WSK può abilitare contemporaneamente qualsiasi combinazione delle funzioni di callback degli eventi valide per una determinata categoria di socket WSK. L'applicazione WSK abilita contemporaneamente queste combinazioni impostando il membro EventMask della struttura WSK_EVENT_CALLBACK_CONTROL su un OR bit per bit dei flag di evento per tutte le funzioni di callback degli eventi abilitate.

Quando si disabilitano le funzioni di callback degli eventi, un'applicazione WSK deve disabilitare ogni funzione di callback degli eventi in modo indipendente. Un'applicazione WSK disabilita in modo indipendente una funzione di callback di eventi impostando il membro EventMask della struttura WSK_EVENT_CALLBACK_CONTROL su un OR bit per bit del flag di evento per la funzione di callback dell'evento disabilitata e il flag WSK_EVENT_DISABLE.

La tabella seguente illustra i flag di evento validi per un socket di ascolto.

Flag evento Funzione di callback degli eventi

WSK_EVENT_ACCEPT

WskAcceptEvent

La tabella seguente illustra i flag di evento validi per un socket di datagrammi.

Flag evento Funzione di callback degli eventi

WSK_EVENT_RECEIVE_FROM

WskReceiveFromEvent

La tabella seguente illustra i flag di evento validi per un socket orientato alla connessione.

Flag evento Funzione di callback degli eventi

WSK_EVENT_DISCONNECT

WskDisconnectEvent

WSK_EVENT_RECEIVE

WskReceiveEvent

WSK_EVENT_SEND_BACKLOG

WskSendBacklogEvent

Un socket di ascolto può abilitare automaticamente le funzioni di callback degli eventi sui socket orientati alla connessione accettati dal socket in ascolto. Un'applicazione WSK abilita automaticamente queste funzioni di callback abilitando le funzioni di callback degli eventi socket orientate alla connessione nel socket di ascolto. Le funzioni di callback degli eventi vengono abilitate automaticamente in un socket orientato alla connessione accettata solo se il socket viene accettato dalla funzione di callback dell'evento WskAcceptEvent del socket in ascolto. Se il socket orientato alla connessione viene accettato dalla funzione WskAccept del socket di ascolto, le funzioni di callback degli eventi del socket accettato non vengono abilitate automaticamente.

Dopo l'abilitazione di tutte le funzioni di callback degli eventi orientate alla connessione in un socket di ascolto, non possono essere disabilitate nel socket di ascolto. Se la funzione di callback dell'evento WskAcceptEvent è disabilitata e quindi riabilitata in un socket di ascolto, tutte le funzioni di callback degli eventi orientate alla connessione che sono state originariamente abilitate su tale socket in ascolto continueranno a essere applicate a tutti i socket orientati alla connessione accettati dalla funzione di callback dell'evento WskAcceptEvent .

Per altre informazioni sull'abilitazione e la disabilitazione delle funzioni di callback degli eventi di un socket, vedere Abilitazione e disabilitazione delle funzioni di callback degli eventi.

Requisiti

Versione

Disponibile in Windows Vista e versioni successive dei sistemi operativi Windows.

Intestazione

Wsk.h (include Wsk.h)