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