Condividi tramite


Funzione WdfIoQueueDrainSynchronously (wdfio.h)

[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)

Vedere anche

WdfIoQueueDrain