KsRemoveIrpFromCancelableQueue, fonction (ks.h)
La fonction KsRemoveIrpFromCancelableQueue affiche l’IRP non bloqué suivant à partir de la file d’attente spécifiée qui peut être annulée et supprime son status d’annulation. La fonction effectue une recherche dans la liste jusqu’à ce qu’un IRP ayant une routine d’annulation soit trouvé ou jusqu’à ce que la fin de la liste soit atteinte. La fonction réduit l’utilisation du verrou d’annulation de rotation en utilisant le verrou de rotation fourni pour synchroniser l’accès dans la plupart des cas. La fonction peut être appelée au niveau IRQ DISPATCH_LEVEL ou inférieur.
Syntaxe
KSDDKAPI PIRP KsRemoveIrpFromCancelableQueue(
[in, out] PLIST_ENTRY QueueHead,
[in] PKSPIN_LOCK SpinLock,
[in] KSLIST_ENTRY_LOCATION ListLocation,
[in] KSIRP_REMOVAL_OPERATION RemovalOperation
);
Paramètres
[in, out] QueueHead
Pointe vers la tête de la file d’attente à partir de laquelle supprimer l’IRP.
[in] SpinLock
Pointe vers le verrou de rotation du pilote pour l’accès à la file d’attente.
[in] ListLocation
Indique si ce IRP doit provenir du début ou de la fin de la file d’attente.
[in] RemovalOperation
Spécifie si l’IRP est supprimé de la liste ou simplement acquis en définissant la fonction cancel sur NULL. S’il est acquis uniquement, l’IRP doit être publié ultérieurement avec KsReleaseIrpOnCancelableQueue ou complètement supprimé avec KsRemoveSpecificIrpFromCancelableQueue.
Valeur retournée
La fonction KsRemoveIrpFromCancelableQueue retourne l’IRP non bloqué suivant dans la liste, ou elle retourne NULL si aucune n’est trouvée ou si un IRP qui n’a pas déjà été acquis est introuvable.
Remarques
Ces énumérations sont utilisées dans les paramètres précédents pour contrôler l’endroit où l’IRP est supprimé et comment.
typedef enum {
KsListEntryTail,
KsListEntryHead
} KSLIST_ENTRY_LOCATION;
typedef enum {
KsAcquireOnly,
KsAcquireAndRemove
} KSIRP_REMOVAL_OPERATION;
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
En-tête | ks.h (inclure Ks.h) |
Bibliothèque | Ks.lib |