KsRemoveIrpFromCancelableQueue, fonction (ks.h)
La fonction KsRemoveIrpFromCancelableQueue pop the next noncanceled IRP from the specified queue that can be canceled and removes its cancel status. La fonction recherche la liste jusqu’à ce qu’un IRP soit trouvé qui a une routine d’annulation ou jusqu’à ce que la fin de la liste soit atteinte. La fonction réduit l’utilisation du verrou de rotation d’annulation à l’aide du 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érieure.
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 cet 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 d’annulation sur NULL. S’il n’est acquis que, l’IRP doit être publié ultérieurement avec KsReleaseIrpOnCancelableQueue ou complètement supprimé avec KsRemoveSpecificIrpFromCancelableQueue.
Valeur de retour
La fonction KsRemoveIrpFromCancelableQueue retourne la fonction IRP noncancelée suivante dans la liste, ou elle retourne NULL si aucune valeur 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 où l’IRP est supprimé et comment.
typedef enum {
KsListEntryTail,
KsListEntryHead
} KSLIST_ENTRY_LOCATION;
typedef enum {
KsAcquireOnly,
KsAcquireAndRemove
} KSIRP_REMOVAL_OPERATION;
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | ks.h (include Ks.h) |
bibliothèque | Ks.lib |