WdfIoQueueStopAndPurge, fonction (wdfio.h)
[S’applique à KMDF et UMDF]
La méthode WdfIoQueueStopAndPurge empêche une file d’attente d’E/S de remettre de nouvelles demandes et annule les demandes non traitées existantes et les demandes annulables appartenant au pilote, mais la file d’attente reçoit et stocke les nouvelles demandes.
Syntaxe
void WdfIoQueueStopAndPurge(
[in] WDFQUEUE Queue,
[in, optional] PFN_WDF_IO_QUEUE_STATE StopAndPurgeComplete,
[in, optional] WDFCONTEXT Context
);
Paramètres
[in] Queue
Handle d’un objet de file d’attente d’infrastructure.
[in, optional] StopAndPurgeComplete
Pointeur vers une fonction de rappel EvtIoQueueState fournie par le pilote. 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
None
Remarques
La méthode WdfIoQueueStopAndPurge empêche une file d’attente d’E/S de remettre des demandes d’E/S au pilote tout en autorisant l’ajout de nouvelles requêtes à la file d’attente.
En outre, il annule les requêtes non traitées dans la file d’attente et les requêtes annulables appartenant au pilote (requêtes qui ont été remises au pilote que le pilote n’a pas terminées ou n’a pas reléguées en file d’attente). Si de nouvelles requêtes sont ajoutées alors que WdfIoQueueStopAndPurge est en cours, ces nouvelles demandes ne sont pas remises tant que le pilote n’appelle pas WdfIoQueueStart.
En revanche, la méthode WdfIoQueueStop n’annule pas les requêtes non traitées dans la file d’attente ou les demandes annulables appartenant au pilote.
Si cette méthode entraîne l’annulation d’une requête non traitées dans une file d’attente, l’infrastructure appelle la fonction de rappel EvtIoCanceledOnQueue du pilote pour cette file d’attente, si le pilote en a fourni une.
Si le pilote fournit une fonction de rappel EvtIoQueueState , l’infrastructure l’appelle une fois que toutes les demandes remises au pilote ont été terminées ou annulées.
La méthode WdfIoQueueStopAndPurge permet à la file d’attente de recevoir de nouvelles requêtes, même si la file d’attente ne recevait pas de nouvelles demandes avant le pilote appelé WdfIoQueueStopAndPurge. Par exemple, un pilote peut appeler WdfIoQueueDrain, ce qui entraîne l’arrêt de l’ajout de nouvelles demandes d’E/S à la file d’attente. L’appel suivant du pilote WdfIoQueueStopAndPurge entraîne la reprise de l’ajout de requêtes à la file d’attente par le framework.
En revanche, WdfIoQueuePurge empêche l’infrastructure d’ajouter des demandes d’E/S à la file d’attente spécifiée.
Un bogue case activée se produit si le pilote fournit un handle d’objet non valide.
Exemples
L’exemple de code suivant arrête et vide une file d’attente d’E/S spécifiée. Une fois que toutes les demandes remises au pilote ont été terminées ou annulées, l’infrastructure appelle la fonction EvtIoQueueStateStopAndPurge d’un pilote.
WDFCONTEXT stopandpurgeContext;
stopandpurgeContext = &myContext;
WdfIoQueueStopAndPurge(
queue,
EvtIoQueueStateStopAndPurge,
stopandpurgeContext
);
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
Version KMDF minimale | 1.11 |
Version UMDF minimale | 2.0 |
En-tête | wdfio.h (inclure Wdf.h) |
Bibliothèque | Wdf01000.sys (KMDF) ; WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
Règles de conformité DDI | ChangeQueueState(kmdf),DriverCreate(kmdf), EvtSurpriseRemoveNoSuspendQueue(kmdf), NoCancelFromEvtSurpriseRemove(kmdf) |