Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Para determinadas operações de soquete, um aplicativo Winsock Kernel (WSK) pode chamar uma das funções WSK do soquete para executar a operação ou implementar e habilitar uma função de retorno de chamada de evento no soquete que o subsistema WSK chama quando o evento associado à operação ocorre. Por exemplo, ao receber dados em um soquete orientado a conexão, um aplicativo WSK pode fazer chamadas para a função WskReceive do soquete ou implementar e habilitar uma função de retorno de chamada de evento WskReceiveEvent no soquete. Os requisitos de um aplicativo WSK ditam qual método o aplicativo deve usar. Exemplos de como usar ambos os métodos são fornecidos em toda a documentação do WSK.
As listas a seguir resumem alguns pontos-chave para cada método.
Usando funções do kernel Winsock
O aplicativo WSK conduz as operações de soquete, ou seja, o aplicativo WSK controla quando as operações de soquete ocorrem. Isso pode simplificar a sincronização exigida pelo aplicativo WSK.
O aplicativo WSK fornece IRPs para as funções de soquete. Esses IRPs são colocados em fila pelo subsistema WSK até que a operação do socket seja concluída. Para obter mais informações sobre como usar IRPs com funções WSK, consulte Usando IRPs com funções do kernel Winsock.
O aplicativo WSK pode executar operações de soquete de bloqueio aguardando que o IRP de cada operação seja concluído pelo subsistema WSK.
O aplicativo WSK pode precisar manter várias operações de soquete na fila em algumas situações para garantir a transferência de dados de alto desempenho em soquetes orientados a conexão, para evitar que datagramas de entrada sejam descartados em soquetes de datagrama ou para impedir que conexões de entrada sejam descartadas em soquetes de escuta.
O aplicativo WSK fornece os buffers de dados para as operações de transferência de dados. Isso reduz o número de vezes que os dados podem precisar ser copiados. No entanto, se um aplicativo WSK mantém várias operações de transferência de dados na fila, o aplicativo deve fornecer buffers de dados para o subsistema WSK para cada operação de transferência de dados em fila. Assim, o aplicativo WSK pode exigir recursos de memória adicionais.
Usando funções de retorno de chamada de evento
O subsistema WSK conduz as operações de sockets, o que significa que o subsistema WSK notifica o aplicativo WSK dos eventos do socket, invocando as funções de retorno de chamada dos eventos do socket. A aplicação WSK pode exigir uma sincronização mais complexa para manejar a natureza assíncrona das funções de retorno de chamada de eventos.
O aplicativo WSK não usa IRPs para as operações de soquete.
O aplicativo WSK não precisa enfileirar operações de soquete. O subsistema WSK chama as funções de callback de evento da aplicação WSK logo que os eventos do socket ocorrem. Se o aplicativo WSK puder acompanhar a taxa em que as funções de retorno de chamada de evento de um soquete são chamadas, o uso de funções de retorno de chamada de evento pode fornecer o mais alto desempenho e a menor chance de perder datagramas ou conexões de entrada.
O subsistema WSK fornece os buffers de dados para operações de transferência de dados. O aplicativo WSK deve liberar esses buffers de dados de volta para o subsistema WSK imediatamente ou dentro de um período de tempo razoável, para que o subsistema WSK não fique sem recursos de memória. Assim, o aplicativo WSK pode precisar copiar os dados dos buffers de dados que pertencem ao subsistema WSK em seus próprios buffers de dados.
Observação As listas acima referidas não são necessariamente exaustivas. Pode haver outros pontos a considerar ao escolher qual método é a melhor escolha para um determinado aplicativo WSK.