Condividi tramite


Chiusura di un socket SAN

Dopo l'opzione Windows Sockets su entrambi i lati di una connessione chiama la funzione WSPCloseSocket di un provider di servizi SAN, il provider di servizi SAN esegue la procedura seguente per chiudere un socket SAN:

  1. Ogni provider di servizi SAN su entrambi i lati della connessione rimuove la connessione e completa le richieste di ricezione- Le chiamate di funzione WSPRecv restituiscono il codice di errore appropriato nel parametro lpErrno . Ad esempio, un provider di servizi SAN restituisce WSAECONNRESET per indicare che il peer remoto reimposta la connessione.

    Ogni provider di servizi SAN segnala anche il completamento delle operazioni sovrapposte in sospeso per la chiusura del socket SAN. Il provider di servizi SAN chiama la funzione WPUCompleteOverlappedRequest per segnalare il completamento di un'operazione sovrapposta. In questa chiamata il provider di servizi SAN passa un puntatore alla struttura WSAOVERLAPPED associata all'operazione sovrapposta. Il provider di servizi SAN passa anche il codice di errore WSA_OPERATION_ABORTED per specificare che l'operazione sovrapposta è stata annullata perché il socket SAN è stato chiuso. Prima di segnalare il completamento di un'operazione sovrapposta, il provider di servizi SAN deve rilasciare qualsiasi memoria necessaria per l'operazione.

  2. Dopo aver eseguito il provider di servizi SAN che esegue chiamate-chiamate a funzioni precedute da WPU-to-the switch usando l'handle al socket SAN ottenuto tramite una chiamata up-call WPUCreateSocketHandle, il provider di servizi SAN deve effettuare una chiamata finale al commutatore chiamando la funzione WPUCloseSocketHandle per chiudere l'handle del socket. Il provider di servizi SAN pulisce quindi tutto ciò che riguarda il socket SAN. Le chiamate up-call sono chiamate di funzione dalla tabella di invio up-call del commutatore. L'opzione fornisce un puntatore a questa tabella di invio up-call quando chiama la funzione WSPStartupEx del provider di servizi SAN per iniziare a usare il provider.

Purché un provider di servizi SAN esegua la procedura precedente per chiudere un socket SAN, l'opzione si occupa di tutto il resto.

Per evitare condizioni di gara tra un provider di servizi SAN e l'avvio della chiusura del socket, il provider di servizi SAN non deve mai rilasciare strutture di dati correlate a un socket SAN fino a quando il commutatore chiama WSPCloseSocket.