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