Freigeben über


Richtlinien für sitzungsfreie Sitzungen für UMDF-Treiber

Ab Windows Vista isoliert das Betriebssystem Dienste und Systemprozesse in Sitzung 0, während Anwendungen in nachfolgenden Sitzungen mit höherer Nummerierung ausgeführt werden. Da der UMDF-Hostprozess (WUDFHost.exe) einer der Systemprozesse ist, die in Sitzung 0 ausgeführt werden, sind UMDF-Treiber von Anwendungen isoliert. Daher müssen Sie bei der Entwicklung Des Treibers die folgenden Richtlinien verwenden:

  • Erstellen Sie kein Benutzeroberflächenelement ,z. B. ein Dialogfeld, oder hängen Sie von Benutzereingaben ab. Da der Benutzer in Sitzung 0 nicht ausgeführt wird, wird die Benutzeroberfläche nie angezeigt und kann nicht darauf reagieren.

    Bearbeiten Sie ebenso keine Ui-Elemente. Beispielsweise kann ein UMDF-Treiber keine Fenster in der Sitzung des Benutzers aufzählen.

  • Wenn Ihr Treiber mit einem Dienst kommunizieren muss, verwenden Sie einen Client/Server-Mechanismus, z. B. remote procedure call (RPC) oder Named Pipes.

  • Gehen Sie beim Aufrufen von Funktionen in der Windows-API vorsichtig vor. Einige Funktionen können UI-Elemente bearbeiten oder versuchen, in der Sitzung eines Benutzers auf benannte Objekte zuzugreifen. Rufen Sie keine Windows-Funktionen auf, die Sie nicht von einem Benutzermodusdienst aufrufen würden. In der Regel kann ein UMDF-Treiber funktionen, die in kernel32.dll exportiert werden, sicher aufrufen, aber keine Funktionen, die in user32.dll exportiert werden.

    Ein UMDF-Treiber kann Windows-Funktionen aufrufen, um die folgenden Aufgaben auszuführen:

    • Ein Treiber kann SetupDiXxx-Funktionen aufrufen, um eine Plug & Play-Geräteeigenschaft abzurufen. Beispielsweise ruft das UMDF-Beispieltreiber für OSR USB Fx2 Learning KitSetupDiGetDeviceRegistryProperty auf, um die GUID für den Bustyp des Geräts abzurufen. Hinweis Ein UMDF-Treiber kann viele der SetupDiXxx-Funktionen nicht sicher aufrufen, aber es ist sicher, Funktionen aufzurufen, die Geräteknoteneigenschaften abrufen.

    • Ein Treiber, der E/A-Anforderungen aus einer manuellen Warteschlange abruft, kann einen regelmäßigen Timer zum Abfragen der Warteschlange erstellen. Beispielsweise registriert das WudfVhidmini-Beispiel eine Timerrückrufroutine, indem CreateThreadpoolTimer aufgerufen wird, und legt dann einen regelmäßigen Timer fest, indem SetThreadpoolTimer aufgerufen wird. Hinweis Ab Version 1.11 bietet UMDF Unterstützung für Arbeitselemente. Weitere Informationen finden Sie unter Verwenden von Arbeitselementen.

Weitere Informationen zur Verwendung von Systemdiensten außerhalb der Frameworks finden Sie in Kapitel 14 ("Beyond the Frameworks") von Orwick, Penny und Guy Smith. Entwickeln von Treibern mit windows Driver Foundation. Redmond, WA: Microsoft Press, 2007.

Weitere Informationen zur Isolation von Sitzungen ohne Sitzung finden Sie unter Auswirkungen der Isolation von Sitzung 0 auf Dienste und Treiber in Windows.