zwDeleteValueKey 函数 (wdm.h)

ZwDeleteValueKey 例程从注册表中的打开项中删除与名称匹配的值项。 如果不存在此类条目,则返回错误。

语法

NTSYSAPI NTSTATUS ZwDeleteValueKey(
  [in] HANDLE          KeyHandle,
  [in] PUNICODE_STRING ValueName
);

参数

[in] KeyHandle

包含相关值项的注册表项的句柄。 此密钥必须已使用为所需访问权限设置KEY_SET_VALUE打开。 此句柄是通过成功调用 ZwCreateKeyZwOpenKey 创建的。

[in] ValueName

指向包含要删除的值项名称 的UNICODE_STRING 结构的指针。 如果值项没有名称,此参数可以是空字符串。

返回值

ZwDeleteValueKey 返回STATUS_SUCCESS或表示操作最终完成状态的相应错误状态。 可能的错误状态代码包括:

返回代码 说明
STATUS_ACCESS_DENIED KeyHandle 句柄没有KEY_SET_VALUE访问权限。
STATUS_INSUFFICIENT_RESOURCES 此函数所需的其他资源不可用。
STATUS_INVALID_HANDLE 指定的 KeyHandle 参数是 NULL 指针,或者不是指向打开的注册表项的有效指针。
STATUS_OBJECT_NAME_NOT_FOUND 找不到 ValueName 注册表项。

注解

传递给 ZwDeleteValueKeyKeyHandle 必须已打开才能成功删除访问。 KEY_SET_VALUE、KEY_WRITE 和 KEY_ALL_ACCESS 的 DesiredAccess 值包括删除访问所需的KEY_SET_VALUE访问掩码。 有关 DesiredAccess 可能值的说明,请参阅 ZwCreateKey

如果为此注册表项注册了回调函数,则将调用这些回调函数。

设备驱动程序不应尝试直接调用 ZwDeleteValueKey 以删除 \Registry 的子项中的值条目 。\ResourceMap 键。 只有系统可以写入或删除 \Registry 中的值条目 。\HardwareDescription 树。

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

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

要求

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

另请参阅

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

ZwCreateKey

ZwDeleteKey

ZwEnumerateValueKey

ZwOpenKey

ZwQueryValueKey

ZwSetValueKey