Função GetQueuedCompletionStatus (ioapiset.h)
Tenta remover um pacote de conclusão de E/S da porta de conclusão de E/S especificada. Se não houver nenhum pacote de conclusão na fila, a função aguardará a conclusão de uma operação de E/S pendente associada à porta de conclusão.
Para remover vários pacotes de conclusão de E/S ao mesmo tempo, use a função
Sintaxe
BOOL GetQueuedCompletionStatus(
[in] HANDLE CompletionPort,
LPDWORD lpNumberOfBytesTransferred,
[out] PULONG_PTR lpCompletionKey,
[out] LPOVERLAPPED *lpOverlapped,
[in] DWORD dwMilliseconds
);
Parâmetros
[in] CompletionPort
Um identificador para a porta de conclusão. Para criar uma porta de conclusão, use a função CreateIoCompletionPort.
lpNumberOfBytesTransferred
Um ponteiro para uma variável que recebe o número de bytes transferidos em uma operação de E/S concluída.
[out] lpCompletionKey
Um ponteiro para uma variável que recebe o valor da chave de conclusão associado ao identificador de arquivo cuja operação de E/S foi concluída. Uma chave de conclusão é uma chave por arquivo especificada em uma chamada para CreateIoCompletionPort.
[out] lpOverlapped
Um ponteiro para uma variável que recebe o endereço da estrutura de
Mesmo que você tenha passado na função um identificador de arquivo associado a uma porta de conclusão e uma estrutura de OVERLAPPED
[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, retornará FALSE e definirá * lpOverlapped para NULL.
Se dwMilliseconds for INFINITE, 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.
Valor de retorno
Retorna nonzero (TRUE) se bem-sucedido ou zero (FALSE) caso contrário.
Para obter informações de erro estendidas, chame GetLastError.
Para obter mais informações, consulte a seção Comentários.
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.
Se uma chamada para GetQueuedCompletionStatus falhar porque o identificador de porta de conclusão associado a ele está fechado enquanto a chamada está pendente, a função retorna false, *lpOverlapped será NULL e GetLastError retornará ERROR_ABANDONED_WAIT_0.
Windows Server 2003 e Windows XP: Fechar o identificador da porta de conclusão enquanto uma chamada estiver pendente não resultará no comportamento declarado anteriormente. A função continuará aguardando até que uma entrada seja removida da porta ou até que ocorra um tempo limite, se especificado como um valor diferente de INFINITE.
Se a função GetQueuedCompletionStatus for bem-sucedida, ela descodificará um pacote de conclusão para uma operação de E/S bem-sucedida da porta de conclusão e armazenará informações nas variáveis apontadas pelos seguintes parâmetros: lpNumberOfBytes, lpCompletionKeye lpOverlapped. Após a falha (o valor retornado é FALSE), esses mesmos parâmetros podem conter combinações de valor específicas da seguinte maneira:
- Se * lpOverlapped é NULL, a função não desempou um pacote de conclusão da porta de conclusão. Nesse caso, a função não armazena informações nas variáveis apontadas pelos parâmetros lpNumberOfBytes e lpCompletionKey e seus valores são indeterminados.
- Se * lpOverlapped não estiver NULL e a função remover um pacote de conclusão para uma operação de E/S com falha na porta de conclusão, a função armazena informações sobre a operação com falha nas variáveis apontadas por lpNumberOfBytes, lpCompletionKeye lpOverlapped. Para obter informações de erro estendidas, chame GetLastError.
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 XP [aplicativos da área de trabalho | Aplicativos UWP] |
servidor com suporte mínimo | Windows Server 2003 [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