KsDisableEvent 函数 (ks.h)

KsDisableEvent 函数禁用通过 IOCTL_KS_DISABLE_EVENT 请求的事件。 它响应以前通过 KsEnableEvent 启用的所有事件。 如果输入缓冲区长度为零,则假定要禁用列表中的所有事件。 只能在PASSIVE_LEVEL调用此函数。

语法

KSDDKAPI NTSTATUS KsDisableEvent(
  [in]      PIRP              Irp,
  [in, out] PLIST_ENTRY       EventsList,
  [in]      KSEVENTS_LOCKTYPE EventsFlags,
  [in]      PVOID             EventsLock
);

参数

[in] Irp

指定传递给删除函数的 IRP,该函数使用 IRP 获取上下文信息。 与 IRP 关联的文件对象用于与启用事件时最初指定的文件对象进行比较。 这允许将单个事件列表用于按文件对象区分的多个客户端。

[in, out] EventsList

指向可找到事件的 KSEVENT_ENTRY 项列表的标题。 如果客户端使用多个事件列表,并且不知道此事件位于哪个列表上,则客户端可以多次调用此函数。 找不到的事件将返回STATUS_UNSUCCESSFUL。

[in] EventsFlags

指定 KSEVENTS_LOCKTYPE 标志,该标志指定要在访问事件列表时使用的排除锁的类型。 如果未设置标志,则不采取任何锁定。

[in] EventsLock

用于同步对列表中的元素的访问。 访问元素后,会将其标记为已删除,以便后续删除请求失败。 然后,在调用删除函数(如果有)后释放锁。 在实际从列表中删除元素之前,删除函数必须与事件生成同步。

返回值

如果成功, KsDisableEvent 函数将返回STATUS_SUCCESS,或者返回特定于正在启用的事件的错误。 函数始终设置IO_STATUS_BLOCK。PIRP 的信息字段。IRP 中的 IoStatus 元素为零。 它不会设置IO_STATUS_BLOCK。状态字段也不完成 IRP。

注解

删除处理程序与事件生成同步非常重要,以确保从列表中删除事件时,当前不会对其进行服务。 假定通过传递的锁来控制对此列表的访问。

要求

要求
目标平台 通用
标头 ks.h (包括 Ks.h)
Library Ks.lib

另请参阅

KsEnableEvent