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 WdfIoQueuePurge entraîne l’arrêt de la mise en file d’attente des E/S dans une file d’attente d’E/S et l’annulation des demandes non traitées.
Syntaxe
VOID WdfIoQueuePurge(
[in] WDFQUEUE Queue,
[in, optional] PFN_WDF_IO_QUEUE_STATE PurgeComplete,
[in, optional] WDFCONTEXT Context
);
Paramètres
[in] Queue
Handle vers un objet de file d’attente framework.
[in, optional] PurgeComplete
Pointeur vers une fonction de rappel fournie par le pilote EvtIoQueueState. Ce paramètre est facultatif et peut être NULL.
[in, optional] Context
Pointeur non typé vers les informations de contexte fournies par le pilote que l’infrastructure transmet à la fonction de rappel EvtIoQueueState. Ce paramètre est facultatif et peut être NULL.
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 WdfIoQueuePurge, l’infrastructure cesse d’ajouter des requêtes d’E/S à la file d’attente spécifiée. L’infrastructure annule toutes les requêtes qu’elle n’a pas remises à l’appareil cible et appelle la fonction de rappel CompletionRoutine du pilote pour chacune d’elles. L’infrastructure tente également d’annuler (en appelant IoCancelIrp) toutes les requêtes remises à l’appareil cible qui n’ont pas été marquées WDF_REQUEST_SEND_OPTION_IGNORE_TARGET_STATE.
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.
Si le pilote fournit une EvtIoQueueState fonction de rappel, l’infrastructure l’appelle une fois toutes les demandes remises au pilote terminées ou annulées. Vous pouvez modifier le runtime d’intégration au niveau duquel le rappel s’exécute en spécifiant ExecutionLevel dans WDF_OBJECT_ATTRIBUTES au moment de la création de la file d’attente. Pour plus d’informations, consultez la section Remarques deEVT_WDF_IO_QUEUE_STATE.
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.
Si le pilote appelle WdfRequestRequeue après avoir appelé WdfIoQueuePurge, la tentative de remise en file d’attente peut réussir avant la fin du vidage. Dans les versions 1.9 et antérieures de KMDF, cette séquence provoque le blocage du système d’exploitation. Ce problème est résolu dans KMDF version 1.11 et ultérieure.
Pour plus d’informations sur la méthode WdfIoQueuePurge, consultez Gestion des files d’attente d’E/S.
Exemples
L’exemple de code suivant vide une file d’attente d’E/S et n’appelle pas de fonction de rappel lorsque toutes les demandes remises au pilote ont été terminées ou annulées.
WdfIoQueuePurge(
ReadQueue,
WDF_NO_EVENT_CALLBACK,
WDF_NO_CONTEXT
);
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 | <= DISPATCH_LEVEL |
| règles de conformité DDI | ChangeQueueState(kmdf), DriverCreate(kmdf), EvtSurpriseRemoveNoSuspendQueue(kmdf), KmdfIrql (kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), NoCancelFromEvtSurpriseRemove(kmdf) |