Windows: simplify WMI query code

by making C++ code more C++
This commit is contained in:
李通洲
2022-10-16 23:58:13 +08:00
parent 5d5663e2a7
commit 38b3aae1e3
16 changed files with 254 additions and 346 deletions
@@ -5,22 +5,14 @@ extern "C" {
extern "C" const char* ffGetCpuUsageResultNoWait(double* result)
{
IEnumWbemClassObject* pEnumerator = ffQueryWmi(L"SELECT LoadPercentage FROM Win32_Processor", nullptr);
if(!pEnumerator)
FFWmiQuery query(L"SELECT LoadPercentage FROM Win32_Processor");
if(!query)
return "Query WMI service failed";
IWbemClassObject *pclsObj = NULL;
ULONG uReturn = 0;
if(FAILED(pEnumerator->Next(WBEM_INFINITE, 1, &pclsObj, &uReturn)) || uReturn == 0)
{
pEnumerator->Release();
if(FFWmiRecord record = query.next())
record.getReal(L"LoadPercentage", result);
else
return "No WMI result returned";
}
ffGetWmiObjReal(pclsObj, L"LoadPercentage", result);
pclsObj->Release();
pEnumerator->Release();
return NULL;
return nullptr;
}