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