Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten temat zawiera informacje na temat rejestrowania, śledzenia i debugowania rozszerzeń klasy audio ACX.
Rejestrowanie sterowników ACX
Śledzenie oprogramowania dla sterowników jest zwykle oparte na śledzeniu zdarzeń dla systemu Windows (ETW), funkcji na poziomie jądra, która rejestruje komunikaty śledzenia zarówno w trybie jądra, jak i w trybie użytkownika. Ponieważ sterowniki ACX są sterownikami WDF, wszystkie funkcje rejestrowania i zdarzeń WDF są dostępne dla deweloperów sterowników ACX.
WPP
Ze względu na to, że ETW może być nieco skomplikowane w użyciu, większość deweloperów sterowników używa preprocesora śledzenia oprogramowania systemu Windows (WPP), który upraszcza i usprawnia proces implementacji śledzenia ETW w sterowniku.
Program ACX używa dzienników WPP do śledzenia i debugowania. Aby uzyskać więcej informacji, zobacz Using WPP Software Tracing in KMDF Drivers (Używanie funkcji śledzenia oprogramowania WPP w sterownikach KMDF ) i Adding WPP Software Tracing to a Windows Driver (Dodawanie śledzenia oprogramowania WPP do sterownika systemu Windows).
Rejestrator In-Flight (IFR)
Rejestrator In-Flight (IFR) jest obsługiwany i może być wyświetlany za pośrednictwem WDFKD, RCDRKD lub z rozszerzeniem debugera ACXKD, gdy jest dostępny. Aby uzyskać ogólne informacje dotyczące pracy z dziennikami IFR, zobacz Korzystanie z Inflight Trace Recorder (IFR) w sterownikach KMDF i UMDF 2 oraz Wideo: Dostęp do dzienników IFR sterownika bez debuggera
AcX rejestruje kluczowe zdarzenia przy użyciu innych dostawców ETW w celu uproszczenia wizualizacji tych zdarzeń specjalnych.
Dodawanie rejestrowania do sterownika
Sterowniki innych firm są zdecydowanie zachęcane do korzystania ze zdarzeń WPP i ETW również.
Ten przykładowy kod przedstawia sprawdzanie wartości zwracanej i rejestrowanie odpowiedniego błędu.
//
// 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); }
Wyróżniona wersja przykładowego kodu sterownika tostera zawiera przykłady śledzenia WMI oraz kod śledzenia do wielokrotnego użytku. Aby uzyskać więcej informacji na temat przykładowego sterownika tostera, zobacz Toaster Sample Driver.
Zalecenia dotyczące logowania sterowników ACX
Aby zwiększyć niezawodność sterownika ACX, należy wziąć pod uwagę następujące zachowania dotyczące rejestrowania.
- Nieoczekiwane wartości zwracane z operacji wejścia/wyjścia bufora strumieniowego lub innych typowych czynności przetwarzania sygnałów.
- Nieoczekiwane stany zasilania lub przejścia stanu zasilania.
- Błędy związane z wywołaniami wykonanymi podczas aktualizacji lub ponownej instalacji.
- Inne zachowania, które mogą prowadzić do "braku dźwięku", mogą być brane pod uwagę do logowania.
Korzystanie z rozszerzeń debugera śledzenia WMI
Aby wyświetlić zdarzenia śledzenia w debugerze, użyj rozszerzenia WMI, Wmitrace.dll. Zawiera bibliotekę funkcji zaprojektowanych do kontrolowania i wyświetlania śledzenia zdarzeń usługi WMI. Aby uzyskać więcej informacji, zobacz Rozszerzenia śledzenia WMI (Wmitrace.dll).
Debugowanie sterownika ACX
Sterowniki ACX są sterownikami WDF, więc techniki debugowania opisane dla sterowników WDF mają zastosowanie do sterowników ACX. Zapoznaj się z następującymi tematami, aby uzyskać informacje na temat debugowania sterowników WDF.
Ogólne informacje o narzędziach do debugowania
Narzędzia debugowania dla systemu Windows (WinDbg, KD, CDB, NTSD)
Debugowanie usługi KMDF
W tym przewodniku użyto tradycyjnego sterownika audio Sysvad, ale przedstawiono niektóre techniki, które mogą być pomocne dla sterowników ACX. Sterowniki debugujące — Laboratorium krok po kroku (tryb jądra Sysvad)
Instrukcje wideo
- Wideo: debugowanie sterownika z użyciem kodu źródłowego WDF
- Seria wideo: debugowanie sterowników Kernel-Mode Driver Framework
Biblioteka rozszerzenia debugera jądra ACX (AcxKd.dll)
Aby ułatwić debugowanie, program ACX ma bibliotekę rozszerzenia debugera jądra towarzyszącego (AcxKd.dll). Ta biblioteka ułatwia deweloperom śledzenie problemów na ścieżkach audio w konfiguracjach z jednym i wieloma stosami. Rozszerzenie kd umożliwia deweloperom wyszukiwanie wewnątrz struktur ACX.
Aby uzyskać więcej informacji na temat debugowania sterowników ACX i pracy z rozszerzeniem debugera AcxKd.dll, zobacz !acxkd.