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
STATUS_INVALID_PARAMETER
O driver forneceu um identificador inválido.
STATUS_INVALID_DEVICE_REQUEST
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)

Confira também

EvtIoQueueState

WDF_IO_QUEUE_CONFIG

WdfIoQueueRetrieveNextRequest

WdfIoQueueRetrieveRequestByFileObject