У меня есть следующий код VC++. Как подсчитать размер TCHAR в DWORD, который не будет работать во время выполнения.размер массива TCHAR в DWORD
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'. Обязательно прекратите его. – jww
Часто для этого нужно * запросить * размер данных, а затем создать буфер соответствующего размера. [Функция RegQueryValueEx] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms724911 (v = vs.85) .aspx) – crashmstr