WdfIoQueueDrainSynchronously, fonction (wdfio.h)

[S’applique à KMDF et UMDF]

La méthode WdfIoQueueDrainSynchronously entraîne l’arrêt de la mise en file d’attente des demandes d’E/S dans une file d’attente d’E/S, tout en autorisant la remise et le traitement des demandes déjà mises en file d’attente. La méthode retourne une fois que toutes les demandes sont terminées ou annulées.

Syntaxe

void WdfIoQueueDrainSynchronously(
  [in] WDFQUEUE Queue
);

Paramètres

[in] Queue

Handle d’un objet de file d’attente d’infrastructure.

Valeur de retour

None

Remarques

Un bogue case activée se produit si le pilote fournit un handle d’objet non valide.

Après qu’un pilote a appelé WdfIoQueueDrainSynchronously, l’infrastructure cesse d’ajouter des demandes d’E/S à la file d’attente spécifiée. Si l’infrastructure reçoit des demandes supplémentaires pour la file d’attente, elle les termine avec une valeur d’achèvement status de STATUS_INVALID_DEVICE_STATE.

Le pilote ne doit pas appeler une autre méthode qui change l’état de file d’attente, telle que WdfIoQueuePurge ou WdfIoQueueStart, avant que l’appel à WdfIoQueueDrainSynchronously ne soit retourné.

Il est recommandé d’appeler WdfIoQueueDrainSynchronously uniquement lorsque vous êtes certain que les demandes d’E/S en attente de la file d’attente se termineront en temps voulu. Sinon, utilisez WdfIoQueuePurgeSynchronously. Pour plus d’informations, consultez Gestion des files d’attente d’E/S.

Une fois qu’un pilote a vidé une file d’E/S, il peut redémarrer la file d’attente en appelant WdfIoQueueStart.

N’appelez pas WdfIoQueueDrainSynchronously à partir des fonctions de rappel d’événement d’objet de file d’attente suivantes, quelle que soit la file d’attente à laquelle la fonction de rappel d’événement est associée :

EvtIoDefaultEvtIoDeviceControlEvtIoInternalDeviceControlEvtIoReadEvtIoWrite

Exemples

L’exemple de code suivant draine une file d’attente d’E/S.

WdfIoQueueDrainSynchronously(queue);

Configuration requise

Condition requise Valeur
Plateforme cible Universal
Version KMDF minimale 1.0
Version UMDF minimale 2.0
En-tête wdfio.h (inclure Wdf.h)
Bibliothèque Wdf01000.sys (KMDF) ; WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
Règles de conformité DDI ChangeQueueState(kmdf), DriverCreate(kmdf), EvtSurpriseRemoveNoSuspendQueue(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), NoCancelFromEvtSurpriseRemove(kmdf)

Voir aussi

WdfIoQueueDrain