Що робить функція createprocess - еннее пристрій windows (гл

Що робить функція CreateProcess

K цього моменту ми вже розглянули структури, які є частиною процесу, і API-функції, що дозволяють вам (і операційній системі) маніпулювати процесами. Ви також навчилися користуватися різними утилітами для спостереження за тим, як процеси взаємодіють з системою. Ho як ці процеси з'являються на світ і як вони завершуються, виконавши завдання, для яких вони призначалися? B наступних розділах ви дізнаєтеся, як породжуються Windows-процеси.

Створення Windows-процесу здійснюється викликом однієї з таких функцій, як CreateProcess, CreateProcessAsUser, CreateProcessWithTokenW або CreateProcessWitbLogonW, і проходить в кілька етапів за участю трьох компонентів операційної системи: Kernel32.dll (бібліотеки клієнтської частини Windows), виконавчої системи та процесу підсистеми оточення Windows ( Csrss). Оскільки архітектура Windows підтримує кілька підсистем оточення, операції, необхідні для створення об'єкта «процес» виконавчої системи (яким можуть користуватися й інші підсистеми оточення), відокремлені від операцій, необхідних для створення Windows-процесу. Тому частина дій Windows-функції CreateProcess специфічна для семантики, вноситься підсистемою Windows.

B наведеному нижче списку перераховані основні етапи створення процесу Windows-функцією CreateProcess. Детальний опис дій на кожному етапі дається в наступних розділах.

1. Відкривається файл образу (EXE), який буде виконуватися в процесі.

2. Створюється об'єкт «процес» виконавчої системи.

3. Створюється первинний потік (стек, контекст і об'єкт «потік» виконавчої системи).

4. Підсистема Windows повідомляється про створення нового процесу і потоку.

5. Починається виконання первинного потоку (якщо не вказано прапор CREATE_SUSPENDED).

Загальна схема створення процесу в Windows показана на рис. 6-5. Перш ніж відкрити виконуваний образ для виконання, CreateProcess робить наступне.

• Коли Ви телефонуєте CreateProcess клас пріоритету вказується в параметрі CreationFlags, і, викликаючи CreateProcess, ви можете задати відразу кілька класів пріоритету. Windows вибирає найнижчий з них.

• Коли для нового процесу не вказується клас пріоритету, за замовчуванням приймається Normal, якщо тільки клас пріоритету процесу-творці не дорівнює IdIe або Below Normal. B останньому випадку новий процес отримує той же клас пріоритету, що і у батьківського процесу.

• Якщо для нового процесу вказаний клас пріоритету Real-time, а творець не має привілеї Increase Scheduling Priority, встановлюється клас пріоритету High. Інакше кажучи, функція CreateProcess завершується успішно, навіть якщо у того, хто її викликав, недостатньо привілеїв для створення процесів з класом пріоритету Real-time, - просто клас пріоритету нового процесу буде нижче Real-time.

• Всі вікна зіставляються з об'єктами «робочий стіл», які є графічним поданням робочого простору. Якщо при виклику CreateProcess не вказано конкретний об'єкт «робочий стіл», новий процес зіставляється з поточним об'єктом «робочий стіл» процесу-творця.

Що робить функція createprocess - еннее пристрій windows (гл

Схожі статті