Struktur SYNTHCAPS (dmusprop.h)
Struktur SYNTHCAPS menentukan kemampuan synthesizer.
typedef struct _SYNTHCAPS {
GUID Guid;
DWORD Flags;
DWORD MemorySize;
DWORD MaxChannelGroups;
DWORD MaxVoices;
DWORD MaxAudioChannels;
DWORD EffectFlags;
WCHAR Description[128];
} SYNTHCAPS, *PSYNTHCAPS;
Guid
Menentukan ID kelas untuk antarmuka driver miniport synthesizer.
Flags
Menentukan kemampuan umum driver. Anggota ini adalah bitfield yang nilainya adalah nol atau bitwise ATAU dari satu atau beberapa bit bendera berikut:
Driver mendukung koleksi sampel yang dapat diunduh (DLS Tingkat 1).
Synth mewakili koneksi ke perangkat keras eksternal.
Driver mengimplementasikan synthesizer perangkat lunak.
Ukuran memori yang diberikan dalam anggota MemorySize valid dan mewakili jumlah maksimum memori sampel dalam byte. Bendera ini biasanya diatur ketika memori sampel bukan memori sistem.
Synth mendukung set suara MIDI Umum dalam perangkat keras.
Synth mendukung set suara Roland GS dalam perangkat keras.
Synth mendukung reverb.
Driver mendukung koleksi sampel yang dapat diunduh (DLS Level 2).
Synth dapat menggunakan memori sistem.
MemorySize
Menentukan jumlah memori sampel pada perangkat (dalam byte). Bidang ini harus berisi nilai SYNTH_PC_SYSTEMMEMORY jika perangkat menggunakan memori sistem untuk memori sampel tanpa batasan jumlah memori yang dialokasikan.
MaxChannelGroups
Menentukan jumlah maksimum grup saluran yang didukung driver ini. Setiap grup saluran mewakili satu set 16 saluran MIDI dan telah mengaitkan dengan semua status yang akan disimpan perangkat keras MIDI, yang mencakup DLS, GM, GS, XG, atau informasi mode lainnya. Namun, unduhan DLS adalah per driver dan dapat digunakan oleh salah satu grup saluran. Ini mencegah membuang-buang memori dengan mengunduh beberapa salinan sampel DLS yang sama, satu per grup saluran.
MaxVoices
Menentukan jumlah suara maksimum yang didukung perangkat penyajian. Jika handler properti tidak dapat memberikan nomor yang valid untuk anggota ini, maka harus mengatur anggota ke (ULONG)-1.
MaxAudioChannels
Menentukan jumlah maksimum saluran audio yang didukung perangkat penyajian. Jika handler properti tidak dapat memberikan nomor yang valid untuk anggota ini, maka harus mengatur anggota ke (ULONG)-1.
EffectFlags
Menentukan efek yang mampu dihasilkan oleh perangkat penyajian. Anggota ini adalah bitfield yang nilainya adalah nol atau bitwise ATAU dari bit bendera berikut:
Perangkat rendering dapat menghasilkan efek reverb.
Perangkat rendering dapat menghasilkan efek paduan suara.
Perangkat rendering dapat menghasilkan efek penundaan.
Jika perangkat tidak mendukung kemampuan ini, atur anggota ini ke SYNTH_EFFECT_NONE (nol).
Description[128]
Berisi deskripsi teks perangkat. Anggota ini adalah array WCHAR yang berisi string null-terminated (misalnya, "Microsoft MPU-401").
Permintaan get-property KSPROPERTY_SYNTH_CAPS menggunakan struktur SYNTHCAPS untuk mengambil kemampuan perangkat synthesizer dari driver miniport DMus.
SYNTH_CAPS mirip dengan struktur DMUS_PORTCAPS, yang dijelaskan dalam dokumentasi Microsoft Windows SDK.
Dalam driver sampel DMusUART di Windows Driver Kit (WDK), handler properti KSPROPERTY_SYNTH_CAPS mengatur anggota struktur SYNTHCAPS ke nilai berikut:
SYNTHCAPS *caps = (SYNTHCAPS*)pRequest->Value;
...
caps->Flags = SYNTH_PC_EXTERNAL;
caps->MemorySize = 0;
caps->MaxChannelGroups = 1;
caps->MaxVoices = 0xFFFFFFFF; // (ULONG)-1
caps->MaxAudioChannels = 0xFFFFFFFF; // (ULONG)-1
caps->EffectFlags = 0;
Dalam contoh ini, nilai 0xFFFFFFFF menunjukkan bahwa handler tidak memiliki cara untuk mengetahui MaxVoices yang sebenarnya dan MaxAudioChannels batas karena mereka sepenuhnya bergantung pada sintesis eksternal apa pun yang kebetulan terhubung ke UART. Di tempat lain dalam kode, tetapi tidak ditampilkan dalam contoh sebelumnya, handler properti DMusUART mengatur Guid anggota struktur SYNTHCAPS ke CLSID_MiniportDriverDMusUART atau CLSID_MiniportDriverDMusUARTCapture. Salah satu anggota Guid diatur ke tergantung pada apakah simpul target (jenis KSNODETYPE_SYNTHESIZER) untuk permintaan properti terletak pada jalur data yang menangani penyajian data atau mengambil data. Kedua ID kelas ditentukan dalam file header Dmusicks.h.
Syarat | Nilai |
---|---|
Header | dmusprop.h (termasuk Dmusprop.h) |