Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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
Den här genomgången använder den traditionella Sysvad-ljuddrivrutinen, men visar några tekniker som kan vara till hjälp för ACX-drivrutiner. Felsöka drivrutiner – Steg för steg-labb (Sysvad-kärnläge)
Videogenomgångar
- Video: Felsöka drivrutinen med WDF-källkod
- Videoserie: Felsöka drivrutiner för Kernel-Mode Driver Framework
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