【发布时间】:2013-07-30 18:02:48
【问题描述】:
我在使用 RegQueryValueEx 时得到了奇怪的结果,我不知道为什么。
这是我在制作RegQueryValueEx之前设置的
DWORD dataSize;
TCHAR data[256];
第一次打电话
LONG ret = RegQueryValueEx( hKey, dataKey, NULL, NULL, (LPBYTE)data, &dataSize);
ret 等于 234 (ERROR_MORE_DATA)
但是当我在下一行调用同样的东西时
LONG ret2 = RegQueryValueEx( hKey, dataKey, NULL, NULL, (LPBYTE)data, &dataSize);
ret2 等于 0 (ERROR_SUCCESS)
为什么我第一次调用这个函数时会返回ERROR_MORE_DATA,然后在下一行的同一个调用中返回ERROR_SUCESS?
我尝试更改TCHAR data[1024],但得到了完全相同的结果。有什么想法吗?
完整代码:
for( int i=0; i<NUM_HISTORY; i++){
CString dataKey = getDataKey(i);
DWORD dataSize = 1024;
TCHAR data[1024];
LONG ret = RegQueryValueEx( hKey, dataKey, NULL, NULL, (LPBYTE)data, &dataSize);
LONG ret2 = RegQueryValueEx( hKey, dataKey, NULL, NULL, (LPBYTE)data, &dataSize);
// Breakpoint to see what ret and ret2 are equal to
int j = 0;
}
【问题讨论】: