Funzione di callback LPWSPCLEANUP (ws2spi.h)

La funzione LPWSPCleanup termina l'uso del provider di servizi Windows Sockets.

Sintassi

LPWSPCLEANUP Lpwspcleanup;

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

Parametri

[out] lpErrno

Puntatore al codice di errore.

Valore restituito

Il valore restituito è zero se l'operazione è stata avviata correttamente. In caso contrario, il valore SOCKET_ERROR viene restituito e un numero di errore specifico è disponibile in lpErrno.

Codice di errore Significato
WSANOTINITIALISED
Prima di usare questa funzione, è necessario eseguire una chiamata **WSPStartup** .
WSAENETDOWN
Il sottosistema di rete non è riuscito.
WSAEINVAL
L'identificatore del provider specificato al provider di spazio dei nomi non è gestito dal provider di spazio dei nomi.

Commenti

Il client WINDOWS Sockets 2 SPI è necessario per eseguire una chiamata WSPStartup riuscita prima di poter usare i provider di servizi Winsock. Al termine dell'uso dei provider di servizi Winsock, il client SPI chiamerà LPWSPCleanup per annullare la registrazione da un provider di servizi Winsock e consentire al provider di servizi di liberare qualsiasi risorsa allocata per conto del client Windows Sockets 2. È consentito ai client SPI di effettuare più chiamate WSPStartup . Per ogni chiamata WSPStartup , verrà emessa anche una chiamata LPWSPCleanup corrispondente. Solo LPWSPCleanup finale per il provider di servizi esegue la pulizia effettiva; le chiamate precedenti decreno semplicemente un conteggio dei riferimenti interni nel provider di servizi Winsock.

Quando il conteggio dei riferimenti interni raggiunge zero e le operazioni di pulizia effettive iniziano, le chiamate di blocco o asincrone in sospeso rilasciate da qualsiasi thread in questo processo vengono annullate senza pubblicare messaggi di notifica o segnalare eventuali oggetti evento. Tutte le operazioni di invio e ricezione in sospeso (LPWSPSend, LPWSPSendTo, LPWSPRecv, LPWSPRecvFrom con un socket sovrapposto) rilasciate da qualsiasi thread in questo processo vengono annullate senza impostare l'oggetto evento o richiamando la routine di completamento, se specificato. In questo caso, le operazioni sovrapposte in sospeso hanno esito negativo con lo stato di errore WSA_OPERATION_ABORTED. Tutti i socket aperti quando viene chiamato LPWSPCleanup vengono reimpostati e deallocati automaticamente come se LPWSPCloseSocket è stato chiamato; i socket chiusi con LPWSPCloseSocket , ma hanno ancora dati in sospeso da inviare non sono interessati, ma i dati in sospeso vengono comunque inviati.

Questa funzione non deve restituire fino a quando la DLL del provider di servizi non è pronta per essere scaricata dalla memoria. In particolare, tutti i dati rimanenti da trasmettere devono essere già stati inviati o essere accodati per la trasmissione da parti dello stack di trasporto che non verranno scaricati dalla memoria insieme alla DLL del provider di servizi.

Un provider di servizi Winsock deve essere preparato per gestire un processo che termina senza richiamare LPWSPCleanup , ad esempio come risultato di un errore. Un provider di servizi Winsock deve assicurarsi che LPWSPCleanup lasci gli elementi in uno stato in cui il Ws2_32.dll può richiamare immediatamente WSPStartup per ripristinare l'utilizzo di Winsock.

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Intestazione ws2spi.h

Vedi anche

LPWSPCloseSocket

LPWSPShutdown

WSPStartup