midiOutCachePatches 函式 (mmeapi.h)
midiOutCachePatches 函式會要求內部 MIDI 合成器裝置預先載入並快取一組指定的修補程式。
語法
MMRESULT midiOutCachePatches(
HMIDIOUT hmo,
UINT uBank,
LPWORD pwpa,
UINT fuCache
);
參數
hmo
處理開啟的 MIDI 輸出裝置。 此裝置必須是內部 MIDI 合成器。 此參數也可以是MIDI數據流的句柄,轉換成 HMIDIOUT。
uBank
應該使用的修補程序銀行。 此參數應設定為零,以快取預設修補庫。
pwpa
PATCHARRAY 陣列的指標,指出要快取或未快取的修補程式。
fuCache
快取作業的選項。 它可以是下列其中一個旗標。
值 | 意義 |
---|---|
MIDI_CACHE_ALL | 快取所有指定的修補程式。 如果無法全部快取,它會快取無、清除 PATCHARRAY 陣列,並傳回MMSYSERR_NOMEM。 |
MIDI_CACHE_BESTFIT | 快取所有指定的修補程式。 如果無法全部快取,它會盡可能快取多個修補程式、變更 PATCHARRAY 陣列以反映快取的修補程式,並傳回MMSYSERR_NOMEM。 |
MIDI_CACHE_QUERY | 變更 PATCHARRAY 陣列,以指出目前快取的修補程式。 |
MIDI_UNCACHE | 取消清除指定的修補程式,並清除 PATCHARRAY 陣列。 |
傳回值
如果成功或發生錯誤,則傳回MMSYSERR_NOERROR。 可能的錯誤值包括下列專案。
傳回碼 | Description |
---|---|
|
wFlags 指定的旗標無效。 |
|
指定的裝置句柄無效。 |
|
lpPatchArray 所指向的陣列無效。 |
|
裝置沒有足夠的記憶體可快取所有要求的修補程式。 |
|
指定的裝置不支援修補程式快取。 |
備註
有些合成器無法同時載入所有修補程式,而且必須在接收MIDI程式變更訊息時從磁碟載入數據。 快取修補程式可確保指定的修補程式立即可用。
PATCHARRAY 陣列的每個元素都代表其中一個 128 個修補程式,並且針對使用特定修補程式的每個 16 個 MIDI 通道設定位。 最小有效位代表實體通道 0,而最顯著位則代表實體通道 15 (0x0F) 。 例如,如果實體通道 0 和 8 使用修補程式 0,元素 0 會設定為 0x0101。
此函式僅適用於內部 MIDI 合成器裝置。 並非所有內部合成器都支援修補程式快取。 若要查看裝置是否支援修補程式快取,請使用 MIDICAPS_CACHE 旗標來測試 midiOutGetDevCaps 函式所填滿 MIDIOUTCAPS 結構的 dwSupport 成員。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | mmeapi.h (包含 Windows.h) |
程式庫 | Winmm.lib |
Dll | Winmm.dll |