Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС - Методичка по лабам.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
319 Кб
Скачать
☆

6.2.1.2Функція GlobalMemoryStatusEx

Визначає стан усіх типів пам’яті, а саме. скільки є всього, скільки доступно, і який процент зайнято

BOOL WINAPI GlobalMemoryStatusEx(LPMEMORYSTATUSEX lpBuffer);

Структура MEMORYSTATUSEX:

typedef struct _MEMORYSTATUSEX {

DWORD dwLength;

DWORD dwMemoryLoad;

DWORDLONG ullTotalPhys;

DWORDLONG ullAvailPhys;

DWORDLONG ullTotalPageFile;

DWORDLONG ullAvailPageFile;

DWORDLONG ullTotalVirtual;

DWORDLONG ullAvailVirtual;

DWORDLONG ullAvailExtendedVirtual;

} MEMORYSTATUSEX, *LPMEMORYSTATUSEX;

В цій структурі поле dwLength означає розмір структури з даними, його треба задати перед викликом функції GlobalMemoryStatusEx

6.2.1.3Функція VirtualQueryEx

Визначає стан адресного простору для заданого процесу

SIZE_T WINAPI VirtualQueryEx(

HANDLE hProcess,

LPCVOID lpAddress,

PMEMORY_BASIC_INFORMATION lpBuffer,

SIZE_T dwLength

);

Де:

HANDLE hProcess – дескриптор процесу, для поточноог процесу можна використовувати функції GetCurrentProcess

LPCVOID lpAddress – адреса памяті, стан якої аналізується;

MEMORY_BASIC_INFORMATION lpBuffer – структура, куди записується результати аналізу;

SIZE_T dwLength – розмір структури з результатами.

Структура MEMORY_BASIC_INFORMATION

typedef struct _MEMORY_BASIC_INFORMATION

{

PVOID BaseAddress;

PVOID AllocationBase;

DWORD AllocationProtect;

SIZE_T RegionSize;

DWORD State;

DWORD Protect;

DWORD Type;

}MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION;

Де:

BaseAddress – найближча адреса на границі сторінки;

AllocationBase – адреса початку регіону;

AllocationProtect – права доступу, які призначені при виділенні пам’яті, задаються константами:

PAGE_EXECUTE, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE, PAGE_EXECUTE_WRITECOPY, PAGE_NOACCESS, PAGE_READONLY, PAGE_READWRITE, PAGE_WRITECOPY

RegionSize – розмір регіону;

State, стан регіону, задається константами:

MEM_COMMIT – фізична пам’ять;

MEM_RESERVE – віртуальна пам’ять;

MEM_FREE – вільна пам’ять;

Protect – реальні права доступу, задаються як для поля AllocationProtect.;

Type – задається константами:

MEM_IMAGE MEM_MAPPED MEM_PRIVATE

6.2.2Функції для керування віртуальною та фізичною пам’яттю

6.2.2.1Функція VirtualAllocEx

Використовується для виділення памяті заданого типу або перепризначення типу пам’яті

LPVOID WINAPI VirtualAllocEx(

__in HANDLE hProcess,

__in LPVOID lpAddress,

__in SIZE_T dwSize,

__in DWORD flAllocationType,

__in DWORD flProtect

);

Де:

hProcess – дескриптор процесу;

lpAddress – адреса пам'яті, якщо змінюється її тип, 0 якщо пам'ять виділяється:

dwSize – потрібний розмір (байт);

flAllocationType – тип пам'яті; задається константами:

MEM_COMMIT; MEM_RESERVE; MEM_RESET

flProtect – способ доступу, задається константами:

PAGE_EXECUTE, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE, PAGE_EXECUTE_WRITECOPY, PAGE_NOACCESS, PAGE_READONLY, PAGE_READWRITE, PAGE_WRITECOPY

6.2.2.2Функція VirtualFree

BOOL WINAPI VirtualFreeEx(

__in HANDLE hProcess,

__in LPVOID lpAddress,

__in SIZE_T dwSize,

__in DWORD dwFreeType

);

Де:

hProcess – дескриптор процесу;

lpAddress – адреса пам'яті, що визволяється;

dwSize – розмір пам'яті, 0. якщо уся пам'ять.

dwFreeType – тип визволення, задається константами:

MEM_DECOMMIT MEM_RELEASE