Dela via


ACX-loggning och felsökning

Det här avsnittet innehåller information om loggning, spårning och felsökning av ACX-ljudklasstillägg.

Loggning av ACX-drivrutin

Spårning av programvara för drivrutiner baseras vanligtvis på händelsespårning för Windows (ETW), en anläggning på kernelnivå som loggar spårningsmeddelanden för processer i både kernelläge och användarläge. Eftersom ACX-drivrutiner är WDF-drivrutiner är alla WDF-loggnings- och händelsefunktioner tillgängliga för ACX-drivrutinsutvecklare.

WPP

Eftersom ETW kan vara något komplicerat att använda använder de flesta drivrutinsutvecklare Windows software trace preprocessor (WPP), vilket förenklar och förbättrar processen med att instrumentera en drivrutin för ETW-spårning.

ACX använder WPP-loggar för spårning och felsökning. Mer information finns i Använda WPP Software Tracing i KMDF-drivrutiner och Lägga till WPP Software Tracing till en Windows-drivrutin.

In-Flight inspelare (IFR)

In-Flight inspelare (IFR) stöds och kan visas via WDFKD, RCDRKD eller med ACXKD-felsökningstillägget när det är tillgängligt. Allmän information om hur du arbetar med IFR-loggar finns i Att använda Inflight Trace Recorder (IFR) i KMDF- och UMDF 2-drivrutiner och Video: Åtkomst till IFR-loggar för drivrutiner utan en debugger.

ACX loggar viktiga händelser med hjälp av andra ETW-leverantörer för att förenkla visualiseringen av dessa speciella händelser.

Lägga till loggning i drivrutinen

Det uppmuntras starkt att drivrutiner från tredje part också använder WPP- och ETW-händelser.

Den här exempelkoden visar hur du kontrollerar ett returvärde och loggar ett lämpligt fel.


    //
    // 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); }

Den aktuella versionen av exempelkoden för brödrostardrivrutiner innehåller exempel på WMI-spårning samt återanvändbar spårningskod. Mer information om brödrostexemplet finns i Exempeldrivrutin för brödrost.

Rekommendationer för ACX-drivrutinsloggning

För att förbättra tillförlitligheten för din ACX-drivrutin bör du överväga följande beteenden för loggning.

  • Oväntade returvärden från strömbuffertens I/O eller annan vanlig signalbearbetningsaktivitet.
  • Oväntade energitillstånd eller övergångar av energitillstånd.
  • Fel som rör anrop som görs under uppdateringar eller ominstallation.
  • Andra beteenden som kan leda till "inget ljud" kan övervägas för loggning.

Använda tilläggen för WMI-spårningsfelsökning

Om du vill visa spårningshändelser i felsökningsprogrammet använder du WMI-tillägget Wmitrace.dll. Den innehåller ett bibliotek med funktioner som är utformade för att styra och visa WMI-händelsespårning. Mer information finns i WMI-spårningstillägg (Wmitrace.dll).

Felsökning av ACX-drivrutin

ACX-drivrutiner är WDF-drivrutiner, så de felsökningstekniker som beskrivs för WDF-drivrutiner gäller för ACX-drivrutiner. Mer information om felsökning av WDF-drivrutiner finns i följande avsnitt.

Allmän information om felsökningsverktygen

Felsökningsverktyg för Windows (WinDbg, KD, CDB, NTSD)

KMDF-felsökning

Videogenomgångar

Bibliotek för ACX kernelfelsökartillägg (AcxKd.dll)

För att underlätta felsökningen har ACX ett tilläggsbibliotek för kernelfelsökare (AcxKd.dll). Det här biblioteket hjälper utvecklare att lokalisera problem i enstaka och flerlagers ljudvägar. KD-tillägget gör det möjligt för utvecklare att titta i ACX-strukturer.

Mer information om hur du felsöker ACX-drivrutiner och arbetar med tillägget AcxKd.dll felsökningsprogram finns i !acxkd.

Se även

översikt över ACX-ljudklasstillägg

Sammanfattning av ACX-objekt