From c1089b4806706b787936aa55f3932830998095de Mon Sep 17 00:00:00 2001 From: "re.kovalev" Date: Fri, 16 Jul 2021 13:27:54 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=B4=D0=BB=D1=8F=20Windows?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Memorator.cpp | 31 ++++++++++++++++++++++++++----- Memorator.h | 6 +++++- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/Memorator.cpp b/Memorator.cpp index c174711..ad97b29 100644 --- a/Memorator.cpp +++ b/Memorator.cpp @@ -4,7 +4,9 @@ /*Статическое поле класса Memorator*/ #ifdef __linux__ -sysinfo Memorator::info; +struct sysinfo Memorator::info; +#elif _WIN32 +MEMORYSTATUSEX Memorator::statex; #endif /*Заполняет поле с информацией класса Memorator данными от системы*/ @@ -12,15 +14,22 @@ void Memorator::ask() { #ifdef __linux__ sysinfo(&info); + #elif _WIN32 + statex.dwLength = sizeof (statex); + GlobalMemoryStatusEx(&statex); #endif } /*Возвращает общее кол-во памяти в байтах*/ unsigned long Memorator::getTotalRam_B() { - #ifdef __linux__ ask(); - return info.totalram; + #ifdef __linux__ + return info.totalram; + #elif _WIN32 + return statex.ullTotalPhys; + #else + return 0; #endif } @@ -39,9 +48,13 @@ unsigned long Memorator::getTotalRam_MB() /*Возвращает общее кол-во свободной памяти в байтах*/ unsigned long Memorator::getFreeRam_B() { - #ifdef __linux__ ask(); + #ifdef __linux__ return info.freeram; + #elif _WIN32 + return statex.ullAvailPhys; + #else + return 0; #endif } @@ -60,9 +73,13 @@ unsigned long Memorator::getFreeRam_MB() /*Возвращает общее кол-во памяти подкачки в байтах*/ unsigned long Memorator::getTotalSwap_B() { - #ifdef __linux__ ask(); + #ifdef __linux__ return info.totalswap; + #elif _WIN32 + return statex.ullTotalPageFile; + #else + return 0; #endif } @@ -84,6 +101,10 @@ unsigned long Memorator::getFreeSwap_B() #ifdef __linux__ ask(); return info.freeswap; + #elif _WIN32 + return statex.ullAvailPageFile - getFreeRam_B(); + #else + return 0; #endif } diff --git a/Memorator.h b/Memorator.h index 8c5a3ea..93a8d6f 100644 --- a/Memorator.h +++ b/Memorator.h @@ -2,6 +2,8 @@ #ifdef __linux__ #include +#elif _WIN32 +#include #endif /*Класс для работы с информацией об оперативной памяти*/ @@ -24,6 +26,8 @@ class Memorator private: static void ask(); #ifdef __linux__ - static sysinfo info; + static struct sysinfo info; + #elif _WIN32 + static MEMORYSTATUSEX statex; #endif };