Программное обеспечение САПР. Операционные системы. Майстренко Н.В - 24 стр.

UptoLike

LPHANDLE IpTargetHandle, // Указатель на копию дескриптора.
DWORD dwDesiredAccess, // Доступ к копии дескриптора.
BOOL bInheritHandle, // Флаг наследования дескриптора.
DWORD dwOptions // Необязательные опции.
);
Перечисление процессов в Windows 9x (использование ToolHelp32)
ToolHelp32 – это семейство функций и процедур, составляющих подмножество Win32 API, которые позволяют полу-
чить сведения о некоторых низкоуровневых аспектах работы ОС, В частности, сюда входят функции, с помощью которых
можно получить информацию обо всех процессах, выполняющихся в системе в данный момент, а также потоках, модулях,
принадлежащих каждому процессу. Большинство данных, получаемых от функций ToolHelp32, используется, главным обра-
зом, приложениями, которые должны заглядывать "внутрь" ОС.
Семейство процедур и функций ToolHelp32 API доступно только в варианте реализации Win32 для Windows 95/98 и др.
В среде Windows NT вызов их приведет к нарушению системы защиты и безопасности NT-процессов.
Типы и определения функций ТооlНе1р32 размещаются в модуле TlHelp32, поэтому при работе с этими функциями не
забудьте включить его имя в список инструкции uses (в Delphi).
Моментальные снимки. Благодаря многозадачной природе среды Win32 такие объекты, как процессы, потоки, модули
и т.п., постоянно создаются, разрушаются и модифицируются. И поскольку состояние компьютера непрерывно изменяется,
системная информация, которая, возможно, будет иметь значение в данный момент, через секунду уже никого не заинтере-
сует. Например, предположим, что необходимо написать программу для регистрации всех модулей, загруженных в систему.
Поскольку операционная система в любое время может прервать выполнение потока, отрабатывающего программу, чтобы
предоставить какие-то кванты времени другому потоку в системе, модули теоретически могут создаваться и разрушаться
даже в момент выборки информации о них.
В этой динамической среде имело бы смысл на мгновение заморозить систему, чтобы получить такую системную ин-
формацию. В ТооlНе1р32 не предусмотрено средств замораживания системы, но есть функция, с помощью которой можно
сделать "снимок" системы в заданный момент времени. Эта функция называется CreateToolhelp32Snapshot(), и ее объявление
(в Delphi) выглядит следующим образом:
function CreateToolhelp32Snapshot(dwFlags, th32ProcesslD: DWORD): THandle; stdcall;
Параметр dwFlags означает тип информации, подлежащий включению в моментальный снимок. Этот параметр может
иметь одно из перечисленных в табл. 2 значений.
2. Значения параметра dwFlags
Значение Описание
TH32CS_INHERIT
Означает, что дескриптор снимка будет насле-
дуемым
TH32CS_SNAPALL
Эквивалентно заданию значений
TH32CS_SNAPHEAPLIST,
TH32CS_SNAPMODULE,
TH32CS_SNAPPROCESS И
TH32CS_SNAPTHREAD
TH32CS_SNAPHEAPLIST
Включает в снимок список куч заданного про-
цесса Win32
TH32CS_SNAPMODULE
Включает в снимок список модулей заданного
процесса Win32
TH32CS_SNAPPROCESS Включает в снимок список процессов Win32
TH32CS_ SNAPTHREAD Включает в снимок список потоков Win32
Функция CreateToolhelp32Snapshot() возвращает дескриптор созданного снимка или -1 в случае ошибки. Возвращаемый
дескриптор работает подобно другим дескрипторам Win32 относительно процессов и потоков, для которых он действителен.
По завершении работы с созданным функцией CreateToolhelp32 Snapshot() дескриптором, для освобождения связанных
с ним ресурсов используйте функцию CloseHandle().
Обработка информации о процессах. Имея дескриптор снимка, содержащий информацию о процессах, можно вос-
пользоваться двумя функциями ToolHelp32, которые позволяют последовательно просмотреть сведения обо всех процессах в
системе. Функции Process32First() и Process32Next() определены следующим образом:
function Process32First(hSnapshot: THandle; var Ippe: TProcessEntry32): BOOL; stdcall;
function Process32Next(hSnapshot: THandle; var Ippe: TProcessEntry32): BOOL; stdcall;
Первый параметр у обеих функций является дескриптором снимка, возвращаемым функцией
CreateToolhelp32Snapshot().