RegEnumValue总是为最后一个值抛出ERROR_MORE_DATA
RegEnumValue always throws ERROR_MORE_DATA for last value
无论如何,我对RegEnumValue的调用总是在键的最后一个值上返回ERROR_MORE_DATA(234)。
我通过使用
获得所需的缓冲区大小:retCode = RegQueryInfoKey(hSubKey, // key handle
NULL, // buffer for class name
NULL, // size of class string
NULL, // reserved
NULL, // number of subkeys
NULL, // longest subkey length
NULL, // longest class string
&valueCount, // number of values for this key
&cLongestValue, // longest value name
NULL, // longest value data
NULL, // security descriptor
NULL); // last write time
然后分配数组:
currentValueName = new WCHAR[(int)cLongestValue];
然后我试着得到值:
retCode = RegEnumValue(hSubKey, j, currentValueName, &cLongestValue, NULL, NULL, NULL, NULL);
和retCode总是234时,j = 2(最后一个索引值)。
为什么我总是得到ERROR_MORE_DATA?对于键中的前两个值,它可以正常工作。
非常感谢任何帮助。我是c++的新手,所以我可能忽略了一些非常明显的东西
RegEnumValue,第3个参数(lpValueName [out]):
指向缓冲区的指针,该缓冲区接收值的名称空终止字符串。此缓冲区必须足够大以包含终止null字符。
RegQueryInfoKey只返回以字符为单位的值大小,所以是普通数据,没有字符串终止。
指向接收键最长长度的变量的指针值名称,以Unicode字符表示。尺寸不包括终止null字符。
ERROR_MORE_DATA告诉你缓冲区太小了。
就是这样:增加一个字符的缓冲区来为额外的结束符腾出空间。
相关文章:
- "error: no matching function for call to"构造函数错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 使用 LuaBridge 将 LuaJIT 绑定到C++会导致"PANIC: unprotected error"
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- C++错误:"error: int aaa::bbb is protected within this context"
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 使用 cmake 的 LLVM 构建在 tsan_libdispatch_mac.cc 期间失败; "Error: conflicting types for ..."
- C++ "error: invalid use of void expression"
- struct.error:解压缩 C++ 结构时,解包需要 288 字节的缓冲区
- 如何修复"error: ‘_1’ was not declared in this scope"?
- 从不同目录执行时"symbol lookup error:",否则从构建目录执行时按预期工作
- 对象声明中的模板"error: expected expression"
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- OpenCV 3.4.1 error readNetFromTensorflow 无法在 cv::d nn::ReadProtoFromBinaryFile 中打开 .pb
- 已解决 - C++ 的崇高文本中的"fatal error: opencv: no such file or directory"
- 为什么我会"error: expected expression"?
- CMake Error at modules/videoio/cmake/detect_ffmpeg.cmake:16
- 如果两个静态库使用相同的另一个静态库,如何避免"LNK2005 Already Defined error"?
- 在 Objective-C++ -> EXC_BAD_ACCESS Error 中使用"new"关键字