Mit csinál a creationprocess funkció?
A CreateProcess funkció
Ezen a ponton már megvizsgáltuk a folyamat részét képező struktúrákat, valamint azokat a API-funkciókat, amelyek lehetővé teszik Önnek (és az operációs rendszernek) a folyamatok manipulálását. Azt is megtanultad, hogyan kell különböző segédprogramokat használni annak ellenőrzésére, hogy a folyamatok miként hatnak a rendszerre. Hogyan jönnek létre ezek a folyamatok és hogyan végzik el azokat a feladatokat, amelyekre szántak? A következő szakaszokban megtudhatja, hogyan keletkeznek a Windows folyamatok.
Létrehozása Windows folyamat valósul meg, hívja az egyik feladatot, mint például a CreateProcess CreateProcessAsUser, CreateProcessWithTokenW vagy CreateProcessWitbLogonW, és zajlik több szakaszból álló három működési elemek: Kernel32.dll (kliensoldali a Windows könyvtár), a végrehajtó rendszer és a Windows környezet alrendszer folyamata ( Csrss). Mivel a Windows architektúra támogatja a több környezeti alrendszer műveletek létrehozásához szükséges a tárgy „folyamat” végrehajtási rendszer (amely lehet használni más környezetben alrendszer), külön a műveletek létrehozásához szükséges Windows folyamat. Ezért a Windows-feladat CreateProcess egyes műveletei a Windows alrendszer által bevezetett szemantikához kapcsolódnak.
Az alábbi lista bemutatja a processz létrehozásához szükséges fő lépéseket a CreateProcess Windows funkcióval. Az egyes lépések részletes leírását az alábbi szakaszokban találja meg.
1. Megnyílik egy képfájl (EXE), amelyet a folyamat végrehajt.
2. A végrehajtó rendszer "folyamat" célja.
3. Elsődleges szálat hoz létre (a végrehajtó rendszer stackje, kontextusa és tárgya "stream").
4. A Windows alrendszert értesíti egy új folyamat és szál létrehozásáról.
5. Az elsődleges szál megkezdi a végrehajtást (ha a CREATE_SUSPENDED zászló nincs megadva).
A folyamat Windows rendszerben való létrehozásának általános terve a 3. ábrán látható. 6-5. A futtatható kép megnyitásához a CreateProcess a következőket hajtja végre.
• A CreateProcess létrehozásakor a prioritási osztály a CreationFlags paraméterben van megadva, és a CreateProcess meghívásával több prioritási osztályt is megadhat egyszerre. A Windows a legalacsonyabbat választja ki.
• Ha egy prioritási osztály nincs megadva egy új eljáráshoz, akkor az alapértelmezett Normál, kivéve, ha az alkotói folyamat prioritási osztálya egyenlő az IdIe vagy a Normal Below. Az utóbbi esetben az új folyamat ugyanazt a prioritási osztályt kapja, mint a szülőprocessz.
• Ha az új eljárást meghatározott prioritási osztály Valós idejű, és a teremtő jogokkal rendelkezik növelése ütemezése Prioritás beállítása Class Magas prioritás. Más szóval, a CreateProcess funkció sikerül, akkor is, ha az a személy, aki okozta, nem megfelelő jogosultsággal létre folyamatok prioritási osztály Real-time, - a prioritási osztály az új eljárás alacsonyabb lesz, mint a Real-time.
• Az összes ablakot asztali objektumokhoz rendeltük, amelyek a munkaterület grafikus ábrázolását jelentik. Ha nem ad meg konkrét asztali objektumot a CreateProcess létrehozásakor, akkor az új folyamat a létrehozó folyamat aktuális asztali objektumához van hozzárendelve.