ВУЗ:
Составители:
37
не прервет его. По окончании кванта операционная система проверяет, готов ли к
выполнению другой поток с таким же (или большим) уровнем приоритета. Если
таких потоков не оказалось, текущему потоку выделяется еще один квант. Однако
поток может не полностью использовать свой квант. Как только другой поток с
более высоким приоритетом готов к выполнению, текущий поток вытесняется, даже
если его квант еще не истек
Для создания процессов используется функция CreateProcess – это основная
функция запуска процесса, все остальные функции такие как WinExec и
LoadModule оставлены для совместимости и используют CreateProcess.
Функция CreateProcess
BOOL CreateProcess
(
LPCTSTR lpApplicationName, // имя исполняемого модуля
LPTSTR lpCommandLine, // Командная строка
LPSECURITY_ATTRIBUTES lpProcessAttributes, // Указатель на структуру
// SECURITY_ATTRIBUTES
LPSECURITY_ATTRIBUTES lpThreadAttributes, // Указатель на структуру
// SECURITY_ATTRIBUTES
BOOL bInheritHandles, // Флаг наследования текущего процесса
DWORD dwCreationFlags, // Флаги способов создания процесса
LPVOID lpEnvironment, // Указатель на блок среды
LPCTSTR lpCurrentDirectory, // Текущий диск или каталог
LPSTARTUPINFO lpStartupInfo, // Указатель нас структуру STARTUPINFO
LPPROCESS_INFORMATION lpProcessInformation // Указатель нас структуру
// PROCESS_INFORMATION
);
Параметры:
pApplicationName – указатель на строку которая заканчивается нулем и содержит
имя выполняемого модуля. Этот параметр может быть NULL тогда имя модуля
должно быть в lpCommandLine самым первым элементом. Если операционная
система NT и модуль 16 разрядов этот параметр NULL обязательно. имя модуля
может быть абсолютным или относительным. Если относительное то будет
использована информация из lpCurrentDirectory или текущий каталог.
lpCommandLine – командная строка. Здесь передаются параметры. Она может быть
NULL. Здесь можно указать и путь и имя модуля.
lpProcessAttributes – здесь определяются атрибуты защиты для нового приложения.
Если указать NULL то система сделает это по умолчанию.
lpThreadAttributes – здесь определяются атрибуты защиты для первого потока
созданного приложением. NULL опять приводит к установке по умолчанию.
bInheritHandles – флаг наследования от процесса производящего запуск. Здесь
наследуются дескрипторы. Унаследованные дескрипторы имеют те же значения и
права доступа, что и оригиналы.
dwCreationFlags. Флаг способа создание процесса и его приоритет:
CREATE_DEFAULT_ERROR_MODE – Новый процесс не наследует режим ошибок
не прервет его. По окончании кванта операционная система проверяет, готов ли к
выполнению другой поток с таким же (или большим) уровнем приоритета. Если
таких потоков не оказалось, текущему потоку выделяется еще один квант. Однако
поток может не полностью использовать свой квант. Как только другой поток с
более высоким приоритетом готов к выполнению, текущий поток вытесняется, даже
если его квант еще не истек
Для создания процессов используется функция CreateProcess – это основная
функция запуска процесса, все остальные функции такие как WinExec и
LoadModule оставлены для совместимости и используют CreateProcess.
Функция CreateProcess
BOOL CreateProcess
(
LPCTSTR lpApplicationName, // имя исполняемого модуля
LPTSTR lpCommandLine, // Командная строка
LPSECURITY_ATTRIBUTES lpProcessAttributes, // Указатель на структуру
// SECURITY_ATTRIBUTES
LPSECURITY_ATTRIBUTES lpThreadAttributes, // Указатель на структуру
// SECURITY_ATTRIBUTES
BOOL bInheritHandles, // Флаг наследования текущего процесса
DWORD dwCreationFlags, // Флаги способов создания процесса
LPVOID lpEnvironment, // Указатель на блок среды
LPCTSTR lpCurrentDirectory, // Текущий диск или каталог
LPSTARTUPINFO lpStartupInfo, // Указатель нас структуру STARTUPINFO
LPPROCESS_INFORMATION lpProcessInformation // Указатель нас структуру
// PROCESS_INFORMATION
);
Параметры:
pApplicationName – указатель на строку которая заканчивается нулем и содержит
имя выполняемого модуля. Этот параметр может быть NULL тогда имя модуля
должно быть в lpCommandLine самым первым элементом. Если операционная
система NT и модуль 16 разрядов этот параметр NULL обязательно. имя модуля
может быть абсолютным или относительным. Если относительное то будет
использована информация из lpCurrentDirectory или текущий каталог.
lpCommandLine – командная строка. Здесь передаются параметры. Она может быть
NULL. Здесь можно указать и путь и имя модуля.
lpProcessAttributes – здесь определяются атрибуты защиты для нового приложения.
Если указать NULL то система сделает это по умолчанию.
lpThreadAttributes – здесь определяются атрибуты защиты для первого потока
созданного приложением. NULL опять приводит к установке по умолчанию.
bInheritHandles – флаг наследования от процесса производящего запуск. Здесь
наследуются дескрипторы. Унаследованные дескрипторы имеют те же значения и
права доступа, что и оригиналы.
dwCreationFlags. Флаг способа создание процесса и его приоритет:
CREATE_DEFAULT_ERROR_MODE – Новый процесс не наследует режим ошибок
37
Страницы
- « первая
- ‹ предыдущая
- …
- 35
- 36
- 37
- 38
- 39
- …
- следующая ›
- последняя »
