PFN_WSK_CLOSE_SOCKET funzione di callback (wsk.h)
La funzione WskCloseSocket chiude un socket e libera tutte le risorse associate.
Sintassi
PFN_WSK_CLOSE_SOCKET PfnWskCloseSocket;
NTSTATUS PfnWskCloseSocket(
[in] PWSK_SOCKET Socket,
[in, out] PIRP Irp
)
{...}
Parametri
[in] Socket
Puntatore a una struttura WSK_SOCKET che specifica l'oggetto socket per il socket chiuso.
[in, out] Irp
Puntatore a un chiamante allocato IRP usato dal sottosistema WSK per completare l'operazione di chiusura in modo asincrono. Per altre informazioni sull'uso di IRP con funzioni WSK, vedere Uso di IRP con Funzioni kernel Winsock.
Valore restituito
WskCloseSocket restituisce uno dei codici NTSTATUS seguenti:
Codice restituito | Descrizione |
---|---|
|
Il socket è stato chiuso correttamente. L'IRP verrà completato con lo stato di esito positivo. |
|
Il sottosistema WSK non è riuscito a chiudere immediatamente il socket. Il sottosistema WSK completerà l'IRP dopo aver chiuso il socket. Lo stato dell'operazione di chiusura verrà restituito nel campo IoStatus.Status dell'IRP . |
|
Si è verificato un errore. L'IRP verrà completato con lo stato di errore. |
Commenti
Prima di chiamare la funzione WskCloseSocket , un'applicazione WSK deve assicurarsi che non siano presenti altre chiamate di funzione in corso a una delle funzioni del socket, incluse le funzioni di estensione, in uno qualsiasi degli altri thread dell'applicazione. Ad esempio, un'applicazione WSK non deve chiamare WskCloseSocket in un socket in un thread mentre l'applicazione chiama WskSend nello stesso socket in un altro thread. Le chiamate in corso alle funzioni del socket devono restituire il controllo all'applicazione WSK prima di chiamare WskCloseSocket per chiudere il socket. Tuttavia, un'applicazione WSK può chiamare WskCloseSocket se sono presenti irP in sospeso dalle chiamate precedenti alle funzioni del socket che non sono ancora state completate.
La chiamata alla funzione WskCloseSocket causa l'annullamento e il completamento di tutti gli IRP in sospeso dalle chiamate precedenti alle funzioni del socket. Il sottosistema WSK garantisce inoltre che tutte le funzioni di callback degli eventi in corso abbiano restituito il controllo al sottosistema WSK prima di chiudere il socket.
Dopo che un'applicazione WSK ha chiamato WskCloseSocket, non deve effettuare ulteriori chiamate a una delle funzioni del socket.
Se un'applicazione WSK applica un descrittore di sicurezza a un socket, la copia memorizzata nella cache del descrittore di sicurezza specificata nella chiamata a WskSocket, WskSocketConnect o WskControlSocket non viene rilasciata quando il socket viene chiuso. Un'applicazione WSK deve rilasciare la copia memorizzata nella cache del descrittore di sicurezza usando l'operazione di controllo client WSK_RELEASE_SD quando il descrittore di sicurezza non è più necessario.
Il sottosistema WSK dealloca la memoria per l'oggetto socket del socket del socket, WSK_SOCKET, allocata dal sottosistema WSK al momento della creazione del socket.
Per i socket orientati alla connessione, la funzione WskCloseSocket esegue sempre una disconnessione interrotta del socket a meno che il socket non sia già completamente disconnesso in entrambe le direzioni. Per disconnettere correttamente un socket orientato alla connessione da un indirizzo di trasporto remoto, un'applicazione WSK deve chiamare la funzione WskDisconnect .
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile in Windows Vista e versioni successive dei sistemi operativi Windows. |
Piattaforma di destinazione | Universale |
Intestazione | wsk.h (include Wsk.h) |
IRQL | <= DISPATCH_LEVEL |