Udostępnij przez


Rejestrowanie i debugowanie programu ACX

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

Instrukcje wideo

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.

Zobacz także

Omówienie rozszerzeń klasy audio ACX

Podsumowanie obiektów ACX