Fonction IoCsqRemoveIrp (wdm.h)

La routine IoCsqRemoveIrp supprime un IRP particulier de la file d’attente.

Syntaxe

PIRP IoCsqRemoveIrp(
  [in, out] PIO_CSQ             Csq,
  [in, out] PIO_CSQ_IRP_CONTEXT Context
);

Paramètres

[in, out] Csq

Pointeur vers la structure IO_CSQ pour la file d’attente IRP cancel-safe du pilote. Cette structure doit avoir été initialisée par IoCsqInitialize ou IoCsqInitializeEx.

[in, out] Context

Pointeur vers la structure IO_CSQ_IRP_CONTEXT qui identifie l’IRP à supprimer. La structure IO_CSQ_IRP_CONTEXT est initialisée par IoCsqInsertIrp ou IoCsqInsertIrpEx lorsque l’IRP est inséré pour la première fois dans la file d’attente.

Valeur retournée

Cette routine retourne un pointeur vers l’IRP qui a été supprimé de la file d’attente, ou NULL si cette IRP a été annulée.

Remarques

IoCsqRemoveIrp utilise les routines de répartition de la file d’attente pour supprimer l’IRP. Routine IoCsqRemoveIrp :

  1. Appelle la routine CsqAcquireLock de la file d’attente pour verrouiller la file d’attente.
  2. Utilise le paramètre IrpContext pour déterminer l’IRP à supprimer et appelle la routine CsqRemoveIrp de la file d’attente pour supprimer cette IRP.
  3. Appelle la routine CsqReleaseLock de la file d’attente pour déverrouiller la file d’attente.
Les pilotes peuvent utiliser la routine IoCsqRemoveNextIrp pour supprimer un IRP qui correspond à un critère spécifique. Pour plus d’informations, consultez Annuler les files d’attente IRP sécurisées.

Notez que les routines IoCsqXxx utilisent le membre DriverContext[3] de l’IRP pour contenir les informations de contexte IRP. Les pilotes qui utilisent ces routines pour mettre en file d’attente les IRP doivent laisser ce membre inutilisé.

Les appelants d’IoCsqRemoveIrp doivent être en cours d’exécution au niveau d’un IRQL <= DISPATCH_LEVEL. Les routines de rappel du conducteur doivent fonctionner correctement au niveau de cet IRQL.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows XP et les versions ultérieures de Windows. Les pilotes qui doivent également fonctionner dans Windows 2000 et Windows 98/Me peuvent à la place lier à Csq.lib pour utiliser la routine.
Plateforme cible Universal
En-tête wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (voir la section Remarques)

Voir aussi

CsqAcquireLock

CsqCompleteCanceledIrp

CsqInsertIrp

CsqInsertIrpEx

CsqPeekNextIrp

CsqReleaseLock

CsqRemoveIrp

IO_CSQ

IO_CSQ_IRP_CONTEXT

IoCsqInitialize

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveNextIrp