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

Valor de retorno

Nenhum

Observações

O método WdfIoQueueStopAndPurge impede que uma fila de E/S forneça 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 as chamadas de driver 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á o driver EvtIoCanceledOnQueue função de retorno de chamada 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 forem 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.

Uma verificação de bug ocorre se o driver fornece um identificador de objeto inválido.

Exemplos

O exemplo de código a seguir interrompe 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
da 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)

Consulte também

EvtIoCanceledOnQueue

EvtIoQueueState

WdfIoQueueStart

WdfIoQueueStopAndPurgeSynchronously