#c #dword
Вопрос:
Как мне прочитать REG_QWORD из реестра? В частности, информация об аппаратном обеспечении.QWM запоминает . Я обнаружил, что с его разделением на 1024, а затем еще раз разделенным на 1024, вы можете получить видеопамять в мегабайтах. Как я могу сначала прочитать QWORD? Я могу найти только то, как читать D-слова.
Комментарии:
1. Пропуск
REG_QWORD
для считываемого типа — смотрите здесь docs.microsoft.com/en-us/windows/win32/api/winreg/… и здесь docs.microsoft.com/en-us/windows/win32/sysinfo/…
Ответ №1:
Вы читаете a QWORD
точно так же , как вы читаете a DWORD
, используя RegQueryValueEx()
только 64-разрядную целочисленную переменную вместо 32-разрядной целочисленной переменной, например:
HKEY hKey;
if (RegOpenKeyEx(..., KEY_QUERY_VALUE, amp;hKey) == ERROR_SUCCESS) {
QWORD value = 0; // or UINT64, ULONGLONG, ULONG64, ULARGE_INTEGER, etc...
DWORD dwType, dwSize = sizeof(value);
if (RegQueryValueEx(hKey, _T("HardwareInformation.qwMemorySize"), NULL, amp;dwType, reinterpret_cast<LPBYTE>(amp;value), amp;dwSize) == ERROR_SUCCESS) {
if (dwType == REG_QWORD || dwType == REG_BINARY) {
// use value as needed...
}
}
RegCloseKey(hKey);
}
Или, используя RegGetValue()
вместо этого:
QWORD value = 0; // see above...
DWORD dwSize = sizeof(value);
if (RegGetValue(hkey, NULL, _T("HardwareInformation.qwMemorySize"), RRF_RT_QWORD, NULL, amp;value, amp;dwSize) == ERROR_SUCCESS) {
// use value as needed...
}
Комментарии:
1. Для меня QWORD не определен, я не знаю почему…
2. Я думаю, что я определил его следующим образом:
3.
typedef unsigned __int64 QWORD;
4. @JackRivera » QWORD не определен » — это зависит от версии установленного вами пакета SDK для Windows. Может быть, у вас есть более старая версия? Для типов данных Windows :
typedef unsigned __int64 QWORD;
Существует множество различных псевдонимов(unsigned) __int64
, определяемых Win32 API,DWORDLONG
т. Е.,DWORD64
,(U)INT64
,(U)LONGLONG
,(U)LONG64
, и т.д.(U)LARGE_INTEGER
Используйте то, что вам подходит, или просто используйте(unsigned) __int64
напрямую.5. Я прошелся вверх и вниз по вашему ответу, и Верхнее решение сделало это за меня. Большое вам спасибо, поставьте галочку в моем правильном ответе за признательность.