Процесстердің құрылуы CreateProcess-функциясы – Win 32 процесстерін меңгеруге арналған негізгі функция. Ол процессті бір ғана ағынмен құрады. Қалайда процесстің коды түгелдей талап ететіндей CreateProcess функциясын шақыруда программа файлын орындаушының атын көрсету керек.
Ата-аналық және сіңілілік процесстер жа CreateProcess йлы жиі айтуға тура келгенмен, бірақ сондай қатынастар Win 32 әрекеттестігінде қолдау таппайды. Сіңілілік процесс ата-аналық процессті туғызатындықтан да процессті атау жай ғана қолайлы.
CreateProcess функциясы икемділікті қамтамасыз етуге арналған әрі қуаттылығы 10 параметрге ие. Бірінші жағдайда олардың мәнін үндеместен жай ғана пайдалануға болады.
Көрсетілгеніндей ,құрылымды шақыру кезінде процесске арналған және ағынға арналған екі дескриптор оралады. CreateProcess функциясы бастапқы ағынмен жаңа процесс құрайды.Программа үлгісінде екі дескриптор, тұтынушылық жоғалған кезде, ресурстардың шығып кетуінен қашатындықтан,оларға әрқашан ұқыпты ағынын жабады. Мысалы, егер дескриптор ағының жабудан бұрын бұл ағын бітпесе CloseHandle функциясы тек қана ағынды алып тастауды ұйғарады.
BOOL CreateProcess (LPCTSTR 1pszImageName, LPTSTR 1pszCommandline, LPSECURITY_ATTRIBUTES 1psaProcess, LPSECURITY_ATTRIBUTES 1psaThread, BOOL fInheritHandles, DWORD fdwCreate, LPVOID 1pvEnvironment, LPCTSTR 1pszCurDir, LPSTARTUPINFO 1psiStartInfo, LPPROCESS_INFORMATION 1ppiProcInfo);
Оралатын мән: TRUE тек қана мына жағдайда, егер де процесс пен ағын табысты құралған кезде болады.
Процесс және оның ағындары.
Параметрлер 1pszCommandline және 1pszImageName (соңғысы LPTSTR типіне ие, тек LPCTSTR емес) орындалатын программалар мен командалық жолдардың параметрлерін келесі тарауда көрсетілгендей көрсетіп береді.
1psaProcess және 1psaThread процесс және ағын қауіпсіздігі атрибуттар құрылымына атап көрсетіледі.
fInheritHandles параметрлері шақыруға туғызатын, жалғасып жатқан ашық дескрипторладың (файлдары, бейнеленулері және т.б. процесстерін жалғап, жаңа процессін анықтауы тиіс болатын.
fdwCreate параметрлері бірнеше нұсқауларды біріктіруге болады.
CREATE_SUSPENDED – бастапқы ағын күту жағдайында болады. ResumeThread функциясын шақырудан кейін ғана іске қосылады.
DETACHED_PROCESS және CREATE_NEW_CONSOLE - өзара шығара алатын жалаулар олардың екеуін бірден қоюға болмайды. Бірінші жалау процессті консолиссіз тұрады, ал екінші консоль ұсынады. Егер де осы жалаулардың бірде біреуі қойылмаса, процесс ата-ана консолын жалғастыратын болады.
CREATE_NEW_PROCESS_GROUP процесстердің жаңа тобына арналған түбірлік сияқты жаңа процессті анықтайды. Егер де топтардың процесстері бірге бір консольды пайдаланса, онда олар ( немесе ) консолының басқару сигналын алады.
Кейбір жалаулар жаңа процесстің приоритеттер ағының меңгере алады. әзірше, ата-аналық процесстің (ештенкеде көрсетпей-ақ) приоритетін немесе NORMAL_PROIORITY_CLASS пайдалана аламыз.