Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ovladače, které vytvářejí oddíly a zobrazení, které nemají být sdíleny s uživatelským režimem, musí při práci s oddíly a zobrazeními používat následující protokol:
Ovladač musí při otevření úchytu pro objekt oddílu použít popisovač jádra. Ovladače můžou zajistit, že popisovač je popisovač jádra buď jeho vytvořením v systémovém procesu, nebo zadáním atributu OBJ_KERNEL_HANDLE popisovače. Další informace naleznete v tématu Popisovače objektů.
Zobrazení musí být mapováno pouze ze systémového vlákna. (V opačném případě je zobrazení přístupné z procesu, ve kterém byl vytvořen.) Ovladač může zajistit, že zobrazení je namapováno ze systémového procesu, pomocí systémového pracovního vlákna pro provedení operace mapování. Další informace naleznete v tématu System Worker Threads and Driver Thread Context.
Ovladače, které sdílejí zobrazení s procesem uživatelského režimu, musí při práci s oddíly a zobrazeními používat následující protokol:
Ovladač, nikoli proces uživatelského režimu, musí vytvořit objekt oddílu a namapovat zobrazení.
Jak už bylo zmíněno dříve, ovladač musí při otevření úchytu pro sekci jádra použít popisovač jádra. Ovladače můžou zajistit, že popisovač je popisovač jádra buď jeho vytvořením v systémovém procesu, nebo zadáním atributu OBJ_KERNEL_HANDLE popisovače. Další informace naleznete v tématu Popisovače objektů.
Zobrazení je mapováno v kontextu vlákna procesu, který sdílí zobrazení. Ovladač nejvyšší úrovně může zaručit, že zobrazení je mapováno v kontextu aktuálního procesu provedením operace mapování v rutině dispatch, jako je DispatchDeviceControl. Rutiny odesílání ovladačů nižší úrovně běží v libovolném kontextu vlákna, a proto nelze bezpečně mapovat zobrazení v rutině odeslání. Další informace naleznete v tématu Kontext vlákna ovladače.
Všechny přístupy k paměti k zobrazení v rámci ovladače musí být chráněny bloky try-except. Aplikace v uživatelském režimu se zlými úmysly může zobrazení zrušit nebo změnit stav ochrany zobrazení. Způsobilo by pád systému, pokud by nebylo chráněno blokem try-except. Další informace naleznete v tématu Zpracování výjimek.
Ovladač také musí podle potřeby ověřit obsah zobrazení. Zapisovač ovladače nemůže předpokládat, že k zobrazení má přístup pouze důvěryhodná součást uživatelského režimu.
Ovladač, který musí sdílet objekt oddílu s aplikací v uživatelském režimu (který musí být schopen vytvořit vlastní zobrazení), musí používat následující protokol:
Ovladač, nikoli proces uživatelského režimu, musí vytvořit objekt oddílu. Ovladače nesmí nikdy používat deskriptor, který byl předán z uživatelského režimu.
Před předáním popisovače do uživatelského režimu musí ovladač volat ObReferenceObjectByHandle, aby získal odkaz na objekt oddílu. Tím zabráníte škodlivé aplikaci v odstranění objektu oddílu zavřením popisovače. Odkaz na objekt by měl být uložen v rozšíření zařízení ovladače.
Jakmile ovladač již nepoužívá objekt oddílu, musí volat ObDereferenceObject, aby uvolnil odkaz na objekt.
V systémech se systémem Microsoft Windows Server 2003 s aktualizací Service Pack 1 (SP1) a novějšími verzemi mohou otevřít pouze ovladače režimu jádra \Device\PhysicalMemory. Řidiči se ale mohou rozhodnout poskytnout popisovač uživatelské aplikaci. Aby se zabránilo problémům se zabezpečením, měly by mít přístup k \zařízení\PhysicalMemory pouze uživatelské aplikace, kterým ovladač důvěřuje.