Получение информации о памяти

© 2006 Андрей Садовой

Для получения детальной информации о состоянии памяти компьютера можно воспользоваться функцией API GlobalMemoryStatus. В функцию передается переменная типа TMemoryStatus, которая представляет собой запись, тип которой определен следующим образом:

type
  TMemoryStatus = record
    dwLength: DWORD;
    dwMemoryLoad: DWORD;
    dwTotalPhys: DWORD;
    dwAvailPhys: DWORD;
    dwTotalPageFile: DWORD;
    dwAvailPageFile: DWORD;
    dwTotalVirtual: DWORD;
    dwAvailVirtual: DWORD;
  end;

Первое поле записи, dwLength, описывает длину записи TMemoryStatus. Поле необходимо инициализировать функцией SizeOf до обращения к функции GlobalMemoryStatus.

Второе поле, dwMemoryLoad, содержит количество использованной памяти в процентах.

Третье поле, dwTotalPhys, содержит число байт установленной на компьютере ОЗУ (физической памяти).

Поле dwAvailPhys – свободная физическая память в байтах.

Следующие два поля – dwTotalPageFile и dwAvailPageFile – показывают общий объем, который могут сохранить файлы/файл подкачки (вообще говоря, не совпадает с размером последних) и еще доступный объем из этой величины. Все в байтах.

Последние два поля относятся к виртуальной памяти. Поле dwTotalVirtual – общее число байтов виртуальной памяти, используемой в вызывающем процессе. Поле AvailVirtual – объем этой памяти, еще доступной для вызывающего процесса.

Приведу один пример использования функции GlobalMemoryStatus. На Дельфи можно реализовать следующий код получения информации о наличной памяти ОЗУ:

function GetRAM: Cardinal;
var
  MS: TMemoryStatus;
begin
  MS.dwLength:=SizeOf(MS);
  GlobalMemoryStatus(MS);
  Result:=MS.dwTotalPhys;
end;

Функция GetRAM возвращает общее число байт физической памяти, установленной на компьютере. Эту информацию она читает из поля dwTotalPhys записи MS, имеющей тип TMemoryStatus. Перед этим вызывается API-функция GlobalMemoryStatus с параметром MS. Обратите внимание, что перед вызовом GlobalMemoryStatus инициализируется поле dwLength функцией SizeOf.

По аналогии с примером можно получить информацию об остальных параметрах памяти. Думаю, у читателей это не вызовет затруднения. Реализацию функций на Дельфи для получения информации о памяти можно найти в моем модуле SysInfo v.3.00. Там же содержатся функции получения и другой системной информации.

Copyright© 2006 Андрей Садовой  Специально для Delphi Plus


Пожалуйста, оцените статью
Отлично
Хорошо
Средне
Плохо
Очень плохо