Получение информации о модулях 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Получение информации о модулях



Для просмотра списка загруженных модулей определены следующие функции:

· Module32First - получение информации о первом модуле выбранного процесса. Процесс определяется по идентификатору;

· Module 32Next - получение информации об очередном модуле выбранного. Процесс определяется по идентификатору.

Функция Module 32First имеет следующий вид:

function Module32First(hSnapshot: THandle; var lpme: TModuleEntry32): Boolean;

где

hSnapshot – дескриптор «мгновенного снимка», полученный с помощью функции CreateToolhelp32SnapShot;

lpme – указатель на структуру TModuleEntry32.

Структура TModuleEntry32 состоит из следующих полей:

TMODULEENTRY32 = record

dwSize: DWORD; th32ModuleID: DWORD; th32ProcessID: DWORD;

GlblcntUsage: DWORD; ProccntUsage: DWORD;

modBaseAddr: PBYTE; modBaseSize: DWORD; hModule: HMODULE;

szModule: array[0..MAX_MODULE_NAME32] of Char;

szExePath: array[0..MAX_PATH - 1] of Char;

end;

Описание полей структуры TModuleEntry32 приведено в таблице 6.4.

 

Таблица 6.4 Описание полей структуры TModuleEntry32

Поле Описание
dwSize Размер структуры TModuleEntry32 в байтах. Перед вызовом функции Module32First установите это значение с помощью функции sizeof(TMODULEENTRY32)
th32ModuleID Идентификатор модуля. Это значение имеет смысл только для функций ToolHelp и не может использоваться функциями Win32
th32ProcessID Идентификатор процесса
GlblcntUsage Счетчик ссылок на данный модуль в системе в целом
ProccntUsage Счетчик ссылок на данный модуль в контексте процесса (Идентификатор процесса указывается в поле th32ProcessID)
modBaseAddr Базовый адрес модуля в контексте данного процесса
modBaseSize Размер модуля в байтах
hModule Дескриптор модуля в контексте выбранного процесса
szModule Строка, содержащая имя модуля
szExePath: Строка, содержащая путь к модулю
     

Функция Module32First возвращает значение TRUE, если информация о первом модуле получена и FALSE – в противном случае.

Функция Module32Next имеет те же параметры, что и функция Module32First.

Информация о кучах (heap)

Для просмотра куч определены следующие функции:

· Heap32ListFirst - информация о куче, предоставляемой выбранному процессу по умолчанию;

· Heap32ListNext - информация об очередной куче процесса;

· Heap32First - информация о первом блоке в выбранной куче;

· Heap32Next - информация об очередной блоке в выбранной куче.

Функция Heap32ListFirst имеет следующий вид:

function Heap32ListFirst(hSnapshot: THandle; var lphl: THeapList32): Boolean;

где

hSnapshot – дескриптор «мгновенного снимка», полученный с помощью функции CreateToolhelp32SnapShot;

lphl – указатель на структуру THeapList32.

Структура THeapList32 состоит из следующих полей:

THEAPLIST32 = record

dwSize: DWORD; th32ProcessID: DWORD;

th32HeapID: DWORD; dwFlags: DWORD;

end;

Описание полей структуры THeapList32 приведено в таблице 6.5.

 

Таблица 6.5 Описание полей структуры THeapList32

Поле Описание
dwSize Размер структуры THeapList32 в байтах. Перед вызовом функции Heap32ListFirst установите это значение с помощью функции sizeof(THEAPLIST32)
th32ProcessID Идентификатор процесса-владельца данной кучи
th32HeapID Идентификатор кучи в контексте процесса. Это значение имеет смысл только для функций ToolHelp и не может использоваться функциями Win32
dwFlags В этом поле может быть записана константа HF32_DEFAULT, что означает – куча, предоставляемая процессу по умолчанию

Функция Heap32ListFirst возвращает значение TRUE, если информация о первой куче получена и FALSE – в противном случае.

Функция Heap32ListNext имеет те же параметры, что и функция Heap32ListFirst.

Функция Heap32First имеет следующий вид:

function Heap32First(var lphe: THeapEntry32; th32ProcessID, th32HeapID: DWORD): Boolean;

где

lphe – адрес буфера, содержащего структуру THeapEntry32;

th32ProcessID – идентификатор процесса, в контексте которого создана куча;

th32HeapID – идентификатор кучи – владелицы блока. Данный идентификатор может быть получен с помощью функций Heap32ListFirst или Heap32ListNext.

Структура THeapEntry32 состоит из следующих полей:

THEAPENTRY32 = record

dwSize: DWORD; hHandle: THandle; dwAddress: DWORD;

dwBlockSize: DWORD; dwFlags: DWORD; dwLockCount: DWORD;

dwResvd: DWORD; th32ProcessID: DWORD; th32HeapID: DWORD;

end;

Описание полей структуры THeapEntry32 приведено в таблице 6.6.

 

Таблица 6.6 Описание полей структуры THeapEntry32

Поле Описание
dwSize Размер структуры THeapEntry32 в байтах. Перед вызовом функции Heap32First установите это значение с помощью функции sizeof(THEAPENTRY32)
hHandle Дескриптор блока кучи
dwAddress Линейный виртуальный адрес начального блока кучи
dwBlockSize Размер блока кучи в байтах
dwFlags Флаги. Возможны следующие значения: LF32_FIXED – зарезервирован, но ему не выделена физическая память LF32_FREE – блок памяти не используется (свободен) LF32_MOVEABLE – блоку памяти выделена физическая память
dwLockCount Счетчик обращений к данному блоку
dwResvd Зарезервировано. Не используется
th32ProcessID Идентификатор процесса – владельца кучи, в которую входит данный блок
th32HeapID Идентификатор кучи, в состав которой входит данный блок

Функция Heap32First возвращает значение TRUE, если информация о первом блоке в куче получена и FALSE – в противном случае.

Функция Heap32tNext имеет те же параметры, что и функция Heap32ListFirst.



Поделиться:


Последнее изменение этой страницы: 2017-02-06; просмотров: 350; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.188.20.56 (0.008 с.)