Partager via


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

Voir aussi

KsReleaseIrpOnCancelableQueue

KsRemoveSpecificIrpFromCancelableQueue