Overzicht van indirect beeldschermstuurprogramma

Het model voor indirect beeldschermstuurprogramma (IDD) biedt een eenvoudig stuurprogrammamodel in de gebruikersmodus ter ondersteuning van monitors die niet zijn verbonden met traditionele GPU-beeldschermuitvoer. Enkele typische scenario's waarbij een IDD is vereist, zijn onder andere:

  • De uitvoer van de weergave via een netwerk streamen naar een externe client (extern beeldscherm).
  • Virtuele monitors maken voor toepassingen zoals virtuele bureaubladomgevingen (virtuele schermen).
  • Sluit een dongle via USB aan op een pc waaraan een gewone monitor (VGA, DVI, HDMI, DP, enzovoort) is aangesloten.

IDD-implementatie

Een IDD is het UMDF-stuurprogramma van derden voor het apparaat. U kunt een IDD ontwikkelen met behulp van de functionaliteit die wordt weergegeven door de IddCx (Indirect Display Driver Class eXtension) om op de volgende manieren te interfaceren met de Windows-grafische subsystemen:

  • Maak de grafische adapter die het indirecte beeldschermapparaat vertegenwoordigt.
  • Rapportmonitors worden verbonden en losgekoppeld van het systeem.
  • Geef beschrijvingen op van de verbonden monitors.
  • Geef beschikbare weergavemodi op.
  • Ondersteuning voor andere weergavefuncties, zoals hardwaremuiscursor, gamma, I2C-communicatie en beveiligde inhoud.
  • De bureaubladafbeeldingen verwerken die op de monitor moeten worden weergegeven.

Omdat een IDD een UMDF-stuurprogramma is, is het ook verantwoordelijk voor het implementeren van alle UMDF-functionaliteit , zoals apparaatcommunicatie, energiebeheer, plug en play, enzovoort.

De IDD wordt uitgevoerd in sessie 0 zonder onderdelen die in de gebruikerssessie worden uitgevoerd, zodat instabiliteit van stuurprogramma's geen invloed heeft op de stabiliteit van het systeem als geheel.

Het volgende diagram biedt een architectuuroverzicht.

Diagram met het indirecte weergavestuurprogramma in de UMDF-architectuur.

Gebruikersmodusmodel

De IDD maakt gebruik van een gebruikersmodusmodel en biedt geen ondersteuning voor kernelmodusonderdelen. Met dit model kan het stuurprogramma elke DirectX API gebruiken om de bureaubladafbeelding te verwerken. IddCx biedt het bureaubladbeeld voor codering in een DirectX-oppervlak.

Het stuurprogramma mag geen API's voor de gebruikersmodus aanroepen die niet geschikt zijn voor het gebruik van stuurprogramma's, zoals GDI, venster-API's, OpenGL of Vulkan.

Bouw de IDD als een universeel Windows-stuurprogramma , zodat u deze op meerdere Windows-platforms kunt gebruiken.

Tijdens de build:

  • De UMDF IDD declareert de versie van IddCx op basis waarvan deze is gebouwd.
  • Het besturingssysteem zorgt ervoor dat de juiste versie van IddCx wordt geladen wanneer het stuurprogramma wordt geladen.

IddCx-callback- en functienaamconventies

Voorvoegsel Typ Opmerkingen
EVT_IDD_CX_XXX IdD callback, functie IdD's implementeren zowel IddCx-specifieke callbacks zoals EVT_IDD_CX_ADAPTER_COMMIT_MODES, als relevante WDF-callbacks, zoals EVT_WDF_DEVICE_D0_EXIT.
IddCxXxx Functie Door het systeem geleverde IddCx-klasseextensiefuncties die IDD's kunnen aanroepen; Bijvoorbeeld IddCxAdapterInitAsync.
PFN_IDDCX_XXX Aanwijzers naar iddCx-functies IDD's gebruiken deze aanwijzers niet. In plaats daarvan moeten stuurprogramma's de equivalente IddCxXxx-functies gebruiken.

Voorbeeldcode

Microsoft biedt een voorbeeld-IDD-implementatie op GitHub voor Windows-stuurprogrammavoorbeelden. In dit voorbeeld ziet u hoe u een monitor verbindt, hoe u reageert op een modusset en hoe u frames ontvangt.