Partager via


Fonction IoCsqRemoveNextIrp (wdm.h)

La routine IoCsqRemoveNextIrp supprime le IRP correspondant suivant dans la file d’attente.

Syntaxe

PIRP IoCsqRemoveNextIrp(
  [in, out]      PIO_CSQ Csq,
  [in, optional] PVOID   PeekContext
);

Paramètres

[in, out] Csq

Pointeur vers la table de répartition du pilote pour les files d’attente IRP d’annulation et de sécurité. La table de répartition doit être initialisée par IoCsqInitialize.

[in, optional] PeekContext

Pointeur vers une valeur de contexte définie par le pilote. IoCsqRemoveNextIrp transmet ce paramètre à la routine CsqPeekNextIrp du pilote. Pour plus d'informations, consultez la section Notes qui suit.

Valeur retournée

Cette routine retourne un pointeur vers l’IRP correspondant suivant dans la file d’attente, ou NULL si aucun autre IRP n’est disponible. La routine retourne uniquement les IRPs qui n’ont pas encore été annulés.

Remarques

IoCsqRemoveNextIrp utilise les routines de distribution de la file d’attente pour supprimer l’IRP. Routine IoCsqRemoveNextIrp :

  1. Appelle la routine CsqAcquireLock de la file d’attente pour verrouiller la file d’attente.
  2. Appelle la routine CsqPeekNextIrp de la file d’attente pour rechercher le IRP correspondant suivant dans la file d’attente. IoCsqRemoveNextIrp transmet la valeur du paramètre PeekContext comme paramètre PeekContext de CsqPeekNextIrp. CsqPeekNextIrp retourne un pointeur vers l’IRP correspondant suivant, ou NULL s’il n’y a pas d’IRP correspondant.
  3. Si la valeur de retour de CsqPeekNextIrp n’est pas NULL, IoCsqRemoveNextIrp appelle la routine CsqRemoveIrp de la file d’attente pour supprimer l’IRP.
  4. Appelle la routine CsqReleaseLock de la file d’attente pour déverrouiller la file d’attente.
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’IoCsqRemoveNextIrp doivent s’exécuter 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 sur 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

IoCsqInitialize

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveIrp