Partilhar via


Bloquear chamadas para uma SAN

A opção Windows Sockets manipula o bloqueio de chamadas e o cancelamento dessas chamadas internamente ou as encaminha para o provedor de serviços TCP/IP. A opção nunca chama uma função WSPCancelBlockingCall para um provedor de serviços SAN para cancelar uma solicitação de bloqueio em andamento. Portanto, um provedor de serviços SAN não é necessário para implementar uma função WSPCancelBlockingCall .

A opção manipula as seguintes solicitações de bloqueio e cancelamentos correspondentes das seguintes maneiras:

  • Quando um aplicativo solicita para conectar um soquete SAN a um endereço de destino específico no modo de bloqueio, o comutador recebe uma chamada WSPConnect de bloqueio. A opção encaminha a solicitação de conexão no modo sem bloqueio para a função WSPConnect do provedor de serviços SAN apropriada. Se a opção precisar cancelar essa solicitação de conexão por algum motivo, ela chamará a função WSPCloseSocket do provedor de serviços SAN. O provedor de serviços SAN deve anular imediatamente a solicitação de conexão e os recursos de liberação do soquete.

  • Quando a opção recebe uma solicitação de bloqueio iniciada por um aplicativo para executar uma operação de transferência de dados em um soquete SAN, ela encaminha a solicitação de transferência de dados de maneira sobreposta (sem bloqueio) para o provedor de serviços SAN apropriado. Por exemplo, se a opção receber uma chamada WSPSend síncrona (bloqueio), ela chamará a função WSPSend do provedor de serviços SAN apropriada de maneira sobreposta (sem bloqueio). Se o aplicativo cancelar posteriormente a operação de transferência de dados e a opção tiver o controle do buffer do aplicativo, a opção concluirá a solicitação do aplicativo com uma falha status. Se o buffer do aplicativo estiver envolvido em uma operação RDMA pendente, a opção aguardará a conclusão da operação. Se uma transferência de RDMA demorar muito para ser concluída, a opção chamará a função WSPCloseSocket do provedor de serviços SAN apropriada para fechar a conexão de maneira anulativa, forçando assim a conclusão.

Nota Se um aplicativo cancelar uma chamada de bloqueio, ele não poderá contar com uma conexão sendo preservada. Somente a chamada WSPCloseSocket tem a garantia de ter êxito no soquete após o cancelamento de uma solicitação de bloqueio. Para obter mais informações, consulte a documentação spi do Windows Sockets no SDK do Microsoft Windows.