Pencatatan dan debugging ACX

Topik ini menyediakan informasi tentang pencatatan, pelacakan, dan debugging Ekstensi Kelas Audio ACX.

Pengelogan Pengandar ACX

Pelacakan perangkat lunak untuk driver biasanya didasarkan pada Pelacakan Peristiwa untuk Windows (ETW), fasilitas tingkat kernel yang mencatat pesan pelacakan untuk proses mode kernel dan mode pengguna. Karena driver ACX adalah driver WDF, semua kemampuan pengelogan dan peristiwa WDF tersedia untuk pengembang driver ACX.

WPP

Karena ETW bisa agak rumit untuk digunakan, sebagian besar pengembang driver menggunakan praprosesor pelacakan perangkat lunak Windows (WPP), yang menyederhanakan dan meningkatkan proses instrumenting driver untuk pelacakan ETW.

ACX menggunakan log WPP untuk penelusuran dan debugging. Untuk informasi selengkapnya, lihat Menggunakan Pelacakan Perangkat Lunak WPP di Driver KMDF dan Menambahkan Pelacakan Perangkat Lunak WPP ke Driver Windows.

In-Flight perekam (IFR)

In-Flight recorder (IFR) didukung dan dapat dilihat melalui WDFKD, RCDRKD atau dengan ekstensi debugger ACXKD apabila tersedia. Untuk informasi umum tentang bekerja dengan log IFR, lihat Menggunakan Inflight Trace Recorder (IFR) di Driver KMDF dan UMDF 2 dan Video: Mengakses log IFR driver tanpa debugger

ACX mencatat peristiwa utama menggunakan penyedia ETW lainnya untuk menyederhanakan visualisasi peristiwa khusus ini.

Menambahkan pengelogan ke driver Anda

Pengemudi pihak ketiga sangat direkomendasikan untuk menggunakan acara WPP dan ETW juga.

Contoh kode ini, menunjukkan pemeriksaan nilai pengembalian dan mencatat kesalahan yang sesuai.


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

Versi unggulan dari kode sampel driver Toaster menyediakan contoh pelacakan WMI serta kode pelacakan yang dapat digunakan kembali. Untuk informasi selengkapnya tentang sampel Toaster, lihat Driver Sampel Toaster.

Rekomendasi untuk pengelogan Driver ACX

Untuk meningkatkan keandalan driver ACX Anda, pertimbangkan perilaku berikut untuk pengelogan.

  • Nilai pengembalian tak terduga dari I/O buffer aliran atau aktivitas pemrosesan sinyal yang teratur lainnya.
  • Status daya yang tidak terduga atau transisi status daya.
  • Kesalahan yang terkait dengan panggilan yang dilakukan selama pembaruan atau penginstalan ulang.
  • Tindakan lain yang mungkin menyebabkan "tidak ada audio" dapat dipertimbangkan untuk pencatatan log.

Menggunakan ekstensi debugger pelacakan WMI

Untuk melihat peristiwa pelacakan di debugger, gunakan ekstensi WMI, Wmitrace.dll. Ini berisi pustaka fungsi yang dirancang untuk mengontrol dan memantau pelacakan peristiwa WMI. Untuk informasi selengkapnya, lihat Ekstensi Pelacakan WMI (Wmitrace.dll).

Penelusuran kesalahan driver ACX

Driver ACX adalah driver WDF, sehingga teknik debugging yang dijelaskan untuk driver WDF, berlaku untuk driver ACX. Lihat topik berikut untuk informasi tentang debugging driver WDF.

Informasi umum tentang alat penelusuran kesalahan

Alat Debugging untuk Windows (WinDbg, KD, CDB, NTSD)

Penelusuran kesalahan KMDF

Panduan Langkah-demi-Langkah Video

Pustaka ekstensi debugger kernel ACX (AcxKd.dll)

Untuk membantu penelusuran kesalahan, ACX memiliki pustaka ekstensi debugger kernel pendamping (AcxKd.dll). Pustaka ini membantu pengembang dalam melacak masalah pada jalur audio tunggal dan multi-layer. Ekstensi kd memungkinkan pengembang untuk melihat ke dalam struktur ACX.

Untuk informasi selengkapnya tentang penelusuran kesalahan driver ACX dan bekerja dengan ekstensi debugger AcxKd.dll, lihat !acxkd.

Lihat juga

Ikhtisar Ekstensi Kelas Audio ACX

Ringkasan objek ACX