Compartilhar via


Função WdfIoQueueStopAndPurge (wdfio.h)

[Aplica-se a KMDF e UMDF]

O método WdfIoQueueStopAndPurge impede que uma fila de E/S forneça novas solicitações e cancele solicitações não processadas existentes e solicitações canceláveis de propriedade do driver, mas a fila recebe e armazena novas solicitações.

Sintaxe

void WdfIoQueueStopAndPurge(
  [in]           WDFQUEUE               Queue,
  [in, optional] PFN_WDF_IO_QUEUE_STATE StopAndPurgeComplete,
  [in, optional] WDFCONTEXT             Context
);

Parâmetros

[in] Queue

Um identificador para um objeto de fila de estrutura.

[in, optional] StopAndPurgeComplete

Um ponteiro para uma função de retorno de chamada EvtIoQueueState fornecida pelo driver. Esse parâmetro é opcional e pode ser NULL.

[in, optional] Context

Um ponteiro não tipado para informações de contexto fornecidas pelo driver que a estrutura passa para a função de retorno de chamada EvtIoQueueState . Esse parâmetro é opcional e pode ser NULL.

Retornar valor

Nenhum

Comentários

O método WdfIoQueueStopAndPurge impede que uma fila de E/S entregue solicitações de E/S ao driver, permitindo que novas solicitações sejam adicionadas à fila.

Além disso, ele cancela solicitações não processadas na fila e solicitações canceláveis de propriedade do driver (solicitações que foram entregues ao driver que o driver não concluiu ou requeuiu). Se novas solicitações forem adicionadas enquanto WdfIoQueueStopAndPurge estiver em andamento, essas novas solicitações não serão entregues até que o driver chame WdfIoQueueStart.

Por outro lado, o método WdfIoQueueStop não cancela solicitações não processadas na fila ou solicitações canceláveis de propriedade do driver.

Se esse método fizer com que a estrutura cancele uma solicitação não processada em uma fila, a estrutura chamará a função de retorno de chamada EvtIoCanceledOnQueue do driver para essa fila, se o driver tiver fornecido uma.

Se o driver fornecer uma função de retorno de chamada EvtIoQueueState , a estrutura a chamará depois que todas as solicitações que foram entregues ao driver tiverem sido concluídas ou canceladas.

O método WdfIoQueueStopAndPurge permite que a fila receba novas solicitações, mesmo que a fila não estivesse recebendo novas solicitações antes do driver chamado WdfIoQueueStopAndPurge. Por exemplo, um driver pode chamar WdfIoQueueDrain, o que faz com que a estrutura pare de adicionar novas solicitações de E/S à fila. A chamada subsequente do driver de WdfIoQueueStopAndPurge faz com que a estrutura retome a adição de solicitações à fila.

Por outro lado, WdfIoQueuePurge faz com que a estrutura pare de adicionar solicitações de E/S à fila especificada.

Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.

Exemplos

O exemplo de código a seguir para e limpa uma fila de E/S especificada. Depois que todas as solicitações entregues ao driver tiverem sido concluídas ou canceladas, a estrutura chamará a função EvtIoQueueStateStopAndPurge de um driver.

WDFCONTEXT stopandpurgeContext;

stopandpurgeContext = &myContext;

WdfIoQueueStopAndPurge(
               queue,
               EvtIoQueueStateStopAndPurge,
               stopandpurgeContext
               );

Requisitos

Requisito Valor
Plataforma de Destino Universal
Versão mínima do KMDF 1.11
Versão mínima do UMDF 2,0
Cabeçalho wdfio.h (inclua Wdf.h)
Biblioteca Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
Regras de conformidade de DDI ChangeQueueState(kmdf), DriverCreate(kmdf), EvtSurpriseRemoveNoSuspendQueue(kmdf), NoCancelFromEvtSurpriseRemove(kmdf)

Confira também

EvtIoCanceledOnQueue

EvtIoQueueState

WdfIoQueueStart

WdfIoQueueStopAndPurgeSynchronously