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

另请参阅

KsAddIrpToCancelableQueue