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

Invoke CloseHandle,processInfo.HProcess

mov processInfo.hProcess,0

.endif

Invoke GetStartupInfo,addr startInfo

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

NORMAL_PRIORITY_CLASS,\

NULL,NULL,ADDR startInfo,ADDR processInfo

Invoke CloseHandle,processInfo.HThread

Коли користувач вибере пункт "start process", спочатку перевіряємо закриття паpаметpу hProcess стpуктуpи PROCESS_INFORMATION. Якщо процес запускається вперше, значення hProcess буде завжди дорівнювати нулю, так визначено у секції .data. Якщо значення паpаметpа hProcess не pавно нулю, це означає, що дочірній процес завершено, але його дескриптор не закрито. Закриємо його примусово.

Ми викликаємо функцію GetStartupInfo, щоб заповнити стpуктуpу startupinfo, яка буде передана CreateProcess. Тільки після цього можна викликати функцію CreateProcess. Сpазу ж після CreateProcess, слід закрити дескриптор основного потоку, що повертається у складі структури processInfo. Закриття дескриптора не означає, що ми перериваємо потік, а лише те, що нам він уже непотрібен. Якщо ми не будем його закривати його, це викличе проблеми із витоком пам‘яті.

.elseif ax==IDM_TERMINATE

Invoke GetExitCodeProcess,processInfo.HProcess,addr ExitCode

.if ExitCode==STILL_ACTIVE

Invoke TerminateProcess,processInfo.HProcess,0

.endif

Invoke CloseHandle,processInfo.HProcess

mov processInfo.hProcess,0Б

Коли користувач вибере пункт меню "terminate process", перевіримо активність нашого процесу, викликавши функцію GetExitCodeProcess. Якщо він ще активний, ми викликаємо фукнцию TerminateProcess, щоб убити його. І так само закриваємо дескриптор.

Хід роботи:

  1. Вивчити теоретичні відомості та опрацювати файл «Процессы в Windows.docx»

  2. Освоїти програму.

  3. Відповісти на контрольні питання.

  4. Надати письмовий звіт про пророблену роботу.

Контрольні питання:

  1. Поняття процесу. Компоненти процесу.

  2. Поняття потоку. Компоненти потоку.

  3. Планування потоків.

  4. Приорітети.

  5. Робота з процесорами та пам’яттю.

  6. Створення та завершення процесів та потоків.

  7. Wait-функції.

  8. Синхронізація потоків. М’ютекси. Семафори. Події. Очікувані таймери.

  9. Синхронізація процесів.

  10. Взаємодія між процесами. Роздільна пам’ять. Канали. Роздільні канали. Сокети. Повідомлення у Windows.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]