IRegistryKey::SetValueKey 方法(portcls.h)
SetValueKey
方法替换或创建打开键下的值项。
语法
NTSTATUS SetValueKey(
[in, optional] PUNICODE_STRING ValueName,
[in] ULONG Type,
[in] PVOID Data,
[in] ULONG DataSize
);
参数
[in, optional] ValueName
指向包含要设置的值项名称的字符串的指针。 名称字符串由类型为 UNICODE_STRING的结构指定。 如果值项没有名称,请将此参数设置为 NULL。 如果调用方指定名称字符串,但给定名称与其包含键不是唯一的,该方法将替换现有值条目的数据。
[in] Type
指定要为 ValueName写入的数据的类型。 将此参数设置为以下系统定义类型之一:
REG_BINARY
REG_DWORD
REG_DWORD_LITTLE_ENDIAN
REG_DWORD_BIG_ENDIAN
REG_EXPAND_SZ
REG_LINK
REG_MULTI_SZ
REG_NONE
REG_SZ
REG_RESOURCE_LIST
REG_RESOURCE_REQUIREMENTS_LIST
REG_FULL_RESOURCE_DESCRIPTOR
ZwSetValueKey中介绍了这些参数类型。
[in] Data
指向包含数据的缓冲区的指针。 此参数指向适合函数的用户提供的结构或值。
[in] DataSize
指定 数据的大小(以字节为单位)。 此参数指定方法将从 数据 指向的缓冲区复制的数据字节数。
返回值
如果调用成功设置指定的值键,则 SetValueKey
返回STATUS_SUCCESS。 否则,该方法将返回适当的错误代码。 下表显示了一些可能的返回状态代码。
返回代码 | 描述 |
---|---|
|
指示传递给方法的参数之一无效。 |
|
指示方法找不到命名值键。 |
言论
如果给定键没有与给定 ValueName匹配的名称的现有值项,则 SetValueKey
创建具有给定名称的新值项。 如果存在匹配的值项名称,此例程将覆盖给定的 ValueName的原始值项。 因此,SetValueKey
保留任何特定键的每个值项的唯一名称。 虽然每个值项名称必须是唯一的包含键,但注册表中的许多不同键可以具有具有相同名称的值项。
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | portcls.h (包括 Portcls.h) |
IRQL | PASSIVE_LEVEL |