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.
Inflight Trace Recorder (IFR), çekirdek modu sürücüsü veya UMDF sürücüsü gibi bir izleme sağlayıcısının, en son günlük iletilerinin korunduğu bellek içi döngüsel arabellekler oluşturmasını sağlayan bir izleme özelliğidir. Günlük iletileri bir hata ayıklayıcı kullanılarak görüntülenebilir.
IFR, WPP yazılım izlemesinin üzerine kurulmuştur. WPP üzerinden IFR'nin birincil avantajı, otomatik olarak açılması ve izleme oturumlarını önceden başlatmanız gerekmemesidir.
Şunlar için geçerlidir:
- En düşük işletim sistemi: KMDF ve WDM sürücü geliştiricileri için Windows 8
- UMDF (2.15) sürücü geliştiricileri için en düşük işletim sistemi: Windows 10
Visual Studio'da Inflight Trace Recorder'ı etkinleştirme
İlk olarak, Windows Sürücüsüne WPP Yazılım İzleme Ekleme'deki adımları izleyin.
Ardından, Project özellik sayfasında, Yapılandırma Özellikleri-WPP> İzleme-İşlev ve> Makro Seçenekleri-Uçuş> İçi İzleme Kaydedicisi'ni Etkinleştir altında Evet'i seçin.
Son olarak, yalnızca UMDF için bir adım daha vardır: WPP İzleme->İşlev ve Makro Seçenekleri->Önişlemci Tanımlamaları altında WPP_MACRO_USE_KM_VERSION_FOR_UM=1 ekleyin.
Komut satırından Uçuş İçi İz Kaydedicisi'ni etkinleştirme
.vcxproj dosyasını el ile düzenlerseniz aşağıdaki girdileri ayarlayın:
KMDF veya WDM sürücüsü için:
<ClCompile Include=...>
<WppEnabled>true</WppEnabled>
<WppKernelMode>true</WppKernelMode>
<WppRecorderEnabled>true</WppRecorderEnabled>
...
</ClCompile>
UMDF sürücüsü için:
<ClCompile Include=...>
<WppEnabled>true</WppEnabled>
<WppRecorderEnabled>true</WppRecorderEnabled>
<WppPreprocessorDefinitions>WPP_MACRO_USE_KM_VERSION_FOR_UM=1</WppPreprocessorDefinitions>
...
</ClCompile>
Inflight Trace Recorder parametrelerini yapılandırma
Sürücünün Parametre anahtarı altında aşağıdaki isteğe bağlı kayıt defteri girdilerini ayarlayarak IFR'yi yapılandırabilirsiniz.
Aşağıdaki kayıt defteri girdilerini kullanın:
LogPages: REG_DWORD
Varsayılan günlüğü depolamak için sayfa sayısına ayarlayın. Varsayılan değer birdir.
VerboseOn: REG_DWORD
Varsayılan sıfır ayarı IFR'nin hataları, uyarıları ve bilgilendirici olayları günlüğe kaydetmesine neden olur. Günlüğe ayrıntılı çıktı eklemek için değerini bire ayarlayın.
WppRecorder_UseTimeStamp: REG_DWORD (WDK derlemesi 22557'den itibaren kullanılabilir)
Sürücüler, daha sonra !rcdrkd.rcdrlogdump veya !wdfkd.wdflogdump kullanılarak görüntülenebilir günlük girişlerine zaman damgaları eklemek için bu girdiyi bir olarak ayarlar.
WppRecorder_PreciseTimeStamp: REG_DWORD (WDK derlemesi 22557'den itibaren kullanılabilir)
Daha kesin zaman damgaları istiyorsanız, WppRecorder_UseTimeStamp ek olarak, yukarıda gösterilen söz dizimini kullanarak WppRecorder_PreciseTimeStamp ekleyin.
Örnekler
Aşağıdaki örneklerde, günlük sayfalarının sayısını iki olarak ayarlamak ve zaman damgalarını açmak için başlangıç ve bitiş açıklamaları arasındaki satırları ekleyin.
Çekirdek modu sürücüsü için:
[IfrSample_Service_Inst]
DisplayName = %IfrSample.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 3 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\IfrSample.sys
; =============== START
AddReg = IfrSample_Service_Inst.AddReg
[IfrSample_Service_Inst.AddReg]
HKR, "Parameters", "LogPages", %REG_DWORD%, 2
HKR, "Parameters", "WppRecorder_UseTimeStamp", %REG_DWORD%, 1
; =============== END
[Strings]
REG_DWORD = 0x00010001
UMDF sürücüsü için:
[IfrSampleUm_Install]
UmdfLibraryVersion=$UMDFVERSION$
ServiceBinary=%13%\IfrSampleUm.dll
; =============== START
AddReg=IfrSampleUm_Install.AddReg
[IfrSampleUm_Install.AddReg]
HKR, "Parameters", "LogPages", %REG_DWORD%, 2
HKR, "Parameters", "WppRecorder_UseTimeStamp", %REG_DWORD%, 1
; =============== END
Varsayılan günlüğe izleme mesajları gönderme
Windows Sürücüsüne WPP Yazılım İzleme Ekleme başlığındaki yönergeleri izleyin. Örneğin:
-
DriverEntry'de
WPP_INIT_TRACING(DriverObject, RegistryPath)çağırın. -
EvtDriverUnload içinde
WPP_CLEANUP(WdfDriverWdmGetDriverObject(Driver))çağrı yapın.
Artık sürücü, izleme işlevini gerektiği gibi çağırabilir. Örneğin: TraceEvents(TRACE_LEVEL_ERROR, DBG_INIT, "WdfDriverCreate failed, %!STATUS!", ntStatus);
Daha fazla bilgi için bkz. WPP_INIT_TRACING ve WPP_CLEANUP.
Özelleştirilmiş bir günlüğe izleme mesajları gönderme
Bu yalnızca çekirdek modu sürücüleri (KMDF veya WDM) için geçerlidir.
Sürücülerin çoğu için tek bir varsayılan günlük yeterlidir. Ancak bazı senaryolarda, farklı varlıklar için ayrı günlük arabellekleri olması yararlı olur.
Örneğin, bir veri yolu sürücüsü yazılımı yazarken, her alt cihazın kendi arabelleği olmasını isteyebilirsiniz. Ardından hata ayıklayıcısını kullanarak yalnızca belirli bir alt cihaz için günlük dökümünü alabilirsiniz.
Özel günlükleri ayarlamak için sürücünün <WppRecorder.h> içermesi gerekir. Ardından aşağıdaki API'leri çağırın:
- WppRecorderLogCreate birden fazla günlük arabelleği oluşturmak için
- WPP_CLEANUP çağırmadan önce WppRecorderLogDelete.
- Belirli bir kaydedici günlüğü için dize tanımlayıcısı ayarlamak için WppRecorderLogSetIdentifier (isteğe bağlı)
- WppRecorderConfigure varsayılan günlüğü devre dışı bırakmak için yapılandırmak (isteğe bağlı)
Sürücü ayrıca, log tanıtıcısını ilk parametre olarak alan yeni bir izleme makrosunu tanımlamalıdır. Bir örnek için bkz . Toaster Örnek Sürücüsü.
Özel bir günlüğe zaman damgası bilgileri ekleme
Sürücünüz ek günlük tanıtıcıları oluşturmak için WppRecorderLogCreate'u çağırırsa, bazı günlük tanıtıcıları için zaman damgalarını etkinleştirmek mümkündür, ancak diğerleri için etkinleştirilmez.
Bunu yapmak için, zaman damgalarını kullanması gereken her log tutacağı için sürücü koduna tek bir satır eklemelisiniz. Kod örneği için bkz . WppRecorderLogCreate.
Uyarı
Bu işlev, WDK derlemesi 22557'den itibaren kullanılabilir. Belirli bir sürümü hedefleme hakkında bilgi için bkz. Windows'un Farklı Sürümleri için Sürücü Oluşturma.
Hata ayıklayıcıda izleme iletilerini görüntüleme
KMDF ve UMDF sürücüleri için her zamanki gibi !wdfkd.wdflogdump kullanın. Hem çerçeve IFR günlüğünü hem de sürücü IFR günlüğünü yazdırır.
WDM sürücüleri için !rcdrkd.rcdrloglist ve !rcdrkd.rcdrlogdump kullanın.