Флажки создания процесса


Нижеследующие флажки создания процесса используются функциями CreateProcess и CreateProcessAsUser. Они могут быть установлены в любой комбинации, кроме тех, на которые обращено внимание.

Значение

Предназначение

CREATE_BREAKAWAY_FROM_JOB

Windows 2000/XP: Дочерние процессы процесса, связанного с заданием, не связываются с заданием.

Если вызывающий процесс не связан с заданием, этот флажок не имеет никакого действия. Если вызывающий процесс связан с заданием, задание должно установить ограничение JOB_OBJECT_LIMIT_BREAKAWAY_OK. 

CREATE_DEFAULT_ERROR_MODE

Новый процесс не наследует режим ошибки вызывающего процесса. Вместо этого, новый процесс получает текущий заданный по умолчанию режим ошибки. Прикладная программа устанавливает текущий заданный по умолчанию режим ошибки путем вызова SetErrorMode.

Этот флажок особенно полезен для многопоточных оболочек прикладной программы, которые при запуске из-за постоянных ошибок блокируются. Заданный по умолчанию характер работы для нового процесса наследует режим ошибки вызывающей программы. Установка этого флажка изменяет это заданное по умолчанию поведение. 

CREATE_NEW_CONSOLE

Новый процесс имеет новую консоль, вместо наследования консоли родителя (это по умолчанию). За большей информацией обратитесь к статье Создание консоли. Этот флажок не может быть использован с флажком DETACHED_PROCESS. 

CREATE_NEW_PROCESS_GROUP

Новый процесс является корневым процессом группы нового процесса. Группа процесса включает в себя все процессы, которые являются потомками этого корневого процесса. Идентификатор процесса группы нового процесса является таким же самым, что и идентификатор процесса, который возвращен в параметре lpProcessInformation. Группы процесса используются функцией GenerateConsoleCtrlEvent, чтобы дать возможность отправить сигнал CTRL+C или CTRL+BREAK группе консольных процессов. 

CREATE_NO_WINDOW

Windows NT/2000/XP: Этот флажок допустим только тогда, когда стартует консольная программа. Если он установлен, консольная программа запускается без консольного окна.

Этот флажок не может быть использован с прикладными программами, базирующимися на MS-DOS. 

CREATE_PRESERVE_CODE_AUTHZ_LEVEL

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

CREATE_SEPARATE_WOW_VDM

Windows NT/2000/XP: Этот флажок допустим только тогда, когда запущено 16-разрядное приложение, базирующееся на Windows. При его установке, новый процесс - запускается в отдельной Виртуальной Машине DOS (VDM). По умолчанию, все 16-разрядные программы Windows запускаются как потоки в единственной, совместно используемой VDM. Преимущество от отдельного запуска заключается в том, что аварийный отказ уничтожает только единственную VDM; любые другие программы, запущенные в отдельных VDM, продолжают функционировать нормально. К тому же, 16-разрядные прикладные программы Windows, которые запущены в отдельных VDM, имеют отдельные очереди ввода данных. Это означает то, что если одна прикладная программа в данный момент зависает, прикладные программы в отдельных VDM продолжают получать ввод данных.

Недостаток отдельного запуска заключается в том, что требуется значительно большее количество памяти для тех, кто поступает таким образом. Вам следует использовать этот флажок только в том случае, если пользователь запросил, чтобы 16-разрядные прикладные программы работали в своих собственных VDM.

CREATE_SHARED_WOW_VDM

Windows NT/2000/XP: флажок допустим только тогда, когда запущена 16-разрядная прикладная программа базирующаяся на Windows. Если функция DefaultSeparateVDM переключает в Windows раздел WIN.INI в значение ИСТИНА (TRUE), этот флажок отменяет переключение. Новый процесс запускается в общедоступной Виртуальной Машине DOS. 

CREATE_SUSPENDED

Первичный поток нового процесса создается в состоянии ожидания и не запускается до тех пор, пока не будет вызвана функция ResumeThread. 

CREATE_UNICODE_ENVIRONMENT

Windows NT/2000/XP Обозначает формат параметра lpEnvironment. Если этот флажок установлен, блок конфигурации, указанный в lpEnvironment использует символы Unicode. Если сброшен, блок конфигурации использует символы ANSI. 

DEBUG_ONLY_THIS_PROCESS

Если этот флажок не установлен и вызывающий процесс отлаживается, новый процесс становится другим процессом, отлаживаемым отладчиком вызывающего процесса. Если вызывающий процесс - не отлаживаемый процесс, никакие связанные с отладкой действия не происходят. 

DEBUG_PROCESS

Если этот флажок установлен, вызывающий процесс рассматривается как отладчик, а новый процесс - отлаживаемый процесс. Система уведомляет отладчик обо всех событиях отладки, которые происходят в отлаживаемом процессе.

Если Вы создаете процесс с этим установленным флажком, только вызывающий поток может вызывать функцию WaitForDebugEvent.

Windows 95/98/Me: Этот флажок не допустим, если новый процесс - 16-разрядное приложение. 

DETACHED_PROCESS

Для консольных процессов, новый процесс не наследует консоль своего родителя (Это по умолчанию). Новый процесс может вызвать функцию AllocConsole в более позднее время, чтобы создать новую консоль. За большей информацией обратитесь к статье Создание консоли.

Этот флажок не может быть использован с флажком CREATE_NEW_CONSOLE.

 

Назад в оглавление темы
На главную страницу темы

Hosted by uCoz