Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Структура IMTE



таблица модулей IMTE

kernel32.dll


pModuleTableArray

user32.dll
gdi32.dll
my.exe


Начало таблицы модулей хранится в pModuleTableArray. Как только новый процесс или dll создаются, то kernel32 создаёт структуру IMTE, ищет свободный элемент в таблице модулей и записывает в него указатель на структуру IMTE. ОС сама следит за тем, чтобы не произошло заполнение таблицы модулей. Структура:

· Указатель на базу данных модуля, расположенного в куче kernel32.dll в области выше 2 Гб. Благодаря указателю kernel32 может получать информацию о любом модуле не переключаясь в контекст памяти.

· Указатель на полное имя файла из которого был создан модуль. Память под полное имя модуля выделяется.

· Указатель на строку с именем модуля. Этот указатель указывает внутрь предыдущей структуры.

· Число символов в полном имени файла.

· Число символов только в имени файла.

Зачем нужны эти два предыдущих поля? Например, функция GetModuleHandle с помощью указателя просматривает структуры IMTE и для ускорения поиска сравнивает длины запрашиваемого модуля и модуля в очередной структуре IMTE, если длины не совпадают, то сравнивать имена смысла не имеет.

· Число разделов в модуле. Например, раздел, содержащий данные, программный код и т.д.

· Базовый адрес, по которому был запущен модуль.

· Счётчик ссылок к модулю.

· Счётчик числа ссылок в модуле, например, если какая-то программа была запущена на выполнение три раза, то для этой программы создаётся три объекта ядра процесса и одна база данных модуля.





Дата публикования: 2014-11-03; Прочитано: 305 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...