Функция 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 |
