根据我在Google上的搜索,当 RegQueryValueEx()或 NtQueryValueKey()给出的值类型为REG_RESOURCE_LIST
或REG_RESOURCE_REQUIREMENTS_LIST
时,收到的数据
lpData 参数是指向CM_RESOURCE_LIST struct或IO_RESOURCE_REQUIREMENTS_LIST struct类型变量的指针。
我已设法使用提到的结构从REG_RESOURCE_LIST
和REG_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
提前致谢。
答案 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。
希望这有帮助。