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