2022-10-06 22:07:48 +08:00
|
|
|
extern "C" {
|
|
|
|
|
#include "processes.h"
|
|
|
|
|
}
|
|
|
|
|
#include "util/windows/wmi.hpp"
|
|
|
|
|
|
|
|
|
|
uint32_t ffDetectProcesses(FFinstance* instance, FFstrbuf* error)
|
|
|
|
|
{
|
|
|
|
|
FF_UNUSED(instance);
|
|
|
|
|
|
|
|
|
|
IEnumWbemClassObject* pEnumerator = ffQueryWmi(L"SELECT NumberOfProcesses FROM Win32_OperatingSystem", error);
|
|
|
|
|
|
|
|
|
|
if(!pEnumerator)
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
IWbemClassObject *pclsObj = NULL;
|
|
|
|
|
ULONG uReturn = 0;
|
|
|
|
|
|
|
|
|
|
if(FAILED(pEnumerator->Next(WBEM_INFINITE, 1, &pclsObj, &uReturn)) || uReturn == 0)
|
|
|
|
|
{
|
|
|
|
|
ffStrbufAppendS(error, "No Wmi result returned");
|
|
|
|
|
pEnumerator->Release();
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2022-10-06 22:56:56 +08:00
|
|
|
uint64_t result = 0;
|
|
|
|
|
ffGetWmiObjUnsigned(pclsObj, L"NumberOfProcesses", &result);
|
2022-10-06 22:07:48 +08:00
|
|
|
pclsObj->Release();
|
|
|
|
|
pEnumerator->Release();
|
|
|
|
|
return (uint32_t)result;
|
|
|
|
|
}
|