sysinfowindowsimpl.cpp 1014 B

123456789101112131415161718192021222324252627
  1. #include "sysinfowindowsimpl.h"
  2. SysInfoWindowsImpl::SysInfoWindowsImpl() : SysInfo() {}
  3. void SysInfoWindowsImpl::init() {}
  4. double SysInfoWindowsImpl::cpuLoadAverage() {
  5. QVector<qulonglong> firstSample = mCpuLoadLastValues;
  6. QVector<qulonglong> secondSample = cpuRawData();
  7. mCpuLoadLastValues = secondSample;
  8. qulonglong currentIdle = secondSample[0] - firstSample[0];
  9. qulonglong currentKernel = secondSample[1] - firstSample[1];
  10. qulonglong currentUser = secondSample[2] - firstSample[2];
  11. qulonglong currentSystem = currentKernel + currentUser;
  12. double percent = (currentSystem - currentIdle) * 100.0 / currentSystem;
  13. return qBound(0.0, percent, 100.0);
  14. }
  15. double SysInfoWindowsImpl::memoryUsed() {
  16. MEMORYSTATUSEX memoryStatus;
  17. memoryStatus.dwLength = sizeof(MEMORYSTATUSEX);
  18. GlobalMemoryStatusEx(&memoryStatus);
  19. qulonglong memoryPhysicalUsed =
  20. memoryStatus.ullTotalPhys - memoryStatus.ullAvailPhys;
  21. return (double)memoryPhysicalUsed / (double)memoryStatus.ullTotalPhys * 100.0;
  22. }