Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La fonction KsAddIrpToCancelableQueue ajoute un IRP à une file d’attente d’IRPs 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 cet 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é par le pilote pour la tête de la file d’attente sur laquelle ajouter l’IRP.
[in] SpinLock
Pointe vers le verrou de rotation du pilote pour l’accès à la file d’attente spécifié à QueueHead. Une copie de ce pointeur est conservée dans les KSQUEUE_SPINLOCK_IRP_STORAGE(Irp) de l’IRP à utiliser par la routine d’annulation, si nécessaire.
[in] Irp
Spécifie l’IRP à ajouter à la file d’attente spécifiée à QueueHead.
[in] ListLocation
Indique si cet 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. S’il s’agit NULL, le KsCancelRoutine standard est utilisé.
Valeur de retour
Aucun
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 à DriverCancel, ou si aucune routine n’a été spécifiée à DriverCancel la routine d’annulation de streaming par défaut est appelée.
La fonction KsAddIrpToCancelableQueue permet aux IRPs d’être annulés même avant d’être placés sur une liste d’annulations, ou lorsqu’ils sont déplacés d’une liste à une autre. Cette fonction peut être appelée au niveau IRQ DISPATCH_LEVEL ou inférieure, 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 de rotation d’annulation 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.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | ks.h (include Ks.h) |
bibliothèque | Ks.lib |