Architektur von UMDF
In diesem Thema wird beschrieben, wie der Treiber-Manager einen Gerätestapel im Benutzermodus erstellt und wie der Hostprozess, reflektor und Treiber-Manager eine E/A-Anforderung verarbeiten, die eine Anwendung an einen UMDF-Treiber (User-Mode Driver Framework) sendet.
Ähnlich wie bei einem Kernelmodusstapel wird das Erstellen und Abreißen eines Benutzermodusstapels durch Plug & Play (PnP)-Ereignisse gesteuert. Nachdem der Kernelmodusstapel erstellt wurde, benachrichtigt der Reflektor den Treiber-Manager, mit der Erstellung des Benutzermodusstapels zu beginnen. Der Treiber-Manager startet den Treiberhostprozess und stellt dem gestarteten Prozess ausreichende Informationen bereit, um den Benutzermodusstapel zu erstellen. Auf diese Weise kann der Benutzermodusstapel als Erweiterung des Kernelmodusstapels betrachtet werden.
Der Treiberhostprozess stellt die Ausführungsumgebung für Benutzermodustreiber bereit und leitet Nachrichten zwischen Treibern im Benutzermodusstapel weiter. Der Reflektor verwendet einen nachrichtenbasierten Interprozesskommunikationsmechanismus für die Kommunikation mit dem Treiber-Manager und dem Hostprozess.
Um eine E/A-Anforderung an einen UMDF-Treiber zu senden, ruft eine Anwendung eine Win32-Datei-E/A-Funktion auf, z. B. CreateFile, ReadFileEx, CancelIoEx oder DeviceIoControl. Wenn der Reflektor eine Anforderung von der Clientanwendung empfängt, sendet er die Anforderung an den entsprechenden Treiberhostprozess. Der Treiberhostprozess leitet die Anforderung dann an den Anfang des richtigen Gerätestapels im Benutzermodus weiter.
Die Anforderung wird entweder von einem der Treiber im Benutzermodusstapel abgeschlossen oder von einem der Treiber zurück an den Reflektor weitergeleitet. Wenn der Reflektor eine Anforderung vom Treiberstapel im Benutzermodus empfängt, sendet er die Anforderung zur Vervollständigung nach unten im Kernelmodusstapel.