Ringkasan objek ACX

Topik ini menyediakan ringkasan tingkat tinggi objek Ekstensi Kelas Audio (ACX) yang membentuk dasar driver audio ACX. Untuk gambaran umum ACX, lihat Gambaran umum ekstensi kelas audio ACX.

Objek ACX adalah objek Windows Driver Framework (WDF) - WDFOBJECT. Untuk informasi selengkapnya tentang WDF lihat Pengenalan Objek Kerangka Kerja. Untuk ringkasan objek WDF, lihat Ringkasan Objek Kerangka Kerja.

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).

Hierarki objek ACX

Dalam ACX (seperti dalam WDF), objek driver adalah objek akar, dan semua objek lainnya adalah turunan/turunannya. Semua objek ACX adalah turunan dari objek driver secara langsung atau tidak langsung melalui objek ACX atau WDF lainnya. Driver ACX dapat menentukan induk objek ACX selama waktu pembuatan. Jika induk tidak ditentukan, ACX menggunakan induk default seperti yang dijelaskan di bagian ini.

Diagram yang mengilustrasikan hierarki objek ACX, dengan WDFDEVICE di objek ACX teratas dan utama seperti sirkuit dan streaming di bawah ini.

Sirkuit ACX

AcxCircuit mewakili jalur audio parsial atau penuh ke perangkat audio yang dirasakan pengguna (speaker, mikrofon, dll.). AcxCircuit memiliki setidaknya satu pin input dan satu pin output (ACXPIN), dan dapat menggabungkan satu atau beberapa objek seperti AcxElements. Secara default, AcxElements 'terhubung' dalam urutan perakitan yang sama.

Sirkuit audio adalah blok penyusun inti ACX. Dalam kerangka kerja ACX baru, driver audio membuat satu atau beberapa objek sirkuit ACX untuk mewakili jalur data/kontrol audio parsial atau lengkap. ACX merakit objek sirkuit ACX ini bersama-sama untuk membuat jalur audio lengkap yang mewakili titik akhir audio. ACX bertanggung jawab untuk mengelola sirkuit ACX dan dependensinya. Urutan tentang bagaimana sirkuit ini dirakit dapat ditentukan secara statis pada waktu inisialisasi atau ditentukan secara dinamis pada durasi.

Titik akhir audio dalam kerangka kerja ACX adalah kumpulan satu atau beberapa sirkuit ACX. Setiap sirkuit ACX dalam jalur audio multi sirkuit harus milik tumpukan perangkat PnP yang berbeda. Driver ACX dapat membuat satu atau beberapa sirkuit pada waktu inisialisasi, atau dapat membuat sirkuit pada durasi, sebagai efek samping dari peristiwa eksternal, seperti setelah mendeteksi komponen audio baru, atau karena mendaftarkan dirinya dengan ACX sebagai pabrik untuk jenis sirkuit tertentu, dan kerangka kerja ACX meminta komponen pabrik untuk membuat sirkuit baru jenis itu (lihat manajer/pabrik sirkuit ACX yang dijelaskan nanti dalam topik ini).

  • AcxCircuit mungkin memiliki satu atau beberapa aliran.

  • AcxCircuit memiliki antrean WDF khusus. Untuk informasi selengkapnya tentang antrean WDF, lihat Objek Antrean Kerangka Kerja.

DDI untuk sirkuit ACX dijelaskan di header acxcircuit.h .

ACX Pin

Sama seperti pada driver audio WDM Portcls, dan objek AcxPin mewakili koneksi logis (bukan koneksi fisik) di mana aliran data memasuki adaptor dari bus komunikasi sistem atau memasuki bus komunikasi sistem dari adaptor.

DDI untuk Pin dijelaskan di header acxpin.h .

ACX Stream

AcxStream mewakili aliran audio pada perangkat keras sirkuit tertentu. AcxStream dapat menggabungkan satu atau beberapa objek seperti AcxElements. Secara default, AcxElements 'terhubung' dalam urutan perakitan yang sama. AcxStream hanya dikaitkan dengan satu sirkuit ACX.

  • AcxStream memiliki antrean WDF khusus. Untuk informasi selengkapnya tentang antrean WDF, lihat Objek Antrean Kerangka Kerja
  • AcxStream mendukung berbagai status. Status ini menunjukkan kapan audio mengalir (status RUN) atau tidak mengalir (status JEDA atau STOP).
  • Saat ini ACX mendukung dua jenis aliran: objek aliran ACX dasar yang digunakan oleh sirkuit non-streaming, dan objek aliran ACX RT yang digunakan oleh sirkuit streaming.

DDI untuk aliran didefinisikan dalam header acxstreams.h .

Target ACX

WdfIoTarget adalah abstraksi WDF untuk memfasilitasi komunikasi antara dua tumpukan yang berbeda. Untuk informasi selengkapnya tentang target IO WDF, lihat Pengantar Target I/O.

  • Driver menggunakan AcxTargetCircuit untuk berkomunikasi dengan sirkuit jarak jauh yang diekspos oleh tumpukan yang berbeda. AcxTargetCircuit diimplementasikan menggunakan WdfIoTarget.
  • Driver menggunakan AcxTargetPin untuk berkomunikasi dengan pin sirkuit jarak jauh yang diekspos oleh tumpukan yang berbeda. AcxTargetPin diimplementasikan menggunakan WdfIoTarget untuk mengirim pesan ke entitas pin jarak jauh.
  • Driver menggunakan AcxTargetElement untuk berkomunikasi dengan elemen sirkuit jarak jauh yang diekspos oleh tumpukan yang berbeda. AcxTargetElement diimplementasikan menggunakan WdfIoTarget untuk mengirim pesan ke entitas elemen jarak jauh.
  • Driver menggunakan AcxTargetStream untuk berkomunikasi dengan aliran sirkuit jarak jauh yang diekspos oleh tumpukan yang berbeda. AcxTargetStream diimplementasikan menggunakan WdfIoTarget untuk membuat aliran jarak jauh dan mengubah status aliran jarak jauh.
  • Driver menggunakan AcxTargetFactoryCircuit untuk berkomunikasi dengan instans pabrik sirkuit jarak jauh. AcxTargetFactoryCircuit diimplementasikan menggunakan WdfTarget untuk mengirim pesan ke pabrik sirkuit jarak jauh.

Masing-masing jenis ACX di atas mendukung properti, metode, dan peristiwa untuk berinteraksi dengan sirkuit jarak jauh. Semua jenis ini dibangun di atas objek WdfIoTarget.

DDI untuk target didefinisikan dalam header acxtargets.h .

ACX Stream Bridge

Objek AcxStreamBridge digunakan oleh sirkuit untuk menyebarluaskan pembuatan aliran, transisi status aliran, dan pengaturan DRM antar segmen sirkuit. Objek ini hanya digunakan dalam skenario multi sirkuit (komposit audio). Driver dapat mengaitkan satu atau beberapa objek ACXSTREAMBRIDGE ke pin penghubung. Pin jembatan adalah ACXPIN yang secara logis terhubung ke ACXPIN korespoinding di sirkuit lain.

DDI untuk Stream dijelaskan di header acxstreams.h .

Contoh tata letak sirkuit simpul mesin audio ACX

Diagram berikut mengilustrasikan sirkuit ACX. Host dan pin offload adalah input ke sirkuit dengan pin loopback yang dapat digunakan untuk pembatalan gema. Outputnya bisa menjadi pin jembatan yang merutekan ke speaker.

Diagram yang mengilustrasikan sirkuit ACX dengan pin host, offload, dan loopback di sebelah kiri, dan pin jembatan di sebelah kanan, dirutekan melalui simpul mesin audio.

Perhatikan bahwa driver tidak perlu melakukan langkah menyambungkan secara eksplisit saat sirkuit/elemen terhubung dalam urutan yang sama saat ditambahkan ke sirkuit.

Secara default ACX menghubungkan elemen mulai dari pin sink permintaan ACX sirkuit dan diakhiri dengan pin jembatan perangkat sirkuit untuk perangkat render dan capture.

Manajer ACX

Manajer ACX digunakan untuk tugas sistem seperti mendukung titik akhir audio komposit. Jenis titik akhir ini dikelola oleh satu atau beberapa tumpukan driver dari vendor yang sama atau berbeda. Klien dapat melakukan pra-konfigurasi konfigurasi ini di ACPI atau menggunakan DDI Manajer ACX secara langsung. DDI untuk manajer ACX dijelaskan di header acxmanager.h .

Tas Objek ACX

Acx Object Bag digunakan untuk menyimpan berbagai jenis data. ACXOBJECTBAG dapat diteruskan sebagai argumen di berbagai DDI. DDI untuk Object Bag dijelaskan di header acxmisc.h .

Ringkasan objek ACX

Tabel berikut ini mencantumkan semua objek ACX dan menyediakan beberapa informasi dasar tentang setiap objek.

Handle Nama Tujuan
ACXMANAGER The ACX Manager Objek ACX Manager yang digunakan untuk mengelola dan mengontrol objek lain.
ACXOBJECTBAG Tas Objek Digunakan untuk menyimpan data untuk digunakan dengan objek.
ACXEVENT Peristiwa ACX Untuk peristiwa KS (kernel-streaming).
ACXEVENTDATA Data kejadian Data yang terkait dengan peristiwa.
ACXPNPEVENT Peristiwa Pnp Untuk peristiwa plug and play.
ACXCIRCUIT Sirkuit Sirkuit ACX yang dijelaskan di atas dalam topik ini.
ACXPIN Menyematkan Objek pin ACX mewakili koneksi logis dan dijelaskan di atas dalam topik ini.
ACXELEMENT Elemen Digunakan untuk mewakili elemen apa pun yang dapat ditambahkan ke AcxCircuit atau AcxStream, seperti AcxVolume
ACXAUDIOENGINE Mesin Audio Mesin audio ACX yang digunakan dalam sirkuit render untuk mewakili DSP.
ACXSTREAMAUDIOENGINE Mesin Audio Stream Digunakan dalam aliran render untuk mewakili DSP.
ACXKEYWORDSPOTTER Spotter kata kunci Spotter kata kunci, digunakan dalam sirkuit pengambilan untuk deteksi kata kunci dalam aliran audio.
ACXVOLUME Volume Digunakan untuk mewakili volume, perolehan, peningkatan.
ACXMUTE Bisukan Digunakan untuk mewakili elemen bisu.
ACXJACK Jack Digunakan untuk mewakili jack audio atau konektor fisik lainnya.
ACXMICARRAYGEOMETRY Geometri Array Mikrofon Digunakan untuk mewakili geometri array mikrofon, seperti lokasi mikrofon.
ACXPEAKMETER Meter Puncak Digunakan saat perangkat keras mendukung fungsionalitas meter puncak.
ACXSTREAM Stream Digunakan untuk mewakili aliran audio yang dibuat oleh sirkuit, yang dijelaskan di atas dalam topik ini.
ACXDATAFORMAT Format data Format data mewakili format data yang didukung oleh perangkat audio.
ACXDATAFORMATLIST Daftar Format Data Daftar format data audio yang tersedia untuk digunakan.
ACXTARGETCIRCUIT Sirkuit Target Digunakan untuk berkomunikasi dengan sirkuit jarak jauh yang diekspos oleh tumpukan yang berbeda.
ACXTARGETPIN Target Pin Digunakan untuk berkomunikasi dengan pin sirkuit jarak jauh yang diekspos oleh tumpukan yang berbeda.
ACXTARGETELEMENT Elemen Target Digunakan untuk mewakili elemen target yang dapat ditambahkan ke AcxCircuit atau AcxStream, seperti AcxVolume
ACXTARGETSTREAM Aliran Target Digunakan untuk berkomunikasi dengan aliran sirkuit jarak jauh yang diekspos oleh tumpukan yang berbeda.
ACXTARGETFACTORYCIRCUIT Pabrik Sirkuit Target Digunakan untuk berkomunikasi dengan pabrik sirkuit jarak jauh.
ACXSTREAMBRIDGE Jembatan Aliran Digunakan oleh sirkuit untuk menyebarluaskan pembuatan aliran, menyatakan transisi dan DRM antara segmen sirkuit.
ACXCOMPOSITE Komposit Digunakan untuk mewakili arsitektur aliran multi sirkuit/multi-stack/multi-vendor.
ACXCOMPOSITEFACTORY Pabrik Komposit Pabrik yang membuat sirkuit audio komposit.
ACXFACTORYCIRCUIT Sirkuit Pabrik Pabrik yang membuat sirkuit menggunakan templat tertentu.
ACXCIRCUITMANAGER Pengelola Sirkuit Penyedia sirkuit yang digunakan untuk pembuatan sirkuit dinamis.
ACXCOMPOSITETEMPLATE Templat Komposit Templat komposit mewakili pengikatan audio parsial atau lengkap. Templat komposit dapat memiliki satu atau beberapa templat sirkuit.
ACXCIRCUITTEMPLATE Templat Sirkuit Templat sirkuit mewakili jalur audio parsial.
ACXAUDIOMODULE Modul Audio Untuk fungsionalitas add-on pihak ke-3 kustom.

Objek ACX berikut digunakan untuk menyimpan informasi sirkuit, streaming, dan pabrik sirkuit.

Handle Tujuan
ACXCIRCUIT_INIT Menyimpan data inisialisasi sirkuit ACX
ACXSTREAM_INIT Menyimpan data inisialisasi aliran ACX
ACXFACTORYCIRCUIT_INIT Menyimpan data inisialisasi yang digunakan oleh pabrik sirkuit ACX

Lihat juga

Gambaran umum ekstensi kelas audio ACX

Dokumentasi referensi ACX