Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Recupera várias entradas de porta de conclusão simultaneamente. Ele aguarda a conclusão das operações de E/S pendentes associadas à porta de conclusão especificada.
Para remover os pacotes de conclusão de E/S da fila um de cada vez, use a função GetQueuedCompletionStatus .
Sintaxe
BOOL WINAPI GetQueuedCompletionStatusEx(
_In_ HANDLE CompletionPort,
_Out_ LPOVERLAPPED_ENTRY lpCompletionPortEntries,
_In_ ULONG ulCount,
_Out_ PULONG ulNumEntriesRemoved,
_In_ DWORD dwMilliseconds,
_In_ BOOL fAlertable
);
Parâmetros
Porta de conclusão[in]
Um identificador para a porta de conclusão. Para criar uma porta de conclusão, use a função CreateIoCompletionPort .
lpCompletionPortEntries[out]
Na entrada, aponta para uma matriz pré-alocada de estruturas OVERLAPPED_ENTRY .
Na saída, recebe uma matriz de estruturas OVERLAPPED_ENTRY que contêm as entradas. O número de elementos de matriz é fornecido por ulNumEntriesRemoved.
O número de bytes transferidos durante cada E/S, a chave de conclusão que indica em qual arquivo cada E/S ocorreu e o endereço de estrutura sobreposta usado em cada E/S original são todos retornados na matriz lpCompletionPortEntries .
ulCount[in]
O número máximo de entradas a serem removidas.
ulNumEntriesRemoved[out]
Um ponteiro para uma variável que recebe o número de entradas realmente removidas.
dwMilissegundos[in]
O número de milissegundos que o chamador está disposto a aguardar até que um pacote de conclusão apareça na porta de conclusão. Se um pacote de conclusão não aparecer dentro do tempo especificado, a função atingirá o tempo limite e retornará FALSE.
Se dwMilliseconds for INFINITE (0xFFFFFFFF), a função nunca atingirá o tempo limite. Se dwMilliseconds for zero e não houver nenhuma operação de E/S para remover da fila, a função atingirá o tempo limite imediatamente.
Windows XP, Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 e Windows Server 2008 R2: O valor dwMilliseconds inclui o tempo gasto em estados de baixo consumo de energia. Por exemplo, o tempo limite continua em contagem regressiva enquanto o computador está em suspensão.
Windows 8, Windows Server 2012, Windows 8.1, Windows Server 2012 R2, Windows 10 e Windows Server 2016: O valor dwMilliseconds não inclui o tempo gasto em estados de baixo consumo de energia. Por exemplo, o tempo limite não continua em contagem regressiva enquanto o computador está em suspensão.
fAlertável[in]
Se esse parâmetro for FALSE, a função não retornará até que o período de tempo limite tenha decorrido ou uma entrada seja recuperada.
Se o parâmetro for TRUE e não houver entradas disponíveis, a função executará uma espera alertável. O thread retorna quando o sistema enfileira uma rotina de conclusão de E/S ou APC para o thread e o thread executa a função.
Uma rotina de conclusão é enfileirada quando a função ReadFileEx ou WriteFileEx na qual ela foi especificada é concluída e o thread de chamada é o thread que iniciou a operação. Uma APC é enfileirada quando você chama QueueUserAPC.
Valor de retorno
Retorna diferente de zero TRUE se for bem-sucedido ou zero FALSE caso contrário.
Para obter informações de erro estendidas, chame GetLastError.
Observações
Essa função associa um thread à porta de conclusão especificada. Um thread pode ser associado a no máximo uma porta de conclusão.
Essa função retorna TRUE quando pelo menos uma E/S pendente é concluída, mas é possível que uma ou mais operações de E/S tenham falhado. Observe que cabe ao usuário dessa função verificar a lista de entradas retornadas no parâmetro lpCompletionPortEntries para determinar quais delas correspondem a possíveis operações de E/S com falha examinando o status contido no membro lpOverlapped em cada OVERLAPPED_ENTRY.
Essa função retorna FALSE quando nenhuma operação de E/S foi removida da fila. Isso normalmente significa que ocorreu um erro durante o processamento dos parâmetros para essa chamada ou que o identificador CompletionPort foi fechado ou é inválido. A função GetLastError fornece informações de erro estendidas.
Se uma chamada para GetQueuedCompletionStatusEx falhar porque o identificador associado a ela está fechado, a função retornará FALSE e GetLastError retornará ERROR_ABANDONED_WAIT_0.
Os aplicativos de servidor podem ter vários threads chamando a função GetQueuedCompletionStatusEx para a mesma porta de conclusão. À medida que as operações de E/S são concluídas, elas são enfileiradas para essa porta na ordem primeiro a entrar, primeiro a sair. Se um thread estiver aguardando ativamente essa chamada, uma ou mais solicitações enfileiradas concluirão a chamada somente para esse thread.
Para obter mais informações sobre a teoria, o uso e as funções associadas da porta de conclusão de E/S, consulte Portas de conclusão de E/S.
No Windows 8 e no Windows Server 2012, essa função é compatível com as tecnologias a seguir.
| Tecnologia | Suportado |
|---|---|
| Protocolo SMB (Bloco de Mensagens do Servidor) 3.0 | Sim |
| TFO (Failover Transparente) do SMB 3.0 | Sim |
| SMB 3.0 com Compartilhamentos de Arquivos de Expansão (SO) | Sim |
| Sistema de Arquivos de Volume Compartilhado de Cluster (CsvFS) | Sim |
| ReFS (Sistema de Arquivos Resiliente) | Sim |
Requisitos
| Requisito | Valor |
|---|---|
| Cliente mínimo com suporte | Windows Vista [aplicativos da área de trabalho | Aplicativos UWP] |
| Servidor mínimo com suporte | Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP] |
| Cabeçalho |
IoAPI.h (incluir Windows.h)WinBase.h no Windows Server 2008 R2, Windows 7, Windows Server 2008 e Windows Vista (incluir Windows.h) |
| Biblioteca | Kernel32.lib |
| DLL | Kernel32.dll |
Consulte também
Visão geral Tópicos
Funções de gerenciamento de arquivos
Usando os cabeçalhos do Windows
Funções