UMDF DDI-Programmiermodell

Warnung

UMDF 2 ist die neueste Version von UMDF und ersetzt UMDF 1. Alle neuen UMDF-Treiber sollten mit UMDF 2 geschrieben werden. UMDF 1 werden keine neuen Features hinzugefügt, und die Unterstützung für UMDF 1 für neuere Versionen von Windows 10 ist eingeschränkt. Universelle Windows-Treiber müssen UMDF 2 verwenden.

Die archivierten UMDF 1-Beispiele finden Sie im Windows 11, Version 22H2 – Mai 2022 Treiberbeispiele Update.

Weitere Informationen finden Sie unter Erste Schritte mit UMDF.

Das Framework und der UMDF-Treiber kommunizieren über den UMDF DDI. Der UMDF-DDI ähnelt dem KMDF-DDI, mit der Ausnahme, dass der UMDF-DDI auf COM basiert. Daher verstehen Treiberautoren, die mit KMDF vertraut sind, UMDF.

Für jeden Typ von Frameworkobjekten definiert das UMDF eine Schnittstelle, über die Instanzen des Objekts bearbeitet werden können. Jede Schnittstelle unterstützt Methoden und Eigenschaften. Methoden definieren Aktionen, die im Namen des Objekts und der Eigenschaften festgelegt werden können, und rufen die Eigenschaften des Objekts ab. Einige Schnittstellen werden vom Framework implementiert, andere vom Treiber implementiert. Schnittstellen, die von einem Frameworkobjekt verfügbar gemacht werden, sind von der Form IWDF-Objekt<>, während die von einem Treiber verfügbar gemachten Ereignisrückrufschnittstellen der Form I-Objektaktion<>>< entsprechen, wobei <das Objekt> eine Warteschlange, eine Anforderung usw. darstellt und <die Aktion> angibt, was die Schnittstelle tut. Die Methoden der Rückrufschnittstellen beginnen mit "Ein".

Der UMDF-Treiber kommuniziert mit den Objekten des Frameworks über ihre Methoden und Eigenschaften. Das Framework kommuniziert mit dem Treiber über Ereignisbenachrichtigungen, bei denen es sich um Rückruffunktionen handelt, die das Framework aufrufen kann, um den Treiber über bestimmte Ereignisse zu benachrichtigen. Um Rückruffunktionen zu registrieren, kann der Treiber beispielsweise die folgenden Frameworkobjektmethoden aufrufen und einen Zeiger an die IUnknown-Schnittstelle übergeben, die allen Schnittstellen für die vom Treiber unterstützten Rückruffunktionen zugeordnet ist.

Betrachten Sie als Beispiel für die Kommunikation zwischen Treibern und Frameworks das Standard-E/A-Warteschlangenobjekt eines Geräts. Ein Treiber kann Methoden wie IWDFIoQueue::GetState aufrufen, um status Informationen zur E/A-Warteschlange abzurufen, oder IWDFIoQueue::RetrieveNextRequest, um eine Anforderung aus der E/A-Warteschlange abzurufen. Ein Treiber kann auch Benachrichtigungen für die E/A-Warteschlange anfordern, indem er die IWDFDevice::CreateIoQueue-Methode aufruft , um Rückrufschnittstellen wie IQueueCallbackRead und IQueueCallbackWrite zu registrieren. Die Methoden dieser Schnittstellen werden anschließend vom Framework aufgerufen, wenn eine Anwendung Lese- und Schreibanforderungen sendet.

Das Framework stellt alle erforderlichen Synchronisierungen für Treiberrückrufmethoden bereit. Standardmäßig wird das Framework auf Geräteobjektebene synchronisiert. Das heißt, das Framework ruft die Ereignisrückrufmethoden nicht gleichzeitig auf oder unterhalb der Geräteobjektebene auf. Ein Treiber kann diese Standardeinstellung überschreiben, indem keine Synchronisierung angefordert wird. Weitere Informationen finden Sie unter Angeben eines Rückrufsynchronisierungsmodus.