Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС СФМЭИ.doc
Скачиваний:
22
Добавлен:
17.09.2019
Размер:
1.37 Mб
Скачать

6.2.2. Получение информации о процессах

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

  • Process32First - получение информации о первом загруженном процессе;

  • Process32Next - получение информации об очередном загруженном процессе;

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

function Process32FirstW(hSnapshot: THandle; var lppe: TProcessEntry32): Boolean;

где

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

lppe – указатель на структуру TProcessEntry32.

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

TPROCESSENTRY32 =record

dwSize: DWORD; cntUsage: DWORD; th32ProcessID: DWORD;

th32DefaultHeapID: DWORD; th32ModuleID: DWORD;

cntThreads: DWORD; th32ParentProcessID: DWORD;

pcPriClassBase: Longint; dwFlags: DWORD;

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

end;

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

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

Поле

Описание

dwSize

Размер структуры TProcessEntry32 в байтах. Перед вызовом функции Process32First установите это значение с помощью функции sizeof(PROCESSENTRY32)

cntUsage

Счетчик обращений к данному процессу

th32ProcessID

Идентификатор процесса

th32DefaultHeapID

Идентификатор кучи процесса по умолчанию

th32ModuleID

Идентификатор модуля, связанного с данным процессом

cntThreads

количество потоков в данном процессе

th32ParentProcessID

Идентификатор родительского процесса

pcPriClassBase

Базовый приоритет процесса

dwFlags: DWORD

Флаги. Поле зарезервировано и не используется

szExeFile

Полное имя файла (путь к файлу и имя файла)

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

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

6.2.3. Получение информации о потоках

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

  • Thread32First - получение информации о первом потоке;

  • Thread32Next - получение информации об очередном потоке.

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

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

function Thread32First(hSnapshot: THandle; var lpte: TThreadEntry32): Boolean;

где

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

lpte – указатель на структуру TThreadEntry32.

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

TTHREADENTRY32 = record

dwSize: DWORD; cntUsage: DWORD; th32ThreadID: DWORD;

th32OwnerProcessID: DWORD; tpBasePri: Longint;

tpDeltaPri: Longint; dwFlags: DWORD;

end;

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

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

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

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

Поле

Описание

dwSize

Размер структуры TProcessEntry32 в байтах. Перед вызовом функции Thread32First установите это значение с помощью функции sizeof(THREADENTRY32)

cntUsage

Счетчик обращений к данному потоку

th32ThreadID

Идентификатор потока

th32OwnerProcessID

Идентификатор родительского процесса

tpBasePri

Базовый приоритет

tpDeltaPri

Относительный приоритет потока

dwFlags

Поле зарезервировано и не используется