midiOutCacheDrumPatches 函式 (mmeapi.h)

midiOutCacheDrumPatches 函式會要求內部 MIDI 合成器裝置預先載入並快取一組指定的金鑰型擷取修補程式。

語法

MMRESULT midiOutCacheDrumPatches(
  HMIDIOUT hmo,
  UINT     uPatch,
  LPWORD   pwkya,
  UINT     fuCache
);

參數

hmo

處理開啟的 MIDI 輸出裝置。 此裝置應該是內部MIDI合成器。 此參數也可以是MIDI數據流的句柄,轉換成 HMIDIOUT

uPatch

應該使用的修補編號。 此參數應設定為零,以快取預設的修補程式。

pwkya

KEYARRAY 陣列的指標,指出要快取或取消快取之指定擷取修補程式的索引鍵編號。

fuCache

快取作業的選項。 它可以是下列其中一個旗標。

意義
MIDI_CACHE_ALL 快取所有指定的修補程式。 如果無法全部快取,它會快取無、清除 KEYARRAY 陣列,並傳回MMSYSERR_NOMEM。
MIDI_CACHE_BESTFIT 快取所有指定的修補程式。 如果無法全部快取,它會盡可能快取多個修補程式、變更 KEYARRAY 陣列以反映快取的修補程式,並傳回MMSYSERR_NOMEM。
MIDI_CACHE_QUERY 變更 KEYARRAY 陣列,以指出目前快取的修補程式。
MIDI_UNCACHE 取消清除指定的修補程式,並清除KEYARRAY陣列。

傳回值

如果成功或發生錯誤,則傳回MMSYSERR_NOERROR。 可能的錯誤值包括下列專案。

傳回碼 Description
MMSYSERR_INVALFLAG
wFlags 指定的旗標無效。
MMSYSERR_INVALHANDLE
指定的裝置句柄無效。
MMSYSERR_INVALPARAM
lpKeyArray 陣列所指向的陣列無效。
MMSYSERR_NOMEM
裝置沒有足夠的記憶體可快取所有要求的修補程式。
MMSYSERR_NOTSUPPORTED
指定的裝置不支援修補程式快取。

備註

某些合成器無法同時載入所有擷取修補程式。 快取修補程式可確保指定的修補程式可供使用。

KEYARRAY 陣列的每個元素都代表其中一個128個索引鍵型擷取修補程式,並針對使用特定修補程式的每個16個MIDI通道設定位。 最小有效位代表實體通道 0,而最顯著位則代表實體通道 15。 例如,如果實體通道 9 和 15 使用金鑰編號 60 上的修補程式,元素 60 會設定為0x8200。

此函式僅適用於內部 MIDI 合成器裝置。 並非所有內部合成器都支援修補程式快取。 若要查看裝置是否支援修補程式快取,請使用 MIDICAPS_CACHE 旗標來測試 midiOutGetDevCaps 函式所填滿 MIDIOUTCAPS 結構的 dwSupport 成員。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 mmeapi.h (包含 Windows.h)
程式庫 Winmm.lib
Dll Winmm.dll

另請參閱

MIDI 函式