На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Creating Processes



The CreateProcess function creates a new process, which runs independently of the creating process. However, for simplicity, the relationship is referred to as a parent-child relationship.

The following code fragment demonstrates how to create a process.

void main( VOID )
{
STARTUPINFO si;
PROCESS_INFORMATION pi;

ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);

// Start the child process.
if( !CreateProcess( NULL, // No module name (use command line).
"MyChildProcess", // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.

NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi ) // Pointer to PROCESS_INFORMATION structure.
)
ErrorExit( "CreateProcess failed." );

// Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );

// Close process and thread handles.
CloseHandle( pi.hProcess );

CloseHandle( pi.hThread );
}


If CreateProcess succeeds, it returns a PROCESS_INFORMATION structure containing handles and identifiers for the new process and its primary thread. The thread and process handles are created with full access rights, although access can be restricted if you specify security descriptors. When you no longer need these handles, close them by using the CloseHandle function.
You can also create a process using the CreateProcessAsUser function. This function allows you to specify the security context of the user account in which the process will execute.


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Создание Процессов



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

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

недействительная основа( ПУСТОТА )
{
si STARTUPINFO;
pi PROCESS_INFORMATION;

ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);

// Начало процесс ребенка.
если( !CreateProcess( НЕДЕЙСТВИТЕЛЬНОЕ, // No модульное имя (командная линия использования).
"MyChildProcess", // КОМАНДНАЯ линия.
НЕДЕЙСТВИТЕЛЬНАЯ, // ручка Процесса не inheritable.
НЕДЕЙСТВИТЕЛЬНАЯ, // ручка Резьбы не inheritable.
ЛОЖЬ, // была Установлена наследство ручки в ЛОЖЬ.
0, // Флаги No создания.

НЕДЕЙСТВИТЕЛЬНЫЙ, // блок родительской среды Использования.
НЕДЕЙСТВИТЕЛЬНЫЙ, // родительский стартовый директорий Использования.
&si, // Указатель в структуру STARTUPINFO.
&pi ) // Указатель в структуру PROCESS_INFORMATION.
)
ErrorExit( "CreateProcess ПОТЕРПЕВШЕЕ неудачу." );

// Ожидание пока процесс ребенка не выходит.
WaitForSingleObject( pi.hProcess, БЕСКОНЕЧНЫЙ );

// Закройте ручки процесса и резьбы.
CloseHandle( pi.hProcess );

CloseHandle( pi.hThread );
}


Если CreateProcess добивается успеха, это возвращает структуру PROCESS_INFORMATION, содержащую ручки и идентификаторы для нового процесса и первичной резьбы. Резьба и ручки процесса созданы полными правами доступа, хотя доступ может быть ограничен если Вы определяете дескрипторы безопасности. Когда Вы больше не нужно эти ручки, закройте им используя функцию CloseHandle.
Вы можете также создать процесс, использовавший функцию CreateProcessAsUser. Эта функция позволяет Вам, чтобы определять контекст безопасности счета потребителя в котором процесс выполнится.


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz