KsAddIrpToCancelableQueue, fonction (ks.h)
La fonction KsAddIrpToCancelableQueue ajoute un IRP à une file d’attente d’IRP annulables, ce qui permet l’annulation de l’IRP. Si l’IRP avait été précédemment défini sur un état annulé, la fonction KsAddIrpToCancelableQueue termine l’annulation de cette IRP.
Syntaxe
KSDDKAPI VOID KsAddIrpToCancelableQueue(
[in, out] PLIST_ENTRY QueueHead,
[in] PKSPIN_LOCK SpinLock,
[in] PIRP Irp,
[in] KSLIST_ENTRY_LOCATION ListLocation,
[in, optional] PDRIVER_CANCEL DriverCancel
);
Paramètres
[in, out] QueueHead
Spécifie le stockage alloué au pilote pour le chef de la file d’attente sur lequel ajouter l’IRP.
[in] SpinLock
Pointe vers le verrou de rotation du pilote pour l’accès à la file d’attente spécifiée dans QueueHead. Une copie de ce pointeur est conservée dans le KSQUEUE_SPINLOCK_IRP_STORAGE (Irp) de l’IRP pour une utilisation par la routine d’annulation, si nécessaire.
[in] Irp
Spécifie l’IRP à ajouter à la file d’attente spécifiée dans QueueHead.
[in] ListLocation
Indique si ce IRP doit être placé au début ou à la fin de la file d’attente. Cette valeur doit être KsListEntryTail ou KsListEntryHead.
[in, optional] DriverCancel
Paramètre facultatif qui spécifie une routine d’annulation fournie par le pilote à utiliser. Si cette valeur est NULL, le KsCancelRoutine standard est utilisé.
Valeur de retour
None
Remarques
Si l’IRP a été placé dans un état d’annulation lorsque cette routine est appelée, KsAddIrpToCancelableQueue appelle immédiatement la routine d’annulation spécifiée dans DriverCancel, ou si aucune routine n’a été spécifiée dans DriverCancel , la routine d’annulation de streaming par défaut est appelée.
La fonction KsAddIrpToCancelableQueue permet d’annuler les IRPs avant même d’être placés dans une liste d’annulation ou lors du déplacement d’une liste à une autre. Cette fonction peut être appelée au niveau IRQ DISPATCH_LEVEL ou inférieur, sauf si la file d’attente allouée par le pilote et toutes les entrées de la file d’attente sont résidentes du système ou allouées à partir du stockage résident.
La fonction n’utilise pas le verrou d’annulation de rotation pour ajouter des éléments à la liste. L’accès à la liste est synchronisé à l’aide du verrou de rotation fourni et s’appuie sur des opérations atomiques sur Irp-CancelRoutine>.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
En-tête | ks.h (inclure Ks.h) |
Bibliothèque | Ks.lib |