Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Toto téma obsahuje informace o protokolování, trasování a ladění rozšíření audio třídy ACX.
Protokolování ovladačů ACX
Trasování softwaru pro ovladače je obvykle založeno na trasování událostí ve Windows (ETW), které protokoluje zprávy trasování pro procesy v režimu jádra i v uživatelském režimu. Vzhledem k tomu, že ovladače ACX jsou ovladače WDF, jsou všechny možnosti protokolování a událostí WDF k dispozici pro vývojáře ovladačů ACX.
WPP
Vzhledem k tomu, že trasování událostí pro Windows (ETW) může být poněkud složité, většina vývojářů ovladačů používá preprocesor trasování softwaru Windows (WPP), který zjednodušuje a vylepšuje proces instrumentace ovladače pro ETW trasování.
ACX používá protokoly WPP k trasování a ladění. Další informace naleznete v tématu Použití trasování softwaru WPP v ovladačích KMDF a přidání trasování softwaru WPP do ovladače Systému Windows.
záznamník In-Flight (IFR)
In-Flight záznam (IFR) je podporovaný a je možné ho zobrazit prostřednictvím WDFKD, RCDRKD nebo s rozšířením ladicího programu ACXKD, pokud je k dispozici. Obecné informace o práci s protokoly IFR najdete v tématu Použití nástroje Inflight Trace Recorder (IFR) v ovladačích KMDF a UMDF 2 a video: Přístup k protokolům ovladače IFR bez ladicího programu
ACX protokoluje klíčové události pomocí jiných poskytovatelů ETW, aby se zjednodušila vizualizace těchto událostí.
Přidání protokolování do ovladače
Ovladačům třetích stran se důrazně doporučuje, aby používali události WPP a ETW.
Tento ukázkový kód ukazuje kontrolu návratové hodnoty a protokolování příslušné chyby.
//
// The driver uses this DDI to delete the circuits from the current device.
//
status = AcxDeviceRemoveCircuit(Device, devCtx->Speaker);
if (!NT_SUCCESS(status)) { DrvLogError(g_AudioDspLog, FLAG_INIT, L"Failed to remove speaker circuit, continuing with ReleaseHardware, %!STATUS!", status); }
status = AcxDeviceRemoveCircuit(Device, devCtx->MicArray);
if (!NT_SUCCESS(status)) { DrvLogError(g_AudioDspLog, FLAG_INIT, L"Failed to remove micarray circuit, continuing with ReleaseHardware, %!STATUS!", status); }
status = AcxDeviceRemoveCircuit(Device, devCtx->SpeakerHp);
if (!NT_SUCCESS(status)) { DrvLogError(g_AudioDspLog, FLAG_INIT, L"Failed to remove speakerHp circuit, continuing with ReleaseHardware, %!STATUS!", status); }
status = AcxDeviceRemoveCircuit(Device, devCtx->MicrophoneHp);
if (!NT_SUCCESS(status)) { DrvLogError(g_AudioDspLog, FLAG_INIT, L"Failed to remove microphoneHp circuit, continuing with ReleaseHardware, %!STATUS!", status); }
status = AcxDeviceRemoveCircuit(Device, devCtx->HDMI);
if (!NT_SUCCESS(status)) { DrvLogError(g_AudioDspLog, FLAG_INIT, L"Failed to remove HDMI circuit, continuing with ReleaseHardware, %!STATUS!", status); }
Doporučená verze vzorového kódu ovladače Toaster poskytuje příklady trasování rozhraní WMI a opětovně použitelný kód pro trasování. Další informace o vzorku Toaster naleznete v Toaster Sample Driver.
Doporučení pro protokolování ovladačů ACX
Pokud chcete zvýšit spolehlivost ovladače ACX, zvažte následující chování protokolování.
- Neočekávané návratové hodnoty ze vstupně-výstupních operací vyrovnávací paměti streamu nebo jiné běžné aktivity zpracování signálu.
- Neočekávané stavy napájení nebo přechody stavu napájení
- Chyby související s voláními provedenými během aktualizací nebo opětovné instalace
- Jiné chování, které může vést k "bez zvuku", lze zvážit pro protokolování.
Použití rozšíření ladicího programu pro trasování rozhraní WMI
Chcete-li zobrazit události trasování v ladicím programu, použijte rozšíření WMI, Wmitrace.dll. Obsahuje knihovnu funkcí navržených pro řízení a zobrazení trasování událostí rozhraní WMI. Další informace naleznete v tématu Rozšíření trasování WMI (Wmitrace.dll).
Ladění ovladačů ACX
Ovladače ACX jsou ovladače WDF, takže techniky ladění popsané pro ovladače WDF platí pro ovladače ACX. Informace o ladění ovladačů WDF najdete v následujících tématech.
Obecné informace o ladicích nástrojích
Nástroje pro ladění systému Windows (WinDbg, KD, CDB, NTSD)
Ladění KMDF
Tento návod používá tradiční ovladač zvuku Sysvad, ale ukazuje některé techniky, které můžou být pomoct ovladačům ACX. Ladění ovladačů – podrobné testovací prostředí (režim jádra Sysvad)
Video návody
- Video: Ladění ovladače pomocí zdrojového kódu WDF
- Série videí: Ladění ovladačů Frameworku Kernel-Mode Driver
Knihovna rozšíření ladicího programu jádra ACX (AcxKd.dll)
Pro podporu ladění má ACX doprovodnou knihovnu rozšíření ladicího programu jádra (AcxKd.dll). Tato knihovna pomáhá vývojářům sledovat problémy na jednotlivých a víceúrovňových zvukových cestách. Rozšíření kd umožňuje vývojářům podívat se do struktur ACX.
Další informace o ladění ovladačů ACX a práci s rozšířením ladicího programu AcxKd.dll naleznete v tématu !acxkd.