IddCx-Objekte
Der IddCx (Indirect Display Driver Class eXtension) verwendet das erweiterbare UMDF-Objektmodell, um die Komponenten des indirekten Anzeigegeräts darzustellen. Das UMDF-Objektmodell ermöglicht es, den treiberspezifischen Speicher jedem IddCx-Objekt (und damit UMDF) zuzuordnen. Weitere Informationen finden Sie unter UMDF-Objektmodell .
Die Reihenfolge, in der IDD-Objekte erstellt werden, ist:
- Der Treiber erstellt zunächst ein IDDCX_ADAPTER-Objekt .
- Der Treiber erstellt dann ein IDDCX_MONITOR-Objekt .
- Nachdem die IDDCX_ADAPTER - und IDDCX_MONITOR-Objekte 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 die Rückruffunktion IddCxAdapterInitAsync auf.
- Das Betriebssystem ruft den EvtIddCxAdapterInitFinished DDI des Treibers auf, um die Initialisierung abzuschließen.
Das IDD-Modell verfügt nicht über einen expliziten Destroy-Adapterrückruf. Nachdem die Adapterinitialisierungssequenz erfolgreich abgeschlossen wurde, ist der Adapter gültig, bis das zum Initialisierungszeitpunkt übergebene UMDF-Gerät beendet wird. Beim Erstellen des Adapters stellt der Treiber statische Adapterinformationen zur indirekten Grafikkarte bereit.
Behandeln von Multifunktionsgeräten
Im einfachsten Fall gibt es eine 1:1-Zuordnung zwischen dem UMDF-Geräteobjekt, das vom Plug-and-Play-Subsystem für das angefügte indirekte Anzeigegerät erstellt wird, und dem IDDCX_ADAPTER Objekt, das der indirekte Anzeigetreiber (IDD) erstellt.
Es kann komplexere Szenarien geben, in denen ein einzelner indirekter Anzeige-Dongle mehrere Plug-and-Play-Geräte enthält. Beispielsweise kann eine indirekte Anzeigelösung über mehrere PnP-Gerätefunktionen wie mikrofon (Audiotreiber) und Kamera (Videotreiber) verfügen. In solchen Situationen liegt es in der Verantwortung der IDD, ein einzelnes IDDCX_ADAPTER-Objekt für die mehrere UMDF-Geräteobjekte zu erstellen, die für jedes PnP-Gerät erstellt wurden. Der Treiber muss in diesem Szenario Folgendes berücksichtigen:
- Die IDDCX_ADAPTER sollte erst erstellt werden, wenn alle PnP-Geräte, aus denen die indirekte Anzeigelösung besteht, erfolgreich gestartet wurden.
- Der Treiber muss beim Erstellen des Adapters ein einzelnes WDFDEVICE übergeben. Daher ist logik erforderlich, um zu entscheiden, welches UMDF-Gerät übergeben wird.
- Wenn eines der Geräte, aus denen die indirekte Grafikkarte besteht, einen Hardwarefehler aufweist, sollte der Treiber alle Geräte, aus denen der Adapter besteht, als fehlerhaft melden.
IDDCX_MONITOR
Dieses Objekt stellt einen bestimmten Monitor dar, der mit einem der Connectors auf der indirekten Grafikkarte verbunden ist.
Der Treiber erstellt das Monitorobjekt in einem zweistufigen Prozess:
- Zuerst wird der IddCxMonitorCreate-Rückruf aufgerufen, um das IDDCX_MONITOR -Objekt zu erstellen.
- Anschließend wird der IddCxMonitorArrival-Rückruf aufgerufen, um den Eingang des Monitors abzuschließen.
Wenn ein Monitor nicht angeschlossen ist, ruft der Treiber den IddCxMonitorDeparture-Rückruf auf, um zu melden, dass der Monitor nicht angeschlossen wurde, wodurch das IDDCX_MONITOR -Objekts zerstört wird. Selbst wenn derselbe Monitor nicht angeschlossen und dann wieder verbunden wird, muss die IddCxMonitorDeparture/IddCxMonitorArrival-Sequenz erneut aufgerufen werden.
Die IDDCX_MONITOR ist ein untergeordnetes Element des IDDCX_ADAPTER-Objekts .
IDDCX_SWAPCHAIN
Dieses Objekt stellt eine Swapchain dar, die Desktopbilder bereitstellt, die auf einem verbundenen Monitor angezeigt werden. Die Swapchain verfügt über mehrere Puffer, damit das Betriebssystem das nächste Desktopimage in einem Puffer zusammenstellen kann, während die IDD auf einen anderen Puffer zugreift. Die IDDCX_SWAPCHAIN ist ein untergeordnetes Element des IDDCX_MONITOR sodass einem bestimmten Monitor jederzeit nur eine swapchain zugewiesen ist.
Das Betriebssystem erstellt und zerstört die IDDCX_SWAPCHAIN-Objekte und weist sie monitoren mithilfe der Aufrufe EvtIddCxMonitorAssignSwapChain und EvtIddCxMonitorUnassignSwapChain zu.
IDDCX_OPMCTX
Dieses Objekt stellt einen aktiven OPM-Kontext (Output Protection Manager ) aus einem OPM-Kontext einer einzelnen Anwendung dar, den die Anwendung zum Steuern des Ausgabeschutzes auf einem einzelnen Monitor verwenden kann. Mehrere OPM-Kontexte können auf einem bestimmten Monitor gleichzeitig aktiv sein. Das Betriebssystem ruft den Treiber auf, um die OPM-Kontexte mithilfe der DDI-Aufrufe EvtIddCxMonitorOPMCreateProtectedOutput und EvtIddCxMonitorOPMDestroyProtectedOutput des Treibers zu erstellen und zu zerstören.