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)

Voir aussi

EvtIoCanceledOnQueue

EvtIoQueueState

WdfIoQueueStart

WdfIoQueueStopAndPurgeSynchronously