Partager via


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 E/S dans une file d’attente d’E/S, tout en autorisant la remise et le traitement des requêtes déjà mises en file d’attente. La méthode retourne une fois toutes les demandes terminées ou annulées.

Syntaxe

VOID WdfIoQueueDrainSynchronously(
  [in] WDFQUEUE Queue
);

Paramètres

[in] Queue

Handle vers un objet de file d’attente framework.

Valeur de retour

Aucun

Remarques

Une vérification de bogue se produit si le pilote fournit un handle d’objet non valide.

Après qu’un pilote appelle WdfIoQueueDrainSynchronously, l’infrastructure cesse d’ajouter des requêtes 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’état d’achèvement de STATUS_INVALID_DEVICE_STATE.

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

En guise de meilleure pratique, vous devez uniquement appeler WdfIoQueueDrainSynchronously lorsque vous êtes certain que les demandes d’E/S en attente de la file d’attente se terminent en temps opportun. 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’attente 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 file d’attente suivantes, quelle que soit la file d’attente avec 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);

Spécifications

Besoin Valeur
plateforme cible Universel
version minimale de KMDF 1.0
version minimale de UMDF 2.0
En-tête wdfio.h (include 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