TMemoryBasicInformation

Структура 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

Смотри также:

  • виртуальная память,
  • работа с виртуальной памятью,
  • список функций для работы с виртуальной памятью,
  • VirtualAlloc,
  • VirtualQuery,
  • VirtualQueryEx

  • НазадСписок записей TMemoryStatusВперед

    © Mystic, 2002