Мониторинг активности пользователя в ОС Windows XP

курсовая работа

3.3 Виртуальная память

Под памятью в ОС Windows подразумевается не только физическая память (ОЗУ), но также память, резервируемая операционной системой на жестком диске. Этот вид памяти называется виртуальной памятью и образует файл подкачки. По мере необходимости операционная среда обращается к этому файлу, чтобы поместить в него пока ненужные системе данные или наоборот считать в ОЗУ уже потребовавшиеся. WinAPI предоставляет способ работы с файлами подкачки посредством объекта файлового отображения.

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

Для создания объекта файлового отображения необходимо использовать WinAPI функцию CreateFileMapping. Она имеет следующий формат:

HANDLE CreateFileMapping(

HANDLE hFile,

LPSECURITY_ATTRIBUTES lpFileMappingAttributes,

DWORD flProtect,

DWORD dwMaximumSizeHigh,

DWORD dwMaximumSizeLow,

LPCTSTR lpName );

Функция WinAPI OpenFileMapping открывает существующий объект файлового отображения. Функция имеет следующий формат:

HANDLE OpenFileMapping(

DWORD dwDesiredAccess,

BOOL bInheritHandle,

LPCTSTR lpName );

Для проецирования объекта файлового отображения на память необходимо использовать WinAPI функцию MapViewOfFile. Она имеет следующий формат:

LPVOID MapViewOfFile(

HANDLE hFileMappingObject,

DWORD dwDesiredAccess,

DWORD dwFileOffsetHigh,

DWORD dwFileOffsetLow,

DWORD dwNumberOfBytesToMap );

Функция WinAPI UnmapViewOfFile освобождает выделенную память для объекта файлового отображения. Функция имеет следующий формат:

BOOL UnmapViewOfFile(

LPVOID lpBaseAddress );

Для закрытия объекта файлового отображения необходимо использовать WinAPI функцию CloseHandle. Она имеет следующий формат:

BOOL CloseHandle(

HANDLE hFileMapObj );

Для помещения собранной информации в виртуальную память используем функцию CopyMemory.

Делись добром ;)