Winsock Completion Indications
9/8/2008
Sockets do Windows (Winsock) fornece várias opções para receber indicações de conclusão, assim, fornecer aplicativos com apropriado níveis de flexibilidade. Eles incluem bloqueio e espera, em Objetos evento, pesquisa objetos evento e rotinas de conclusão Soquete E/S.
Bloqueando e aguardando conclusão indicação
Os aplicativos podem bloco enquanto aguardava um ou mais objetos evento tornam-se definir usando a WaitForMultipleObjects função.
Pesquisa de indicação de conclusão
Aplicativos que preferem não para bloco pode usar o WSAGetOverlappedResult função para chamada seletiva para o status de conclusão associado com qualquer objeto evento específico. Essa função indica se a operação sobreposta foi concluída ou não e se concluída, organiza para o WSAGetLastError função para recuperar o status de erro da operação sobreposta.
Usando rotinas de conclusão Soquete E/S
Observação
Para Windows Embedded CE, evite especificando rotinas de conclusão para operações E/S sobrepostas.Porque Windows Embedded CE não suporte assíncrono chamadas procedimento (APCs), que ocorrer no segmento de chamado, o OS tem para criar um segmento para cada chamar que especifica uma rotina de conclusão.Como chamar cada função requer um separar segmento, Usando rotinas de conclusão com E/S sobreposto rapidamente pode se tornar muito consumindo memória.Usar eventos é recomendado em vez disso.Windows Embedded CE não sinalizar eventos para operações E/S sobrepostos que foram concluídas com êxito.
As funções usadas para iniciar sobreposto (E/SWSASend, WSASendTo, WSARecv, WSARecvFrom) todos tenham lpCompletionRoutine Como um opcional parâmetro de entrada. Este é um ponteiro para uma função Application-specific que é chamado após um iniciado com êxito sobreposto operação E/S concluído, ou caso contrário. A rotina de conclusão segue as mesmas regras que stipulated para Win32 arquivo E/S conclusão rotinas. Isto é, a rotina de conclusão não é invocada até que o segmento esteja em um estado de espera alertable. Um aplicativo que usa a opção de rotina de conclusão para uma determinada solicitação E/S sobreposta não pode usar a opção de espera de WSAGetOverlappedResult Para isso mesmo sobreposto solicitação E/S.
Os transportes permitem que um aplicativo para invocar enviar e receber operações de dentro de contexto da rotina de conclusão Soquete E/S e garante que, para um determinado Soquete, E/S conclusão rotinas serão não ser aninhadas. Isso permite tempo-confidencial transmissões dados para ocorrer inteiramente em um contexto preemptiva.