MODM_CACHEPATCHES 函数
WINMM 将 MODM_CACHEPATCHES
消息发送到 MIDI 输出驱动程序的 modMessage 函数,以请求驱动程序缓存或取消缓存指定的修补程序。 这样,内部合成器驱动程序就可以加载客户端应用程序需要的修补程序。
语法
DWORD modMessage(
UINT uDeviceID,
UINT uMsg,
DWORD_PTR dwUser,
DWORD_PTR dwParam1,
DWORD_PTR dwParam2
);
参数
uDeviceID
指定目标设备的 ID。 设备 ID 将按顺序,其初始值为零,最终值等于比驱动程序支持的设备数小一。uMsg
在调用 modMessage 来处理此消息时,WINMM 会将此参数设置为 MODM_CACHEPATCHES。dwUser
使用此参数可将实例数据返回到驱动程序。 支持多个客户端的驱动程序可以使用此类实例数据跟踪与消息关联的客户端。dwParam1
指定指向 PATCHARRAY 数组的远指针,并指示必须缓存或取消缓存的修补程序。dwParam2
高序位字指定数组引用的修补程序的存储区。 低序位字指定是否必须根据以下标志之一缓存或取消缓存修补程序:MIDI_CACHE_ALL。 必须缓存在数组中指定的所有修补程序。 如果合成器无法缓存所有修补程序,则它不得缓存任何修补程序。 如果合成器无法缓存任何修补程序,则必须清除 PATCHARRAY 并返回 MMSYSERR_NOMEM。
MIDI_CACHE_BESTFIT。 如果驱动程序可以缓存在数组中指定的所有修补程序,则必须这样做。 否则,它必须缓存尽可能多的修补程序,更改 PATCHARRAY 以反映它实际缓存的内容,并返回 MMSYSERR_NOMEM。
MIDI_CACHE_QUERY。 必须读取 PATCHARRAY,才能确定驱动程序实际缓存的修补程序。
MIDI_UNCACHE。 必须取消缓存在数组中指定的修补程序,并且必须清除 PATCHARRAY。
返回值
如果操作成功,modMessage 函数将返回零。 否则,它将返回下表中的其中一条错误消息。
返回代码 | 说明 |
---|---|
MMSYSERR_NOTENABLED | 驱动程序无法加载或初始化。 |
MMSYSERR_NOTSUPPORTED | 在 modMessage 调用中指定的函数不受支持。 |
注解
仅内部合成器驱动程序支持修补程序缓存。 MIDI 输出端口的驱动程序必须返回 MMSYSERR_NOTSUPPORTED 错误,以便响应 MODM_CACHEPATCHES
消息。 对于内部合成器设备,支持修补程序缓存为可选。 当驱动程序收到 MODM_GETDEVCAPS 消息时,它必须设置或清除 MIDIOUTCAPS 数据结构的 dwSupport 字段中的 MIDICAPS_CACHE 位,以指示支持修补程序缓存。
要求
目标平台 |
桌面 |
版本 |
适用于 Windows XP 及更高版本的 Windows 操作系统。 |
标头 |
Mmddk.h(包括 Mmddk.h、Mmsystem.h 或 Windows.h) |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈