Função WdfIoQueueDrainSynchronously (wdfio.h)

[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.

Retornar valor

Nenhum

Comentários

Um bug marcar ocorrerá se o driver fornecer 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 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 que a 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 esvaziar 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 esvazia uma fila de E/S.

WdfIoQueueDrainSynchronously(queue);

Requisitos

Requisito Valor
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)

Confira também

WdfIoQueueDrain