Bagikan melalui


DMus Miniport Driver

Driver miniport DMus mengelola fungsi yang bergantung pada perangkat keras dari perangkat MIDI tingkat lanjut. Perangkat ini mendukung kemampuan DirectMusic seperti pengaturan waktu pengurut presisi, suara yang dapat diunduh (DLS), dan grup saluran. Driver miniport DMus dapat mencapai performa tinggi dengan perangkat seperti MPU-401. Waktu dapat ditangani oleh driver miniport atau driver port, tergantung pada kemampuan perangkat keras. Driver miniport DMus juga dapat mendukung synthesizer perangkat lunak yang menghasilkan aliran output gelombang.

Driver miniport DMus untuk perangkat keras MIDI harus mendukung dua antarmuka:

  • Antarmuka miniport menginisialisasi objek miniport dan membuat aliran MIDI.

  • Antarmuka stream mengelola aliran MIDI dan mengekspos sebagian besar fungsionalitas driver miniport.

Antarmuka miniport, IMiniportDMus, mewarisi metode di antarmuka IMiniport . IMiniportDMus menyediakan metode tambahan berikut:

IMiniportDMus::Init

Menginisialisasi objek miniport.

IMiniportDMus::NewStream

Membuat objek stream baru.

IMiniportDMus::Service

Memberi tahu driver miniport tentang permintaan layanan.

Antarmuka stream, IMXF, mewarisi metode di antarmuka IUnknown . IMXF menyediakan metode tambahan berikut:

IMXF::ConnectOutput

Menyambungkan objek aliran ini, yang merupakan sumber data, ke antarmuka IMXF dari objek stream lain, yang merupakan sink data.

IMXF::D isconnectOutput

Memutuskan sambungan objek aliran ini dari antarmuka IMXF dari objek stream lain yang merupakan sink data.

IMXF::P utMessage

Meneruskan struktur DMUS_KERNEL_EVENT ke sink data.

IMXF::SetState

Mengatur status aliran.

Selain itu, antarmuka ISynthSinkDMus driver miniport DMus menyediakan fungsionalitas DLS untuk synthesizer perangkat lunak. ISynthSinkDMus mewarisi metode dalam antarmuka dasar IMXF. ISynthSinkDMus menyediakan metode tambahan berikut:

ISynthSinkDMus::RefTimeToSample

Mengonversi waktu referensi menjadi waktu sampel.

ISynthSinkDMus::Render

Merender data gelombang ke dalam buffer untuk sink gelombang.

ISynthSinkDMus::SampleToRefTime

Mengonversi waktu sampel menjadi waktu referensi.

ISynthSinkDMus::SyncToMaster

Menyinkronkan jam sampel ke jam master.

Sink gelombang driver port memanggil ISynthSinkDMus::Render untuk membaca data PCM gelombang yang dihasilkan synthesizer dari aliran input MIDI-nya. Untuk informasi selengkapnya tentang sink gelombang, lihat Wave Sink untuk Kernel-Mode Software Synthesizer.

Driver miniport memanggil antarmuka berikut pada driver port DMus:

IPortDMus

IAllocatorMXF

IMasterClock

PortCls berisi driver miniport DMus bawaan untuk perangkat MIDI dengan fungsi UART. Untuk informasi selengkapnya, lihat PcNewMiniport.