Gambaran umum ekstensi kelas audio ACX

Topik ini memberikan ringkasan tingkat tinggi dari Ekstensi Kelas Audio ACX.

Kerangka kerja ACX dibangun di atas Windows Driver Framework

Untuk memungkinkan driver audio lebih andal dan menawarkan pengalaman terbaik bagi pengguna PC, Audio Class eXtension (ACX) sekarang tersedia di pratinjau awal. ACX mendefinisikan ekstensi kelas Windows Driver Framework (WDF) baru untuk domain audio. Untuk informasi selengkapnya tentang WDF lihat Pengenalan Objek Kerangka Kerja. Banyak konsep WDF seperti target IO WDF, tersedia di ACX. Untuk informasi selengkapnya tentang target IO WDF, lihat Pengantar Target I/O.

ACX dibangun menggunakan Kerangka Kerja Driver Mode Kernel (KMDF) dan bukan Kerangka Kerja Driver Mode Pengguna (UMDF) untuk menghindari latensi yang terkait dengan pengalihan tugas beberapa kali dari mode Pengguna ke Kernel saat streaming. Driver audio portcls, model warisan saat ini, adalah WDM, driver berbasis mode kernel.

Penggunaan kerangka kerja ACX memudahkan untuk membuat driver audio yang berfungsi 'out of the box'. Misalnya, ACX mendukung penyelesaian default untuk sebagian besar pengaturannya. Ini memudahkan driver untuk menggunakan pengaturan yang benar, namun masih memungkinkan penyesuaian.

Kerangka kerja ACX memaparkan konsep audio sebagai objek WDF yang dapat berinteraksi dengan driver (streaming, format, dll.). Ini memungkinkan pengalaman pemrograman yang konsisten dan memungkinkan komunitas pengembang driver audio yang lebih besar.

Catatan

Header dan pustaka ACX tidak disertakan dalam WDK 10.0.22621.2428 (dirilis 24 Oktober 2023), tetapi tersedia dalam versi sebelumnya, serta terbaru (build seri 25000) Pratinjau Insider WDK. Untuk informasi selengkapnya tentang versi pratinjau WDK, lihat Menginstal versi pratinjau Windows Driver Kit (WDK).

Tujuan ACX

Ekstensi kelas audio (ACX) memiliki tujuan berikut.

  • Menyederhanakan upaya dan pengetahuan yang diperlukan untuk mengembangkan driver audio mandiri sederhana.
  • Kurangi jumlah kode yang perlu dikembangkan pihak ke-3. Lebih sedikit baris kode yang mengurangi pemeliharaan dan mempermudah penelusuran kesalahan.
  • Memungkinkan klien mode pengguna atas yang ada (layanan dan aplikasi) untuk berjalan apa adanya.
  • Menyederhanakan manajemen power-pnp dari driver tumpukan audio.
  • Tidak berdampak pada performa keseluruhan, yaitu, tidak ada latensi tambahan/nyata.
  • Menyederhanakan upaya yang diperlukan untuk mengembangkan driver audio multi-stack.
  • Izinkan driver pihak ke-3 untuk menentukan mekanisme penguncian yang akan digunakan saat streaming.
  • Menggunakan solusi isolasi penyebaran komponen Microsoft yang membuat modul driver/API mandiri dan dapat digunakan kembali.

Arsitektur ACX

Diagram ini menggambarkan arsitektur ACX yang menunjukkan aplikasi mode pengguna dan objek ACX yang ada dalam mode kernel dan perangkat keras audio di bagian bawah tumpukan. Selain objek ACX, pengembang driver memiliki akses ke objek WDF untuk memanfaatkan dalam kode driver mereka, misalnya untuk manajemen daya.

Diagram yang mengilustrasikan arsitektur ACX, memperlihatkan mode pengguna dan kernel dengan objek WDF dan ACX dalam mode kernel, dan perangkat keras audio di bagian bawah tumpukan.

Koeksistensi ACX dengan driver audio yang ada

ACX dirancang untuk berdampingan dengan driver audio yang ada, untuk memungkinkan migrasi fleksibel ke driver ACX baru.

  • Kompatibilitas biner dari driver miniport audio keluar, tidak berubah (berbasis WDM) dipertahankan oleh driver kelas Windows warisan yang ada.
  • Hanya streaming berbasis WaveRT yang saat ini didukung oleh ACX.
  • PortCls/K warisan dan tumpukan ACX baru berjalan berdampingan. Menggunakan ACX tidak memaksa pihak ke-3 untuk memindahkan driver audio mereka saat ini ke model baru. Karena model ini menawarkan banyak keuntungan, pihak ke-3 dapat secara sukarela memilih untuk menggunakannya untuk pengembangan audio mereka di masa depan.

Definisi umum ACX

Sirkuit - Komponen driver yang mewakili jalur audio parsial atau penuh. Sirkuit mewakili titik akhir yang ada dan kemampuannya.

Stream - Komponen driver yang dibuat untuk mewakili aliran audio, yang dibuat oleh Sirkuit. Stream terdiri dari daftar Elemen yang dibuat berdasarkan Elemen Sirkuit induk.

Sirkuit Stream - sirkuit dalam arsitektur multi-stack (jalur audio parsial) yang langsung berinteraksi dengan layanan streaming mode pengguna atas.

Sirkuit Inti - Sirkuit dalam arsitektur multi-stack (jalur audio parsial) yang memberikan identitas perangkat titik akhir audio.

Elemen - Subkomponen Sirkuit atau Stream, mewakili kemampuan audio perangkat keras garis bawah. Ini bisa berupa elemen Volume, atau Bisukan, atau Jack, atau elemen Modul pada sirkuit DSP, dll.

Jalur Audio Titik Akhir - Satu atau sekelompok objek Sirkuit yang tersambung bersama untuk mewakili satu titik akhir audio. Objek Sirkuit harus berasal dari tumpukan perangkat yang berbeda milik driver yang sama atau berbeda.

Ringkasan objek ACX

Untuk ringkasan objek ACX dasar, lihat Ringkasan objek ACX.

Contoh driver ACX

Driver sampel ACX sederhana tersedia untuk dilihat dan diunduh di GitHub di cabang pengembangan - https://github.com/microsoft/Windows-driver-samples/tree/develop/audio/Acx/Samples.

Pemverifikasi Driver

Penggunaan pemverifikasi driver didorong untuk semua driver Windows, termasuk driver ACX. Gunakan pemverifikasi driver untuk menampilkan kesalahan laten, mengurangi konsumsi daya, dan meningkatkan keandalan driver Anda. Untuk informasi selengkapnya, lihat Pemverifikasi Driver.

Komunikasi silang standar driver multi-tumpukan ACX

Jalur audio biasanya melalui beberapa komponen perangkat keras yang ditangani oleh tumpukan driver yang berbeda untuk menciptakan pengalaman audio yang lengkap. Sistem biasanya memiliki fungsionalitas DSP, CODEC, dan AMP yang diimplementasikan oleh vendor teknologi audio yang berbeda.

Dalam arsitektur multi-stack tanpa standar yang terdefinisi dengan baik, setiap vendor dipaksa untuk menentukan antarmuka kepemilikan dan protokol komunikasinya sendiri. Ini adalah tujuan ACX untuk memfasilitasi pengembangan driver audio multi-stack dengan mengambil kepemilikan sinkronisasi antara tumpukan-tumpukan ini dan memberikan pola sederhana yang dapat digunakan kembali untuk driver berkomunikasi satu sama lain.

Untuk informasi selengkapnya, lihat Komunikasi lintas driver multi tumpukan ACX.

Dokumentasi referensi ACX

Untuk informasi tentang dokumentasi referensi ACX tingkat header, lihat dokumentasi referensi ACX.

Lihat juga

Ringkasan objek ACX

Dokumentasi referensi ACX

Informasi versi ACX

Pengelogan dan penelusuran kesalahan ACX

Target ACX dan sinkronisasi driver

RUNPS paket permintaan ACX IO

Enumerasi perangkat ACX

Manajemen daya ACX

Komunikasi lintas driver multi tumpukan ACX

Streaming ACX