Función WSACleanup (winsock.h)
La función WSACleanup finaliza el uso del archivo DLL winsock 2 (Ws2_32.dll).
Sintaxis
int WSACleanup();
Valor devuelto
El valor devuelto es cero si la operación se realizó correctamente. De lo contrario, se devuelve el valor SOCKET_ERROR y se puede recuperar un número de error específico mediante una llamada a WSAGetLastError.
En un entorno multiproceso, WSACleanup finaliza las operaciones de Windows Sockets para todos los subprocesos.
Código de error | Significado |
---|---|
Debe producirse una llamada WSAStartup correcta antes de usar esta función. | |
Error en el subsistema de red. | |
Una llamada de Bloqueo de Windows Sockets 1.1 está en curso o el proveedor de servicios sigue procesando una función de devolución de llamada. |
Comentarios
Se requiere una aplicación o DLL para realizar una llamada WSAStartup correcta antes de poder usar los servicios de Windows Sockets. Cuando haya completado el uso de Windows Sockets, la aplicación o dll debe llamar a WSACleanup para anular el registro de una implementación de Windows Sockets y permitir que la implementación libere los recursos asignados en nombre de la aplicación o dll.
Cuando se llama a WSACleanup , las llamadas de Windows Sockets asincrónicas o de bloqueo pendientes emitidas por cualquier subproceso de este proceso se cancelan sin publicar ningún mensaje de notificación o sin señalar ningún objeto de evento. Las operaciones de envío o recepción superpuestas pendientes (WSASend, WSASendTo, WSARecv o WSARecvFrom con un socket superpuesto, por ejemplo) emitidos por cualquier subproceso de este proceso también se cancelan sin establecer el objeto de evento o invocar la rutina de finalización, si se especificó una. En este caso, se produce un error en las operaciones superpuestas pendientes con el estado de error WSA_OPERATION_ABORTED.
Los sockets abiertos cuando se llamó a WSACleanup se restablecen y desasignan automáticamente como si se llamara a closesocket . Los sockets que se han cerrado con closesocket , pero que todavía tienen datos pendientes que se van a enviar pueden verse afectados cuando se llama a WSACleanup . En este caso, los datos pendientes se pueden perder si el WS2_32.DLL se descarga de la memoria a medida que se cierra la aplicación. Para asegurarse de que se envían todos los datos pendientes, una aplicación debe usar el apagado para cerrar la conexión y, a continuación, esperar hasta que se complete el cierre antes de llamar a closesocket y WSACleanup. Todos los recursos y el estado interno, como los mensajes no publicados o en cola, deben desasignarse para que estén disponibles para el siguiente usuario.
Debe haber una llamada a WSACleanup para cada llamada correcta a WSAStartup. Solo la llamada de función WSACleanup final realiza la limpieza real. Las llamadas anteriores simplemente reducen un recuento de referencias interno en el WS2_32.DLL.
La función WSACleanup suele dar lugar a que se descarguen archivos DLL auxiliares específicos del protocolo. Como resultado, no se debe llamar a la función WSACleanup desde la función DllMain en un archivo DLL de aplicación. Esto puede provocar interbloqueos. Para obtener más información, consulte la función principal dll.
Windows Phone 8: esta función es compatible con las aplicaciones de Windows Phone Store en Windows Phone 8 y versiones posteriores.
Windows 8.1 y Windows Server 2012 R2: esta función es compatible con las aplicaciones de la Tienda Windows en Windows 8.1, Windows Server 2012 R2 y versiones posteriores.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 8.1, Windows Vista [aplicaciones de escritorio | Aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | winsock.h (incluya Winsock2.h) |
Library | Ws2_32.lib |
Archivo DLL | Ws2_32.dll |