Partager via


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

Voir aussi

KsReleaseIrpOnCancelableQueue

KsRemoveSpecificIrpFromCancelableQueue