Sdílet prostřednictvím


Pokyny pro nulové relace pro ovladače UMDF

Počínaje systémem Windows Vista operační systém izoluje služby a systémové procesy v relaci 0, zatímco aplikace běží v následných, vyšších číslovaných relacích. Vzhledem k tomu, že hostitelský proces UMDF (WUDFHost.exe) je jedním ze systémových procesů, které běží v relaci 0, jsou ovladače UMDF izolované od aplikací. V důsledku toho musíte při vývoji ovladače použít následující pokyny:

  • Nevytvářejte prvek uživatelského rozhraní (UI), jako je například dialogové okno, ani nezáviste na vstupu uživatele. Vzhledem k tomu, že uživatel nepracuje v relaci 0, nevidí uživatelské rozhraní (UI) a nemůže na něj reagovat.

    Podobně s žádnými prvky uživatelského rozhraní manipulujte. Například ovladač UMDF nemůže v relaci uživatele vytvořit výčet oken.

  • Pokud ovladač musí komunikovat se službou, použijte mechanismus klienta nebo serveru, jako je vzdálené volání procedur (RPC) nebo pojmenované kanály.

  • Při volání funkcí v rozhraní API systému Windows buďte opatrní. Některé funkce mohou manipulovat s prvky uživatelského rozhraní nebo se pokusit přistoupit k pojmenovaným objektům v uživatelské relaci. Nevolejte funkce systému Windows, které byste nevolali ze služby v uživatelském režimu. Obecně platí, že ovladač UMDF může bezpečně volat funkce, které jsou exportovány v kernel32.dll, ale ne funkce exportované v user32.dll.

    Ovladač UMDF může volat funkce Systému Windows, které provádějí následující úlohy:

    • Ovladač může volat funkce SetupDiXxx k načtení vlastností Plug and Play zařízení. Například ukázkový ovladač UMDF pro OSR USB Fx2 Learning Kit volá SetupDiGetDeviceRegistryProperty k načtení identifikátoru GUID pro typ sběrnice zařízení. Poznámka Ovladač UMDF nemůže bezpečně volat mnoho funkcí SetupDiXxx , ale je bezpečné volat funkce, které načítají vlastnosti uzlu zařízení.

    • Ovladač, který načítá vstupně-výstupní požadavky z ruční fronty, může vytvořit periodický časovač pro dotazování fronty. Například ukázka WudfVhidmini zaregistruje rutinu zpětného volání časovače zavoláním CreateThreadpoolTimer a pak nastaví pravidelný časovač voláním SetThreadpoolTimer. Poznámka Od verze 1.11 poskytuje UMDF podporu zpracování úloh. Další informace naleznete v tématu Použití pracovních položek.

Další informace o používání systémových služeb mimo rámec naleznete v kapitole 14 ("Beyond the Frameworks") of Orwick, Penny a Guy Smith. Vývoj ovladačů pomocí Windows Driver Foundation Redmond, WA: Microsoft Press, 2007.

Další informace o nulové izolaci relace naleznete v tématu Dopad izolace relace 0 na služby a ovladače v systému Windows.