PFN_WSK_RECEIVE_FROM_EVENT funzione di callback (wsk.h)
La funzione di callback dell'evento WskReceiveFromEvent notifica a un'applicazione WSK che uno o più datagrammi sono stati ricevuti in un socket di datagrammi.
Sintassi
PFN_WSK_RECEIVE_FROM_EVENT PfnWskReceiveFromEvent;
NTSTATUS PfnWskReceiveFromEvent(
[in, optional] PVOID SocketContext,
[in] ULONG Flags,
[in, optional] PWSK_DATAGRAM_INDICATION DataIndication
)
{...}
Parametri
[in, optional] SocketContext
Puntatore al contesto del socket per il socket del datagramma che ha ricevuto i datagrammi. L'applicazione WSK ha fornito questo puntatore al sottosistema WSK quando ha chiamato la funzione WskSocket per creare il socket del datagramma.
[in] Flags
Valore ULONG che contiene un OR bit per bit di una combinazione dei flag seguenti:
MSG_BCAST
I datagrammi sono stati ricevuti come trasmissione a livello di collegamento o con un indirizzo di trasporto di destinazione che è un indirizzo di trasmissione.
MSG_MCAST
I datagrammi sono stati ricevuti con un indirizzo di trasporto di destinazione che è un indirizzo multicast.
WSK_FLAG_AT_DISPATCH_LEVEL
Il sottosistema WSK denominato WskReceiveFromEvent funzione di callback degli eventi in IRQL = DISPATCH_LEVEL. Se questo flag non è impostato, il sottosistema WSK potrebbe aver chiamato il WskReceiveFromEvent funzione di callback degli eventi in qualsiasi <IRQL = DISPATCH_LEVEL.
[in, optional] DataIndication
Puntatore a un elenco collegato di strutture WSK_DATAGRAM_INDICATION che descrivono i datagrammi ricevuti. Se questo parametro è NULL, il socket non è più funzionante e l'applicazione WSK deve chiamare la funzione WskCloseSocket per chiudere il socket il prima possibile.
Valore restituito
Un'applicazione WSK WskReceiveFromEvent funzione di callback degli eventi può restituire uno dei codici NTSTATUS seguenti:
Codice restituito | Descrizione |
---|---|
|
L'applicazione WSK ha accettato i datagrammi e recuperato tutti i datagrammi dall'elenco collegato di WSK_DATAGRAM_INDICATION strutture. Il sottosistema WSK può chiamare di nuovo il WskReceiveFromEvent funzione di callback degli eventi quando vengono ricevuti nuovi datagrammi nel socket. |
|
L'applicazione WSK ha accettato i datagrammi ma non ha recuperato tutti i datagrammi dall'elenco collegato di WSK_DATAGRAM_INDICATION strutture. L'applicazione WSK mantiene l'elenco collegato di strutture WSK_DATAGRAM_INDICATION fino a quando non vengono recuperati tutti i datagrammi. Dopo che l'applicazione WSK ha recuperato tutti i datagrammi, chiama la funzione WskRelease per rilasciare l'elenco collegato di strutture WSK_DATAGRAM_INDICATION al sottosistema WSK. Il sottosistema WSK può chiamare di nuovo il WskReceiveFromEvent funzione di callback degli eventi quando vengono ricevuti nuovi datagrammi nel socket. |
|
L'applicazione WSK non ha accettato i datagrammi. Se un'applicazione WSK restituisce questo codice di stato, il sottosistema WSK risponderà in modo diverso a seconda della modalità di abilitazione dell'applicazione WSK WskReceiveFromEvent funzione di callback degli eventi.
|
Osservazioni
Il sottosistema WSK chiama il WskReceiveFromEvent di un'applicazione WSK funzione di callback degli eventi quando vengono ricevuti nuovi datagrammi in un socket di datagram solo se la funzione di callback dell'evento è stata abilitata in precedenza con l'opzione socket SO_WSK_EVENT_CALLBACK. Per altre informazioni sull'abilitazione delle funzioni di callback degli eventi di un socket, vedere Abilitazione e disabilitazione delle funzioni di callback degli eventi.
Se la WskReceiveFromEvent di un'applicazione WskReceiveFromEvent funzione di callback di eventi è abilitata in un socket di datagrammi e l'applicazione ha anche una chiamata in sospeso alla funzione WskReceiveFrom sullo stesso socket di datagram, quando arrivano i datagrammi, la chiamata in sospeso alla funzione di callback dell'evento WskReceiveFrom avrà la precedenza sull'WskReceiveFromEvent. Il sottosistema WSK chiama il WskReceiveFromEvent funzione di callback degli eventi solo se non sono presenti irP in coda dalle chiamate in sospeso alla funzione WskReceiveFrom. Tuttavia, un'applicazione WSK non deve presupporre che il sottosistema WSK non chiamerà il WskReceiveFromEvent funzione di callback degli eventi per un socket di datagram che ha una chiamata in sospeso alla funzione WskReceiveFrom. Esistono race condition in cui il sottosistema WSK potrebbe comunque chiamare la funzione di callback dell'evento WSK WskReceiveFromE vent per il socket. L'unico modo per un'applicazione WSK per garantire che il sottosistema WSK non chiami la funzione di callback dell'evento WskReceiveFromE vent in un socket di datagrammi non chiamerà la funzione di callback dell'evento WskReceiveFromEvent dell'applicazione funzione di callback dell'evento sul socket.
Il sottosistema WSK chiama la funzione di callback di un'applicazione WSK WskReceiveFromEvent funzione di callback degli eventi in IRQL <= DISPATCH_LEVEL.
Un'applicazione WSK WskReceiveFromEvent 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 |