Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows


Функция VMQuery - часть 2


// информация о блоке
PVOID pvBlkBaseAddress;
DWORD dwBlkProtection;

// PAGE_*
SIZE_T BlkSize;

DWORD dwBlkStorage;

// MEM_* Free, Reserve, Image, Mapped, Private

} VMQUERY, *PVMQUERY;

С первого взгляда заметно, что моя структура VMQUERY содержит куда больше информации, чем MEMORY_BASIC_INFORMATION Она разбита (условно, конечно) на две части: в одной — информация и регионе, в другой — информация о блоке (адрес которого указан в параметре pvAddress). Элементы этой структуры описываются в следующейтаблице.

Элемент

Описание

pvRgnBaseAddress

Идентифицирует базовый адрес региона виртуального адресного про странства, включающего адрес, указанный в параметре pvAddress

dwRgnProtection

Сообщает атрибут защиты, присвоенный региону при его резервиро вании.

RgnSize

Указывает размер (в байтах) зарезернириванного о региона.

dwRgnStorage

Идентифицирует тип физической памяти, используемой группой бло ков данного peгиона: MEM_FREE, MEM_IMAGE, MEM_MAPPED или MEM PRIVATE. Поскольку Windows 98 не различает типы памяти, в этой операционной системе данный элемент содержит либо MEM_FREE, либо MEM_PRIVATE

dwRgnBlocks

Содержит значение — число блоков в указанном регионе

dwRgnGuardBlks

Указывает число блоков с установленным флагом атрибутов защиты PAGE GUARD. Обычно это значение либо 0, либо 1. Если оно равно 1, то регион скорее всего зарезервирован под стек потока В Windows 98 этот элемент всегда равен 0

fRgnIsAStack

Сообщает, есть ли в данном регионе стек потока Результат определя ется на основе взвешенной оценки, так как невозможно дать стопро центной гарантии тому, что в регионе содержится стек.

pvBlkBaseAddress

Идентифицирует базовый адрес блока, включающего адрес, указанный в параметре pvAddress,

dwBlkProtection

Идентифицирует атрибут защиты блока, включающего адрес, указан ный в параметре pvAddress.

BlkSize

Содержит значение — размер блока (в байтах), включающего адрес, указанный в параметре pvAddress.

dwBlkStorage

Идентифицирует содержимое блока, включающего адрес, указанный в параметре pvAddress. Принимает одно из значений: MEM FREE, MEM_RESERVE, MEM_IMAGE, MEM_MAPPED или MEM_PRIVATE. В Windows 98 этот элемент никогда не содержит значения MEM IMAGE и MEM MAPPED

<


Начало  Назад  Вперед