MODM_CACHEDRUMPATCHES 函数

WINMM 将 MODM_CACHEDRUMPATCHES 消息发送到 MIDI 输出驱动程序的 modMessage 函数,以要求驱动程序缓存或取消缓存指定的鼓键。 这样,内部合成器驱动程序就可以加载客户端应用程序需要的修补程序。

语法

DWORD modMessage(
   UINT      uDeviceID,
   UINT      uMsg,
   DWORD_PTR dwUser,
   DWORD_PTR dwParam1,
   DWORD_PTR dwParam2
);

参数

  • uDeviceID
    指定目标设备的 ID。 设备 ID 将按顺序,其初始值为零,最终值等于比驱动程序支持的设备数小一。

  • uMsg
    在调用 modMessage 来处理此消息时,WINMM 会将此参数设置为 MODM_CACHEDRUMPATCHES

  • dwUser
    使用此参数可将实例数据返回到驱动程序。 支持多个客户端的驱动程序可以使用此类实例数据跟踪与消息关联的客户端。

  • dwParam1
    指定指向 KEYARRAY 数组的远指针,并指示必须缓存或取消缓存的修补程序。

  • dwParam2
    高序位字指定数组引用的修补程序的存储区。 低序位字根据以下标志之一,指定是必须缓存还是取消缓存修补程序(在调用 modMessage 时):

    MIDI_CACHE_ALL。 必须缓存在数组中指定的所有修补程序。 如果合成器无法缓存所有修补程序,则它不能缓存任何修补程序。 相反,它必须清除 KEYARRAY 并返回 MMSYSERR_NOMEM。

    MIDI_CACHE_BESTFIT。 如果驱动程序可以缓存在数组中指定的所有修补程序,则必须这样做。 否则,它必须缓存尽可能多的修补程序,然后更改 KEYARRAY,以反映它实际缓存的内容。 驱动程序必须返回 MMSYSERR_NOMEM。

    MIDI_CACHE_QUERY。 必须读取 KEYARRAY 中的修补程序数组,以确定已缓存的修补程序。

    MIDI_UNCACHE。 必须取消缓存在 KEYARRAY 中指定的修补程序,并且必须清除数组。

返回值

如果已成功处理 MODM_CACHEDRUMPATCHES 消息,则 modMessage 返回 MMSYSERR_NOERROR。 否则,它将返回以下错误消息之一。

返回代码 说明
MMSYSERR_NOTENABLED

驱动程序无法加载或初始化。

MMSYSERR_NOTSUPPORTED

modMessage 调用中指定的函数不受支持。

注解

仅内部合成器设备驱动程序支持修补程序缓存。 MIDI 输出端口的驱动程序必须为此消息返回 MMSYSERR_NOTSUPPORTED 错误。 对于内部合成器设备,支持修补程序缓存为可选。 当驱动程序收到 MODM_GETDEVCAPS 消息时,它必须设置或清除 MIDIOUTCAPS 数据结构的 dwSupport 字段中的 MIDICAPS_CACHE 位,以指示支持修补程序缓存。

要求

目标平台

桌面

版本

适用于 Windows XP 及更高版本的 Windows 操作系统。

标头

Mmddk.h(包括 Mmddk.h、Mmsystem.h 或 Windows.h)

另请参阅

modMessage

MODM_GETDEVCAPS

MIDIOUTCAPS

KEYARRAY