Sdílet prostřednictvím


Protokolování a ladění ACX

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

Video návody

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.

Viz také

Přehled rozšíření zvukových tříd ACX

Souhrn objektů ACX