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.
[Aplica-se a KMDF e UMDF]
O método WdfIoQueueDrainSynchronously faz com que a estrutura pare de enfileirar solicitações de E/S para uma fila de E/S, permitindo que solicitações já enfileiradas sejam entregues e processadas. O método retorna depois que todas as solicitações são concluídas ou canceladas.
Sintaxe
VOID WdfIoQueueDrainSynchronously(
[in] WDFQUEUE Queue
);
Parâmetros
[in] Queue
Um identificador para um objeto de fila de estrutura.
Valor de retorno
Nenhum
Observações
Uma verificação de bug ocorre se o driver fornece um identificador de objeto inválido.
Depois que um driver chama WdfIoQueueDrainSynchronously, a estrutura para de adicionar solicitações de E/S à fila especificada. Se a estrutura receber solicitações adicionais para a fila, ela as concluirá com um valor de status de conclusão de STATUS_INVALID_DEVICE_STATE.
O driver não deve chamar outro método que altera o estado da fila, como WdfIoQueuePurge ou WdfIoQueueStart, antes da chamada para WdfIoQueueDrainSynchronously tenha retornado.
Como prática recomendada, você só deve chamar WdfIoQueueDrainSynchronously quando tiver certeza de que as solicitações de E/S pendentes da fila serão concluídas em tempo hábil. Caso contrário, use WdfIoQueuePurgeSynchronously. Para obter mais informações, consulte Gerenciando filas de E/S.
Depois que um driver tiver esvaziado uma fila de E/S, ele poderá reiniciar a fila chamando WdfIoQueueStart.
Não chame WdfIoQueueDrainSynchronously das seguintes funções de retorno de chamada de evento de objeto de fila, independentemente da fila com a qual a função de retorno de chamada de evento está associada:
EvtIoDefaultEvtIoDeviceControlEvtIoInternalDeviceControlEvtIoReadEvtIoWrite
Exemplos
O exemplo de código a seguir drena uma fila de E/S.
WdfIoQueueDrainSynchronously(queue);
Requisitos
| Requisito | Valor |
|---|---|
| da Plataforma de Destino | Universal |
| versão mínima do KMDF | 1.0 |
| versão mínima do UMDF | 2.0 |
| cabeçalho | wdfio.h (inclua Wdf.h) |
| Biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
| IRQL | PASSIVE_LEVEL |
| regras de conformidade de DDI | ChangeQueueState(kmdf), DriverCreate(kmdf), EvtSurpriseRemoveNoSuspendQueue(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), NoCancelFromEvtSurpriseRemove(kmdf) |