共用方式為


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
MMSYSERR_INVALFLAG
wFlags 指定的旗標無效。
MMSYSERR_INVALHANDLE
指定的裝置句柄無效。
MMSYSERR_INVALPARAM
lpPatchArray 所指向的陣列無效。
MMSYSERR_NOMEM
裝置沒有足夠的記憶體可快取所有要求的修補程式。
MMSYSERR_NOTSUPPORTED
指定的裝置不支援修補程式快取。

備註

有些合成器無法同時載入所有修補程式,而且必須在接收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

另請參閱

MIDI 函式