共用方式為


配置器

配置器的介面是 IMXFIAllocatorMXF。 這些介面可讓您重複使用DMUS_KERNEL_EVENT結構 而不需配置和解除配置記憶體。 IMXF::P utMessage 提供配置器的結構,而 IAllocatorMXF::GetMessage 會從配置器擷取全新零的DMUS_KERNEL_EVENT結構以供重複使用。 (配置器會以集區中的空白DMUS_KERNEL_EVENT結構建立,使其永遠不會啟動空白。) 如下圖所示,以DMUS_EVENTHEADER結構的形式) 從 dmusic.dll 進入解壓縮工具的 IRP (。

圖表說明配置器程式中透過埠和迷你埠驅動程式的 IRP 流程。

解壓縮程式會呼叫 IAllocatorMXF::GetMessage 來擷取空 DMUS_KERNEL_EVENT 結構。 解壓縮程式會從 IRP 擷取DMUS_KERNEL_EVENT結構、在每個 MIDI 事件) 一個 (填入這些結構,並使用其 MXF 介面) 將它們向下傳遞至排序器 (。 排序器會根據其時間戳記重新排序它們,並在到期時,藉由呼叫 IMXF::P utMessage將它們傳遞至迷你埠驅動程式。 迷你埠驅動程式會將 MIDI 資料從DMUS_KERNEL_EVENT結構提取,以便將其轉譯成波浪資料。 它會使用另一個 IMXF::P utMessage 呼叫,將所使用的DMUS_KERNEL_EVENT結構傳遞回配置器。

擷取會發生反向情況。 MIDI 資料來自硬體到迷你埠驅動程式,而迷你埠驅動程式會呼叫 IAllocatorMXF::GetMessage 以取得空的DMUS_KERNEL_EVENT結構。 DMUS_KERNEL_EVENT結構會填入時間戳記和資料,並透過 IMXF::P utMessage傳遞至擷取接收。 如果迷你埠驅動程式在DMUS_KERNEL_EVENT結構中設定DMUS_KEF_EVENT_INCOMPLETE旗標,則每個結構可以傳遞一個以上的訊息。 DMus 埠驅動程式中的擷取接收會剖析此原始資料流程,併發出包含時間戳記 MIDI 訊息的DMUS_KERNEL_EVENT結構, (每個結構) 一個。

迷你埠驅動程式本身也可以發出時間戳記訊息給擷取接收。 在此情況下,驅動程式不會在 DMUS_KERNEL_EVENT 中設定DMUS_KEF_EVENT_INCOMPLETE位。 擷取接收會將時間戳記結構直接傳遞至 Packer,將訊息封裝到 IRP,並將其傳送至 dmusic.dll。 DirectMusic 擷取僅適用于錄製 MIDI。 針對波浪錄製,請使用 DirectSound 擷取。

當封裝器將資料從DMUS_KERNEL_EVENT結構提取出來時,它會捨棄已使用的 DMUS_KERNEL_EVENT 結構,並搭配 IMXF::P utMessage 將所使用的配置器捨棄。 當 IRP 緩衝區已滿時,它會傳遞至 dmusic.dll。 封裝工具會從 dmusic.dll 接收空的 IRP、填滿它們,並完成它們。 更多 IRP 會持續向下切入,使其一律有一個要填滿的。