PFN_WSK_CLOSE_SOCKET función de devolución de llamada (wsk.h)
La función WskCloseSocket cierra un socket y libera los recursos asociados.
Sintaxis
PFN_WSK_CLOSE_SOCKET PfnWskCloseSocket;
NTSTATUS PfnWskCloseSocket(
[in] PWSK_SOCKET Socket,
[in, out] PIRP Irp
)
{...}
Parámetros
[in] Socket
Puntero a una estructura WSK_SOCKET que especifica el objeto de socket para el socket que se está cerrando.
[in, out] Irp
Puntero a un IRP asignado por el autor de la llamada que usa el subsistema WSK para completar la operación de cierre de forma asincrónica. Para obtener más información sobre el uso de IRP con funciones WSK, consulte Uso de IRP con funciones del kernel de Winsock.
Valor devuelto
WskCloseSocket devuelve uno de los siguientes códigos NTSTATUS:
Código devuelto | Descripción |
---|---|
|
El socket se cerró correctamente. El IRP se completará con el estado correcto. |
|
El subsistema WSK no pudo cerrar el socket inmediatamente. El subsistema WSK completará el IRP después de cerrar el socket. El estado de la operación de cierre se devolverá en el campo IoStatus.Status del IRP. |
|
Se produjo un error. El IRP se completará con el estado de error. |
Comentarios
Antes de llamar a la función WskCloseSocket , una aplicación WSK debe asegurarse de que no haya otras llamadas de función en curso a ninguna de las funciones del socket, incluidas las funciones de extensión, en cualquiera de los demás subprocesos de la aplicación. Por ejemplo, una aplicación WSK no debe llamar a WskCloseSocket en un socket de un subproceso mientras la aplicación llama a WskSend en el mismo socket de otro subproceso. Las llamadas en curso a las funciones del socket deben devolver el control a la aplicación WSK antes de llamar a WskCloseSocket para cerrar el socket. Sin embargo, una aplicación WSK puede llamar a WskCloseSocket si hay IRP pendientes de llamadas anteriores a las funciones del socket que aún no se han completado.
Llamar a la función WskCloseSocket hace que el subsistema WSK cancele y complete todos los IRP pendientes de las llamadas anteriores a las funciones del socket. El subsistema WSK también garantiza que las funciones de devolución de llamada de eventos en curso hayan devuelto el control al subsistema WSK antes de cerrar el socket.
Después de que una aplicación WSK haya llamado A WskCloseSocket, no debe realizar más llamadas a ninguna de las funciones del socket.
Si una aplicación WSK aplica un descriptor de seguridad a un socket, la copia almacenada en caché del descriptor de seguridad especificado en la llamada a WskSocket, WskSocketConnect o WskControlSocket no se libera cuando se cierra el socket. Una aplicación WSK debe liberar la copia almacenada en caché del descriptor de seguridad mediante la operación de control de cliente WSK_RELEASE_SD cuando el descriptor de seguridad ya no es necesario.
El subsistema WSK desasigna la memoria del objeto de socket, WSK_SOCKET, que el subsistema WSK asignó cuando se creó el socket.
En el caso de los sockets orientados a la conexión, la función WskCloseSocket siempre realiza una desconexión abortiva del socket a menos que el socket ya esté completamente desconectado en ambas direcciones. Para desconectar correctamente un socket orientado a la conexión de una dirección de transporte remota, una aplicación WSK debe llamar a la función WskDisconnect .
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows. |
Plataforma de destino | Universal |
Encabezado | wsk.h (incluya Wsk.h) |
IRQL | <= DISPATCH_LEVEL |