【发布时间】:2014-05-09 15:32:27
【问题描述】:
我有以下 VC++ 代码。如何计算在运行时不会失败的 DWORD 中 TCHAR 的大小。
HKEY hKey = 0;
DWORD dwType = REG_SZ;
TCHAR buf[255] = {0};
DWORD dwBufSize = sizeof(buf);
if( RegOpenKeyEx( HKEY_LOCAL_MACHINE, TEXT("HARDWARE\\DEVICEMAP\\SERIALCOMM"), 0, KEY_QUERY_VALUE, &hKey ) == ERROR_SUCCESS )
{
auto ret = RegQueryValueEx( hKey, TEXT("\\Device\\Serial0"), 0, &dwType, (LPBYTE)buf, &dwBufSize );
...
}
那么bufSize 的价值应该是什么。以下代码是否仍然正确?
DWORD bufSize = sizeof(buf);
【问题讨论】:
-
相关:
RegQueryValueEx不保证NULL终止的字符串。请务必终止它。 -
通常,这样做的方法是查询数据的大小,然后创建一个适当大小的缓冲区。 RegQueryValueEx function
标签: visual-c++ tchar dword