Kernelobjektumok
A kernelobjektum-leírók folyamatspecifikusak. Vagyis egy folyamatnak létre kell hoznia az objektumot, vagy meg kell nyitnia egy meglévő objektumot egy kernelobjektum-leíró beszerzéséhez. A kernelfogópontok folyamatonkénti korlátja 2^24. A leírók azonban a lapozott készletben vannak tárolva, így a létrehozható leírók tényleges száma a rendelkezésre álló memórián alapul. A 32 bites Windows rendszeren létrehozható leírók száma jelentősen alacsonyabb, mint 2^24.
Bármely folyamat létrehozhat egy új leírót egy meglévő kernelobjektumhoz (még egy másik folyamat által létrehozotthoz is), feltéve, hogy a folyamat ismeri az objektum nevét, és biztonsági hozzáféréssel rendelkezik az objektumhoz. A kernelobjektum-leírók olyan hozzáférési jogosultságokat tartalmaznak, amelyek jelzik a folyamat számára megadható vagy elutasítható műveleteket. Egy alkalmazás hozzáférési jogosultságokat ad meg, amikor létrehoz egy objektumot, vagy beszerez egy meglévő objektumleírót. A kernelobjektumok minden típusa támogatja a saját hozzáférési jogosultságait. Az eseménykezelők például beállíthatják vagy várakoztathatják a hozzáférést (vagy mindkettőt), a fájlleírók olvasási és írási hozzáféréssel (vagy mindkettőkkel) és így tovább. További információ: Biztonságos objektumok.
Az alábbi ábrán egy alkalmazás létrehoz egy eseményobjektumot. A CreateEvent függvény létrehozza az eseményobjektumot, és visszaad egy objektumfogópontot.
Az eseményobjektum létrehozása után az alkalmazás az eseménykezelő használatával beállíthatja vagy várakozhatja az eseményt. A leíró mindaddig érvényes marad, amíg az alkalmazás bezárja vagy leállítja a leírót.
A legtöbb kernelobjektum több fogópontot támogat egyetlen objektumon. Az előző ábrán szereplő alkalmazás például további eseményobjektum-leírókat szerezhet be az OpenEvent függvénnyel, ahogyan az az alábbi ábrán látható.
Ez a módszer lehetővé teszi, hogy az alkalmazások különböző hozzáférési jogosultságokkal rendelkezzenek. Előfordulhat például, hogy az 1. leíró beállította és várakozta az eseményhez való hozzáférést, a 2. leíró pedig csak várakozási hozzáféréssel rendelkezik.
Ha egy másik folyamat ismeri az esemény nevét, és biztonsági hozzáféréssel rendelkezik az objektumhoz, saját eseményobjektum-kezelőt hozhat létre OpenEventhasználatával. A létrehozási alkalmazás a DuplicateHandle függvénnyel is duplikálhatja az egyik fogópontját ugyanabba a folyamatba vagy egy másik folyamatba.
Az objektumok mindaddig a memóriában maradnak, amíg legalább egy objektumfogópont létezik. Az alábbi ábrán az alkalmazások a CloseHandle függvénnyel zárják be az eseményobjektum-leírókat. Ha nincsenek eseménykezelők, a rendszer eltávolítja az objektumot a memóriából az alábbi ábrán látható módon.
A rendszer a többi kernelobjektumtól némileg eltérően kezeli a fájlobjektumokat. A fájlobjektumok tartalmazzák a fájlmutatót – a következő bájtra mutató mutatót, amelyet egy fájlban kell olvasni vagy írni. Amikor egy alkalmazás új fájlkezelőt hoz létre, a rendszer létrehoz egy új fájlobjektumot. Ezért egynél több fájlobjektum hivatkozhat egyetlen lemezen lévő fájlra, ahogyan az a következő ábrán is látható.
Csak duplikáció vagy öröklés révén több fájlkezelő is hivatkozhat ugyanarra a fájlobjektumra, ahogyan az az alábbi ábrán is látható.
Az alábbi táblázat felsorolja az egyes kernelobjektumokat, valamint az egyes objektumok létrehozói és romboló funkcióit. A létrehozó függvények vagy létrehozzák az objektumot és egy objektumfogópontot, vagy létrehoznak egy új meglévő objektumfogópontot. A romboló függvények bezárják az objektumfogópontot. Amikor egy alkalmazás bezárja az utolsó fogópontot egy kernelobjektumhoz, a rendszer eltávolítja az objektumot a memóriából.
Kapcsolódó témakörök