Bagikan melalui


Driver Miniport Topologi

Driver miniport Topologi mengelola berbagai kontrol perangkat keras (misalnya, volume dan bisukan) di sirkuit mixer adaptor audio. Driver ini menghitung kontrol sebagai simpul dalam topologi mixer, memungkinkan klien untuk menemukan interkoneksi antara simpul, dan untuk mengkueri dan mengatur parameter kontrol di setiap simpul.

Driver sistem SysAudio melihat topologi adaptor saat membangun grafik filter audio. API mixer (dijelaskan di bagian multimedia Windows dari dokumentasi Microsoft Windows SDK) mewakili node topologi sebagai kontrol mixer-line dan mengeksposnya ke aplikasi mode pengguna seperti SndVol32. Untuk informasi selengkapnya, lihat SysTray dan SndVol32.

Driver miniport Topologi harus menerapkan antarmuka miniport Topologi, yang digunakan driver port untuk menginisialisasi driver miniport. Antarmuka miniport, IMiniportTopology, mewarisi metode dalam antarmuka IMiniport ; ini tidak menyediakan metode tambahan. Driver adaptor audio membentuk filter topologi dengan mengikat antarmuka IMiniportTopology objek miniport ke antarmuka IPortTopology objek port.

Biasanya, filter topologi mencakup sebagian besar node topologi adaptor, meskipun perangkat lain dalam adaptor mungkin berisi node topologi tambahan. Misalnya, perangkat gelombang, yang direpresentasikan sebagai filter gelombang, mungkin berisi simpul DAC (KSNODETYPE_DAC) dan ADC (KSNODETYPE_ADC).

Kueri dan pengaturan parameter kontrol pada simpul topologi dicapai melalui permintaan properti. Setiap jenis node dikaitkan dengan properti atau sekumpulan properti tertentu. Simpul mungkin hanya mendukung satu nilai kontrol. Misalnya, node volume (KSNODETYPE_VOLUME) memiliki nilai yang menunjukkan pengaturan volumenya saat ini. Simpul lain mungkin mendukung beberapa nilai kontrol. Misalnya, simpul 3D (KSNODETYPE_3D_EFFECTS) mendukung sejumlah properti buffer 3D dan pendengar 3D. Simpul jumlah (KSNODETYPE_SUM), di sisi lain, tidak memiliki nilai kontrol.

Driver miniport Topologi menggunakan deskriptor koneksi (PCCONNECTION_DESCRIPTOR) untuk menggambarkan koneksi antara dua node topologi. Setiap koneksi diarahkan dan menentukan dari-simpul dan ke-simpul. Simpul mungkin memiliki beberapa pin, dan fungsi yang dilakukan oleh satu pin mungkin berbeda dari pin lainnya. Untuk membedakan satu pin dari yang lain, driver miniport memberi nomor pin pada node. Nomor pin ini muncul di deskriptor koneksi. Misalnya, filter variabel status mungkin memiliki tiga pin output - masing-masing untuk frekuensi tinggi, tengah, dan rendah - bernomor 1, 2, dan 3. Penomoran pin memungkinkan klien driver miniport menentukan koneksi mana yang terkait dengan pin mana.

Deskriptor koneksi menggunakan pengidentifikasi simpul yang dibedakan, PCFILTER_NODE, untuk membedakan pin pada filter dari pin pada simpul dalam filter. Setiap koneksi sirkuit mixer hardwired ke perangkat penyajian audio dan pengambilan di adaptor audio direpresentasikan sebagai pin pada filter topologi. Pin filter topologi lainnya mewakili koneksi fisik eksternal, seperti jack lineout pada kartu adaptor. Pin pada filter topologi mewakili koneksi fisik dan hardwired dari perangkat keras adaptor. Dengan demikian, pin tidak dapat memberikan kontrol eksplisit atas apakah koneksi dibuat, dan tidak dapat digunakan untuk mengelola aliran data melalui koneksi tersebut.

Pendeskripsi koneksi tunggal dapat menggambarkan koneksi antara dua jenis pin dalam topologi. Pin di dua sisi koneksi dapat berupa pin pada filter atau pin pada simpul di dalam filter, atau koneksi dapat memiliki pin filter di satu sisi dan pin simpul di sisi lain. Driver miniport menentukan topologinya sebagai array deskriptor koneksi. Satu pin dapat memiliki lebih dari satu koneksi, yang berarti bahwa pin yang sama dapat muncul di lebih dari satu deskriptor koneksi dalam array.

Deskripsi topologi yang diperoleh klien dari driver miniport tidak dirancang untuk mendukung penemuan terbuka tentang cara menafsirkan jenis node yang tidak diketahui oleh klien. Penomoran pin simpul saja tidak memberi klien informasi yang diperlukan untuk menemukan fungsi pin. Meskipun driver miniport mengidentifikasi jenis node (dengan cara GUID), driver miniport tidak menyediakan daftar parameter standar untuk menjelaskan jenis node atau pin yang didukung oleh jenis node.

Misalnya, jika klien menghitung simpul yang menggunakan KSNODETYPE_VOLUME GUID jenis node untuk mengidentifikasi dirinya sendiri, klien dapat menggunakan simpul hanya jika mengetahui konvensi untuk berurusan dengan simpul volume. Menurut konvensi, simpul volume, misalnya, mendukung properti KSPROPERTY_AUDIO_VOLUMELEVEL dan menetapkan nomor pin simpul 0 dan 1 ke pin output (sumber) dan pin input (sink). Selain itu, klien yang mampu mengontrol simpul volume biasanya melakukan pencarian terarah yang membatasi eksplorasinya ke sejumlah kecil jenis node (volume dan simpul bisu, misalnya). Klien biasanya hanya mengeksplorasi bagian dari grafik filter yang kemungkinan berisi simpul volume (misalnya, garis mixer).

Antarmuka miniport mendukung pengiriman perubahan nilai kontrol yang tidak diminta dari driver miniport ke driver port. Fitur ini mengakomodasi perangkat dengan kenop kontrol, penggeser, atau sakelar yang dapat dimanipulasi secara fisik oleh pengguna. Setiap kali pengguna mengubah nilai kontrol simpul, gangguan perangkat keras memberi tahu driver port bahwa peristiwa perangkat keras telah terjadi.