VOID GlobalMemoryStatus(

LPMEMORYSTATUS lpBuffer // Указатель на структуру,

); // описывающую состояние памяти

Параметр:

LpBuffer

Указывает на структуру MEMORYSTATUS, которая возвращает информацию о текущей доступной памяти. Перед вызовом этой функции вызывающий процесс должен установить поле dwLength этой структуры

typedef struct _MEMORYSTATUS { // mst

DWORD dwLength; // sizeof(MEMORYSTATUS)

DWORD dwMemoryLoad; // Процент используемой памяти

DWORD dwTotalPhys; // Байтов физической памяти

DWORD dwAvailPhys; // Байтов свободной физической памяти

DWORD dwTotalPageFile;// Байтов в файле пдкачки

DWORD dwAvailPageFile;// Свободных байтов в файле подкачки

DWORD dwTotalVirtual; //Байтов адресн. пространства пользов.

DWORD dwAvailVirtual; // Свободных байтов пользователя

} MEMORYSTATUS, *LPMEMORYSTATUS;

Поля

dwLength

Показывает размер структуры. Перед вызовом этой функции вызывающий процесс должен установить поле dwLength этой структуры (значением sizeof(MEMORYSTATUS)).

dwMemoryLoad

Число от 0 до 100, указывающее процент использования памяти, 0 говорит о том, что память не используется, 100 говорит о полном использовании памяти.

dwTotalPhys

Показывает количество байтов физической памяти.

dwAvailPhys

Показывает доступное количество байтов физической памяти.

dwTotalPageFile

Показывает количество байтов, которое может быть сохранено в файле подкачки. Следует иметь в виду, что это число не характеризует текущий размер физического файла подкачки на диске.

dwAvailPageFile

Показывает количество доступных байтов в файле подкачки.

dwTotalVirtual

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

dwAvailVirtual

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

// Определение объема установленной памяти ================

int mem_size;

_MEMORYSTATUS mem;

mem.dwLength=sizeof(MEMORYSTATUS);

GlobalMemoryStatus(&mem);

mem_size=mem.dwTotalPhys;

mem_size=mem_size/(1024*1024);

a=AnsiString(mem_size)+" Мбайт";

// Application->MessageBox(a.c_str(),"Объем установленной памяти",MB_OK);

if(mem_size<500)

{ AnsiString f1;

f1=”Системные требования”;

a=”объем памяти ЭВМ менее 500 МГц”+AnsiString(mem_size)+ ” Мбайт)\n”;

Application->MessageBox(a.c_str(),f1.c_str(),MB_OK);

}

3.5 Определение объема доступного дискового пространства

Для определения доступного дискового пространства может быть использована функция API Win32 GetLogicalDrives, которая возвращает битовую маску, представляющую текущие доступные диски.

DWORD GetLogicalDrives(VOID)

Параметр

Эта функция не имеет параметров.

Возвращаемые значения

При успешном выполнении функции она возвращает битовую маску, представляющую текущие доступные диски. Бит 0 (младший значащий бит)представляет диск A, бит 1 – диск B, бит 2 – диск C, и так далее.

Если функция завершилась неудачно, возвращается нулевое значение.

Для определения типа диска – сменный диск, фиксированный, CD-ROM, RAM диск или сетевой диск – может быть использована функция API Win32 GetDriveType.

UINT GetDriveType(

LPCTSTR lpRootPathName // адрес пути к корневому

); // каталогу диска

Параметры

LpRootPathName

Указывает на нуль-терминированную строку, определяющую путь к корневому каталогу диска, о котором необходимо получить информацию. Если lpRootPathName– NULL, функция использует корневой каталог текущего диска.

Возвращаемые значения

Возвращаемые значения определяют тип диска. Возможно одно из следующих значений:

0 Тип диска не может быть определен.

1 Корневой каталог на существует.

DRIVE_REMOVABLE Диск может быть удален из дисковода.

DRIVE_FIXED Диск не может быть удален из дисковода.

DRIVE_REMOTE Удаленный (сетевой) диск.

DRIVE_CDROM Диск представляет собой CD-ROM.

DRIVE_RAMDISK Диск представляет собой RAM диск.

Для определения наличного свободного дискового пространства может быть использована функция API Win32 GetDiskFreeSpace, которая возвращает информацию об определенном диске, включая объем свободного пространства на диске.

BOOL GetDiskFreeSpace(

LPCTSTR lpRootPathName, // адрес пути к корневому

// каталогу диска

LPDWORD lpSectorsPerCluster, // адрес переменной,

// указывающей количество секторов в кластере

LPDWORD lpBytesPerSector, // адрес переменной,

// указывающей количество байтов в секторе

LPDWORD lpNumberOfFreeClusters, // адрес переменной,

// указывающей общее количество свободных

// кластеров на диске

LPDWORD lpTotalNumberOfClusters // адрес переменной,

// указывающей общее количество

// кластеров на диске

);

Параметры

LpRootPathName

Указывает на нуль-терминированную строку, определяющую путь к корневому каталогу диска, о котором необходимо получить информацию. Если lpRootPathName – NULL, функция использует корневой каталог текущего диска.

LpSectorsPerCluster

Указывает на переменную, содержащую количество секторов в кластере.

LpBytesPerSector

Указывает на переменную, содержащую количество байтов в секторе.

Наши рекомендации