Здавалка
Главная | Обратная связь

Параметры защиты и наследование



Создаваемый (дочерний) процесс и его первичный поток являются объектами ядра, это позволяет родительскому процессу связать с ними атрибуты защиты (п. 3.3). Параметры saProcess и saThread позволяют определить нужные атрибуты защиты для объектов «процесс» и «поток» соответственно. Параметр inheritHandles предоставляет возможность наследования дочерним процессом дескрипторов объектов ядра родительского процесса (п. 3.6).

Режимы создания процесса

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

Переменные окружения

Переменные окружения (environment variables) – это область памяти, выделенная в адресном пространстве процесса. Иначе говоря, это глобальные переменные, к которым имеет доступ определенный процесс (или процессы). Процесс может получить доступ к переменным окружения, создав их, либо унаследовав от родительского процесса. Это самый простой способ организации межпроцессного взаимодействия.

В ОС Windows есть ряд переменных окружения, доступных для всех запущенных процессов. Список этих переменных храниться в реестре, его можно модифицировать, добавлять туда свои переменные (глобальные переменные или переменные для конкретной учетной записи пользователя). Создавая переменные окружения в реестре, разработчик обеспечивает возможность доступа к этим переменным из любого процесса сразу же после старта ОС.

Переменные окружения хранятся в оперативной памяти в виде строк вида:

<Имя переменной>=<Значение>\0

Для работы с окружением существует определенный API. Например, следующий код демонстрирует, как можно определить путь к временному каталогу:

char value[256];

GetEnvironmentVariable("TEMP", value, sizeof(value));

При создании дочернего процесса в параметре environment можно передать ссылку на блок памяти, хранящий строки переменных окружения (по умолчанию дочерний процесс наследует все переменные).

Текущий каталог

Если имя исполняемого файла (в applicationName или commandLine) указано не полностью, поиск осуществляется в следующем порядке:

1. Каталог, содержащий exe-файл вызывающего процесса.

2. Текущий каталог вызывающего процесса.

3. Системный каталог Windows.

4. Основной каталог Windows.

5. Каталоги, перечисленные в переменной окружения Path.

Параметр currentDir позволяет указать текущий каталог для дочернего процесса. (Если значение этого параметра – NULL, рабочий каталог нового процесса будет тем же, что и у приложения, его породившего.)

Параметры запуска

С помощью startInfo можно определить дополнительные параметры запускаемого процесса: размер, положение и первоначальное состояние окна дочернего процесса (если таковое имеется), для консольных приложений дополнительно можно указать заголовок консоли, буфер ввода и вывода. Таким образом, например, можно запустить консольное приложение, вывод которого будет осуществляться в файл, а не на дисплей консоли, как обычно (рис. 6).







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.