KsCancelIo 函数 (ks.h)
KsCancelIo 函数取消指定取消列表中的所有 IRP。 如果列表中的 IRP 没有取消例程,则只会在 IRP 中设置取消位。 可以在 IRQ 级别DISPATCH_LEVEL或更低级别调用该函数。
语法
KSDDKAPI VOID KsCancelIo(
[in, out] PLIST_ENTRY QueueHead,
[in] PKSPIN_LOCK SpinLock
);
参数
[in, out] QueueHead
指定要取消的 IRP 的驱动程序维护队列的头。
[in] SpinLock
指向调用方分配的旋转锁进行队列访问。 此指针的副本保存在 IRP 的KSQUEUE_SPINLOCK_IRP_STORAGE(Irp)中,以供取消例程使用(如有必要)。
返回值
没有
言论
KsCancelIo 取消给定驱动程序维护队列中的所有 IRP。 如果 IRP 具有取消例程,则会调用取消例程。 否则,IRP 中的取消标志设置为 TRUE。 此例程不会从队列中删除 IRP。 驱动程序的唯一责任是确保 IRP 中指定的取消例程或某些其他驱动程序提供的功能删除 IRP。
如果取消的 IRP 具有驱动程序提供的取消例程,则可以通过调用KSQUEUE_SPINLOCK_IRP_STORAGE从 IRP 获取取消旋转锁。
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | ks.h (包括 Ks.h) |
库 | Ks.lib |
IRQL | < DISPATCH_LEVEL |