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.
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.
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk