Win32 Api. Управление процессами

1) Функция создания процесса:

BOOL CreateProcess(

PCTSTR pszApplicationName, //имя исполняемого модуля

PTSTR pszCommandLine, // командная строка

PSECURITY_ATTRIBUTES psaProcess, //указатель на структуру SECURITY_ATTRIBUTES

PSECURITY_ATTRIBUTES psaThread, //указатель на структуру SECURITY_ATTRIBUTES

BOOL bInheritHandles, // флаг наследования текущего процесса

DWORD fdwCreate, // флаги способов создания процесса

PVOID pvEnvironment, // указатель на блок памяти, хранящий строки переменных окружения

PCTSTR pszCurDir, // текущий диск и каталог для дочернего процесс а

PSTARTUPINFO psiStartInfo, // указатель на структуру STARTUPINFO

PPROCESS_INFORMATION ppiProcInfo); // указатель на структуру PROCESS_INFORMATION

2) Функция, которой приостанавливаем выполнение родительского процесса, пока не завершится дочерний процесс:DWORD WaitForSingleObject(HANDLE hObject, DWORD dwTimeOut);

3) Процесс завершается, когда один из его потоков вызывает ExitProcess:

VOID ExitProcess(UINT fuExitCode);

Эта функция завершает процесс и заносит в параметр fuExitCode код завершения процесса. Возвращаемого значения у ExitProcess нет, так как результат ее действия — завершение процесса. Если за вызовом этой функции в программе присутствует какой-нибудь код, он никогда не исполняется.

4) Вызов функции TerminateProcess тоже завершает процесс: BOOL TerminateProcess(HANDLE hProcess, UINT fuExitCode);

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

5) Родительский процесс, вызвав функцию GetExitCodeProcess, может проверить, завершен ли процесс, идентифицируемый параметром hProcess, и, если да, определить код завершения:

BOOL GetExitCodeProcess(HANDLE hProcess, PDWORD pdwExitCode);

Код завершения возвращается как значение типа DWORD, на которое указывает pdwExitCode.

6) Обнуляет счетчик обьекта (закрытие процесса):

CloseHandle(HANDLE hProcess); // описатель завершаемого процесса


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: