Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Обработка информации о модуляхОпрос модулей выполняется практически так же, как опрос процессов или потоков. Для этого в Тоо1Не1р32 предусмотрены две функции: Module32First() и Module32Next(), которые определяются следующим образом: function Module32First(hSnapshot: THandle; var lpme: TModuleEntry32): BOOL; stdcall; function Module32Next(hSnapshot: THandle; var lpme: TModuleEntry32): BOOL; stdcall; Первым параметром в обеих функциях является дескриптор снимка, а вторым var-параметром — запись TModuleEntry32. Ее определение имеет следующий вид: tуре TModuleEntry32 = record dwSize: DWORD; th32ModuleID: DWORD; th32ProcessID: DWORD; GlblcntUsage: DWORD; ProccntUsage: DWORD; modBaseAddr: РВУТЕ; modBaseSize: DWORD; hModule: HMODULE; szModule: array[0..MAX_MODULE_NAME32 + 1] of Char; szExePath: array[0..MAX_PATH - 1] of Char; end; · Поле dwSize определяет размер записи и поэтому должно быть инициализировано значением SizeOf (TModuleEntry32) до использования этой записи. · Поле th32ModuleID представляет собой идентификатор модуля, который имеет значение только для функций TooIHelp32. · Поле th32ProcessID содержит идентификатор (ID) опрашиваемого процесса. Этот ID можно использовать с другими функциями Win32. · Поле GlblcntUsage содержит глобальный счетчик ссылок данного модуля. · Поле ProccntUsage содержит счетчик ссылок модуля в контексте процесса-владельца. · Поле modBaseAddr представляет собой базовый адрес модуля в памяти. Это значение действительно только в контексте идентификатора процесса th32ProcessID. · Поле modBaseSize определяет размер (в байтах) модуля в памяти. · В поле hModule содержится дескриптор модуля. Это значение действительно только в контексте идентификатора процесса th32ProcessID. · В поле szModule содержится строка с именем модуля, завершающаяся нуль-символом. · Поле szExepath предназначено для хранения строки с ограничивающим нуль-символом, содержащей полный путь модуля.
Обработка информации о динамической памяти (кучах) Опрос куч несколько сложнее опроса других типов объектов. В Тоо1Не1р32 предусмотрены четыре функции, с помощью которых можно получить информацию о кучах. Первые две, Heap32ListFirst() и Heap32ListNext(позволяют выполнить проход по всем кучам процесса, а две другие, Heap32First() и Heap32Next(), используются для получения более подробной информации обо всех блоках внутри отдельной кучи. Функции Heap32ListFirst() и Heap32ListNext() определяются следующим образом: function Heap32ListFirst(hSnapshot: THandle; var lphl: THeapList32): BOOL; stdcall; function Heap32ListNext(hSnapshot: THandle; var lphl: THeapList32): BOOL; stdcall; И вновь первый параметр является дескриптором снимка, а второй (lphl) представляет собой запись типа THeapList32, передаваемую по ссылке. Определение этой записи имеет следующий вид: Type THeapList32 = record dwSize: DWORD; th32ProcessID: DWORD; th32HeapID: DWORD; dwFlags: DWORD; end; ■ Поле dwSize определяет размер записи, и поэтому оно должно быть инициализировано значением SizeOf (THeapList32) до использования этой записи. ■ В поле th32ProcessID содержится идентификатор (ID) процесса-владельца. ■ В поле th32HeapID содержится идентификатор (ID) кучи. Этот ID имеет значение только для заданного процесса, и его можно использовать только с функциями Тоо1Не1р32. ■ В поле dwFlags хранится признак, который определяет тип кучи. В качестве значения этого поля может использоваться либо константа HF32 DEFAULT (которая означает, что текущая куча является стандартной кучей процесса), либо константа HF32_SHARED (которая означает, что текущая куча является разделяемой обычным способом). Функции Heap32First() и Heap32Next() определяются следующим образом: function Heap32First(var lphe: THeapEntry32; th32ProcessID, th32HeapID: DWORD): BOOL; stdcall; function Heap32Next(var lphe: THeapEntry32): BOOL; stdcall; Списки параметров этих функций немного отличаются от соответствующих списков функций, связанных с перечислением процессов, потоков, модулей. Эти функции предназначены для перечисления блоков данной кучи в данном процессе, а не некоторых свойств одного процесса, вызове функции Heap32First() параметры, установленные в полях th32ProcessID и;32HeapID, должны быть равны значениям одноименных полей записи THeapList32, заполненной с помощью функций Heap32ListFirst() или Heap32ListNext(). Var-параметр lphe функций Heap32First() и Heap32Next() имеет тип THeapEntry32. Эта запись содержит дескриптивную информацию, относящуюся к блоку кучи, и ее определение имеет следующий вид: type THeapEntry32= record dwSize: DWORD;
|