哪个结构用于从REG_FULL_RESOURCE_DESCRIPTOR类型的注册表值数据中提取信息?

时间:2018-05-18 19:48:58

标签: c windows winapi

背景

根据我在Google上的搜索,当 RegQueryValueEx() NtQueryValueKey()给出的值类型为REG_RESOURCE_LISTREG_RESOURCE_REQUIREMENTS_LIST时,收到的数据 lpData 参数是指向CM_RESOURCE_LIST structIO_RESOURCE_REQUIREMENTS_LIST struct类型变量的指针。

我已设法使用提到的结构从REG_RESOURCE_LISTREG_RESOURCE_REQUIREMENTS_LIST类型的值数据中提取信息。

问题

哪个结构用于值类型REG_FULL_RESOURCE_DESCRIPTOR

我尝试使用CM_FULL_RESOURCE_DESCRIPTOR struct从以下注册表位置的值数据中提取信息但没有成功:

Key Path  : HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System
Value Name: Configuration Data
Value Type: REG_FULL_RESOURCE_DESCRIPTOR

提前致谢。

2 个答案:

答案 0 :(得分:0)

此Windows 7示例应为您提供正在寻找的example code

以下是相关摘录:

case REG_FULL_RESOURCE_DESCRIPTOR:
    LoadString(hInst, IDS_REGFULLDESC, lpBuffer, sizeof(lpBuffer));
    SetDlgItemText (hDlg, IDE_VALUE1, lpBuffer);
    break;

答案 1 :(得分:0)

事实证明我已经走上正轨。 要从类型为REG_FULL_RESOURCE_DESCRIPTOR的注册表值数据中提取信息,只需将二进制数据解析为CM_FULL_RESOURCE_DESCRIPTOR struct

然而,有一点需要注意:

如果值数据的大小仅为 16字节,则表示值数据不包含{{3>的 PartialDescriptors 成员}}。或者,我们可以检查CM_PARTIAL_RESOURCE_LIST struct 计数 成员的值是否为0。

希望这有帮助。