Función de devolución de llamada LPWSPCLEANUP (ws2spi.h)

La función LPWSPCleanup finaliza el uso del proveedor de servicios de Windows Sockets.

Sintaxis

LPWSPCLEANUP Lpwspcleanup;

int Lpwspcleanup(
  [out] LPINT lpErrno
)
{...}

Parámetros

[out] lpErrno

Puntero al código de error.

Valor devuelto

El valor devuelto es cero si la operación se ha iniciado correctamente. De lo contrario, se devuelve el valor SOCKET_ERROR y hay disponible un número de error específico en lpErrno.

Código de error Significado
WSANOTINITIALISED
Se debe realizar una llamada correcta a **WSPStartup** antes de usar esta función.
WSAENETDOWN
Error en el subsistema de red.
WSAEINVAL
El identificador de proveedor proporcionado al proveedor de espacio de nombres no se administra mediante el proveedor de espacio de nombres.

Observaciones

El cliente SPI de Windows Sockets 2 es necesario para realizar una llamada WSPStartup correcta antes de poder usar proveedores de servicios Winsock. Cuando haya completado el uso de proveedores de servicios winsock, el cliente SPI llamará a LPWSPCleanup para anular su registro desde un proveedor de servicios winsock y permitir que el proveedor de servicios libere los recursos asignados en nombre del cliente de Windows Sockets 2. Se permite que los clientes SPI realicen más de una llamada WSPStartup . Para cada llamada WSPStartup , también se emitirá una llamada LPWSPCleanup correspondiente. Solo el LPWSPCleanup final para el proveedor de servicios realiza la limpieza real; las llamadas anteriores simplemente reducen un recuento de referencias interno en el proveedor de servicios winsock.

Cuando el recuento de referencias internas alcanza cero y se inician las operaciones de limpieza reales, se cancelan las llamadas de bloqueo o asincrónicas pendientes emitidas por cualquier subproceso de este proceso sin publicar ningún mensaje de notificación ni señalar ningún objeto de evento. Cualquier operación de envío y recepción superpuesta pendiente (LPWSPSend, LPWSPSendTo, LPWSPRecv, LPWSPRecvFrom con un socket superpuesto) emitida por cualquier subproceso de este proceso también se cancela sin establecer el objeto de evento ni invocar la rutina de finalización, si se especifica. 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 llama a LPWSPCleanup se restablecen y desasignan automáticamente como si se llamara a LPWSPCloseSocket ; Los sockets que se han cerrado con LPWSPCloseSocket , pero que aún tienen datos pendientes para enviarse no se ven afectados, pero los datos pendientes todavía se envían.

Esta función no debe devolverse hasta que el archivo DLL del proveedor de servicios esté preparado para descargarse de la memoria. En concreto, cualquier dato restante que se transmita debe haber sido enviado o puesto en cola para la transmisión por partes de la pila de transporte que no se descargarán de la memoria junto con el archivo DLL del proveedor de servicios.

Un proveedor de servicios winsock debe estar preparado para tratar un proceso que finaliza sin invocar LPWSPCleanup (por ejemplo, como resultado de un error). Un proveedor de servicios winsock debe asegurarse de que LPWSPCleanup deja las cosas en un estado en el que el Ws2_32.dll puede invocar inmediatamente WSPStartup para restablecer el uso de Winsock.

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado ws2spi.h

Consulte también

LPWSPCloseSocket

LPWSPShutdown

WSPStartup