Verwenden von allgemeinen Frameworkobjekten
Das allgemeine Frameworkobjekt ist das Frameworkobjekt, von dem alle anderen Typen von Frameworkobjekten abgeleitet werden.
Wie andere Frameworkobjekte unterstützen allgemeine Objekte eine Verweisanzahl, einen Kontextbereich, Rückruffunktionen für Löschungen und ein übergeordnetes Objekt, wie unter Einführung in Frameworkobjekte beschrieben.
Treiber können allgemeine Frameworkobjekte erstellen und verwenden. Wenn Ihr Treiber WdfObjectCreate aufruft , um allgemeine Objekte zu erstellen, kann der Treiber:
Erstellen Sie einen oder mehrere Kontexträume für jedes allgemeine Objekt.
Sie können den Objektkontextbereich verwenden, um Informationen zu Systemressourcen zu speichern, die Sie dem allgemeinen Objekt zuordnen möchten.
Weitere Informationen zum Kontextbereich finden Sie unter Framework Object Context Space.
Weisen Sie dem allgemeinen Objekt ein übergeordnetes Objekt zu.
Das allgemeine Objekt wird gelöscht, wenn das übergeordnete Objekt gelöscht wird. Wenn Ihr Treiber beispielsweise ein Framework-Geräteobjekt als übergeordnetes Objekt eines seiner allgemeinen Objekte angibt, löscht das Framework das allgemeine Objekt, wenn es das Geräteobjekt löscht.
Treiber geben das übergeordnete Objekt eines Objekts an, indem der ParentObject-Member der WDF_OBJECT_ATTRIBUTES Struktur des Objekts festgelegt wird.
Stellen Sie Löschrückruffunktionen bereit.
Der Treiber kann die Funktionen EvtCleanupCallback und EvtDestroyCallback bereitstellen, die die Zuordnung von Systemressourcen aufheben können, die der Treiber beim Erstellen des allgemeinen Objekts zugeordnet hat. Wenn beispielsweise der Treiber exAllocatePool aufgerufen hat , als er ein allgemeines Objekt erstellt hat, kann die Rückruffunktion zum Bereinigen oder Zerstören ExFreePool aufrufen.
Die Verwendung allgemeiner Objekte kann eine bequeme Möglichkeit sein, vom Treiber zugewiesene Ressourcen zu verwalten. Beispielsweise kann ein Treiber auf höherer Ebene mehrere Speicherbelegungen zum Verarbeiten einer empfangenen E/A-Anforderung erfordern, wenn der Treiber die Anforderung an mehrere Geräte sendet oder die Anforderung in mehrere kleinere aufteilt. Der Treiber kann ein oder mehrere allgemeine Objekte erstellen, die untergeordnete Elemente der empfangenen E/A-Anforderung sind, und Informationen zu den Speicherbelegungen im Kontextbereich der allgemeinen Objekte speichern.