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,否则返回错误。 可能的错误值包括以下内容。
返回代码 | 说明 |
---|---|
|
wFlags 指定的标志无效。 |
|
指定的设备句柄无效。 |
|
lpPatchArray 指向的数组无效。 |
|
设备没有足够的内存来缓存所有请求的修补程序。 |
|
指定的设备不支持修补程序缓存。 |
注解
某些合成器无法同时加载所有修补程序,并且必须在收到 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 |