Freigeben über


Übersicht über den indirekten Displaytreiber

Das Treibermodell für indirekte Anzeigen (IDD) bietet ein einfaches Treibermodell für den Benutzermodus zur Unterstützung von Monitoren, die nicht mit herkömmlichen GPU-Anzeigeausgaben verbunden sind. Einige typische Szenarien, in denen eine IDD erforderlich ist, umfassen:

  • Streamen der Anzeigeausgabe über ein Netzwerk an einen Remoteclient (Remoteanzeige).
  • Erstellen virtueller Monitore für Anwendungen wie virtuelle Desktopumgebungen (virtuelle Displays).
  • Anschließen eines Dongles an einen PC über USB, der einen normalen Monitor (VGA, DVI, HDMI, DP usw.) angeschlossen hat.

IDD-Implementierung

Eine IDD ist der von Drittanbietern bereitgestellte UMDF-Treiber für das Gerät. Sie können eine IDD mithilfe der Funktionalität entwickeln, die vom IddCx (Indirect Display Driver Class eXtension) zur Schnittstelle mit den Windows-Grafiksubsystemen auf folgende Weise verfügbar gemacht wird:

  • Erstellen Sie den Grafikadapter, der das indirekte Anzeigegerät darstellt.
  • Berichtsmonitore, die verbunden und vom System getrennt werden.
  • Geben Sie Beschreibungen der angeschlossenen Monitore an.
  • Stellen Sie verfügbare Anzeigemodi bereit.
  • Unterstützen Sie andere Anzeigefunktionen, z. B. Hardware-Mauscursor, Gamma, I2C-Kommunikation und geschützte Inhalte.
  • Verarbeiten Sie die Desktopbilder, die auf dem Monitor angezeigt werden sollen.

Da es sich bei einer IDD um einen UMDF-Treiber handelt, ist er auch für die Implementierung aller UMDF-Funktionen wie Gerätekommunikation, Energieverwaltung, Plug-and-Play usw. verantwortlich.

Die IDD wird in Sitzung 0 ohne Komponenten ausgeführt, die in der Benutzersitzung ausgeführt werden, sodass sich die Instabilität eines Treibers nicht auf die Stabilität des Systems insgesamt auswirkt.

Das folgende Diagramm bietet einen Überblick über die Architektur.

Diagramm, das den indirekten Anzeigetreiber innerhalb der UMDF-Architektur zeigt.

Benutzermodusmodell

Die IDD ist ein Nur-Benutzermodus-Modell ohne Unterstützung für Kernelmoduskomponenten. Der Treiber kann daher alle DirectX-APIs verwenden, um das Desktopimage zu verarbeiten. Tatsächlich stellt IddCx das Desktopimage bereit, das in einer DirectX-Oberfläche codiert werden soll.

Der Treiber sollte keine Benutzermodus-APIs aufrufen, die nicht für die Treiberverwendung geeignet sind, z. B. GDI, Fenster-APIs, OpenGL oder Vulkan.

Die IDD sollte als universeller Windows-Treiber erstellt werden, damit sie auf mehreren Windows-Plattformen verwendet werden kann.

Zur Buildzeit:

  • Die UMDF-IDD deklariert die Version von IddCx, für die sie erstellt wurde.
  • Das Betriebssystem stellt sicher, dass die richtige Version von IddCx geladen wird, wenn der Treiber geladen wird.

IddCx-Rückruf- und Funktionsbenennungskonventionen

Präfix type Notizen
EVT_IDD_CX_XXX IDD-Rückruffunktion IDDs implementieren sowohl IddCx-spezifische Rückrufe wie EVT_IDD_CX_ADAPTER_COMMIT_MODES als auch relevante WDF-Rückrufe wie EVT_WDF_DEVICE_D0_EXIT.
IddCxXxx Funktion Vom System bereitgestellte IddCx-Klassenerweiterungsfunktionen, die IDDs aufrufen können; Beispiel: IddCxAdapterInitAsync.
PFN_IDDCX_XXX Zeiger auf die IddCx-Funktionen IDDs verwenden diese Zeiger nicht. Stattdessen sollten Treiber die entsprechenden IddCxXxx-Funktionen verwenden.

Beispielcode

Microsoft stellt eine Beispiel-IDD-Implementierung auf dem GitHub für Windows-Treiberbeispiele bereit. In diesem Beispiel wird veranschaulicht, wie Sie einen Monitor verbinden, wie sie auf einen Modussatz reagieren und wie Frames empfangen werden.