
- •Процессы
- •Дескрипторы и идентификаторы процессов
- •Дескрипторы модулей
- •Идентификация процесса
- •Получение дескриптора процесса по его идентификатору
- •Имена файлов и дескрипторы модулей
- •Получение идентификатора текущего процесса
- •Получение идентификатора процесса от окна
- •Получение имен и дескрипторов модулей
- •Псевдодескрипторы процессов
- •Перечисление процессов
- •Моментальные снимки
- •Обработка информации о процессах
- •Обработка информации о потоках
- •Обработка информации о модулях
- •Содержание отчета
Обработка информации о модулях
Опрос модулей выполняется практически так же, как опрос процессов или потоков. Для этого в ТооlНе1р32 предусмотрены две функции: Module32First() и Module32Next(), которые определяются следующим образом:
function Module32First(hSnapshot: THandle; var Ipme: TModuleEtitry32): BOOL; stdcall;
function Module32Next(hSnapshot: THandle; var Ipme: TModuleEntry32): BOOL; stdcall;
Первым параметром в обеих функциях является дескриптор снимка, а вторым var-параметром — запись TModuleEntry32. Ее определение имеет следующий вид:
type TModuleEntry32 = record
dwSize: DWORD;
th32HoduleID: DWORD;
th32ProcessID: DWORD;
GlblcntUsage: DWORD;
ProccntUsage: DWORD;
modBaseAddr: PBYTE;
modBaseSize: DWORD;
hHodule: HMODULE;
szModule: array[0 .. MAX_MODULE_NAME32 + 1] of Char;
szExePath: array[0 .. MAX_PATH + 1] of Char;
end;
• Поле dwSize определяет размер записи и поэтому должно быть инициализировано значением SizeOf (TModuleEntry32) до использования этой записи.
• Поле th32ModuleID представляет собой идентификатор модуля, который имеет значение только для функций Тоо1Не1р32.
• Поле th32processID содержит идентификатор (ID) опрашиваемого процесса. Этот ID можно использовать с другими функциями Win32.
• Поле GlblcntUsage содержит глобальный счетчик ссылок данного модуля.
• Поле ProccntUsage содержит счетчик ссылок модуля в контексте процесса-владельца.
• Поле modBaseAddr представляет собой базовый адрес модуля в памяти. Это значение действительно только в контексте идентификатора процесса th32ProcessID.
• Поле modBaseSize определяет размер (в байтах) модуля в памяти.
• В поле hHodule содержится дескриптор модуля. Это значение действительно только в контексте идентификатора процесса th32ProcessID.
• В поле szHodole содержится строка с именем модуля, завершающаяся нуль-символом.
• Поле szExepath предназначено для хранения строки с ограничивающим нуль-символом, содержащей полный путь модуля.
Содержание отчета
Наименование лабораторной работы, ее цель.
Программа, которая
принимая дескриптор, имя или полное имя модуля, возвращает другие два элемента в своих выходных параметрах (выполнить задание для своей программы и для любой известной библиотеки).
будет выполнять последовательно по шагам следующее:
Используя функцию GetCurrentProcessId определит идентификатор текущего процесса.
Используя функцию GetCurrentProcess определит псевдодескриптор текущего процесса.
Используя функцию DuplicateHandl и значение псевдодескриптора определит дескриптора текущего процесса.
Используя функцию OpenProcess определит копию дескриптора текущего процесса.
Закроет дескриптор, полученный функцией DuplicateHandl.
Закроет дескриптор, полученный функцией OpenProcess.
выдает список перечисления всех процессов, потоков, модулей и их свойства в системе:
для Windows NT ( и список загруженных драйверов устройств).
для Windows 9x (по выбору).
Примеры разработанных приложений (результаты и тексты программ).