Partager via


IoCsqRemoveNextIrp, fonction (wdm.h)

La routine IoCsqRemoveNextIrp supprime l’IRP correspondante suivante 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 distribution du pilote pour les files d’attente IRP annulées. 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 Remarques suivante.

Valeur de retour

Cette routine retourne un pointeur vers l’IRP correspondante suivante dans la file d’attente, ou NULL si aucun autre FOURNISSEUR d’intégration n’est disponible. La routine retourne uniquement les irps qui n’ont pas encore été annulées.

Remarques

IoCsqRemoveNextIrp utilise les routines de répartition de la file d’attente pour supprimer l’IRP. La routine IoCsqRemoveNextIrp :

  1. Appelle la routine CsqAcquireLock de la file d’attente pour verrouiller la file d’attente.
  2. Appelle la routine de CsqPeekNextIrp de la file d’attente pour rechercher le protocole IRP correspondant suivant dans la file d’attente. IoCsqRemoveNextIrp passe la valeur du paramètre PeekContext en tant que paramètre PeekContext de CsqPeekNextIrp. CsqPeekNextIrp retourne un pointeur vers l’IRP correspondant suivant, ou NULL s’il n’existe aucun IRP correspondant.
  3. Si la valeur de retour de CsqPeekNextIrp n’est pasNULL, 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 Cancel-Safe files d’attente IRP.

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

Les appelants de IoCsqRemoveNextIrp doivent s’exécuter à un <IRQL = DISPATCH_LEVEL. Les routines de rappel du pilote doivent fonctionner correctement à ce runtime IRQL.

Exigences

Exigence Valeur
client minimum pris en charge Disponible dans Windows XP et 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 Universel
d’en-tête wdm.h (include 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