Funzione WdfIoQueueDrainSynchronously (wdfio.h)

[Si applica a KMDF e UMDF]

Il metodo WdfIoQueueDrainSynchronously fa sì che il framework arresti l'accodamento delle richieste di I/O a una coda di I/O, consentendo al tempo stesso il recapito e l'elaborazione delle 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 interrompe l'aggiunta di 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 pari a STATUS_INVALID_DEVICE_STATE.

Il driver non deve chiamare un altro metodo che modifica lo stato della coda, ad esempio WdfIoQueuePurge o WdfIoQueueStart, prima che venga restituita la chiamata a WdfIoQueueDrainSynchronously .

Come procedura consigliata, è consigliabile chiamare 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

Esempio

Nell'esempio di codice seguente viene svuotata una coda di I/O.

WdfIoQueueDrainSynchronously(queue);

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.0
Versione UMDF minima 2,0
Intestazione wdfio.h (include Wdf.h)
Libreria 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)

Vedi anche

WdfIoQueueDrain