midiOutCachePatches 函数 (mmeapi.h)

midiOutCachePatches 函数请求内部 MIDI 合成器设备预加载并缓存一组指定的修补程序。

语法

MMRESULT midiOutCachePatches(
  HMIDIOUT hmo,
  UINT     uBank,
  LPWORD   pwpa,
  UINT     fuCache
);

参数

hmo

打开的 MIDI 输出设备的句柄。 此设备必须是内部 MIDI 合成器。 此参数也可以是转换为 HMIDIOUT 的 MIDI 流的句柄。

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,否则返回错误。 可能的错误值包括以下内容。

返回代码 说明
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 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 mmeapi.h (包括 Windows.h)
Library Winmm.lib
DLL Winmm.dll

另请参阅

MIDI 函数