Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Замечания. Процессу присваивается идентификатор





Процессу присваивается идентификатор. Идентификатор является правильным до тех пор, пока процесс не завершит работу. Он может быть использован, чтобы идентифицировать процесс, или открыть определяемый в функции OpenProcess дескриптор процесса. Начальный поток в процессе также получает свой идентификатор. Идентификатор правильный до тех пор, пока поток закончит свою работу и может быть использован, чтобы уникально идентифицировать поток в пределах системы. Эти идентификаторы возвращаются в структуре PROCESS_INFORMATION.

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

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

Обратите внимание! на то, что когда поток вызывает ExitProcess, другие потоки процесса, завершают работу без возможности выполнить какой-либо дополнительный код (включая код завершения потока связанных DLL). За дополнительной информацией обратитесь к статье Завершение работы процесса.

Если приложение предусматривает блок конфигурации, информация текущего каталога системных дисков автоматически не передается новому процессу. Например, имеется переменная окружения, с названием =C:, значение которой - текущий каталог на диске C. Приложение должно позаботиться, чтобы передать новому процессу информацию о текущем каталоге. Поступая таким образом, приложение должно явно создать эти строки переменной окружения, отсортировывать их в алфавитном порядке (потому что система использует отсортированные переменные) и поместить их в блок конфигурации. Как правило, они пойдут в начале блока конфигурации благодаря порядку установленному сортировкой блока конфигурации.

Один из способов получить переменную текущего каталога для диска X состоит в том, чтобы вызвать GetFullPathName (" X: ",..). Это освобождает прикладную программу от необходимости сканировать блок конфигурации. Если полный возвращенный путь является X:\, нет нужды передавать это значение как данные конфигурации, так как корневой директорией является заданный по умолчанию текущий каталог для диска X нового процесса.

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

Windows NT/2000/XP: Когда процесс создается с установленным флажком CREATE_NEW_PROCESS_GROUP, неявный вызов функции SetConsoleCtrlHandler (NULL, TRUE) делается от имени нового процесса; это означает то, что новый процесс имеет заблокированным сочетание клавиш CTRL+C. Это позволяет оболочкам обрабатывать CTRL+C непосредственно и выборочно передавать этот сигнал подпроцессам. Сочетание клавиш CTRL+BREAK не блокируется и может быть использовано для прерывания процесса / группы процессов.

Windows 95/98/Me: Функция CreateProcessW поддерживается подпрограммой Microsoft Layer for Unicode. Чтобы использовать ее, Вы должны добавить некоторые файлы к вашему приложению, как изложено в требованиях этой подпрограммы для систем Windows 95/98/Me.







Date: 2015-07-27; view: 471; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию