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 über USB an einen PC, der mit einem Standardmonitor (VGA, DVI, HDMI, DP usw.) verbunden ist.

IDD-Implementierung

Eine IDD ist der von Drittanbietern bereitgestellte UMDF-Treiber für das Gerät. Sie können eine IDD entwickeln, indem Sie die Funktionalität verwenden, 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.

Diagram that shows the indirect display driver within the UMDF architecture.Diagramm, das den indirekten Anzeigetreiber innerhalb der UMDF-Architektur zeigt.

Benutzermodusmodell

Die IDD verwendet ein Benutzermodusmodell und unterstützt keine Kernelmoduskomponenten. Mit diesem Modell kann der Treiber alle DirectX-APIs verwenden, um das Desktopimage zu verarbeiten. IddCx stellt 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.

Erstellen Sie die IDD als universellen Windows-Treiber , damit Sie sie auf mehreren Windows-Plattformen verwenden können.

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.