Condividi tramite


Funzione WdfIoQueueReadyNotify (wdfio.h)

[Si applica a KMDF e UMDF]

Il metodo WdfIoQueueReadyNotify registra (o deregisters) una funzione di callback evento che il framework chiama ogni volta che una coda di I/O specificata che in precedenza riceve una o più richieste di I/O specificate.

Sintassi

NTSTATUS WdfIoQueueReadyNotify(
  [in]           WDFQUEUE               Queue,
  [in, optional] PFN_WDF_IO_QUEUE_STATE QueueReady,
  [in, optional] WDFCONTEXT             Context
);

Parametri

[in] Queue

Handle a un oggetto code del framework.

[in, optional] QueueReady

Puntatore a una funzione di callback EvtIoQueueState fornita dal driver, se il driver esegue la registrazione per la notifica pronta o NULL se il driver esegue la registrazione.

[in, optional] Context

Puntatore non tipizzato alle informazioni di contesto fornite dal driver che il framework passa alla funzione di callback EvtIoQueueState , se il driver sta registrando per la notifica pronta o NULL se il driver sta registrando.

Valore restituito

WdfIoQueueReadyNotify restituisce STATUS_SUCCESS se l'operazione ha esito positivo. In caso contrario, questo metodo potrebbe restituire uno dei valori seguenti:

Codice restituito Descrizione
STATUS_INVALID_PARAMETER
Il driver ha fornito un handle non valido.
STATUS_INVALID_DEVICE_REQUEST
Questo valore viene restituito se si verifica una delle operazioni seguenti:
 

Questo metodo potrebbe restituire anche altri valori NTSTATUS.

Un controllo di bug si verifica se il driver fornisce un handle di oggetti non valido.

Commenti

Dopo che un driver ha chiamato WdfIoQueueReadyNotify per registrare una funzione di callback EvtIoQueueState , il framework chiama la funzione di callback ogni volta che lo stato della coda specificata cambia da vuoto a non vuoto. In particolare, il framework chiama EvtIoQueueState quando una richiesta arriva in una coda vuota, anche se il driver possiede ancora richieste recapitate in precedenza dalla coda che non è ancora stata completata. È possibile modificare irQL in corrispondenza del quale viene eseguito il callback specificando ExecutionLevel in WDF_OBJECT_ATTRIBUTES in fase di creazione della coda. Per altre informazioni, vedere la sezione Osservazioni diEVT_WDF_IO_QUEUE_STATE.

Il framework non chiama EvtIoQueueState mentre la coda specificata viene arrestata. All'avvio della coda, il framework chiama EvtIoQueueState se la coda non è vuota.

Il driver può chiamare WdfIoQueueReadyNotify solo per le code di I/O che usano il metodo di invio manuale .

La funzione di callback EvtIoQueueState chiama in genere WdfIoQueueRetrieveNextRequest o WdfIoQueueRetrieveRequestByFileObject in un ciclo per recuperare tutte le richieste che sono arrivate dall'ultima volta che la funzione di callback è stata eseguita.

Per impedire al framework di chiamare la funzione di callback EvtIoQueueState , il driver deve chiamare nuovamente WdfIoQueueReadyNotify con il parametro QueueReady impostato su NULL. Tuttavia, il driver deve prima chiamare WdfIoQueueStop o WdfIoQueueStopSynchronously per arrestare la coda di I/O. Il driver può successivamente chiamare WdfIoQueueStart per riavviare la coda.

Quando un driver chiama WdfIoQueueReadyNotify per registrare una funzione di callback EvtIoQueueState , è possibile che il framework chiami la funzione di callback prima che WdfIoQueueReadyNotify restituisca.

Per altre informazioni sul metodo WdfIoQueueReadyNotify , vedere Metodi di invio per le richieste di I/O.

Esempio

Nell'esempio di codice seguente viene registrata la funzione EvtIoQueueReady di un driver, in modo che questa funzione venga chiamata quando la coda di I/O specificata riceve una richiesta di I/O.

Status = WdfIoQueueReadyNotify(
                               ReadQueue,
                               EvtIoQueueReady,
                               myQueueContext
                               );

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.0
Versione UMDF minima 2,0
Intestazione wdfio.h (includere Wdf.h)
Libreria Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL
Regole di conformità DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Vedi anche

EvtIoQueueState

WDF_IO_QUEUE_CONFIG

WdfIoQueueRetrieveNextRequest

WdfIoQueueRetrieveRequestByFileObject