Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Dolaylı Görüntüler sürücüleri (IDD) UMDF sürücüleridir. Bu nedenle, UMDF hata ayıklama belgeleri, UMDF Sürücüsünün Neden Yüklenemediğini veya UMDF Cihazının Neden Başlatılamadığını Belirleme gibi, iyi bir başlangıç noktasıdır. Bu sayfa, dolaylı görüntüye özgü hata ayıklama bilgileri sağlar.
Kayıt defteri denetimi
Dolaylı Görüntü Sürücüsü Sınıfı eXtension (IddCx), IDD'lerin hata ayıklamasına yardımcı olmak için kullanılabilecek bazı kayıt defteri ayarlarına sahiptir. Tüm kayıt defteri değerleri HKLM\System\CurrentControlSet\Control\GraphicsDrivers kayıt defteri anahtarı altında bulunur.
| Değer Adı | Ayrıntılar |
|---|---|
| TerminateIndirectOnStall | Sıfır değeri, kullanılabilir olan çerçevenin 10 saniye içinde bir çerçeveyi işlememesi durumunda sürücüyü sonlandıran watchdog'un devre dışı bırakılmasını sağlar. Diğer tüm değerler watchdog'un etkin olduğunu gösterir. |
| IddCxDebugCtrl | IddCx'in farklı hata ayıklama yönlerini etkinleştiren bit alanı. Aşağıdaki tabloya bakın. |
Uyarı
Watchdog'u devre dışı bırakmak için TerminateIndirectOnStall kayıt defteri değeri kullanılırsa, HLK testleri başarısız olur.
IddCxDebugCtrl değerleri
| IddCxDebugCtrl'un içindeki bit | Anlamı |
|---|---|
| 0x0001 | IddCx bir hata algıladığında hata ayıklayıcıya girme |
| 0x0002 | IddCx yüklendiğinde hata ayıklayıcıya girme |
| 0x0004 | IddCx kaldırıldığında hata ayıklayıcıya girme |
| 0x0008 | IddCx DriverEntry çağrıldığında hata ayıklayıcıya girme |
| 0x0010 | Sürücü bağlama çağrıldığında hata ayıklayıcıyı başlat |
| 0x0020 | Sürücü başlatma çağrıldığında hata ayıklayıcıya giriş |
| 0x0040 | Sürücü unbind çağrıldığında hata ayıklayıcıya bölün |
| 0x0080 | DDI çağrısında sürücünün çok uzun sürdüğünü sonlandıran DDI watchdog'u devre dışı bırakır |
| 0x0100 | Kullanılmamış |
| 0x0200 | Hata ayıklama katmanını etkinleştirin, aşağıdaki nota bakın |
| 0x0400 | Çerçevedeki kirli dikdörtgenlerin üzerine renkli alfa kutusu katmanı yerleştir; 0x0200 ayarlanmasını gerektirir |
| 0x0800 | Performans istatistiklerini çerçeveye yerleştir |
| 0x2000 | IddCx, yakalama çerçevesi kayıt defteri değerlerini her karede sorgular; 0x0200 ayarlanmasını gerektirir |
Uyarı
Katman işlevlerinden herhangi birinin çalışması için, sürücü tarafından oluşturulan ve IddCxSwapChainSetDevice'e geçirilen Direct3D cihazının D3D11_CREATE_DEVICE_BGRA_SUPPORT bayrağıyla oluşturulması gerekir.
IddCx WPP izlemeleri
Iddcx, hata ayıklama bilgilerini günlüğe kaydetmek için WPP altyapısını kullanır. WPP bilgileri bir dosyaya kaydedilebilir ve bu kayıt devam ederken çekirdek hata ayıklayıcısında görüntülenebilir.
IddCx WPP izlemesini yakalama
WPP izlemeyi etkinleştirmenin birkaç yolu vardır. Derlemeyi logman.exe programda kullanmak kullanışlı bir yoldur. Aşağıdaki satırları bir toplu iş dosyasına kopyalayıp yükseltilmiş bir komut isteminden çalıştırırsanız IddCx WPP izlemelerini IddCx.etl dosyasına toplar.
@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
Yakalananları denetleme
logman.exeflags parametresi (bu örnekte 0x4f4), IddCx tarafından günlüğe alınan WPP iletilerini denetler. Windows derlemesi 19041 ve sonraki sürümlerde Bayraklar'ın anlamı değişti.
Windows derlemesi 19041 ve üzeri için parametreler
Flags parametresi, her bitin bu ileti türünün yakalanıp yakalanmadığını denetlediği bir bit alanıdır.
| Bayrak biti | Yakalanan ileti türü |
|---|---|
| 0x001 | Kullanılmamış |
| 0x002 | Kullanılmamış |
| 0x004 | Hatalar |
| 0x008 | Örneğin hata ayıklama katmanlarının D3D11_CREATE_DEVICE_BGRA_SUPPORT ayarlanmadan etkinleştirilmesi gibi zararsız hatalar |
| 0x010 | IddCx nesneleri |
| 0x020 | UMDF çerçevesi, IddCx'e çağrılar yapar. |
| 0x040 | IddCx'ten sürücüye DDI çağrıları |
| 0x080 | Sürücüden IddCx'e düşük frekanslı çağrılar |
| 0x100 | Sürücüden IddCx'e yüksek frekanslı çerçeveyle ilgili çağrılar |
| 0x200 | Sürücüden IddCx'e yüksek frekanslı imleçle ilgili çağrılar |
| 0x400 | Çekirdekten IddCx'e çağrılar |
| 0x800 | IddCx'ten çekreğe yapılan çağrılar |
normal bir 0x0f4 günlüğü senaryosu iyi bir başlangıç noktasıdır. Çerçeve başına bilgileri görüntülemek istiyorsanız, 0x1f4 iyi bir başlangıç noktasıdır.
Windows derlemesi 19041'in öncesinde anlamına gelen bayraklar
Bayraklar bir düzey olarak ele alınmıştı ve her artan düzey, önceki düzeylerdeki tüm iletilerle birlikte yeni bir ileti türü ekledi.
| Bayrak düzeyi değeri | Yakalanan ileti türü |
|---|---|
| 1 | Kullanılmıyor |
| 2 | Hatalar |
| 3 | Uyarılar |
| 4 | Bilgi |
| 5 | Ağır dilli |
IddCx WPP izleme kodunu çözme
Tüm WPP izleri gibi, WPP bilgileri de pdb dosyalarında depolanır. Bu nedenle, kodu çözmek için bu bilgilerle pdb dosyalarına erişim gereklidir. Windows derlemesi 19560'tan başlayarak, ortak sembol sunucusundaki IddCx.pdb , WPP iletilerinin kodunu çözmek için gereken WPP bilgilerini içerir. Windows 19560 derlemesinden önce, ortak sembol sunucusundaki IddCx.pdb , WPP kodunu çözmeyi etkinleştirmek için gerekli WPP bilgilerini* içermez.
Standart WPP kod çözme araçlarından herhangi biri iletilerin kodunu çözmek ve görüntülemek için kullanılabilir.
IddCx hatalarını ayıklama
IDD geliştirirken, IddCx bir hata algıladığında ek bilgi almak genellikle yararlıdır. Daha önce açıklandığı gibi, IddCx hata algıladığında hata ayıklayıcıya girmek için IddCx'i yapılandırabilirsiniz, ancak hatanın bağlamını anlamak için son birkaç izleme iletisinde IddCx hata iletisini görüntülemek de yararlıdır.
Önceki bölümü kullanarak ,logman.exe kullanarak WPP izlemeyi etkinleştirebilirsiniz ve aşağıdaki bilgilerle hata noktasında çekirdek hata ayıklayıcısında bellek içi WPP arabelleği görüntüleyebilirsiniz.
Uyarı
Bunun çalışması için, hata ayıklayıcının WPP kod çözme bilgilerini içeren IddCx.pdb dosyasını alabilmesi için bir çekirdek hata ayıklayıcısı (kullanıcı modu hata ayıklayıcısı değil) ve Windows derlemesi 19560 veya üzerini kullanıyor olmanız gerekir.
Aşağıdaki örnekte bir IDD, IddCxMonitorArrival'ı çağırır. İşlemenin bir parçası olarak IddCx, sürücünün EvtIddCxMonitorQueryTargetModes DDI'sini çağırır. Bu örnekte, sürücü DISPLAYCONFIG_VIDEO_SIGNAL_INFO ile bir mod döndürdü. AdditionalSignalInfo.vSyncFreqDivider, geçersiz olan ve hataya neden olan sıfır olarak ayarlandı.
Kullanılan hata ayıklayıcı komutlarının listesi aşağıdadır:
| Komut | Anlamı |
|---|---|
| !wmitrace.bufdump | IddCx adıyla birlikte tüm günlük arabelleğinin yanı sıra listeleyin, logman.exe komut satırından gelir |
| !wmitrace.logdump LogBufferName | Aşağıdaki örnekte IddCx olan belirtilen günlük arabelleğinin kodunu çözer ve görüntüler |
Bu örnekte hata ayıklayıcı çıktısı aşağıda verilmiştir:
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
Son satır hatanın nedenini verir.
Dolaylı ekran görüntüsü yakalama hata ayıklama işlevi
Windows derlemesi 25164'ten itibaren IddCx, sürücüye aktardığı masaüstü görüntüsünü dökebilme yeteneğine sahiptir. Bu işlev, görsel sorunlarında hata ayıklamak için kullanılabilir. Bir çerçevenin kirli bölgelerini gölgelendirme gibi hata ayıklama katmanlarıyla birleştirilebilir.
IddCx, her karede kare yakalama için hata ayıklama kayıt defteri ayarındaki değişiklikleri kontrol eder. Bu nedenle , IddCxDebugCtrl içinde bu davranışı denetleen bir ana denetim değeri vardır. Bu ayar devre dışı bırakıldığında performans cezası olmamasını sağlar.
Uyarı
BU işlev, OPM arabirimi sürücüde etkin olduğunda devre dışı bırakılır.
Yakalamayı denetleen kayıt defteri değerleri
Aşağıdaki kayıt defteri değerleri HKLM\System\CurrentControlSet\Control\GraphicsDrivers\IddCxFrameCapture konumunda bulunur. IddCxDebugCtrl değeri ayarlanmadan önce bu kayıt defteri klasörü oluşturulmalıdır.
| İsim | Eksikse varsayılan | Anlamı |
|---|---|---|
| TriggerUniqueness | 0 | Her IddCx takas zinciri yeni bir çerçeve almak için çağrıldığında, bu değeri okur. TriggerUniqueness sıfırdan farklıysa ve daha önce okunan değerden farklıysa aşağıdaki değerler okunur ve çerçeve yakalama etkinleştirilir. |
| TargetMask | 0xffff | Bit maskesi, bağdaştırıcıdaki her hedef dizin için bir bit, bu hedef için takas zincirinin bu yakalama dizisinin parçası olup olmayacağını denetler. |
| CaptureCount | 10 | Yakalama için etkinleştirilmiş her IddCx takas zincirinin yakalaması gereken kare sayısı. |
| SkipFrames | 0 | Yakalanan her çerçeve arasında atlanacak çerçeve sayısı. |
| CaptureSessionID | 0 | Çerçeve yakalamanın etkinleştirileceği oturum. Sıfır değeri her zaman konsol oturumu anlamına gelir. |
| ScaleFactor | 100 | Yakalanan dosyanın boyutlarını, geçerli değerleri 1-100 olarak belirlemek için kullanılan ölçek faktörünü denetler |
| CaptureFolder | c:\IddCxImages | Yakalama dosyalarının yazılacağı klasör. c:\IddCxImages klasörü yoksa oluşturulacaktır. |
Yakalama parametreleri hedef başına depolanır ve bu da yakalama oturumunun belirli bir hedefte mod değişikliğine yayılmasına olanak tanır.
Bir izleyici nesnesi önceki bir yakalamadan kareleri yakalamaya devam ederken sıfır olmayan yeni bir TriggerUniqueness değeri algılanırsa, geçerli yakalamayı durdurur ve yeni tetikleneni başlatır.
Çerçeve yakalamayı denetlemek için REG dosyalarını kullanma
REG dosyaları, çerçeve yakalamalarını denetlemenin iyi bir yoludur. Bir dosya başlangıç değerlerini ayarlayabilir ve diğeri TriggerUniqueness'i güncelleştirebilir.
İlk değerleri ayarlamak için REG dosyası
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
TriggerUniqueness'i güncelleştirmek için REG dosyası
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\IddCxFrameCapture]
"TriggerUniqueness"=dword:1
Dosya adı ve biçimi
Yakalanan çerçeveler aşağıdaki dosya adı biçiminde PNG dosya biçimindedir:
S<Oturum Kimliği, konsol için sıfır>_Ad<Kimlik bağdaştırıcısı LUID'nin onaltılık değeri>_T<Kimlik hedefi Idx'in onaltılık değeri>_Frame<IDDCX_METADATA içerisindeki çerçeve numarası>_<mmddyy formatında tarih>_<hhmmss formatında saat>.png
Bazı örnek dosya adları şunlardır:
- S0_Ad8ade_T3_Frame2343_020422_173434.png
- S0_Ad8ade_T3_Frame2344_020422_173434.png
- S0_Ad8ade_T3_Frame2345_020422_173435.png
WPP günlüğü
Başlatılan her yeni yakalama oturumu için, kayıt defterinden okunan veya varsayılan değerler için WPP mesajları kaydedilecektir.
Her çerçeve yakalanıp dosyaya yazıldıktan sonra IddCx, görüntü dosyasının tam dosya adını içeren bir WPP iletisi ekler.
Örnek yakalama ayarı
Monitör ilk bağlandığında kareleri yakalayın.
Aşağıda, herhangi bir monitörün ilk takıldığında ilk 20 karesini ve ardından REG dosyasını yakalamak için gereken kayıt defteri değerleri yer alır.
| Kayıt defteri girdisi | Değer | Notlar |
|---|---|---|
| Yakalama Sayısı | 20 | Varsayılan 10 yerine 20 kare ayarlama |
| TriggerBenzersizliği | 1 | Sıfır olmayan herhangi bir değer, depo benzersizliği sağlamak için sıfırdan başlayan hedef nesne olarak işlev görür. |
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\IddCxFrameCapture]
"CaptureCount"=dword:00000014
"TriggerUniqueness"=dword:00000001
İzleyici etkinken yakalamayı başlat
Sürücü her çerçeveyi alırken swapchains'in yeni bir benzersizlik değeri olup olmadığını denetlediği düşünüldüğünde, tüm parametrelerin beklendiği gibi okunduğundan emin olmak için TriggerUniqueness girişini en son ayarlamanız gerekir. Aşağıdaki örnek ayrıca alandan tasarruf etmek için dosya çözümlemesini yarıya indirer ve yakalama dosyalarını c:\frames klasörüne yazar.
| Kayıt defteri girdisi | Değer | Notlar |
|---|---|---|
| YakalamaSayısı | 100 | Varsayılan 10 yerine 100 çerçeve ayarlama |
| ScaleFactor | 50 | Alandan tasarruf etmek için 50% çözünürlük ayarlayın |
| CaptureFolder | c:\frames | Çıkış klasörünü ayarlama |
| Tetikleyici Eşsizliği | 1 | Hedef nesne, depolama benzersizliği açısından sıfırla başladığı için sıfır olmayan herhangi bir değer çalışır. |
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
Uzak oturum 3'te her yakalama arasında 5 kare ile ikinci hedeften 10 kare yakalama
Bu yakalama ayrıca her çerçevenin kirli bölgelerini vurgulamak için hata ayıklama katmanını kullanır.
| Kayıt defteri girdisi | Değer | Notlar |
|---|---|---|
| IddCxDebugCtrl | Bit 0x0400 de ayarlanır | 0x0400 kirli bölge vurgulama sağlar, 0x2200 bitler de gereklidir |
| OturumKimliğiYakalama | 3 | Uzak oturum 3'te yakalamayı etkinleştirir |
| TargetMask | 0x2 | Bit 1, idx 1 hedefine karşılık gelir |
| SkipFrames | 5 | Her yakalama arasında beş kare yakalamayı atlayın |
| TetikleyiciEşsizliği | 1 | Sıfır olmayan herhangi bir değer, depo benzersizliği olarak sıfırdan başlayan hedef nesne olarak çalışır |
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