Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O switch Windows Sockets transfere dados em um soquete SAN de forma assíncrona. Sempre que o switch chama o WSPSenddo provedor de serviços SAN, WSPRecvWSPRdmaWriteou WSPRdmaRead função de transferência de dados, ele especifica um ponteiro para uma estrutura sobreposta (WSAOVERLAPPED) e NULL para uma rotina de conclusão. Mesmo que o switch chame a função deWSPEventSelectdo provedor de serviços de SAN para indicar que o soquete está no modo sem bloqueio, o provedor de serviços de SAN não precisa implementar semânticas sem bloqueio para essas funções de transferência de dados.
Conforme descrito na documentação da API e SPI do Windows Sockets na documentação do SDK do Microsoft Windows , os sockets bloqueantes e não bloqueantes tratam as operações sobrepostas da mesma forma. Ou seja, o provedor de serviços SAN inicia a operação de transferência de dados específica e, em seguida, retorna imediatamente o controle ao switch. Essas funções de transferência de dados retornam o código de erro WSA_IO_PENDING para indicar que uma operação assíncrona foi iniciada e que a conclusão dessa operação ocorre posteriormente. Após a conclusão da operação, o provedor de serviços SAN sinaliza a conclusão se o switch exigir notificação de conclusão, conforme descrito nos parágrafos a seguir.
Como o switch sempre especifica NULL para uma rotina de conclusão de operações de transferência de dados sobrepostas, um provedor de serviços de SAN não é obrigado a dar suporte à conclusão por meio do uso de APCs (chamadas de procedimento assíncronas).
Sempre que possível, o switch tenta chamar a função WSPGetOverlappedResult de do provedor de serviços de SAN para verificar a conclusão das solicitações de transferência de dados. Desta forma, o switch pode evitar a sobrecarga associada a mecanismos de conclusão sobrepostos ativos. Para indicar a um provedor de serviços de SAN que o switch não requer notificação de conclusão para uma operação específica de transferência de dados sobreposta, o switch define o bit de ordem baixa do membro hEvent na estrutura WSAOVERLAPPED como um. O provedor de serviços SAN não deve notificar o switch sobre a conclusão das solicitações enviadas dessa maneira.
Se o switch exigir a notificação da conclusão de uma operação de transferência de dados sobreposta, define o bit de ordem baixa do membro hEvent na estrutura WSAOVERLAPPED como zero. O fornecedor de serviços de SAN deve concluir as operações de transferência de dados iniciadas dessa maneira, chamando a função WPUCompleteOverlappedRequest para sinalizar a conclusão. Nesta chamada, o provedor de serviços de SAN passa um ponteiro para a estrutura WSAOVERLAPPED que corresponde a uma operação de transferência de dados concluída. Nesse chamada de WPUCompleteOverlappedRequest, o provedor de serviços SAN também passa o descritor de soquete que foi adquirido do switch em uma chamada para a funçãoWPUCreateSocketHandle. O switch recebe notificações de conclusão, associa-as às solicitações de E/S de uma aplicação e conclui essas solicitações, conforme apropriado, para a aplicação.