Freigeben über


Verwenden von Gerätepooling in UMDF-Treibern

User-Mode Driver Framework (UMDF) Version 1.11 und 2.0

Wenn Ihr User-Mode Driver Framework (UMDF)-Treiber mit Version 1.11 oder 2.0 erstellt wurde und unter Windows 8 oder höher ausgeführt wird, erstellt das Framework eine einzelne Instanz von Wudfhost, die mehrere Gerätestapel hosten kann. Diese Technik wird als Gerätepooling bezeichnet. Der Hauptvorteil der Gerätepooling ist eine geringere Arbeitsspeichernutzung in einer Umgebung mit mehreren UMDF-Geräten.

Wenn ein Poolgerät fehlschlägt, beendet das Framework die Instanz von Wudfhost und versucht, alle Geräte neu zu starten, die sich zuvor im Pool befanden. Wenn das Gerät beim Pool erneut fehlschlägt, erstellt das Framework einen separaten Wudfhost-Prozess für das Gerät und versucht, das Gerät erneut zu starten.

Wenn das Gerät im separaten Hostprozess fehlschlägt, versucht das Framework, es bis zu fünf Mal neu zu starten. Das Framework setzt die Anzahl der Gerätefehler auf eine zurück, wenn dreißig Minuten seit dem letzten Fehler verstrichen sind.

Wenn das System neu gestartet wird, werden geräte vom Framework neu gruppiert, mit Ausnahme von Geräten, die bei der Ausführung in einem separaten Prozess fehlgeschlagen sind.

Verwenden Sie zum Deaktivieren des Gerätepools für ein bestimmtes Gerät die UmdfHostProcessSharing-Direktive im WDF-spezifischen DDInstall-Abschnitt der INF.To disable device pooling for a specific device, use the UmdfHostProcessSharing directive in the WDF-specific DDInstall section of the INF. Informationen zu UmdfHostProcessSharing finden Sie unter Angeben von WDF-Direktiven in INF-Dateien.

Wenn Ihr Treiber direkte E/A verwendet, müssen Sie UmdfHostProcessSharing auf ProcessSharingDisabled festlegen. Andernfalls kann Ihr Treiber möglicherweise nicht starten. Wenn WdfDeviceIoBufferedOrDirect ausgewählt ist und das Gerät gruppiert wird, ändert das Framework die Pufferzugriffsmethode in gepufferte E/A-Vorgänge. Wenn WdfDeviceIoBufferedOrDirect ausgewählt ist und das Gerät nicht in einem Pool zusammengefasst ist, ändert das Framework die Pufferzugriffsmethode in direkte E/A.

Um eine Pufferzugriffsmethode auszuwählen, muss Ihr Treiber die IWDFDeviceInitialize2::SetIoTypePreference-Methode aus der IDriverEntry::OnDeviceAdd-Rückruffunktion aufrufen. Informationen zu Zugriffsmethoden finden Sie unter "Zugreifen auf Datenpuffer" in UMDF-Based-Treibern.

UMDF-Versionen 1.9 und früher

Wenn Ihr Treiber mit UMDF Version 1.9 oder einer früheren Version erstellt wurde, erstellt das Framework eine separate Instanz des Hostprozesses (Wudfhost) für jeden Gerätestapel.

Wenn das Gerät nicht gestartet werden kann, versucht das Framework, es bis zu fünf Mal neu zu starten. Das Framework setzt die Anzahl der Gerätefehler auf eine zurück, wenn dreißig Minuten seit dem letzten Fehler verstrichen sind.

In einer nicht-gemeinschaftlich genutzten Umgebung, wenn mehrere Gerätestapel denselben UMDF-Treiber gemeinsam nutzen:

Wenn mehrere Gerätestapel in einer Poolumgebung denselben Benutzermodustreiber gemeinsam nutzen:

Da nur ein Treiberobjekt in einer poolbasierten Konfiguration vorhanden ist, darf der Treiber keinen Gerätekontext in globalen Variablen oder in Objekten speichern, die auf allen Geräten gemeinsam verwendet werden, z. B. das Treiberrückrufobjekt. Stattdessen muss der Treiber den Kontext pro Gerät in einem Objekt speichern, das nicht zwischen den Gerätestapeln gemeinsam genutzt wird, z. B. das Geräterückrufobjekt des Treibers.