Bagikan melalui


Pengantar Kelas Port

Sebagian besar driver perangkat keras untuk perangkat audio berbasis PCI dan DMA didasarkan pada pustaka Kelas Port, yang dapat diakses melalui driver sistem PortCls (Portcls.sys). PortCls adalah driver kelas port audio yang disertakan Microsoft sebagai bagian dari sistem operasi. PortCls memasok satu set driver port yang mengimplementasikan sebagian besar fungsionalitas filter streaming kernel (KS) generik. Oleh karena itu, PortCls menyederhanakan tugas pengembang driver audio. Vendor perangkat keras hanya perlu menyediakan satu set driver miniport untuk menangani fungsi khusus perangkat keras adaptor audio.

Meskipun vendor perangkat keras memiliki opsi untuk menerapkan filter KS mereka sendiri untuk perangkat audio mereka, opsi ini sulit dan tidak perlu untuk perangkat audio biasa. Anda dapat mengembangkan filter KS agar sesuai dengan Stream.sys, driver kelas Stream, atau Avstream.sys, driver kelas AVStream. Tetapi filter KS yang didasarkan pada Stream.sys tidak dapat memanfaatkan peningkatan yang hanya tersedia di AVStream. Untuk informasi selengkapnya tentang filter KS dan PortCls, lihat Memulai Driver Audio WDM.

Implementasi internal PortCls dapat berkembang untuk memanfaatkan peningkatan streaming kernel dalam rilis Windows berturut-turut sambil mempertahankan kompatibilitas dengan driver yang ada.

PortCls diimplementasikan dalam file sistem Portcls.sys sebagai driver ekspor (DLL mode kernel) dan berisi item berikut:

  • Serangkaian fungsi pembantu yang dapat dipanggil oleh driver adaptor

  • Kumpulan driver port audio

Vendor perangkat keras perangkat audio bertanggung jawab untuk menyediakan driver adaptor. Driver adaptor mencakup inisialisasi dan kode manajemen driver miniport (termasuk fungsi DriverEntry ) dan koleksi driver miniport audio .

Ketika sistem operasi memuat driver adaptor, driver adaptor membuat satu set objek driver miniport dan meminta driver sistem PortCls untuk membuat sekumpulan objek driver port yang sesuai. (Contoh kode dalam Pembuatan Subdevice mengilustrasikan proses ini.) Driver port ini biasanya merupakan subset dari driver yang tersedia dalam file Portcls.sys. Setiap driver miniport mengikat dirinya sendiri ke driver port yang cocok dari Portcls.sys untuk membentuk driver subdevice lengkap. Driver subdevice port-and-miniport kombinasi adalah filter KS (lihat Filter Audio). Misalnya, driver adaptor khas mungkin berisi tiga driver miniport: WaveRT, DMusUART, dan Topologi (dengan antarmuka IMiniportWaveRT, IMiniportDMus, dan IMiniportTopology ). Selama inisialisasi, driver miniport ini terikat dengan driver port WaveRT, DMus, dan Topologi (dengan antarmuka IPortWaveRT, IPortDMus, dan IPortTopology ) yang terkandung dalam file Portcls.sys. Masing-masing dari ketiga driver subdevice ini mengambil bentuk filter KS. Ketiga filter bersama-sama mengekspos fungsionalitas lengkap adaptor audio.

Biasanya, driver port menyediakan sebagian besar fungsionalitas untuk setiap kelas subdevice audio. Misalnya, driver port WaveRT melakukan sebagian besar pekerjaan yang diperlukan untuk mengalirkan data audio ke perangkat audio berbasis DMA, sedangkan driver miniport menyediakan detail khusus perangkat seperti alamat DMA dan nama perangkat.

Driver adaptor audio dan driver miniport biasanya ditulis dalam Microsoft C++ dan memanfaatkan antarmuka COM secara ekstensif. Arsitektur driver port-miniport mempromosikan desain modular. Penulis driver Miniport harus mengimplementasikan driver mereka sebagai kelas C++ yang berasal dari antarmuka IMiniport , yang didefinisikan dalam file header Portcls.h. Inisialisasi perangkat keras terjadi pada waktu pemuatan driver--biasanya dalam metode Init dari kelas turunan IMiniport (misalnya, IMiniportWaveRT::Init). Untuk informasi selengkapnya tentang implementasi COM dari driver miniport audio, lihat COM di Kernel.

Diagram berikut mengilustrasikan hubungan antara driver port dan miniport dan posisinya di tumpukan audio.

Diagram yang mengilustrasikan hubungan antara driver port dan miniport di tumpukan audio.

Dalam diagram sebelumnya, komponen KSEndpoint adalah file yang disediakan sistem yang disediakan dengan Windows Vista dan versi Windows yang lebih baru. Komponen ini disediakan dalam bentuk DLL (Audiokse.dll). KSEndpoint mengabstraksi titik akhir perangkat mode kernel, dan menyediakan mesin audio dengan akses ke titik akhir abstrak. Untuk informasi selengkapnya tentang mesin audio, lihat Menjelajahi Mesin Audio Windows Vista.

Legenda dalam diagram sebelumnya menunjukkan kotak yang mewakili komponen driver yang disediakan vendor. Perhatikan bahwa tepi atas setiap antarmuka driver miniport ke tepi bawah setiap driver port. Misalnya, driver port WaveRT mengekspos antarmuka IPortWaveRT ke driver miniport WaveRT, yang mengekspos antarmuka IMiniportWaveRT ke driver port. Antarmuka ini terkadang disebut sebagai antarmuka tepi atas dan tepi bawah .

Kelas port dan driver kelas AVStream mirip karena keduanya adalah driver WDM dan keduanya mendukung arsitektur streaming kernel WDM. Namun, driver kelas port berbeda dari driver kelas AVStream di bidang penanganan dan reentransi multiprosedur. Driver kelas port melakukan hal berikut:

  • Gunakan pendekatan tiga tingkat yang menggabungkan driver kelas, driver port, dan driver miniport yang disediakan vendor.

  • Memiliki sejumlah fungsi audio terbatas, memungkinkan driver miniport beroperasi lebih dekat ke perangkat keras audio.

  • Izinkan beberapa driver port atau miniport ditautkan untuk perangkat tertentu. Fitur ini memungkinkan dukungan yang lebih baik untuk kartu multifungsi.

  • Tidak mendukung bus eksternal (misalnya, USB). Semua driver port mendukung perangkat yang berada di bus sistem (PCMCIA, dan PCI).

Terminologi untuk menjelaskan port audio WDM dan driver miniport berbeda dalam beberapa hal dari istilah yang digunakan untuk kelas driver Windows lainnya. Perbedaan ini dijelaskan dalam Terminologi Audio WDM.

Bagian ini membahas topik berikut:

Implementasi Antarmuka Function-Specific

Dukungan PortCls oleh Sistem Operasi