是否有一种具体的方法来确定C中REG_
的{{1}} BINARY值所需的确切缓冲区大小?如果可能,请提供代码演示方法。
答案 0 :(得分:2)
winAPI双重调用舞蹈,适用于除Reg
函数之外的众多win API:调用RegQueryValueEx
一次,将NULL传递为lpData
,并指向{{1}这个函数将返回lpcpData
并用所需的缓冲区大小填充ERROR_SUCCESS
。},args 5和6。再次使用该大小的缓冲区调用。
您也可以从传递缓冲区开始,如果它太小,函数将返回lpcpData
并用所需的缓冲区大小填充ERROR_MORE_DATA
。
考虑以下使用第二种方法的winapi循环的一般伪代码:
lpcpData
这也处理缓冲区可能在调用之间改变大小的情况,即共享缓冲区或正在更新的注册表项。