Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
[Si applica a KMDF e UMDF]
Il metodo WdfIoQueueDrainSynchronously fa sì che il framework interrompa l'accodamento delle richieste di I/O a una coda di I/O, consentendo al contempo di recapitare ed elaborare richieste già in coda. Il metodo restituisce dopo il completamento o l'annullamento di tutte le richieste.
Sintassi
VOID WdfIoQueueDrainSynchronously(
[in] WDFQUEUE Queue
);
Parametri
[in] Queue
Handle per un oggetto coda del framework.
Valore restituito
Nessuno
Osservazioni:
Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.
Dopo che un driver chiama WdfIoQueueDrainSynchronously, il framework smette di aggiungere richieste di I/O alla coda specificata. Se il framework riceve richieste aggiuntive per la coda, le completa con un valore di stato di completamento di STATUS_INVALID_DEVICE_STATE.
Il driver non deve chiamare un altro metodo che modifica lo stato della coda, ad esempio WdfIoQueuePurge o WdfIoQueueStart, prima della chiamata a WdfIoQueueDrainSynchronously restituito.
Come procedura consigliata, è consigliabile chiamare solo WdfIoQueueDrainSynchronously quando si è certi che le richieste di I/O in sospeso della coda verranno completate in modo tempestivo. In caso contrario, usare WdfIoQueuePurgeSynchronously. Per altre informazioni, vedere Gestione delle code di I/O.
Dopo che un driver ha svuotato una coda di I/O, può riavviare la coda chiamando WdfIoQueueStart.
Non chiamare WdfIoQueueDrainSynchronously dalle funzioni di callback dell'evento dell'oggetto coda seguenti, indipendentemente dalla coda a cui è associata la funzione di callback dell'evento:
EvtIoDefaultEvtIoDeviceControlEvtIoInternalDeviceControlEvtIoReadEvtIoWrite
Esempi
Nell'esempio di codice seguente viene svuotata una coda di I/O.
WdfIoQueueDrainSynchronously(queue);
Requisiti
| Requisito | Valore |
|---|---|
| Piattaforma di destinazione | Universale |
| versione minima di KMDF | 1.0 |
| versione minima di UMDF | 2.0 |
| intestazione | wdfio.h (include Wdf.h) |
| Biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
| IRQL | PASSIVE_LEVEL |
| regole di conformità DDI | ChangeQueueState(kmdf), DriverCreate(kmdf), EvtSurpriseRemoveNoSuspendQueue(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), NoCancelFromEvtSurpriseRemove(kmdf) |