如何从 C++ 中的注册表中读取 QWORD(64 位)?
How to read QWORD (64-bit) from the registry in C++?
如何从注册表中读取 REG_QWORD?最具体地说 HardwareInformation.qwMemorySize 。
我发现用它除以 1024 然后再除以 1024 就可以得到以兆字节为单位的显存。我怎样才能首先阅读QWORD?我只能找到如何读取 DWORD。
您读取 QWORD
的方式与读取 DWORD
的方式完全相同,使用 RegQueryValueEx()
,只是使用 64 位整数变量而不是 32 位整数变量,例如:
HKEY hKey;
if (RegOpenKeyEx(..., KEY_QUERY_VALUE, &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, &dwType, reinterpret_cast<LPBYTE>(&value), &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, &value, &dwSize) == ERROR_SUCCESS) {
// use value as needed...
}
如何从注册表中读取 REG_QWORD?最具体地说 HardwareInformation.qwMemorySize 。 我发现用它除以 1024 然后再除以 1024 就可以得到以兆字节为单位的显存。我怎样才能首先阅读QWORD?我只能找到如何读取 DWORD。
您读取 QWORD
的方式与读取 DWORD
的方式完全相同,使用 RegQueryValueEx()
,只是使用 64 位整数变量而不是 32 位整数变量,例如:
HKEY hKey;
if (RegOpenKeyEx(..., KEY_QUERY_VALUE, &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, &dwType, reinterpret_cast<LPBYTE>(&value), &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, &value, &dwSize) == ERROR_SUCCESS) {
// use value as needed...
}