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,否则返回错误。 可能的错误值包括以下内容。
返回代码 | 说明 |
---|---|
|
wFlags 指定的标志无效。 |
|
指定的设备句柄无效。 |
|
lpKeyArray 数组指向的数组无效。 |
|
设备没有足够的内存来缓存所有请求的修补程序。 |
|
指定的设备不支持修补程序缓存。 |
注解
某些合成器无法同时加载所有打击声补丁。 缓存修补程序可确保指定的修补程序可用。
KEYARRAY 数组的每个元素都表示 128 个基于键的打击补丁之一,并为使用特定修补程序的 16 个 MIDI 通道中的每一个都设置了位。 最低有效位表示物理通道 0,最高有效位表示物理通道 15。 例如,如果物理通道 9 和 15 使用密钥编号 60 上的修补程序,则元素 60 将设置为0x8200。
此函数仅适用于内部 MIDI 合成器设备。 并非所有内部合成器都支持修补程序缓存。 若要查看设备是否支持修补程序缓存,请使用 MIDICAPS_CACHE 标志测试由 midiOutGetDevCaps 函数填充的 MIDIOUTCAPS 结构的 dwSupport 成员。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | mmeapi.h (包括 Windows.h) |
Library | Winmm.lib |
DLL | Winmm.dll |