确定C中RegQueryValueEx所需的缓冲区大小

时间:2012-07-29 18:19:57

标签: c windows registry

是否有一种具体的方法来确定C中REG_的{​​{1}} BINARY值所需的确切缓冲区大小?如果可能,请提供代码演示方法。

1 个答案:

答案 0 :(得分:2)

winAPI双重调用舞蹈,适用于除Reg函数之外的众多win API:调用RegQueryValueEx一次,将NULL传递为lpData,并指向{{1}这个函数将返回lpcpData并用所需的缓冲区大小填充ERROR_SUCCESS。},args 5和6。再次使用该大小的缓冲区调用。

您也可以从传递缓冲区开始,如果它太小,函数将返回lpcpData并用所需的缓冲区大小填充ERROR_MORE_DATA

考虑以下使用第二种方法的winapi循环的一般伪代码:

lpcpData

这也处理缓冲区可能在调用之间改变大小的情况,即共享缓冲区或正在更新的注册表项。