Операционные системы. Кручинин А.Ю. - 37 стр.

UptoLike

Составители: 

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