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 |
---|---|
|
Il driver ha fornito un handle non valido. |
|
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) |