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 |