Dela via


Felsöka indirekta visningsdrivrutiner

Indirect Displays-drivrutiner (IDD) är UMDF-drivrutiner. Därför är UMDF-felsökningsdokumentationen, såsom Fastställa varför UMDF-drivrutinen inte kan läsas in eller om UMDF-enheten inte startar, en bra utgångspunkt. Den här sidan innehåller indirekt visningsspecifik felsökningsinformation.

Registerkontroll

Indirect Display Driver Class eXtension (IddCx) har vissa registerinställningar som kan användas för felsökning av IDD:er. Alla registervärden finns under HKLM\System\CurrentControlSet\Control\GraphicsDrivers registernyckel.

Värdenamn Detaljer
TerminateIndirectOnStall Ett nollvärde inaktiverar den vakthund som avslutar drivrutinen om den inte bearbetar en ram inom 10 sekunder efter att ramen är tillgänglig. Alla andra värden håller vakthunden aktiverad.
IddCxDebugCtrl Bitfält som aktiverar olika felsökningsaspekter av IddCx. Se följande tabell.

Notis

Om registervärdet TerminateIndirectOnStall används för att inaktivera vakthunden misslyckas HLK-testerna.

IddCxDebugCtrl-värden

Bit i IddCxDebugCtrl Betydelse
0x0001 Gå in i felsökningsprogrammet när IddCx identifierar ett fel
0x0002 Steg in i felsökningsprogrammet när IddCx läses in
0x0004 Avbryt till felsökningsprogrammet när IddCx avlastas
0x0008 Anslut till felsökaren när IddCx DriverEntry anropas
0x0010 Gå in i felsökningsprogrammet när drivrutinsbindning anropas
0x0020 Bryta dig in i felsökningsprogrammet när drivrutinsstarten anropas
0x0040 Gå in i debuggern när en drivrutin avlänkning sker
0x0080 Inaktiverar DDI-vakthunden, som avslutar drivrutiner som tar för lång tid med DDI-anrop.
0x0100 Oanvänd
0x0200 Aktivera felsökningsöverlägg, se följande anteckning
0x0400 Överlägg färgad alfaruta över smutsiga rektar i ramen; kräver att 0x0200 anges
0x0800 Överlagringsprestandastatistik på bildruta
0x2000 IddCx frågar registervärdena för inspelningsramarna varje bildruta. Kräver att 0x0200 anges

Not

För att någon av överläggsfunktionerna ska fungera måste Direct3D-enheten som skapas av drivrutinen och skickas till IddCxSwapChainSetDevice skapas med flaggan D3D11_CREATE_DEVICE_BGRA_SUPPORT.

IddCx WPP-spårningar

Iddcx använder WPP-infrastruktur för att logga felsökningsinformation. WPP-information kan samlas in i en fil, och medan den här avbildningen pågår kan den visas i kernelfelsökaren.

Infångning av IddCx WPP-spårning

Det finns flera sätt att aktivera WPP-spårning. Ett praktiskt sätt är att använda det inbyggda logman.exe-programmet. Om du kopierar följande rader till en batchfil och kör den från en kommandotolk med administratörsbehörighet, samlar den in IddCx WPP-spår i IddCx.etl-filen.

@echo off  
echo Starting WPP tracing....
logman create trace IddCx -o IddCx.etl -ets -ow -mode sequential -p  {D92BCB52-FA78-406F-A9A5-2037509FADEA} 0x4f4 0xFF
echo Tracing enabled
pause
echo Stopping WPP tracing....
logman -stop IddCx -ets

Styra vad som samlas in

Parametern Flags för logman.exe (0x4f4 i det här fallet) styr de WPP-meddelanden som IddCx loggar. Innebörden av Flags ändrades i Windows build 19041 och senare.

Flaggor som betyder för Windows build 19041 och senare

Parametern Flags är ett bitfält där varje bit styr om den typen av meddelande samlas in.

Flaggbitar Infångade meddelandetyper
0x001 Oanvänd
0x002 Oanvänd
0x004 Fel
0x008 Godartade fel, till exempel när felsökningsöverlägg är aktiverade utan att D3D11_CREATE_DEVICE_BGRA_SUPPORT anges
0x010 IddCx-objekt
0x020 UMDF-ramverket anropar IddCx
0x040 DDI-anrop från IddCx till drivrutinen
0x080 Lågfrekventa anrop från drivrutin till IddCx
0x100 Ramrelaterade anrop med hög frekvens från drivrutin till IddCx
0x200 Markörrelaterade anrop med hög frekvens från drivrutin till IddCx
0x400 Anrop från kernel till IddCx
0x800 Anrop från IddCx till kernel

Ett normalt loggningsscenario för 0x0f4 är en bra utgångspunkt. Om du vill visa information per bildruta är 0x1f4 en bra utgångspunkt.

Flaggor som betyder före Windows build 19041

Flaggor behandlades som en nivå, varje stigande nivå lade till en ny typ av meddelande tillsammans med alla meddelanden från föregående nivåer.

Nivåvärde för flaggor Infångade meddelandetyper
1 Används inte
2 Fel
3 Varningar
4 Information
5 Mångordig

Avkodning av "IddCx" WPP-spårning

Precis som alla WPP-spårningar lagras WPP-informationen i pdb--filer. Därför är åtkomst till pdb filer med den informationen nödvändig för att avkoda. Från och med Windows build 19560 innehåller IddCx.pdb på den offentliga symbolservern den WPP-information som krävs för att avkoda WPP-meddelanden. Innan Windows build 19560 innehåller IddCx.pdb på den offentliga symbolservern inte* nödvändig WPP-information för att aktivera WPP-avkodning.

Alla standardverktyg för WPP-avkodning kan användas för att avkoda och visa meddelandena.

Felsöka IddCx-fel

När du utvecklar ett IDD är det ofta användbart att få ytterligare information när IddCx identifierar ett fel. Som tidigare beskrivits kan du konfigurera IddCx att bryta sig in i felsökningsprogrammet när IddCx identifierar ett fel, men det är också användbart att visa IddCx-felmeddelandet i de senaste spårningsmeddelandena för att förstå kontexten för felet.

Med hjälp av föregående avsnitt kan du aktivera WPP-spårning med hjälp av logman.exe och med följande information visas den minnesinterna WPP-bufferten i kernelfelsökaren vid tidpunkten för felet.

Anteckning

För att detta ska fungera måste du använda ett kernelfelsökare (inte felsökningsprogram för användarläge) och Windows build 19560 eller senare för att felsökaren ska få IddCx.pdb som innehåller WPP-avkodningsinformationen.

I följande exempel anropar IDD IddCxMonitorArrival. Som en del av bearbetningen anropar IddCx drivrutinen EvtIddCxMonitorQueryTargetModes DDI. I det här exemplet returnerade drivrutinen ett läge med DISPLAYCONFIG_VIDEO_SIGNAL_INFO. AdditionalSignalInfo.vSyncFreqDivider är inställt på noll, vilket är ogiltigt och orsakar ett fel.

Här är en lista över de felsökningskommandon som används:

Befallning Betydelse
!wmitrace.bufdump Visa en lista över alla loggningsbuffertar tillsammans med namnet, IddCx är namnet på vår, kommer från kommandoraden logman.exe
!wmitrace.logdump LogBufferName Avkodar och visar innehållet i den angivna loggningsbufferten, som är IddCx i följande exempel

Här är felsökningsprogrammets utdata för det här exemplet:

0: kd> !wmitrace.bufdump
(WmiTrace) BufDump
    LoggerContext Array @ 0xFFFFE6055EB0AC40 [64 Elements]

 Logger Context  Number Available   Size    NPP Usage   PP Usage
================ ====== ========= ======== =========== ==========
ffffe6055ee6c800      4         2     4096       16384             Circular Kernel Context Logger
ffffe6055eaa8640      2         2    65536      131072             Eventlog-Security
ffffe6055eb83a00      2         1    65536      131072             DefenderApiLogger
ffffe6055ebb6a00      2         2    65536      131072             DefenderAuditLogger
ffffe6055eb74040      2         1    16384       32768             DiagLog
ffffe6055eb74640      4         2    65536      262144             Diagtrack-Listener
ffffe6055eaa8040      2         2    65536                 131072  EventLog-Application
ffffe6055eb7c040      2         1    65536      131072             EventLog-System
ffffe6055eb7c640      5         3    65536      327680             LwtNetLog
ffffe6055eb85040      4         2    65536      262144             Microsoft-Windows-Rdp-Graphics-RdpIdd-Trace
ffffe6055eb85680      8         6   131072     1048576             NetCore
ffffe6055eb89040      4         4     4096       16384             NtfsLog
ffffe6055eb89640      8         6   131072     1048576             RadioMgr
ffffe605683ef040      3         2     4096                  12288  WindowsUpdate_trace_log
ffffe6055eb8f640      2         2     2048        4096             UBPM
ffffe6055eb108c0      4         2    16384       65536             WdiContextLog
ffffe6055eb968c0      4         2    81920      327680             WiFiSession
ffffe60567e8a6c0      5         3     8192       40960             IddCx
ffffe605658379c0     10         9     3072       30720             umstartup
ffffe605659d4840     10         9   131072     1310720             SCM
ffffe605655af9c0      2         1    65536      131072             UserNotPresentTraceSession
ffffe605659d6840      2         1     4096        8192             COM
ffffe60565925080     10         8    20480      204800             Terminal-Services-LSM
ffffe60565956080     10         9    20480      204800             Terminal-Services-RCM
ffffe6055eba39c0     50        49     3072      153600             UserMgr
ffffe60567388280      2         2    32768       65536             WFP-IPsec Diagnostics
ffffe605678a3040      5         3     4096       20480             MpWppTracing-20200424-092923-00000003-ffffffff
ffffe60567e35080      2         1    65536      131072             ScreenOnPowerStudyTraceSession
ffffe605655e0a00      5         3     4096       20480             SHS-04242020-092951-7-7f
ffffe605692054c0      4         4     8192       32768             RdpIdd
ffffe60567f597c0      4         3    65536      262144             SgrmEtwSession
ffffe605678a9a00      4         4     8192       32768             DispBrok-DeskSrv
ffffe60569286680      4         4     8192       32768             DispBrok-Desk
ffffe605668026c0      4         4     8192       32768             DispBrok
================ ====== ========= ======== =========== ==========
                    195       159             6651904     143360

0: kd> !wmitrace.logdump IddCx
(WmiTrace) LogDump for Logger Id 0x13
Found Buffers: 5 Messages: 537, sorting entries
[1]0EF8.0CF0::04/24/2020-09:43:36.894 [cx][IddCx]DriverEntry: Enter
[1]0EF8.0CF0::04/24/2020-09:43:36.897 [cx][IddCx]?IddCxLibraryInitialize@@YAJXZ: Enter
[1]0EF8.0CF0::04/24/2020-09:43:36.897 [cx][IddCx]?IddCxLibraryInitialize@@YAJXZ: Exit
[1]0EF8.0CF0::04/24/2020-09:43:36.897 [cx][IddCx]DriverEntry: Exit, status=STATUS_SUCCESS
[0]0EF8.0CF0::04/24/2020-09:43:36.904 [cx][IddCx]?IddCxLibraryBindClient@@YAJPEAU_WDF_CLASS_BIND_INFO@@PEAPEAX@Z: Enter
[0]0EF8.0CF0::04/24/2020-09:43:36.904 [cx][IddCx]?IddCxLibraryBindClient@@YAJPEAU_WDF_CLASS_BIND_INFO@@PEAPEAX@Z: Exit, status=STATUS_SUCCESS
[0]0EF8.0CF0::04/24/2020-09:43:36.910 [cx][IddCx]IddCxImplDeviceInitConfig: Enter
[0]0EF8.0CF0::04/24/2020-09:43:36.910 [cx][IddCx]IddCxImplDeviceInitConfig: Exit, status=STATUS_SUCCESS
[0]0EF8.0CF0::04/24/2020-09:43:36.910 [cx][IddCx]IddCxImplGetVersion: Enter
[0]0EF8.0CF0::04/24/2020-09:43:36.910 [cx][IddCx]IddCxImplGetVersion: Exit, status=STATUS_SUCCESS
[0]0EF8.0CF0::04/24/2020-09:43:36.911 [cx][IddCx]IddCxImplDeviceInitialize: Enter
[0]0EF8.0CF0::04/24/2020-09:43:36.912 [cx][IddCx]IddCxImplDeviceInitialize: New IddDevice 0x000001642F5E0770 created
[0]0EF8.0CF0::04/24/2020-09:43:36.912 [cx][IddCx]IddCxImplDeviceInitialize: Exit, status=STATUS_SUCCESS
[0]0EF8.0CF0::04/24/2020-09:43:36.917 [cx][IddCx]IddCxImplAdapterInitAsync: Enter
[0]0EF8.0CF0::04/24/2020-09:43:36.917 [cx][IddCx]?Init@IddAdapter@@QEAAXPEAUIDDCX_ADAPTER__@@PEAVIddDevice@@PEAUIDDCX_ADAPTER_CAPS@@@Z: New IddAdapter 0x000001642F5E77D0 created, API object 0xFFFFFE9BD0A18978, IddDevice 0x000001642F5E0770
[0]0EF8.0CF0::04/24/2020-09:43:36.917 [cx][IddCx]?SendUserModeMessage@IddAdapter@@QEAAJIPEAXI0W4DXGK_IDD_ESCAPE_CODE@@PEAI@Z: Sending escape 0x0 to kernel
Unknown( 76): GUID=ac5ec775-ccdb-3c2c-6150-28b4eacacbc4 (No Format Information found).
[0]0EF8.0CF0::04/24/2020-09:43:36.917 [cx][IddCx]IddCxImplAdapterInitAsync: Exit, status=STATUS_SUCCESS
[0]0EF8.0558::04/24/2020-09:43:36.935 [cx][IddCx]?HandleKernelModeMessage@IddAdapter@@QEAAXIPEAXI0PEAI@Z: IddAdapter 0x000001642F5E77D0, processing command START_ADAPTER_COMPLETE from KMD
[0]0EF8.0558::04/24/2020-09:43:36.935 [cx][IddCx]?HandleKernelModeMessage@IddAdapter@@QEAAXIPEAXI0PEAI@Z: IddAdapter 0x000001642F5E77D0, Successful adapter start, Wddm Luid = 0xe6e90, Adapter caps 0x0, Session Id 0, Terminal Luid 0x0
[0]0EF8.0558::04/24/2020-09:43:36.935 [cx][IddCx]?HandleKernelModeMessage@IddAdapter@@QEAAXIPEAXI0PEAI@Z: Exit
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]<lambda_e42696d61f3ea0fd0d39fdb90d856b7b>::operator(): DDI: Calling EvtIddCxAdapterInitFinished DDI, IddAdapter 0xFFFFFE9BD0A18978
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]IddCxImplMonitorCreate: Enter
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]IddCxImplMonitorCreate: New IddMonitor 0x000001642F5EF720 created, API object 0xFFFFFE9BD0A11A38, IddAdapter 0x000001642F5E77D0
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]IddCxImplMonitorCreate: Exit, status=STATUS_SUCCESS
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]IddCxImplMonitorArrival: Enter
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]?StartWatchInternal@IddWatchdog@@AEAAXK@Z: IddWatchdog 0x000001642F5E77F0, still has pending watch not started by watchdog thread.
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]?ParseMonitorDescription@IddDevice@@QEAAXUIDDCX_MONITOR_DESCRIPTION@@AEAV?$vector@UIDDCX_MONITOR_MODE@@V?$allocator@UIDDCX_MONITOR_MODE@@@std@@@std@@AEAI@Z: DDI: Calling EvtIddCxParseMonitorDescriptio DDI to get mode count, Device 0x000001642F5E0770
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]?ParseMonitorDescription@IddDevice@@QEAAXUIDDCX_MONITOR_DESCRIPTION@@AEAV?$vector@UIDDCX_MONITOR_MODE@@V?$allocator@UIDDCX_MONITOR_MODE@@@std@@@std@@AEAI@Z: DDI: Return successfully from EvtIddCxParseMonitorDescriptio DDI to get mode count, mode count 23
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]?StartWatchInternal@IddWatchdog@@AEAAXK@Z: IddWatchdog 0x000001642F5E77F0, still has pending watch not started by watchdog thread.
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]?StartWatchInternal@IddWatchdog@@AEAAXK@Z: IddWatchdog 0x000001642F5E77F0, still has pending watch not started by watchdog thread.
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]?ParseMonitorDescription@IddDevice@@QEAAXUIDDCX_MONITOR_DESCRIPTION@@AEAV?$vector@UIDDCX_MONITOR_MODE@@V?$allocator@UIDDCX_MONITOR_MODE@@@std@@@std@@AEAI@Z: DDI: Calling EvtIddCxParseMonitorDescriptio DDI to get modes, Device 0x000001642F5E0770
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]?ParseMonitorDescription@IddDevice@@QEAAXUIDDCX_MONITOR_DESCRIPTION@@AEAV?$vector@UIDDCX_MONITOR_MODE@@V?$allocator@UIDDCX_MONITOR_MODE@@@std@@@std@@AEAI@Z: DDI: Return successfully from EvtIddCxParseMonitorDescriptio DDI to get modes
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]?StartWatchInternal@IddWatchdog@@AEAAXK@Z: IddWatchdog 0x000001642F5E77F0, still has pending watch not started by watchdog thread.
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]?AddMonitorModes@IddMonitor@@AEAAXAEAV?$vector@UTARGET_MONITOR_MODE@@V?$allocator@UTARGET_MONITOR_MODE@@@std@@@std@@@Z: IddMonitor 0x000001642F5EF720, parseMonitorDescription returned 23 modes.
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]?StartWatchInternal@IddWatchdog@@AEAAXK@Z: IddWatchdog 0x000001642F5E77F0, still has pending watch not started by watchdog thread.
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]?QueryModes@IddMonitor@@AEAAXAEAV?$vector@UIDDCX_TARGET_MODE@@V?$allocator@UIDDCX_TARGET_MODE@@@std@@@std@@@Z: DDI: Calling EvtIddCxMonitorQueryTargetModes DDI for mode count, IddMonitor 0x000001642F5EF720
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]?QueryModes@IddMonitor@@AEAAXAEAV?$vector@UIDDCX_TARGET_MODE@@V?$allocator@UIDDCX_TARGET_MODE@@@std@@@std@@@Z: DDI: Return successfully from EvtIddCxMonitorQueryTargetModes DDI, mode count = 0x23
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]?StartWatchInternal@IddWatchdog@@AEAAXK@Z: IddWatchdog 0x000001642F5E77F0, still has pending watch not started by watchdog thread.
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]?StartWatchInternal@IddWatchdog@@AEAAXK@Z: IddWatchdog 0x000001642F5E77F0, still has pending watch not started by watchdog thread.
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]?QueryModes@IddMonitor@@AEAAXAEAV?$vector@UIDDCX_TARGET_MODE@@V?$allocator@UIDDCX_TARGET_MODE@@@std@@@std@@@Z: DDI: Calling EvtIddCxMonitorQueryTargetModes DDI to get modes, IddMonitor 0x000001642F5EF720
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]?QueryModes@IddMonitor@@AEAAXAEAV?$vector@UIDDCX_TARGET_MODE@@V?$allocator@UIDDCX_TARGET_MODE@@@std@@@std@@@Z: DDI: Return successfully from EvtIddCxMonitorQueryTargetModes DDI
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]?StartWatchInternal@IddWatchdog@@AEAAXK@Z: IddWatchdog 0x000001642F5E77F0, still has pending watch not started by watchdog thread.
[0]0EF8.1588::04/24/2020-09:43:36.936 [cx][IddCx]?AddTargetModes@IddMonitor@@AEAAXAEAV?$vector@UTARGET_MONITOR_MODE@@V?$allocator@UTARGET_MONITOR_MODE@@@std@@@std@@@Z: IddMonitor 0x000001642F5EF720, queryTargetModes returned 23 modes.
[0]0EF8.1588::04/24/2020-09:43:55.341 [cx][IddCx] Throwing error (Status 0xc000000d(STATUS_INVALID_PARAMETER)) from function Validate in onecoreuap\windows\core\dxkernel\indirectdisplays\classext\cx\ddivalidation.cpp:412, Msg DISPLAYCONFIG_VIDEO_SIGNAL_INFO.AdditionalSignalInfo.vSyncFreqDivider cannot be zero for target mode
Total of 537 Messages from 5 Buffers

Den sista raden anger orsaken till felet.

Felsökningsfunktioner för indirekt skärminspelning

Från och med Windows build 25164har IddCx möjlighet att dumpa skrivbordsramens bild som IddCx skickar till drivrutinen. Den här funktionen kan användas för att felsöka visuella problem. Det kan kombineras med felsökningsöverlägg som skuggning av smutsiga regioner i en ram.

IddCx söker efter ändringar i felsökningsregisterinställningen för ramfångst för varje ram. Därför finns det ett huvudkontrollvärde i IddCxDebugCtrl som styr det här beteendet. Den här inställningen säkerställer att det inte finns någon prestandastraff när den är inaktiverad.

Anteckning

Den här funktionen inaktiveras när OPM-gränssnittet är aktivt för drivrutinen.

Registervärden som styr avbildningen

Följande registervärden finns i HKLM\System\CurrentControlSet\Control\GraphicsDrivers\IddCxFrameCapture. Den här registermappen bör skapas innan värdet IddCxDebugCtrl anges.

Namn Standardvärde om det saknas Betydelse
TriggerUniqueness 0 När varje IddCx-växlingskedja anropas för att hämta en ny ram läser den det här värdet. Om TriggerUniqueness inte är noll och skiljer sig från det tidigare läsvärdet läses värdena nedan och bildruteavbildning aktiveras.
TargetMask 0xffff Bitmask, en bit för varje målindex på adaptern som styr om växlingskedjan för det målet ska ingå i den här inspelningen.
CaptureCount 10 Antal bildrutor som varje aktiverad IddCx-växlingskedja ska avbilda.
SkipFrames 0 Antal bildrutor att hoppa över mellan varje fångad bildruta.
CaptureSessionID 0 Den session där bildfångst aktiveras. Värdet noll innebär alltid konsolsessionen.
ScaleFactor 100 Styr skalningsfaktorn som används för att avgöra vilka dimensioner av den insamlade filen, giltiga värden 1–100
CaptureFolder c:\IddCxImages Mapp där inspelningsfiler kommer att skrivas. En c:\IddCxImages mapp skapas om den inte finns.

Avbildningsparametrarna lagras per mål, vilket gör att en avbildningssession kan sträcka sig över en lägesändring på ett angivet mål.

Om ett nytt icke-zero-TriggerUniqueness- värde identifieras medan ett övervakningsobjekt fortfarande samlar in bildrutor från en tidigare avbildning, stoppas den aktuella avbildningen och den nyligen utlösta åtgärden startas.

Styr bildinfångning med REG-filer

REG-filer är ett bra sätt att styra bildruteinsamlingarna. En fil kan ange de inledande värdena och en annan kan uppdatera TriggerUniqueness.

REG-fil för att ange inledande värden

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers]
"IddCxDebugCtrl"=dword:2200

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\IddCxFrameCapture]
"TriggerUniqueness"=dword:0

REG-fil för att uppdatera TriggerUniqueness

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\IddCxFrameCapture]
"TriggerUniqueness"=dword:1

Filnamn och format

De insamlade ramarna är i PNG-filformat med följande filnamnsformat:

S<Sessions-ID, noll för konsolen>_Ad<Hex-värde för ID-adapterns LUID>_T<Hex-värde för ID-mål-Idx>_Frame<Frame-nummer från IDDCX_METADATA.PresentationFrameNumber>_<Datum i mmddyy-format>_<Tid i hhmmss>.png

Följande är några exempel på filnamn:

  • S0_Ad8ade_T3_Frame2343_020422_173434.png
  • S0_Ad8ade_T3_Frame2344_020422_173434.png
  • S0_Ad8ade_T3_Frame2345_020422_173435.png

WPP-loggning

För varje ny inspelningssession som startas kommer WPP-meddelanden att loggas för varje värde som läses in från registret eller standardmässigt.

Varje gång en bildruta registreras och skrivs till filen lägger IddCx till ett WPP-meddelande som innehåller bildfilens fullständiga filnamn.

Exempel på avbildningsinställning

Avbilda bildrutor från när en övervakare först är ansluten

Följande är de registervärden som behövs för att samla in de första 20 bildrutorna för när en övervakare först är ansluten, följt av REG-filen.

Registerpost Värde Anteckningar
CaptureCount 20 Ange 20 bildrutor i stället för standardvärdet 10
TriggerUniqueness 1 Alla icke-nollvärden fungerar eftersom målobjekt som börjar med noll används för att indikera lagringsunikhet.
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\IddCxFrameCapture]
"CaptureCount"=dword:00000014
"TriggerUniqueness"=dword:00000001

Starta avbildningen medan övervakaren är aktiv

Eftersom swapkedjorna söker efter ett nytt unikhetsvärde när drivrutinen hämtar varje bildruta bör du ange posten TriggerUniqueness sist för att säkerställa att alla parametrar läses som förväntat. I följande exempel halveras även filupplösningen för att spara utrymme och skriver avbildningsfilerna i mappen c:\frames.

Registerpost Värde Anteckningar
CaptureCount 100 Ange 100 bildrutor i stället för standardvärdet 10
ScaleFactor 50 Ange 50% upplösning för att spara utrymme
CaptureFolder c:\frames Ställ in utdatamapp
UtlösarUnikhet 1 Alla icke-nollvärden fungerar eftersom målobjektet börjar med noll för att skapa unikhet.
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\IddCxFrameCapture]
"CaptureCount"=dword:00000014
"CaptureFolder"="c:\\frames"
"ScaleFactor"=dword:00000032
"TriggerUniqueness"=dword:00000001

Samla in 10 bildrutor från det andra målet i fjärrsession 3 med 5 bildrutor mellan varje avbildning

Den här avbildningen använder också felsökningsöverlägg för att markera de smutsiga regionerna för var och en av bildrutorna.

Registerpost Värde Anteckningar
IddCxDebugCtrl Bit 0x0400 har också angetts 0x0400 möjliggör markering av smutsiga regioner, men 0x2200 bitar krävs också.
CaptureSessionID 3 Aktiverar avbildning i fjärrsession 3
TargetMask 0x2 Bit 1 motsvarar mål-Idx 1
SkipFrames 5 Hoppa över att samla in fem bildrutor mellan varje avbildning
UtlösarUnikhet 1 Alla icke-nollvärden betraktas som giltiga eftersom målobjektet börjar med noll för att säkerställa unikhet i lagret.
Windows Registry Editor Version 5.00  

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers]  
"IddCxDebugCtrl"=dword:2600

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\IddCxFrameCapture]
"CaptureSessionID"=dword:00000003
"TargetMask"=dword:00000002
"SkipFrames"=dword:00000005    
"TriggerUniqueness"=dword:00000001