共用方式為


KSMUSICFORMAT 結構 (ksmedia.h)

KSMUSICFORMAT 結構可用來傳送和接收來自 WDM 音訊裝置之輸入和輸出之 MIDI 資料的相關信息。

語法

typedef struct {
  ULONG TimeDeltaMs;
  ULONG ByteCount;
} KSMUSICFORMAT, *PKSMUSICFORMAT;

成員

TimeDeltaMs

指出應該播放這一系列的MIDI數據位元組。 如果這是緩衝區中的第一個 KSMUSICFORMAT 結構,則此欄位代表差異 (時間變更,以毫秒為單位,從 KSSTREAM_HEADER 結構的 PresentationTime) 。 否則,欄位會以毫秒為單位來代表上一則訊息) 的差異位移 (, (KSMUSICFORMAT 結構) 。 如果這次是過去,則會立即播放訊息。

ByteCount

指定此結構後面的數據位元組數目。 因為後續的結構或屬性應該對齊 DWORD,而且可能會允許額外的空白或使用的位元組, 所以 ByteCount 應該是實際存在的位元組數目,而且不包含任何分隔數據結構的填補。

備註

這個結構可用來傳送和接收包含MIDI輸入和輸出數據流相關信息的 IRP。 IRP 本身在其 SystemBuffer 欄位中包含KSSTREAM_HEADER結構的指標,做為要從串流驅動程式針腳讀取或寫入之數據封包的標頭。 KS 數據流標頭在其 [資料 ] 字段中包含包含數據的緩衝區指標。 該緩衝區中的數據是由一連串訊息所組成,每一個都是 KSMUSICFORMAT 結構,緊接著一些位元組的數據。

這些 IRP 中的時間戳一律會在連續發行的 IRP 中增加。 不過,由於序列中的每個 IRP 都會在下次 IRP 開始服務之前完全服務,因此時間也必須一律在 IRP 之間增加。 這可能會導致異常狀況,如下列範例所述。

動作 描述
IRP #1 PresentationTime = 123 毫秒
Message #1 TimeDeltaMs:0 將會以 123 毫秒播放。
Message #2 TimeDeltaMs:1 將會以 124 毫秒播放。
Message #3 TimeDeltaMs:7 將會以 131 毫秒播放。
IRP #2 PresentationTime = 120 毫秒
Message #1 TimeDeltaMs:5 應該以 125 毫秒播放,但實際上是在 131 毫秒播放。 在前一個 IRP 完成 131 毫秒之前,不會處理此 IRP。
Message #2 TimeDeltaMs:15 將會以 140 毫秒播放。

規格需求

需求
標頭 ksmedia.h (包含 Ksmedia.h)

另請參閱

KSSTREAM_HEADER