struktur DMUS_KERNEL_EVENT (dmusicks.h)
Struktur DMUS_KERNEL_EVENT digunakan untuk mengemas acara musik bertanda waktu.
Sintaks
typedef struct _DMUS_KERNEL_EVENT {
BYTE bReserved;
BYTE cbStruct;
USHORT cbEvent;
USHORT usChannelGroup;
USHORT usFlags;
REFERENCE_TIME ullPresTime100ns;
ULONGLONG ullBytePosition;
_DMUS_KERNEL_EVENT *pNextEvt;
union {
BYTE abData[sizeof(PBYTE)];
PBYTE pbData;
_DMUS_KERNEL_EVENT *pPackageEvt;
} uData;
} DMUS_KERNEL_EVENT, *PDMUS_KERNEL_EVENT;
Anggota
bReserved
Driver miniport tidak boleh mengubah anggota ini. Disiapkan untuk penggunaan masa mendatang. Jangan gunakan.
cbStruct
Driver miniport tidak boleh mengubah anggota ini. Anggota ini menentukan ukuran struktur DMUS_KERNEL_EVENT itu sendiri dan dapat berubah di masa depan.
cbEvent
Menentukan jumlah byte peristiwa yang tidak dikelilingi yang dirujuk oleh uData.
usChannelGroup
Menentukan grup saluran mana (set 16 saluran MIDI) yang menerima atau berasal dari peristiwa ini. Ini hanya unik dalam perangkat MIDI target (driver miniport).
usFlags
Menentukan apakah suatu peristiwa adalah paket dan apakah kejadian ini menyimpulkan pesan. Paket merangkum daftar peristiwa yang harus ditangani secara atomik. Anggota ini adalah bitfield yang dapat diatur ke bitwise ATAU dari satu atau beberapa bit bendera berikut:
DMUS_KEF_EVENT_COMPLETE (nol)
Menentukan pesan di mana seluruh pesan terkandung baik di uData.abData atau dalam buffer yang ditujukkan oleh uData.pbData. Yang pertama mencakup semua pesan singkat, dan berpotensi menyertakan pesan SysEx yang sangat singkat (lihat dokumentasi Microsoft Windows SDK) juga. Perlu diingat bahwa sizeof (PBYTE) bisa 8, bukan 4 pada Windows versi 64-bit.
DMUS_KEF_EVENT_INCOMPLETE
Menentukan bahwa kejadian ini adalah paket yang tidak lengkap atau pesan SysEx (lihat dokumentasi Windows SDK). Bendera ini menentukan bahwa pesan berlanjut di luar kejadian ini. Selama pengambilan MIDI, driver miniport dapat mengirim peristiwa MIDI "tidak dimasak" (data input MIDI mentah) ke sink pengambilan dengan menentukan bendera ini.
DMUS_KEF_PACKAGE_EVENT
Menentukan bahwa kejadian ini adalah paket. Bidang uData.pPackageEvt berisi penunjuk ke rantai peristiwa yang harus ditangani secara atomik.
ullPresTime100ns
Menentukan waktu presentasi untuk acara ini. Nilai 64-bit ini dinyatakan dalam unit 100 nanodetik. Jam master harus digunakan untuk mengevaluasi waktu presentasi ini.
ullBytePosition
8 16
pNextEvt
Arahkan ke peristiwa berikutnya dalam daftar, atau NULL jika tidak ada peristiwa yang mengikuti. Ini memfasilitasi rantai yang lewat dari pesan bertanda waktu yang identik ke driver miniport. Selain itu, perangkat keras yang melakukan pencampurannya sendiri dapat menerima atau mengirimkan grup pesan pada satu waktu.
uData
uData.abData[sizeof(PBYTE)]
Array byte yang berisi byte data peristiwa cbEvent . Data peristiwa biasanya berstatus MIDI dan byte data. Anggota uData ini digunakan jika cbEvent kurang dari atau sama dengan sizeof(PBYTE).
uData.pbData
Pointer ke buffer yang berisi byte cbEvent dari data peristiwa. Data peristiwa biasanya berstatus MIDI dan byte data. Anggota uData ini digunakan jika uFlags diatur ke DMUS_KEF_EVENT_COMPLETE dan cbEvent lebih besar dari sizeof (PBYTE).
uData.pPackageEvt
Arahkan ke rantai peristiwa, yang berupa daftar struktur DMUS_KERNEL_EVENT yang ditautkan. Data peristiwa biasanya terdiri dari status MIDI dan byte data. Peristiwa dalam daftar akan ditangani bersama-sama. Anggota uData ini digunakan jika uFlags diatur ke DMUS_KEF_PACKAGE_EVENT.
Keterangan
Struktur DMUS_KERNEL_EVENT digunakan oleh driver audio WDM yang menyediakan dukungan streaming kernel untuk DirectMusic.
Saat menangkap aliran MIDI, driver port DMus memanggil metode IAllocatorMXF::GetMessage untuk mengambil struktur DMUS_KERNEL_EVENT untuk menyimpan data yang diambil. Saat merender aliran MIDI, driver port memanggil metode IMXF::P utMessage untuk membuang struktur DMUS_KERNEL_EVENT saat selesai membacanya. Untuk informasi selengkapnya, lihat Transportasi MIDI.
Dalam kasus pengambilan MIDI, struktur DMUS_KERNEL_EVENT dapat dimas dengan pesan MIDI tunggal, ganda, atau terfragmentasi. Anggota usFlags harus diatur ke DMUS_KEF_EVENT_INCOMPLETE kecuali itu adalah satu pesan MIDI lengkap. Struktur ini juga berisi:
- Stempel waktu relatif terhadap jam master (ullPresTime100Ns)
- Informasi saluran yang diperluas (usChannelGroup)
<pin, channel_group, saluran>
Waktu presentasi tidak maju selama status KSSTATE_PAUSE dan KSSTATE_STOP, dan diatur ulang selama KSSTATE_STOP. Untuk informasi selengkapnya, lihat Jam KS.
Persyaratan
Persyaratan | Nilai |
---|---|
Header | dmusicks.h (termasuk Dmusicks.h) |
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