Objekty jádra
Popisovače objektů jádra jsou specifické pro procesy. To znamená, že proces musí buď vytvořit objekt, nebo otevřít existující objekt, aby získal popisovač objektu jádra. Omezení jednotlivých procesů u popisovačů jádra je 2^24. Popisovače jsou však uloženy ve stránkovaném fondu, takže skutečný počet popisovačů, které můžete vytvořit, je založený na dostupné paměti. Počet popisovačů, které můžete vytvořit v 32bitovém systému Windows, je výrazně nižší než 2^24.
Jakýkoli proces může vytvořit nový popisovač existujícího objektu jádra (dokonce i jednoho vytvořeného jiným procesem), za předpokladu, že proces zná název objektu a má k objektu přístup zabezpečení. Mezi popisovače objektů jádra patří přístupová práva, která označují akce, které lze procesu udělit nebo zamítnout. Aplikace určuje přístupová práva při vytváření objektu nebo získá existující popisovač objektu. Každý typ objektu jádra podporuje vlastní sadu přístupových práv. Například obslužné rutiny událostí můžou mít nastavený nebo čekací přístup (nebo obojí), popisovače souborů můžou mít přístup pro čtení nebo zápis (nebo obojí) atd. Další informace naleznete v tématu zabezpečitelné objekty.
Na následujícím obrázku aplikace vytvoří objekt události. Funkce CreateEvent vytvoří objekt události a vrátí popisovač objektu.
Po vytvoření objektu události může aplikace použít popisovač události k nastavení nebo čekání na událost. Popisovač zůstane platný, dokud aplikace nezavře popisovač nebo ji ukončí.
Většina objektů jádra podporuje více popisovačů jednoho objektu. Například aplikace na předchozím obrázku by mohla získat další obslužné rutiny objektu události pomocí funkce OpenEvent, jak je znázorněno na následujícím obrázku.
Tato metoda umožňuje aplikaci, aby měla popisovače s různými přístupovými právy. Například popisovač 1 může mít nastavený a čekat přístup k události a popisovač 2 může mít pouze čekací přístup.
Pokud jiný proces zná název události a má k objektu přístup zabezpečení, může vytvořit vlastní popisovač objektu události pomocí OpenEvent. Vytvoření aplikace může také duplikovat jeden z jeho popisovačů do stejného procesu nebo do jiného procesu pomocí funkce DuplicateHandle.
Objekt zůstává v paměti, dokud existuje alespoň jeden popisovač objektu. Na následujícím obrázku aplikace používají funkci CloseHandle k zavření popisovačů objektu události. Pokud neexistují žádné obslužné rutiny událostí, systém odebere objekt z paměti, jak je znázorněno na následujícím obrázku.
Systém spravuje objekty souborů trochu jinak než jiné objekty jádra. Objekty souboru obsahují ukazatel souboru – ukazatel na další bajt, který se má přečíst nebo zapsat do souboru. Pokaždé, když aplikace vytvoří nový popisovač souboru, systém vytvoří nový objekt souboru. Proto může více než jeden objekt souboru odkazovat na jeden soubor na disku, jak je znázorněno na následujícím obrázku.
Pouze prostřednictvím duplikace nebo dědičnosti může více než jeden popisovač souboru odkazovat na stejný objekt souboru, jak je znázorněno na následujícím obrázku.
Následující tabulka uvádí všechny objekty jádra spolu s funkcemi tvůrce a destroyeru jednotlivých objektů. Funkce tvůrce buď vytvoří objekt a popisovač objektu, nebo vytvoří nový existující popisovač objektu. Funkce destroyeru zavře popisovač objektu. Když aplikace zavře poslední popisovač objektu jádra, systém odebere objekt z paměti.
Související témata