© 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
Пожалуйста, оцените статью