zwOpenEvent 函数 (wdm.h)

ZwOpenEvent 例程打开具有指定所需访问权限的现有命名事件对象的句柄。

语法

NTSYSCALLAPI NTSTATUS ZwOpenEvent(
  [out] PHANDLE            EventHandle,
  [in]  ACCESS_MASK        DesiredAccess,
  [in]  POBJECT_ATTRIBUTES ObjectAttributes
);

参数

[out] EventHandle

指向将接收事件对象句柄的变量的指针。 句柄包括记账信息,例如引用计数和安全上下文。

[in] DesiredAccess

ACCESS_MASK值,该值表示事件对象的所需访问类型。 下表包含特定于事件的ACCESS_MASK值。

所需访问权限
EVENT_QUERY_STATE 查询事件对象的状态。
EVENT_MODIFY_STATE 修改事件对象的状态。
EVENT_ALL_ACCESS 对事件对象的所有可能的访问权限。

[in] ObjectAttributes

指向对象属性结构的指针,调用方提供该结构用于指定对象。 例如,这些属性将包括 ObjectName 和句柄属性。 此参数通过调用 InitializeObjectAttributes 宏进行初始化。

返回值

ZwOpenEvent 返回STATUS_SUCCESS或适当的错误状态。 此例程可能会返回以下错误状态代码之一:

返回代码 说明
STATUS_INSUFFICIENT_RESOURCES 无法分配此函数所需的资源。
STATUS_INVALID_PARAMETER 未提供 ObjectAttributes 结构或包含无效的参数值。
STATUS_OBJECT_NAME_INVALID ObjectAttributes 参数在OBJECT_ATTRIBUTES结构中包含无效的 ObjectName
STATUS_OBJECT_PATH_SYNTAX_BAD 对象路径包含错误的语法。 例如,ObjectAttributes 参数不包含 RootDirectory 成员,但OBJECT_ATTRIBUTES结构中的 ObjectName 成员是空字符串,或者不以OBJECT_NAME_PATH_SEPARATOR字符开头。
STATUS_OBJECT_PATH_NOT_FOUND 找不到对象的路径,指示该路径不存在。
STATUS_OBJECT_NAME_NOT_FOUND 找不到对象名称,指示该对象不存在。
STATUS_PRIVILEGE_NOT_HELD 调用方没有创建具有 DesiredAccess 参数中指定的访问权限的句柄所需的权限。

注解

ZwOpenEvent 打开现有的命名事件对象,并创建具有指定所需访问权限的对象句柄。

ZwOpenEvent 可以打开通知或同步事件。

事件用于协调执行。 文件系统驱动程序可以使用事件使调用方能够等待请求的操作完成,直到给定事件设置为“已信号”状态。

通知事件可用于通知一个或多个执行线程已发生事件。 同步事件可用于序列化两个不相关的驱动程序之间的硬件访问。

如果在用户模式下调用 ZwOpenEvent 函数,则应使用名称“NtOpenEvent”而不是“ZwOpenEvent”。

对于来自内核模式驱动程序的调用,Windows Native System Services 例程的 NtXxxZwXxx 版本在处理和解释输入参数的方式上的行为可能有所不同。 有关例程的 NtXxxZwXxx 版本之间的关系的详细信息,请参阅 使用本机系统服务例程的 Nt 和 Zw 版本

要求

要求
目标平台 通用
标头 wdm.h (包括 Wdm.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDI (storport) PowerIrpDDis (wdm)

另请参阅

ACCESS_MASK

InitializeObjectAttributes

IoCreateNotificationEvent

IoCreateSynchronizationEvent

KeClearEvent

KeResetEvent

KeSetEvent

KeWaitForSingleObject

使用本机系统服务例程的 Nt 和 Zw 版本

ZwClose

ZwCreateEvent

ZwSetEvent

ZwWaitForSingleObject