Condividi tramite


Blocco delle chiamate per una SAN

L'opzione Windows Sockets gestisce le chiamate bloccanti e l'annullamento di tali chiamate internamente o le inoltra al provider di servizi TCP/IP. Il switch non chiama mai una funzione WSPCancelBlockingCall per un provider di servizi SAN di annullare una richiesta di blocco in corso. Pertanto, non è necessario che un provider di servizi SAN implementi una funzione di WSPCancelBlockingCall.

L'opzione gestisce le richieste di blocco seguenti e gli annullamenti corrispondenti nei modi seguenti:

  • Quando un'applicazione richiede di connettere un socket SAN a un indirizzo di destinazione specifico in modalità di blocco, lo switch riceve una chiamata bloccante di WSPConnect. Lo switch inoltra la richiesta di connessione in modalità non bloccante alla funzione WSPConnect del provider di servizi SAN appropriato. Se il switch deve annullare questa richiesta di connessione per qualche motivo, chiama la funzione WSPCloseSocket del provider di servizi SAN . Il provider di servizi SAN deve interrompere tempestivamente la richiesta di connessione e rilasciare le risorse per il socket.

  • Quando l'opzione riceve una richiesta di blocco avviata da un'applicazione per eseguire un'operazione di trasferimento dati su un socket SAN, inoltra la richiesta di trasferimento dei dati in modo sovrapposto (non bloccante) al provider di servizi SAN appropriato. Ad esempio, se lo switch riceve una chiamata sincrona (bloccante) WSPSend, chiama la funzione WSPSend del provider di servizi SAN appropriato in modo sovrapposto (non bloccante). Se successivamente l'applicazione annulla l'operazione di trasferimento dei dati e lo switch ha il controllo del buffer dell'applicazione, lo switch completa la richiesta dell'applicazione con uno stato di errore. Se il buffer dell'applicazione è coinvolto in un'operazione RDMA in sospeso, lo switch attende che l'operazione si completi. Se il completamento di un trasferimento RDMA richiede troppo tempo, lo switch chiama la funzione WSPCloseSocket del provider di servizi SAN appropriato per chiudere la connessione in modo brusco, forzando così il completamento.

Nota Se un'applicazione annulla una chiamata di blocco, non può basarsi su una connessione mantenuta. La chiamata WSPCloseSocket è l'unica garantita a riuscire sul socket dopo l'annullamento di una richiesta bloccante. Per altre informazioni, vedere la documentazione di Windows Sockets SPI in Microsoft Windows SDK.