Översikt över indirekt visningsdrivrutin

Modellen för indirekt visningsdrivrutin (IDD) tillhandahåller en enkel drivrutinsmodell i användarläge som stöder bildskärmar som inte är anslutna till traditionella GPU-visningsutdata. Några vanliga scenarier där ett IDD krävs är:

  • Strömma visningsutdata via ett nätverk till en fjärrklient (fjärrvisning).
  • Skapa virtuella övervakare för program som virtuella skrivbordsmiljöer (virtuella skärmar).
  • Ansluta en dongel till en dator via USB som har en vanlig bildskärm (VGA, DVI, HDMI, DP och så vidare) ansluten till den.

IDD-genomförande

Ett IDD är den UMDF-drivrutin som tillhandahålls av tredje part för enheten. Du kan utveckla ett IDD med hjälp av de funktioner som exponeras av IddCx (Indirect Display Driver Class eXtension) för att interagera med Windows-grafikundersystemen på följande sätt:

  • Skapa grafikkortet som representerar den indirekta visningsenheten.
  • Övervakar anslutningar och frånkopplingar av bildskärmar från systemet.
  • Ange beskrivningar av de anslutna övervakarna.
  • Ange tillgängliga visningslägen.
  • Stöd för andra visningsfunktioner, till exempel maskinvarumusmarkör, gamma, I2C-kommunikation och skyddat innehåll.
  • Bearbeta skrivbordsbilderna så att de visas på bildskärmen.

Eftersom ett IDD är en UMDF-drivrutin ansvarar den även för att implementera alla UMDF-funktioner som enhetskommunikation, energisparfunktioner, plug and play och så vidare.

IDD körs i session 0 utan att några komponenter körs i användarsessionen, vilket innebär att eventuell instabilitet hos drivrutinen inte påverkar systemets stabilitet som helhet.

Följande diagram innehåller en arkitekturöversikt.

Diagram som visar den indirekta visningsdrivrutinen i UMDF-arkitekturen.

Användarlägesmodell

IDD använder en modell för användarläge och stöder inte komponenter i kärnläge. Med den här modellen kan drivrutinen använda alla DirectX-API:er för att bearbeta skrivbordsavbildningen. IddCx tillhandahåller skrivbordsbilden för kodning på en DirectX-yta.

Drivrutinen ska inte anropa användarläges-API:er som inte är lämpliga för drivrutinsanvändning, till exempel GDI, fönster-API:er, OpenGL eller Vulkan.

Skapa IDD:t som en universell Windows-drivrutin så att du kan använda det på flera Windows-plattformar.

Vid byggtid:

  • UMDF-ID:t deklarerar den version av IddCx som den skapades mot.
  • Operativsystemet ser till att rätt version av IddCx läses in när drivrutinen läses in.

IddCx-återanrop och namngivningskonventioner för funktioner

Prefix Typ Noteringar
EVT_IDD_CX_XXX IDD-återanropsfunktion IDD:n implementerar både IddCx-specifika återanrop, till exempel EVT_IDD_CX_ADAPTER_COMMIT_MODES, och relevanta WDF-återanrop, till exempel EVT_WDF_DEVICE_D0_EXIT.
IddCxXxx Funktion Systemspecifika IddCx-klasstilläggsfunktioner som IDD:er kan anropa. till exempel IddCxAdapterInitAsync.
PFN_IDDCX_XXX Pekare till IddCx-funktioner IDD:erna använder inte dessa pekare. I stället bör drivrutiner använda motsvarande IddCxXxx-funktioner .

Exempelkod

Microsoft tillhandahåller en exempelimplementering av IDD på GitHub för Windows-drivrutinsexempel. Det här exemplet visar hur du ansluter en bildskärm, hur du svarar på en lägesinställning och hur du tar emot bildrutor.