ZwOpenKey 函数 (wdm.h)
ZwOpenKey 例程打开现有注册表项。
语法
NTSYSAPI NTSTATUS ZwOpenKey(
[out] PHANDLE KeyHandle,
[in] ACCESS_MASK DesiredAccess,
[in] POBJECT_ATTRIBUTES ObjectAttributes
);
参数
[out] KeyHandle
指向 HANDLE 变量的指针,该变量接收键的句柄。
[in] DesiredAccess
指定一个 ACCESS_MASK 值,该值确定对 对象的请求访问权限。 有关详细信息,请参阅 ZwCreateKey 的 DesiredAccess 参数。
[in] ObjectAttributes
指向 OBJECT_ATTRIBUTES 结构的指针,该结构指定对象名称和其他属性。 使用 InitializeObjectAttributes 初始化此结构。 如果调用方未在系统线程上下文中运行,则必须在调用 InitializeObjectAttributes 时设置 OBJ_KERNEL_HANDLE 属性。
返回值
如果打开给定密钥,ZwOpenKey 将返回STATUS_SUCCESS。 否则,它可能会返回错误状态,包括以下内容:
STATUS_INVALID_HANDLE
STATUS_ACCESS_DENIED
注解
ZwOpenKey 提供调用方可用于操作注册表项的句柄。 例程提供 ZwCreateKey 功能的子集。 有关详细信息,请参阅 在驱动程序中使用注册表。
如果指定的键不存在, ZwOpenKey 将返回错误状态,并且不返回键句柄。
不再使用 KeyHandle 指向的句柄后,驱动程序必须调用 ZwClose 来关闭它。
ZwOpenKey 忽略 ObjectAttributes 参数指向的结构中的安全信息。
如果调用方未在系统线程上下文中运行,则必须确保它创建的任何句柄都是专用句柄。 否则,运行驱动程序的上下文中的进程可以访问句柄。 有关详细信息,请参阅 对象句柄。
有关使用注册表项的详细信息,请参阅 在驱动程序中使用注册表。
如果在用户模式下调用此函数,则应使用名称“NtOpenKey”而不是“ZwOpenKey”。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 符合性规则 | HwStorPortProhibitedDDI (storport) 、 IrqlZwPassive (wdm) 、 PowerIrpDDis (wdm) 、 ZwRegistryCreate (storport) 、 ZwRegistryOpen (storport) 、ZwRegistryOpen (storport) , ZwRegistryOpen (wdm) |