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

6.2.2.3Функція VirtualProtectEx

Використовується, якщо треба змінити рівень доступу до памяті, який було призначено при виділенні. Можно змінити рівень доступу не для всього, а для частини виділеного регіону.

BOOL WINAPI VirtualProtectEx(

__in HANDLE hProcess,

__in LPVOID lpAddress,

__in SIZE_T dwSize,

__in DWORD flNewProtect,

__out PDWORD lpflOldProtect

);

Де:

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

lpAddress – адреса

dwSize – розмір;

flNewProtect – новий рівень доступу;

lpflOldProtect – старий рівень доступу.

6.2.2.4Функція VirtualLock і VirtualUnlock

Призначеня для запобіганння запису критичних даних на диск .

BOOL WINAPI VirtualLock(

__in LPVOID lpAddress,

__in SIZE_T dwSize

);

BOOL WINAPI VirtualUnlock(

__in LPVOID lpAddress,

__in SIZE_T dwSize

);

6.2.3Функції для відображення файлів на пам'ять

Використовуються, якщо необхідно:

1 записи файлу обробляти в довільному порядку;

2 Один і той же файл використовується різними програмами

3 Декілька програм використовують загальну пам'ять

6.2.3.1Функція CreateFile

Використовується для отримання інформації про файл, а саме, де розташован, які права доступу, розмір

6.2.3.2Функція CreateFileMapping

Використовується для виділення віртуальної пам'яті (побудови відповідних записів в катадлзі та таблицях сторінок)

HANDLE WINAPI CreateFileMapping(

__in HANDLE hFile,

__in LPSECURITY_ATTRIBUTES lpAttributes,

__in DWORD flProtect,

__in DWORD dwMaximumSizeHigh,

__in DWORD dwMaximumSizeLow,

__in LPCTSTR lpName

);

Де:

hFile – дескриптор відповідного файлу, якщо виділяється загальна пам'ять, то задається INVALID_HANDLE_VALUE;

lpAttributes – параметри безпеки (0);

flProtect – режим доступу, задається константами

PAGE_READONLY, PAGE_READWRITE, PAGE_WRITECOPY

PAGE_EXECUTE_READ PAGE_EXECUTE_READWRITE

dwMaximumSizeHigh, dwMaximumSizeLow – максимальний розмір, для якого треба виділяти віртуальну пам'ять.

lpName – ім'я віжповідного об'єкту ядра.

6.2.3.3Функція MapViewOfFile

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

LPVOID WINAPI MapViewOfFileEx(

__in HANDLE hFileMappingObject,

__in DWORD dwDesiredAccess,

__in DWORD dwFileOffsetHigh,

__in DWORD dwFileOffsetLow,

__in SIZE_T dwNumberOfBytesToMap,

__in LPVOID lpBaseAddress

);

Де:

hFileMappingObject – дескриптор відображеного обєкту;

dwDesiredAccess – режим доступу до памяті, задається константами:

FILE_MAP_ALL_ACCESS FILE_MAP_COPY

FILE_MAP_EXECUTE FILE_MAP_READ FILE_MAP_WRITE

dwFileOffsetHigh, dwFileOffsetLow – зміщення по відношенню до початку файлу;

dwNumberOfBytesToMap – кількість байтів, які треба відобразити;

lpBaseAddress – адреса памяті, яку використовувати для відображення (краще 0!!!)

Після цієї функції можна використовувади дані з памяті

6.2.3.4Функція UnmapViewOfFile

Визволяє фізичну пам'ять

BOOL WINAPI UnmapViewOfFile(LPCVOID lpBaseAddress);

lpBaseAddress – адреса, яку повернула функція MapViewOfFileEx