WDF-Architektur

WDF stellt objektbasierte Schnittstellen für Treiber bereit. Vom Framework definierte Objektschnittstellen bestehen aus:

Objektmethoden
Methoden sind Funktionen, die ein Treiber aufrufen kann, um einen Vorgang für das Objekt auszuführen oder eine Objekteigenschaft abzurufen oder festzulegen. Methoden heißen WdfObjectAction, wobei Object das Objekt beschreibt und Action angibt, was die Funktion ausführt. Beispielsweise erstellt WdfDeviceCreate ein Geräteobjekt.

Objektereignisrückruffunktionen
Ereignisrückruffunktionen sind Funktionen, die ein Treiber bereitstellt. Jede Ereignisrückruffunktion ist einem bestimmten Ereignis zugeordnet, das für ein Objekt auftreten kann. Das Framework ruft die Ereignisrückruffunktion auf, wenn das zugeordnete Ereignis auftritt. Gemäß der Konvention werden die Platzhalter für Ereignisrückruffunktionen als EvtObjectEvent bezeichnet, obwohl Sie diese Rückrufe beliebig benennen können, die Sie in Ihrem Treiber auswählen. Beispielsweise registriert ein Treiber den EvtDeviceD0Entry-Ereignisrückruf , um benachrichtigt zu werden, wenn sein Gerät in den Arbeitszustand wechselt.

Objekteigenschaften
Eigenschaften sind Werte, die in einem -Objekt gespeichert werden und die ein Treiber abrufen (d. a. abrufen) und festlegen kann (d. a. Ändern). In vielen Fällen werden Eigenschaften direkt den Feldern in den entsprechenden WDM-Objekten zugeordnet. Eigenschaften, die nicht fehlschlagen können, heißen WdfObjectGetValue und WdfObjectSetValue, und Eigenschaften, die fehlschlagen können, heißen WdfObjectRetrieveValue und WdfObjectAssignValue. Object beschreibt das -Objekt, und Value identifiziert die Daten, die die Funktion festlegt oder zurückgibt. Beispielsweise gibt WdfDeviceGetDriver ein Handle an das Treiberobjekt zurück, das dem Geräteobjekt zugeordnet ist.

Objekthandles
Ein frameworkbasierter Treiber greift nie direkt auf Frameworkobjekte zu. Stattdessen empfängt der Treiber Objekthandles, die er an die Methoden eines Objekts übergeben kann.

Das Framework definiert mehrere Objekttypen, die frameworkbasierte Treiber verwenden:

  • Ein Frameworktreiberobjekt stellt jeden Treiber dar.

  • Ein Framework-Geräteobjekt stellt jedes Gerät dar, das von einem Treiber unterstützt wird.

  • Framework-Warteschlangenobjekte stellen E/A-Warteschlangen dar, die E/A-Anforderungen eines Geräts empfangen.

  • Framework-Anforderungsobjekte stellen E/A-Anforderungen dar, die jede E/A-Warteschlange empfängt.

Eine Liste aller Objekte, die vom Framework definiert werden, finden Sie unter Zusammenfassung der Frameworkobjekte.