Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна робота.docx
Скачиваний:
4
Добавлен:
01.04.2025
Размер:
292 Кб
Скачать
☆

Invoke MessageBox, null,addr MsgBoxText, addr MsgCaption, mb_ok

invoke CreateProcess,ADDR programname,NULL,NULL,NULL,FALSE,\

NORMAL_PRIORITY_CLASS,\

NULL,NULL,ADDR startInfo,ADDR processInfo

Invoke ExitProcess,null

end main

Результат виконання програми:

Опис програми :

processInfo PROCESS_INFORMATION <> - Оголошується структура processInfo, яка має тип структури PROCESS_INFORMATION. Цю структуру заповнює даними, які містять інформацію про новостворений процес і його головний потік, функція CreateProcess.

PROCESS_INFORMATION STRUCT

hProcess DWORD ? ;Дескриптор створеного процесу

hThread DWORD ? ;Дескриптор головного потоку створеного процесу

dwProcessId DWORD ? ;Ідентифікатор процесу

dwThreadId DWORD ? ;Ідентифікатор основного потоку

PROCESS_INFORMATION ENDS

startInfo STARTUPINFO <> - Оголошується структура startInfo, котра визначає властивості створеного процесом вікна.

Дескриптор процесу - це значення, яке повертає Windows для використання іншими АРІ - функціями, зв’язаними з процесами. Дескриптор процесу не може використовуватися для ідентифікації процесу, так як він не унікальний. Процес можна примусово зупинити функцією TerminateProcess.

Додаток 3

Детальний опис функції CreateProcess.

invoke CreateProcess,ADDR programname,NULL,NULL,NULL,FALSE,\

NORMAL_PRIORITY_CLASS,NULL,NULL,\

ADDR startInfo,ADDR processInfo

Функція CreateProcess створює новий процес.

CreateProcess PROTO lpApplicationName:DWORD, lpCommandLine:DWORD,\

lpProcessAttributes:DWORD,lpThreadAttributes:DWORD,\

bInheritHandles:DWORD,dwCreationFlags:DWORD,\

lpEnvironment:DWORD,lpCurrentDirectory:DWORD,\

lpStartupInfo:DWORD,lpProcessInformation:DWORD

  • lpApplicationName --> Вказівник на ім’я виконуваного файлу, з шляхом або без нього, який потрібно запустити. Якщо цей параметр рівний NULL, то ім’я виконуваного файлу береться з lpCommandLine.

  • lpCommandLine --> Вказівник на командну стрічку в котрій вказаний шлях до програми, яку потрібно запустити. Якщо lpCommandLine рівний NULL, то стрічка береться з lpApplicationName.

  • lpProcessAttributes і lpThreadAttributes --> Тут вказуються атрибути безпеки для процесу і основної пам’яті. Коли параметри рівні NULL, то атрибути безпеки використовуються по замовчуванню.

  • bInheritHandles --> Прапорець, який вказує, чи потрібно наслідувати всі відкриті дескриптори процесу в новому процесі.

  • dwCreationFlags --> Декілька прапорців, які визначають поведінку процесу, який потрібно створити. Наприклад, можна створити процес і відразу призупинити його виконання, щоб можна було його провірити або змінити до його виконання. Також можна вказати клас пріоритету потоку або потоків у новому процесі. Цей клас пріоритету використовується щоб визначити запланований пріоритет віток всередині процесу. Зазвичай використовують прапорець NORMAL_PRIORITY_CLASS.

  • lpEnviroment --> Вказівник на блок пам’яті, який містить декілька змінних оточення для нового процесу. Якщо цей параметр рівний NULL, то новий процес наслідує цей вказівник від батьківського процесу.

  • lpCurrentDirectory --> Вказівник на стрічку з поточним диском і директорією для “дочірнього” процесу. NULL- якщо потрібно, щоб “дочірній” процес отримав цей вакзівник від батьківського процесу.

  • lpStartupInfo --> Вказує на структуру STARTUPINFO, яка визначає як має з’явитись основне вікно нового процесу. Ця структура містить багато членів, які виділяють появу головного вікна “дочірнього” процесу. Цю структуру можна заповнити значеннями батьківського процесу, викликавши функцію GetStartupInfo.

  • lpProcessInformation --> Вказує на структуру PROCESS_INFORMATION, яка дістає ідентифікаційну інформацію про новий процес. Структура PROCESS_INFORMATION.