Структура TMemoryBasicInformation содержит информацию о диапазоне страниц виртуального адресного пространства процесса. Функции VirtualQuery и VirtualQueryEx используют эту структуру.
TMemoryBasicInformation = record
BaseAddress : Pointer;
AllocationBase : Pointer;
AllocationProtect : DWORD;
RegionSize : DWORD;
State : DWORD;
Protect : DWORD;
Type_9 : DWORD;
end;
Поля
BaseAddress
Указатель на базовый адрес для указанного диапазона страниц.
AllocationBase
Указывает на базовый адрс региона памяти, который использовался при
резерыировании указанного диаазона при помощи функции VirtualAlloc. Указатель, переданный в поле BaseAddress,
должен находиться внутри этого диапазона.
AllocationProtect
Указывает на атрибуты защиты, которые были присвоены региону при его
резервировании. Данное поле может содержат одиниз следующих флагов, в сочетании
с флагами PAGE_GUARD и PAGE_NOCACHE, если это необходимо.
| Флаг | Назначение |
|---|---|
| PAGE_READONLY |
Устанавливает права чтения для указанного региона. Попытка записи в этот регион приведет к нарушению доступа. Если операционная система выполняет различие между правами только для чтения и выполнения кода, то попытка передать управление на один из адресов, принадлежащих указанному региону, также вызовет нарушение доступа. |
| PAGE_READWRITE |
Предоставляет права чтения/записи для указанного региона. |
| PAGE_WRITECOPY |
Windows NT/2000 Устанавливает атрибуты защиты "копирование при записи" для указанного диапазона страниц. |
| PAGE_EXECUTE |
Предоставляет права выполнения кода для указанного региона. Попытка чтения/записи страниц указанного региона приведет к нарушению доступа. |
| PAGE_EXECUTE_READ |
Предоставляет права чтения памяти и выполнения кода для указанного региона. Попытка записи в страницы указанного региона приведет к нарушению доступа. |
| PAGE_EXECUTE_READWRITE |
Предоставляет права чтения/записи памяти и выполнения кода для указанного региона. |
| PAGE_EXECUTE_WRITECOPY |
Windows NT/2000 Устанавливает атрибуты защиты "копирование при записи" и выполнения кода для указанного диапазона страниц. |
| PAGE_GUARD |
Windows NT/2000. Делает страницы памяти в указанном регионе защищаемыми. Любая попытка чтения или записи в такие страницы вызовет исключение STATUS_GUARD_PAGE, и одновременно приведет к выключению статуса защищаемости. Таким образом защита страниц может быть отличным способом сигнализации доступа к страницам памяти. Флаг PAGE_GUARD является модификатором типа защиты страниц. Приложение может использовать этот флаг только в том случае, если обращение к странице происходит без возникновения исключительной ситуации. Указанный флаг нельзя использовать совместно со правами доступа PAGE_NOACCESS. Любая попытка доступа к памяти приводит к тому, что система снимает защиту страницы, оставляя при этом все остальные права доступа к странице. Если исключение защиты страницы случилось в сервисе, то обычно сервис индицирует появление ошибки. Windows 95/98. Для симуляции подобного поведения необходимо использовать атрибут защиты страницы PAGE_NOACCESS. |
| PAGE_NOACCESS |
Запрещает любой доступ к странице, которая имеет под собой физическую память. Любая попытка чтения/записи или передачи управления на указанную страницу приводит к исключению нарушения доступа вызываемого общей ошибкой защиты. |
| PAGE_NOCACHE |
Запрещает любое кэширование указанного диапазона страниц. Это аппаратный атрибут физической памяти может быть рассмотрен как "нет кэшированию". Этот атрибут не рекомендуется для обычного использования. Этот атрибут необходим для драйверов устройств, например для проекции кадров видеобуфера без кэширования. Этот атрибут используется только в том случае, когда указан атрибут доступа к странице отличный от PAGE_NOACCESS. |
RegionSize
Задает размер диапазона памяти, который начинается по адресу BaseAddress и
имеет и имеет те же самые атрибуты, что и первая страница.
State
Задает состояние страниц в указанном регионе. Может принимать одно из следующих
значений:
| Состоние | Назначение |
|---|---|
| MEM_COMMIT |
Показывает на то, что под указанной страницей расположена физическая память, в RAM или в файле подкачки. |
| MEM_FREE |
Указывает на то, что дапазон памяти недоступен для вызывающего процесса, а память под него не выдлена. Для свободных страниц памяти значения полей AllocationBase, AllocationProtect, Protect и Type_9 неопределены. |
| MEM_RESERVE |
Указывает на то, что указанный регион виртуального адресного протранства процесса зарезервирован, но физической памяти под ним не имеется. Для зарезервированных страниц памяти значение поля Protect не определено. |
Protect
Указывает на атрибуты защиты страниц региона памяти, начинающегося по адресу
BaseAddress. Может принимать те же самые значения, что и поле AllocationProtect.
Type_9
Указывает на тип страниц заданного региона. Определены следующие типы страниц:
| Тип | Назначение |
|---|---|
| MEM_IMAGE |
Указывает на то, что указанные страницы региона являются спроецированым образом EXE-файла или DLL. |
| MEM_MAPPED |
Указывает на то, что указанные страницы региона являются спроецированым образом файла данных. |
| MEM_PRIVATE |
Указывает на то, что указанные страницы региона являются скрытыми (то есть недоступные другим процессам). |
Требования
Windows NT/2000: Требуется Windows NT 3.1 или более поздняя версия
Windows 95/98: Требуется Windows 95 или более поздняя версия
Бибиотека: Kernel32.dll
Подключаемый модуль: Windows
Смотри также:
Список записей |
TMemoryStatus![]() |
© Mystic, 2002