Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
[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) |