Функция ExitProcess


Функция ExitProcess заканчивает работу процесса и всех его потоков.

Синтаксис

VOID ExitProcess(

UINT uExitCode // код выхода для всех потоков

);

Параметры

uExitCode

[in] Определяет код выхода для процесса, и для всех потоков, которые завершают работу в результате вызова этой функции. Используйте функцию GetExitCodeProcess, чтобы получить значение выхода из процесса. Используйте функцию GetExitCodeThread, чтобы получить значение выхода из потока.

Возвращаемые значения

У этой функции нет возвращаемого значения.

Замечания

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

Завершение процесса происходит по нижеследующим причинам:

1. Все дескрипторы объектов, открытые процессом, закрываются.

2. Все потоки в процессе завершают свою работу по исполнению кода.

3. Состояние объекта процесса становится сигнальным, удовлетворяя любые потоки, которые ждали завершения процесса.

4. Состояния всех потоков процесса, становятся сигнальными, удовлетворяя любые потоки, которые ждали завершения работы потоков.

5. Состояние завершения процесса изменяется из STILL_ACTIVE в значение выхода процесса.

Завершение процесса не заставляет дочерние процессы закончить свою работу.

Завершение процесса необязательно удаляет объект процесса из операционной системы. Объект процесса удаляется тогда, когда закрывается последний дескриптор процесса.

Внимание! Вызов функции ExitProcess в DLL может привести к неожидаемому приложению или системным ошибкам. Убедитесь в том, что вызов функции ExitProcess из DLL происходит только в случае, если Вы знаете, какое приложение или элементы системы были загружены в DLL и в том, что в этом контексте вызвать функцию ExitProcess безопасно.

Функции ExitProcess, ExitThread, CreateThread, CreateRemoteThread и процесс, который запущен, (как результат вызова CreateProcess), в пределах процесса переводятся между собой в последовательный режим. Одновременно в адресном пространстве может происходить только одно из этих событий. Это означает нижеследующие ограничения выполнения:

Пример кода

Пример смотри в статье Создание дочернего процесса с перенаправленным вводом и выводом.

 Смотри также

Краткий обзор Процессы и потоки, Функции, используемые процессами и потоками, CreateProcess, CreateRemoteThread, CreateThread, ExitThread, GetExitCodeProcess, GetExitCodeThread, OpenProcess, TerminateProcess

Размещение и совместимость ExitProcess

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да

Windows Me

Да

Windows 98

Да

Используемая библиотека

Kernel32.lib

Заголовочный файл

 

- объявлено в

Winbase.h

- включено в

Windows.h

Unicode

Нет

Замечания по платформе

Не имеется

 

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

Hosted by uCoz