Лабораторные работы / Задания / ЛР 2 ПРОЦЕССЫ И ПОТОКИ
.pdfHMODULE GetModuleHandle( |
|
|
|
||
LPCTSTR IpModuleName |
// |
Имя модуля. |
|
||
); |
|
|
|
|
|
Сиспользованием |
приведенных |
API-функцийможноразработатьфункцию |
|||
(перзаданиевлабораторнойоеработе |
|
),которая принимаядескриптор,имяили |
олное имя |
||
модуля,возврдваугиеащаетэлемента |
|
|
|
своихвыпарамодных |
етрах.Возможнычетыре |
варианабоэтойфункции.Напры: мер |
|
|
|
|
|
1. Получитьдескриптор,имяполноеимяЕХЕ |
|
|
. |
|
|
Handle: |
&HFFFFFFFF |
|
|
|
|
Name: VB6.EXE |
|
|
|
|
|
FName: G:\Visual Studio\VB98\VB6.EXE |
|
||||
2. Получитьимяполнмодуляе |
|
|
. |
|
|
Задаем: Handle: &H77E70000 |
|
|
|
||
Получаем: |
|
|
|
|
|
Name: User32.dll |
|
|
|
|
|
FName: G:\WINNT\system32\USER32.DLL |
|
||||
3. Получитьдескрполноеимяптор |
|
|
. |
|
|
Задаем: Name: User32.dll |
|
|
|
||
Получаем: |
|
|
|
|
|
Handle: &H77E70000 |
|
|
|
||
FName: G:\WINNT\system32\USER32.DLL |
|
||||
4. Получить дескриптор и имя. |
|
|
|
||
Задаем: |
FName: G:\WINNT\system32\USER32.DLL |
|
|||
Получаем: |
|
|
|
|
|
Handle: &H77E70000 |
|
|
|
||
Name: User32.dll |
|
|
|
|
|
Получентекущегоидентификаторапроцесса
Чтобыполучиидентекущегоьификаторпроце,можноспсафунльзовать |
|
|
кцию |
|
GetCurrentProcessId,объяв ление которойвыглядиттак: |
|
|
||
DWORD GetCurrentProcess ID(VOID) |
|
|
||
Этафункциявозвращаетидент |
ификаторпроцесса.З |
начениеидентификаторапроцесса |
|
|
можбытьвведиапазонерхнем |
unsigned long, поэтомуможетпотребпреоватьсябразов |
ание |
||
возвращаемогозначения.Следует |
|
такжеучесть,чтоданнаяфункциярабтовтльаеткущемо |
|
|
процессе.Несуще |
ствуетспособа |
определитьидентификатордру |
гогопроцесса,кромекак |
|
получитьсписоквсехпроцессвыбраизнегототвь |
|
процесс,характеристи |
кикоторого |
|
требуются. |
|
|
|
|
Полученидентификаторапроокнаецесса |
|
|
|
|
Существует функция FindWindow.Онаобъявляетсяследую |
щимобразом: |
|
||
HWND FindWindow( |
|
|
|
|
LPCTSTR IpClassName, |
|
//Указательнаимякласса. |
|
|
LPCTSTR IpWindowName |
//Указательнаимяокна. |
|
|
|
); |
|
|
|
|
Функцияиспоимлилиьассазагуетокнадляловокполучендескрипторая |
|
|
окна. Имея |
|
дескриптор,можновызватьфункцию |
GetWindowThreadProcessId, возвращающуюидентификатор |
|||
потока,котс данноездалрый |
окно,идентифика |
торп ,оцессакоторомупринадлежитданный |
|
|
поток.Синтаксисвыглядит: |
|
|
|
|
DWORD GetWindowThreadProcessId( |
|
|
|
|
HMD hWnd, |
|
//Дескрипторокна. |
|
|
LPDWORD IpdwProcessId |
|
//Адреспереме |
ннойдляидентификатора |
|
|
|
//процесса. |
|
|
);
Даннаяфункциявозвращаетидентификаторпотока.Кр,еслимегоейпередается
указательна DWORD в IpdwProcessIdl(), вцелпеременнойвойвоз вращаеидентсяификатор процесса.
Получениеимд скрипторовмодулей
Обычноодномупроцессупринадлежитмнмодул,загруженныхго в гой |
|
|
адресное |
||
пространство,иэто |
|
усложнязадачуполдескрчентипя |
торовиме |
нмодулей. |
Для Windows 9x |
и Windows NT необходимо использоватьсовершенноразныеметоды |
. |
|
|||
Windows NT |
требуетиспользовандинамическойбиблиотеки,называея |
|
мой PSAPI.DLL, |
||
чтоозначает |
API состоянияпроцесса( |
Process Status API)Эта. |
библи,несовместимаятека |
||
Windows 9x,экспортируетфункциипер |
ечисления всехпроцесдрайвероввсиствсехме |
|
|||
устройств.Онапред ставляетзмож |
|
ностьполученияинформацииобовсемодулях,исполняемых |
|
|
|
даннымпроцессом. |
|
Для перечисленияпотоковоперационнойсистеме |
Windows NT нужно |
||
использоватьдинамическуюбиб |
лиотеку PDH.DLL,чтоозначаетвспомогательная« системадля |
|
|||
оценкихарактеристикпроизводительности» ( |
Performance Data Helper),которая |
поставляется |
|||
комплектеинструментальныхср дств |
NT Resource Toolkit. |
|
|
||
Сдругойстороны |
Windows |
9хподдерживаетфункции |
Toolhelp (вспомога тельные |
||
средства)своейверсиидинамическойбиблиотеки |
KERNEL32.DLL. Ониисподльзуются |
||||
фиксациисостоянияоблп любмятистипр.оюцесса |
Используяэтотснимок« »па, ожнояти |
|
|||
полюбуюучитьинформациютеку |
|
|
щихпроцессах,такжем |
|
одуляхипотокахкаждого |
|
|
||
процесса( |
вотли чиеот |
PSAPI.DLL здесьотсутствуети |
нфодрайверахрмацияустройств |
|
). |
||||
|
Такимобразом, |
для Windows NT и Windows 9x придетсяписать |
разныепрограммы. |
|
|
||||
|
|
|
Псевдодескрипторыпроцессов |
|
|
|
|||
|
Функция GetcurrentProcess возвращает псевдодескриптор текущегопроцесса |
: |
|
||||||
|
HANDLE GetCurrentProcess(VOID) |
|
|
|
|
||||
|
Псевдодескриптор (pseudohandle)пред ставляетсобойупрощенвариантый |
|
дескриптора. |
||||||
Поопред,псевдодескрипторлению |
|
- этозависимоеотпроцесса |
число,котороеслужит |
|
|||||
идентификаторомпроцес |
саиможетиспользоватьсявы |
зовах тех API-функций,кото |
рым |
||||||
требуемсядескп оцессаиптор |
|
. |
|
|
|
|
|
||
|
Хотян азначениепсевдоде |
скрипторов иобычныхдескрипторовчтидно |
и то же,уних |
||||||
всеже |
естьнекоторыесущественныеразли |
|
чия.Псе вдодескрипторы немогутнаследов |
|
аться |
||||
порожденныпроцесса,какнастоящдескрми ипторые |
|
|
|
(real handler).Ктомуже |
|
||||
псевдодескрипторы ссылаютсятольнатекпроущий |
|
цесс,анастоящдескрмогуипеторы |
|
|
|||||
ссылатьсяинавнешний( |
foreign). |
|
|
|
|
|
|||
|
Windows предоставляетвозмполученияжностьнастоящего |
|
дескрипторапо |
||||||
псевдодескрприпомощиптору |
|
API-функции DuplicateHandle. Онаопределяется |
|
ак: |
|||||
|
BOOL DuplicateHandle( |
|
|
|
|
|
|
||
|
HANDLE hSourceProcessHandle, |
//Дескпроцессаиптор |
-источника. |
|
|
||||
|
HANDLE hSourceHandle, |
|
//Копируемыйдескриптор |
. |
|
|
|||
|
HANDLE hTargetProcessHandle, |
//Дескпроцессаиптор |
-приемника. |
|
|
||||
|
LPHANDLE IpTargetHandle, |
//Указательнакопиюдескриптора |
. |
|
|
||||
|
DWORD dwDesiredAccess, |
|
//Доступккопиидескриптора |
. |
|
|
|||
|
BOOL bInheritHandle, |
|
//Флнаслгдедованияскриптора |
. |
|
|
|||
|
DWORD dwOptions |
|
//Необязательныеопции |
. |
|
|
|||
|
) |
|
|
|
|
|
|
|
|
Сиспользованиемвышеприведенных |
|
|
API-функцийможноразработпрогратьмму |
|
|
||||
(второезаданиелабораторнойработе |
|
|
),которая будет выполнятьследующее: |
|
|
||||
|
1Используя. функцию |
|
GetCurrentProcessId определяет идентификатортекущего |
|
|||||
процесса. |
|
|
|
|
|
|
|
|
|
|
2. Используяфункцию |
|
GetCurrentProcess |
определяет псевдодескриптортекущего |
|
||||
процесса. |
|
|
|
|
|
|
|
|
|
3.Используяфункцию DuplicateHandl изначение псевдодескриптора определяет дескрипторатекущегопроцесса.
4.Используяфункцию OpenProcess определяет копиюдескрипторатекущего
процесса.
5. Закрывает дескриптор, полученныйф ункцией DuplicateHandl.
6Закрывает. дескриптор, полученныйф ункцией OpenProcess.
Настоящийд |
ескриптор обязательно долженбыт |
ьзакрыт,псевдодеск |
риптор закрыватьне |
|||
нужно. Выводна |
компьютере можетбыть |
таким: |
|
|
|
|
Идентекущегоификаторпроцесса: |
|
183 |
|
|
|
|
Псевдодескриптор: |
4294967295 |
|
|
|
|
|
Дескриптор,полученныйфункцией |
|
DuplicateHandle: |
412 |
|
||
Дескриптор,полученныйфункцией |
OpenProcess: 392 |
|
|
|||
Закрываемдескриптор,полученныйфункцией |
|
|
OpenProcess: |
392 |
||
Закрываемдескриптор,полученныйфункцией |
|
|
DuplicateHandle: 412 |
|||
|
|
Перечислениепроцессов |
|
|
||
Рассмотрим проблему перечисленияпроцессов |
,потоковимод |
улей в операционной системе |
||||
Windows (это третьезаданиевэтойработе |
). Способыеерешенияв |
|
Windows NT и Windows 9x |
|||
различны. |
|
|
|
|
|
|
Перечислениепроцессов |
Windows 9x (использованиеToolHelp32) |
|||||
ToolHelp32 — этосемействофункцийпроцедур, ставл |
|
|
|
яющихподмножествоWin32 |
||
API,котпорыезвполучитьсведяютнекоторыхниязкоуаспектахработыовневыхОС, |
|
|
|
|
||
Вчастности,сюдавходятфункции,помоможнотщьюполучитьрыхинформациюобовсех |
|
|
|
|
||
процессах,выполняющихсясистемеданныймомент,та |
|
|
|
|
кжепот,модулях,ках |
|
принадлежащихкажд.Большинсцессумуданных,получаемыхфункцийтвоToolHelp32, |
|
|
|
|
||
испоглавнымобразомьзуетсяприл,котжениямидозаглядыватьрыелжнывнутрь" "ОС. |
|
|
|
|
||
СемействопроцедурфункцийToolHelp32доступнотольквва API |
|
|
|
рианте |
||
реализацииWin32дляWindowsВсредеWindowsвызових95/98приведет. NT |
|
|
|
|
||
кнарушенсистемызащитыбезопасностиюNT |
|
|
-процесс.Поэтприло,которыемувжения |
|||
используютфункции ToolH |
|
elp32,работолькоподспособны |
|
|
||
управлеWindowsноием 95/98, |
indows NT. |
|
|
|
||
ТиопределенияыфункцийТоо |
|
lНе1р32размещаютсявмодулеTlHelp32,поэтомупри |
|
|||
работесэтимифунзабудьтекциямивключегоимяспинструкциитьсокuses ( |
|
|
|
в Delphi). |
||
|
|
Моментальныеснимки |
|
|
||
БлагодамногозадачнойпрсредыиродеяWin32такие |
|
|
|
бъекты,какпроцессы,потоки, |
||
модулит.п.по, создразрушаютсятоянно, имодифицируются.Ипосостояниекольку |
|
|
|
|
||
компьютеранепрерывноизменя,системнаяинформацтся,кот,в раязможно,будетиметья |
|
|
|
|
||
значевданныймоментие,чсекундурезуженикого |
|
|
|
|
незаинтересует.Например, |
|
предп,чтвыхотителожрограмнап сатьдлярегивсмехтродулей,зациигруженных |
|
|
|
||
всистему.Посколькуоперационнаясистевлюбоевремможпрвыполнениерватьпотока, |
|
|
|
||
отрабвапрограммутывающегошу,чтобыпредоставить |
|
|
какие-токвантывременидругому |
|
|
потокувсистеме,модулитеоретическимогутсоздразрушатьсяватьсядажемомент |
|
|
|
|
|
выборкиинформации. х |
|
|
|
|
|
Вэтойдинамическойсредеимбысмыслломгновениезаморозитьсис,ч емуобы |
|
|
|
||
получитьта |
куюсистемнуюинформаци |
|
ю.ВТоо |
lНе1р32непредусмосредстврено |
|
замораживаниясистемы,ноестьфункция,помоможнотщьюсделатьройснимок"" |
|
|
|
|
|
систезаданныйв момвр.еЭтантмефуназываетсякцияCreateToolhelp32 |
|
Snapshot(),иее |
|
||
объявление (в Delphi) выгслеяодующимит |
бразом: |
|
|
||
function CreateToolhelp32Snapshot(dwFlags, th32ProcesslD: DWORD): THandle; stdcall; |
|
||||
•Параметр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 |
|
|
|
||
относительнопроцессовпоток,длякоторыхдействителен. |
|
|
|
|
|
Следующийкодсоздаетдескрсн,котимкапторс держитрый |
|
|
информациюобовсех |
|
|
процессзагруженных, в стмо(EToolHelpErrorящиймент |
|
|
— этоисключительнаяситуация, |
|
|
определеннаяпрограммистом): |
|
|
|
|
|
var
Snap: THandle; begin
Snap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if Snap = -1 then
raise EToolHelpError.Create('CreateToolHelp32Snapshot failed');
end; |
|
|
|
Позавершениирабссоздатыфу CreateToolhelp32Snapshot()нымкцией |
дескриптором, |
||
дляосвобождениясвязанныхнимресурсовиспользуйте |
|
функцию CloseHandle(). |
|
|
|
Обрабинфопроцессахткамации |
|
Имеядес |
крипторснимка,содержащийинфоп оцесм, ациюожновосахпользоваться |
|
|
двумяфункциямиToolHelp32,котпорыезвпоследляютпросведениявательномотретьобо |
|
||
всехпроцессахвсистеме.Функции |
Process32First() и Process32Next() определены следующим |
||
образом: |
|
|
|
function Process32First(hSnapshot: THandle; var Ippe: TProcessEntry32): BOOL; stdcall; function Process32Next(hSnapshot: THandle; var Ippe: TProcessEntry32): BOOL; stdcall;
Первыйпараметруобеихфункцийявляетсядескрснимка,возвпторащаемымом
функциейCreateToolhelp32Snapshot |
(). |
Второйпарам, Ippe,представляеттрсобойзаписьTProcessEntry32,котоперпоедаетсяая |
|
ссылке.Помепреохпэлемождперечисленфункцииятамбудутзаполнятьэтузапис |
|
информациейследующемпроцес.Запись |
TProcessEntry32 определяется так: |
type TProcessEntry32 = record |
|
dwSize: DWORD; |
|
cntUsage: DWORD; |
|
th32ProcessID: DWORD; |
|
th32DefaultHeapID: DWORD; |
|
th32ModuleID: DWORD; |
|
cntThreads: DWORD; |
|
th32ParentProcessID: DWORD; |
|
pcPriClassBase: Longint; |
|
dwFlags; DWORD; |
|
szExeFile: array[Q..MAX_PATH - 1] of Char; |
|
end; |
|
•ВполеdwSizeсодержитразапимерTProcessEntry32сияДоиспользованияэтой . |
|
заполеисиdwSizeдолжнобытьинициализированозначениемSizeOf (TProcessEntry32). |
|
•ВполеcntUsageхразнаитсячение |
етчикассылокпроцесса.Когдаэтозн чение |
станетравнымнулю,операционнаясистемавыг .узитоцесс |
|
•Вполеth32ProcessIDсодержитсяидентификационныйномерпроцесса. |
|
•Полеth32DefaultHeapIDпредляназхраидентификаторааченоия{ID}длякучи |
|
проц,дейсспоумолчаниютвующей.ЭтотимеетIDзначениетолькодляфункций |
|
ToolHelp32,иегонельзяиспользоватьдругимифункциямиWin32. |
|
•ПолеthHodulelDидентифицируимеетмодуль,связанныйпроц.Этоессомле значениетолькодляфункцийToolH elp32.
•ПозначениюполяcntThreadsможносудитьтом,сколькопотоковначаловып лняться вданнпр.оцессем
•Полеth32ParentProcessIDидентифицируетродитепроцессданнльскийя.оцессаго
•ВполеpcPriClassBaseхранитсябазовыйприоритетпроцес используетэтозначениедляуправленияработо, ковй
•ПолеdwFlagsзарезервировано.
•ВполеszExeFileсодержитсястрокаогр ничивающимуль представляетсобойпутьимяфайлаЕХЕ процессом.
Послесозданияснимка,содержащегоинфоп оцессахмацию,дляопросаданныхпо каждомупроцслвызведуетссначалафункциютьProcess32First()азатемвызывать .
функциюProcess32Next()дотехпор, нкавернетзнач Дляотобрзнвместеачкаженияименемприложения,что
профессможвид, испнола ьзоватьный
са.Операционнаясистема
|
-символом,которая |
-программыилидрайвера |
,связданнымого |
ениеFalse.
ридастпрограммеболее
API-функцию ExtractIcon измодуля ShellAPI.
|
Обрабинформациипотокахтка |
|
Длясоставленияспискапотонекопртвоцесрого |
савToolHelp32предусмотреныдве |
|
функции,которыеаналогичныфункциям,предназначеннымдлярегистрациипроцессов: |
|
|
Thread32First()иThread32NextЭти |
(). |
функции объявляются следующим образом; |
function Thread32First(hSnapshot: THandle; var Ipte: TThreadEntry32): BOOL; stdcall; |
||
ПомимообычногопараметраhSnapshot,этимфункциямтакжеперпоссылкедается |
|
|
параметртипаTThreadEntry32Какивслучаефункций,работающихспроцесс.,кажднз мия |
|
|
нихзаполняетзаписьTThreadEntry32,объявлениекоторойимеетвид |
|
|
type |
|
|
TThreadEntry32 = record |
|
|
dwSize: DWORD; |
|
|
cntUsage: DWORD; |
|
|
th32ThreadID: DWORD; |
|
|
th32OwnerprocessiD: Dword; |
|
|
tpBasePri: Longint; |
|
|
tpDeltaPri: Longint; |
|
|
dwFlags: DWORD; |
|
|
end; |
|
|
•ПолеdwSizeопрелеляетразмерзаписи,поэтондобытьмулжноинициализи |
ровано |
|
значениемSizeOfдоиспользования(TThreadEntry32)этойзаписи. |
|
|
•ВполеcntUsageсодержитсясчетчикссылокданногопот.Приобнулениикаэтого счетчипотовыгружкоперационнойсистемойется.
•Полеth32ThreadIDпредставляетсобойидентификаци онныйномерпот,которыйка имеетзначениетолькодляфункцийToolHelp32.
•Вполеth320wnerProcessIDсодержитсяидентификаткоторому(ID)процесса,
принданныйпотокдлеж.ЭтотIDможноитспсдругимильзоватьфункциямиWin32.
•ПолеtpBasePriпред ставляетсобойбазовыйклассприоритетапотока.Этозначение одинаководлявсехпотоковданнпр.Возможныецессагознэтогоченияп лябычнолежатв диапазонеотдо424Описанияэтих. значенийприведеныследующейтаблице.
Значение |
Описание |
4 |
Ожидающий |
8 |
Нормальный |
13 |
Высокий |
24 |
Реальноевремя |
• ПолеtpDeltaPriпредставляетсобойдельта |
|
-приоритетразницу(),определяющий |
|
величотлреальнинучияприоритетаотзначениягоtpBasePriЭточислосознаком,которое.в |
|
|
|
сочетаниибазовымклассомприори |
теотображаетобщприпотй.Критетоканстанты, |
|
|
определенныедлявсехвозможныхзначдельтаний |
|
-приоритета,перечисленыв |
следующей |
таблице. |
|
|
|
Константа |
|
Значение |
|
THREAD_PRIORITY_IDLE |
|
-15 |
|
THREAD_PRIOR ITY_LOWEST |
|
-2 |
|
THREAD PRIORITY BELOW NORMAL |
-1 |
|
|
THREAD_PRIOR IT Y_NORMAL |
|
0 |
|
THREAD_PRIOR I TY_ABOVE_NORHAL |
1 |
|
|
THREAD_PRIOR ITY_H IGHEST |
|
2 |
|
THREAD_PRI OR ITY_TIME_CRIT ICAL |
15 |
|
|
• ПолеdwFlagsвданныймоментзарезервирнедолжноисп .ванользваться |
|
|
Спискипот, оковлученныеспомощьюфункцийToolHel |
p32не |
связываются |
определенным оцессом.Поэтомуприсканирпотнужообязателваковнии |
|
ьнопроверять |
результат,такчтопотокибысвязанылнтересующимвасп |
роцессом. |
|
|
|
Обрабинформациимодуляхтка |
|
|
Опросмодулейвыполняетсяпрактическитакже, |
копроцессовилипотоков.Для |
|
|
этоговТо |
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. |
|
|
•Полеth32processсодержитидентификатор(ID |
)опрашиваемогопроцесса.Э |
тотID |
|
можноиспсдругимильзоватьфункциямиWin32. |
|
|
|
•ПолеGlblcntUsageсодержитглобальныйсчетчикссылокданногомодуля. |
|
|
|
•ПолеProccntUsageсодержитсчетчикссылокмодул |
явконтекстепроцесса |
-владельца. |
|
• ПолеmodBaseAddrпредставляетсобойбазовыйадресмодуляпам.Этозначениети |
|
|
|
дейсттольковконтекстеительиде процессатификатораth32Process |
ID. |
|
|
•ПолеmodBaseSizeопределяетразмерв(байтах)модулявпам. ти |
|
|
|
• ВполеhHoduleсодержитсядескриптормодуля.Этозначениедейсттольковительно |
|
|
|
контекстеидентификаторапроцессаth32ProcessID. |
|
|
|
•ВполеszHodoleсодержитсястрокаименеммодуля,завершающаясянуль |
|
-символом. |
|
• ПолеszExepathпредназначенодляхран |
ениястрограничивающимки нуль |
- |
|
символ,содержащейп путьмлныймодуля.
