Função WdfIoQueueReadyNotify (wdfio.h)
[Aplica-se a KMDF e UMDF]
O método WdfIoQueueReadyNotify registra (ou desregistros) uma função de retorno de chamada de evento que a estrutura chama sempre que uma fila de E/S especificada que estava vazia anteriormente recebe uma ou mais solicitações de E/S.
Sintaxe
NTSTATUS WdfIoQueueReadyNotify(
[in] WDFQUEUE Queue,
[in, optional] PFN_WDF_IO_QUEUE_STATE QueueReady,
[in, optional] WDFCONTEXT Context
);
Parâmetros
[in] Queue
Um identificador para um objeto de fila de estrutura.
[in, optional] QueueReady
Um ponteiro para uma função de retorno de chamada EvtIoQueueState fornecida pelo driver, se o driver estiver se registrando para notificação pronta ou NULL se o driver estiver desregistrando.
[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 , se o driver estiver se registrando para notificação pronta ou NULL se o driver estiver cancelando o registro.
Retornar valor
WdfIoQueueReadyNotify retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, esse método pode retornar um dos seguintes valores:
Código de retorno | Descrição |
---|---|
|
O driver forneceu um identificador inválido. |
|
Esse valor será retornado se ocorrer um dos seguintes procedimentos:
|
Esse método também pode retornar outros valores NTSTATUS.
Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.
Comentários
Depois que um driver tiver chamado WdfIoQueueReadyNotify para registrar uma função de retorno de chamada EvtIoQueueState , a estrutura chamará a função de retorno de chamada sempre que o estado da fila especificada mudar de vazio para não vazio. Especificamente, a estrutura chama EvtIoQueueState quando uma solicitação chega em uma fila vazia, mesmo que o driver ainda possua solicitações entregues anteriormente da fila que ainda não foi concluída. Você pode modificar o IRQL no qual o retorno de chamada é executado especificando ExecutionLevel em WDF_OBJECT_ATTRIBUTES no momento da criação da fila. Para obter mais informações, consulte a seção Comentários doEVT_WDF_IO_QUEUE_STATE.
A estrutura não chama EvtIoQueueState enquanto a fila especificada é interrompida. Quando a fila é iniciada, a estrutura chama EvtIoQueueState se a fila não estiver vazia.
Seu driver pode chamar WdfIoQueueReadyNotify apenas para filas de E/S que usam o método de expedição manual .
A função de retorno de chamada EvtIoQueueState normalmente chama WdfIoQueueRetrieveNextRequest ou WdfIoQueueRetrieveRequestByFileObject em um loop para recuperar todas as solicitações que chegaram desde a última vez que a função de retorno de chamada foi executada.
Para impedir que a estrutura chame a função de retorno de chamada EvtIoQueueState , o driver deve chamar WdfIoQueueReadyNotify novamente com o parâmetro QueueReady definido como NULL. No entanto, o driver deve primeiro chamar WdfIoQueueStop ou WdfIoQueueStopSynchronously para interromper a fila de E/S. Posteriormente, o driver pode chamar WdfIoQueueStart para reiniciar a fila.
Quando um driver chama WdfIoQueueReadyNotify para registrar uma função de retorno de chamada EvtIoQueueState , é possível que a estrutura chame a função de retorno de chamada antes que WdfIoQueueReadyNotify retorne.
Para obter mais informações sobre o método WdfIoQueueReadyNotify , consulte Métodos de expedição para solicitações de E/S.
Exemplos
O exemplo de código a seguir registra a função EvtIoQueueReady de um driver, para que essa função seja chamada quando a fila de E/S especificada receber uma solicitação de E/S.
Status = WdfIoQueueReadyNotify(
ReadQueue,
EvtIoQueueReady,
myQueueContext
);
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 | <= DISPATCH_LEVEL |
Regras de conformidade da DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |