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 :
- Appelle la routine CsqAcquireLock de la file d’attente pour verrouiller la file d’attente.
- 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.
- 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.
- Appelle la routine CsqReleaseLock de la file d’attente pour déverrouiller la file d’attente.
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) |