Condividi tramite


Blocco delle chiamate per una SAN

L'opzione Windows Sockets gestisce chiamate di blocco e l'annullamento di tali chiamate internamente o li inoltra al provider di servizi TCP/IP. L'opzione non chiama mai una funzione WSPCancelBlockingCall per un provider di servizi SAN per annullare una richiesta di blocco in corso. Pertanto, un provider di servizi SAN non è necessario per implementare una funzione 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, l'opzione riceve una chiamata WSPConnect bloccata. L'opzione inoltra la richiesta di connessione in modalità non sbloccante alla funzione WSPConnect del provider di servizi SAN appropriata. Se l'opzione 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 dei dati in un socket SAN, inoltra la richiesta di trasferimento dei dati in modo sovrapposto (nonblocking) al provider di servizi SAN appropriato. Ad esempio, se l'opzione riceve una chiamata WSPSend sincrona (blocco), chiama la funzione WSPSend del provider di servizi SAN appropriata in modo sovrapposto (non sbloccante). Se l'applicazione annulla in seguito l'operazione di trasferimento dei dati e il commutatore ha il controllo del buffer dell'applicazione, l'opzione completa la richiesta dell'applicazione con uno stato di errore. Se il buffer dell'applicazione è coinvolto in un'operazione RDMA in sospeso, l'opzione attende il completamento dell'operazione. Se un trasferimento RDMA richiede troppo tempo, il commutatore chiama la funzione WSPCloseSocket del provider di servizi SAN appropriato per chiudere la connessione in modo interrotto, forzando così il completamento.

Nota Se un'applicazione annulla una chiamata di blocco, non può basarsi su una connessione mantenuta. Solo la chiamata WSPCloseSocket è garantita l'esito positivo nel socket dopo l'annullamento di una richiesta di blocco. Per altre informazioni, vedere la documentazione di Windows Sockets SPI nella Microsoft Windows SDK.