Função GetQueuedCompletionStatusEx (ioapiset.h)
Recupera várias entradas de porta de conclusão simultaneamente. Ele aguarda que as operações de E/S pendentes associadas à porta de conclusão especificada sejam concluídas.
Para remover pacotes de conclusão de E/S um de cada vez, use a função
Sintaxe
BOOL GetQueuedCompletionStatusEx(
[in] HANDLE CompletionPort,
[out] LPOVERLAPPED_ENTRY lpCompletionPortEntries,
[in] ULONG ulCount,
[out] PULONG ulNumEntriesRemoved,
[in] DWORD dwMilliseconds,
[in] BOOL fAlertable
);
Parâmetros
[in] CompletionPort
Um identificador para a porta de conclusão. Para criar uma porta de conclusão, use a função CreateIoCompletionPort.
[out] lpCompletionPortEntries
Na entrada, aponta para uma matriz pré-alocada de estruturas de OVERLAPPED_ENTRY.
Na saída, recebe uma matriz de estruturas de 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 sobreposto usado em cada E/S original são todos retornados na matriz lpCompletionPortEntries.
[in] ulCount
O número máximo de entradas a serem removidas.
[out] ulNumEntriesRemoved
Um ponteiro para uma variável que recebe o número de entradas realmente removido.
[in] dwMilliseconds
O número de milissegundos que o chamador está disposto a aguardar 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 terá tempo limite. Se dwMilliseconds for zero e não houver nenhuma operação de E/S para desembolsar, a função acabará 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 baixa potência. Por exemplo, o tempo limite continua em contagem regressiva enquanto o computador está dormindo.
Windows 8 e mais recente, Windows Server 2012 e mais recente: o valor dwMilliseconds não inclui o tempo gasto em estados de baixa potência. Por exemplo, o tempo limite não continua a contagem regressiva enquanto o computador está dormindo.
[in] fAlertable
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 VERDADEIRO 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 foi concluída e o thread de chamada é o thread que iniciou a operação. Um APC é enfileirado quando você chama QueueUserAPC.
Valor de retorno
Retorna nonzero (TRUE) se 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 VERDADEIRO quando pelo menos uma E/S pendente é concluída, mas é possível que uma ou mais operações de E/S falharam. Observe que cabe ao usuário dessa função verificar a lista de entradas retornadas no parâmetro
Essa função retorna FALSE quando nenhuma operação de E/S foi desativada. Isso normalmente significa que ocorreu um erro ao processar os parâmetros para essa chamada ou que o identificador
Se uma chamada para GetQueuedCompletionStatusEx falhar porque o identificador associado a ele 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 nessa porta em ordem inicial. 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 da porta de conclusão de E/S, o uso e as funções associadas, 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 |
---|---|
de cliente com suporte mínimo | Windows Vista [aplicativos da área de trabalho | Aplicativos UWP] |
servidor com suporte mínimo | Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP] |
da Plataforma de Destino |
Windows |
cabeçalho | ioapiset.h (inclua Windows.h) |
biblioteca | Kernel32.lib |
de DLL |
Kernel32.dll |
Consulte também
Funções de gerenciamento de arquivos
Funções
Tópicos de visão geral