IddCx-Objekte
Die IddCx (Indirect Display Driver Class eXtension) verwendet das erweiterbare UMDF-Objektmodell zur Darstellung der verschiedenen Komponenten von indirekten Anzeigegeräten. Die UMDF Objektmodell kann der treiberspezifische Speicher mit jedem IddCx- (und damit UMDF-) Objekt verknüpft werden. Weitere Informationen finden Sie unter UMDF-Objektmodell.
Die Reihenfolge, in der IDD-Objekte erstellt werden, ist:
- Der Treiber erstellt zunächst eine IDDCX_ADAPTER Objekt.
- Der Treiber erstellt dann eine IDDCX_MONITOR Objekt.
- Sobald die objekte IDDCX_ADAPTER und IDDCX_MONITOR erstellt wurden, erstellt das Betriebssystem IDDCX_SWAPCHAIN und IDDCX_OPMCTX Objekte und sendet sie an den Treiber.
Die folgenden Abschnitte enthalten weitere Details zu diesen Objekten.
IDDCX_ADAPTER
Dieses Objekt stellt einen einzelnen logischen Anzeigeadapter dar, der vom Treiber in einem zweistufigen Prozess erstellt wird:
- Der Treiber ruft den IddCxAdapterInitAsync Rückruffunktion.
- Das Betriebssystem ruft den Treiber EvtIddCxAdapterInitFinished DDI, um die Initialisierung abzuschließen.
Das IDD-Modell hat keinen expliziten Callback zum Zerstören des Adapters. Nach erfolgreichem Abschluss der Adapterinitialisierungssequenz ist der Adapter so lange gültig, bis das zur Initialisierungszeit übergebene UMDF-Gerät gestoppt wird. Wenn der indirekte Anzeigetreiber (IDD) den Adapter erstellt, liefert er statische Adapterinformationen über den indirekten Anzeigeadapter.
Handhabung von Multifunktionsgeräten
Im einfachsten Fall gibt es eine Eins-zu-Eins-Zuordnung zwischen dem UMDF-Geräteobjekt, das vom Plug-and-Play-Subsystem für das angeschlossene indirekte Anzeigegerät erstellt wurde, und dem IDDCX_ADAPTER objekt, das die IDD erstellt.
Es kann komplexere Szenarien geben, in denen ein einziger indirekter Display-Dongle mehrere Plug-and-Play-Geräte enthält. Eine indirekte Anzeigelösung kann z. B. mehrere PnP-Gerätefunktionen wie ein Mikrofon (Audiotreiber) und eine Kamera (Videotreiber) aufweisen. In solchen Fällen ist die IDD für die Erstellung eines einzigen IDDCX_ADAPTER Objekt für die mehreren UMDF-Geräteobjekte, die für jedes PnP-Gerät erstellt wurden. Der Treiber muss die folgenden Punkte in diesem Szenario berücksichtigen:
- Die IDDCX_ADAPTER sollte erst erstellt werden, wenn alle PnP-Geräte, aus denen die indirekte Anzeigelösung besteht, erfolgreich gestartet sind.
- Der Fahrer muss eine einzige WDFDEVICE bei der Erstellung des Adapters, so dass er eine Logik benötigt, um zu entscheiden, welches UMDF-Gerät er weitergibt.
- Wenn eines der Geräte, die den indirekten Displayadapter bilden, einen Hardwarefehler aufweist, sollte der Treiber alle Geräte als fehlerhaft melden, die den Adapter bilden.
IDDCX_MONITOR
Dieses Objekt stellt einen bestimmten Monitor dar, der mit einem der Verbinder auf dem indirekten Anzeigeadapter verbunden ist.
Der Treiber erstellt das Monitorobjekt in einem zweistufigen Prozess:
- Sie ruft zunächst die IddCxMonitorCreate Callback zum Erstellen der IDDCX_MONITOR objekt.
- Es ruft dann die IddCxMonitorArrival Callback, um die Ankunft des Monitors abzuschließen.
Wenn ein Monitor ausgesteckt wird, ruft der Treiber die Funktion IddCxMonitorDeparture Callback, um es zu melden. Dieser Aufruf bewirkt, dass die IDDCX_MONITOR zu zerstörenden Objekts. Auch wenn derselbe Monitor vom Stromnetz getrennt und wieder angeschlossen wird, bleibt die IddCxMonitorDeparture/IddCxMonitorArrival sequenz muss erneut aufgerufen werden.
Die IDDCX_MONITOR ist ein Kind der IDDCX_ADAPTER objekt.
IDDCX_SWAPCHAIN
Dieses Objekt stellt eine swapchain die Desktop-Bilder zur Anzeige auf einem angeschlossenen Monitor bereitstellt. Die Swapchain hat mehrere Puffer, damit das Betriebssystem das nächste Desktop-Image in einem Puffer zusammenstellen kann, während die IDD auf einen anderen Puffer zugreift. Die IDDCX_SWAPCHAIN ist ein Kind der IDDCX_MONITOR so dass einem bestimmten Monitor immer nur eine Swapchain zugewiesen ist.
Das Betriebssystem erstellt und vernichtet die IDDCX_SWAPCHAIN Objekte und weist sie Monitoren zu bzw. hebt ihre Zuweisung auf, indem er die EvtIddCxMonitorAssignSwapChain und EvtIddCxMonitorUnassignSwapChain ruft.
IDDCX_OPMCTX
Dieses Objekt repräsentiert einen aktiven Output Protection Manager (OPM)-Kontext, der aus einem einzelnen Anwendungs-OPM-Kontext stammt und den die Anwendung nutzen kann, um den Ausgabeschutz auf einem einzelnen Monitor zu steuern. Mehrere OPM-Kontexte können gleichzeitig auf einem bestimmten Monitor aktiv sein. Das Betriebssystem ruft den Treiber auf, um die OPM-Kontexte zu erzeugen und zu zerstören, indem es die EvtIddCxMonitorOPMCreateProtectedOutput und EvtIddCxMonitorOPMDestroyProtectedOutput DDI ruft an.