Азбука программирования в Win32 API


Азбука программирования в Win32 API - стр. 188


225

идентификатор 0x00001111. Это необходимо учитывать при написании программ.

Итак, аргументы функции рассмотрены. Основные результаты - хэнд­лы и идентификаторы процесса и потока - получены. А какое значение возвращает функция? Возвращаемое функцией значение TRUE говорит о том, что процесс создан и функция завершилась нормально. А при по­лучении значения FALSE программисту придется искать ошибку.

Итак, мы подробно рассмотрели вопрос о запуске процесса. Теперь, очевидно, процесс необходимо завершить.

ЗАВЕРШЕНИЕ ПРОЦЕССА

Процесс может быть завершен вызовом одной из двух функций -ExitProcess() пли TerminateProcess(). Рассмотрим более подробно каждую из этих функций.

ФУНКЦИЯ EXITPROCESSQ

В обычных условиях процесс завершается тогда, когда один из при­надлежащих ему потоков вызывает функцию ExitProcessQ, которая описана в файле winbase.h следующим образом:

WINBASEAPI VOID WINAPI ExitProcess(UINT uExitCode);

Читателю следует обратить внимание на тот факт, что завершение процесса начинается изнутри процесса. Почему так сделано? Во-первых, только поток процесса знает, когда он выполнил свою работу и когда ему необходимо завершиться. Во-вторых, только процесс в тот момент, когда он узнает о необходимости завершения, может оповестить об этом все принадлежащие ему потоки и произвести нормальное завершение. Извне процесса эти действия произвести почти невозможно.

Если говорить более конкретно, то при завершении процесса произво­дятся следующие действия:

вызываются функции деинициализации всех подключенных библио­тек динамической компоновки, т. е. происходит нормальное завершение всех подключенных DLL;

закрываются и/или уничтожаются все объекты, открытые и/или соз­данные процессом;

состояние процесса изменяется на «освобожденный» (signaled), что является сигналом для всех потоков, ожидающих завершения процесса;

состояние всех потоков изменяется на «освобожденный» (signaled), что является сигналом для всех потоков других процессов, которые ожидают завершения потоков текущего процесса;




Начало  Назад  Вперед



Книжный магазин