Электронный учебник:


Курс лекций:


Дополнительно:

Практикум:



Наши хостеры:

Мобильный телефон Samsung S5620 Deep Black описание.

--------------------------

keepass

--------------------------

Организация мультизадачности для приложений WIN32

             Каждый раз при создании нового процесса, и, в частности, при исполнении стартового кода функции WinMain, вызывается функция API WIN32 CreateProcess:

BOOL CreateProcess(     LPCTSTR  lpApplicationName, // имя запускаемого модуля (exe-файла)

    LPTSTR  lpCommandLine, // указатель на строку с параметрами запуска

    LPSECURITY_ATTRIBUTES  lpProcessAttributes, // указатель на атрибуты безопасности

                                                                                          // процесса

    LPSECURITY_ATTRIBUTES  lpThreadAttributes, // указатель на атрибуты безопасности

                                                                                         // первичного потока

71

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

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

    LPVOID  lpEnvironment,  // указатель на блок окружения процесса

    LPCTSTR  lpCurrentDirectory, // путь к текущему каталогу

    LPSTARTUPINFO  lpStartupInfo, // указатель на структуру  STARTUPINFO

    LPPROCESS_INFORMATION  lpProcessInformation // указатель на структуру

                                                                                            // PROCESS_INFORMATION  );

Эта функция создает для нового процесса виртуальное адресное пространство, создает объект ядра процесс с начальным значением счетчика, равным единице, переводит объект ядра в состояние nonsignaled и вызывает функцию CreateThread для создания первичного потока, соответствующего коду функции WinMain. В случае успешного создания нового процесса функция CreateProccess возвращает значение TRUE.

Атрибуты безопасности задаются структурой SECURITY_ATRIBUTES и содержат дескриптор безопасности для создаваемого процесса и его первичного потока. Рекомендуется в качестве указателя на эту структуру в параметрах рассматриваемой функции использовать NULL. В этом случае атрибуты безопасности автоматически определяются системой. Флаг наследования определяет, будет ли новый процесс наследовать идентификаторы родительского процесса и его первичного потока. Флаги создания процесса воздействуют на способ создания и приоритет нового процесса. В частности, имеется возможность создать процесс и сразу его заблокировать, отложив инициализацию первичного потока. Затем его можно будет возобновить при помощи функции ResumeThread. Можно также запустить процесс в режиме отладки, что обычно используется отладчиками, запускающими отлаживаемую программу в качестве дочернего процесса. Четыре флага (IDLE_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS, HIGH_PRIORITY_CLASS и REALTIME_PRIORITY_CLASS) задают класс приоритета нового процесса. Самый низкий класс приоритета IDLE, самый высокий – REALTIME, прикладные процессы обычно имеют класс приоритета NORMAL. Структура STARTUPINFO определяет вид главного окна нового процесса после запуска. В структуре PROCESS_INFORMATION ОС возвращает идентификаторы нового процесса и первичного потока, а также идентификаторы объектов ядра процесс и поток типа HANDLE. Более подробную информацию можно получить из справочной документации или электронного справочника WIN32 Programmer’s Reference.

предыдущаяследующая