MODM_OPEN 函数

WINMM 将 MODM_OPEN 消息发送到 MIDI 输出驱动程序的 modMessage 函数,以分配客户端应用程序可以使用的指定设备。

语法

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

参数

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

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

  • dwUser
    MIDI 输出驱动程序必须使用其实例数据填充此位置,但仅在响应 MODM_OPEN 时填充。

  • dwParam1
    此参数指定指向 MIDIOPENDESC 结构的远指针。 此结构包含驱动程序的其他信息,例如来自客户端的实例数据以及客户端的回调函数。

  • dwParam2
    此参数指定用于确定设备打开方式的选项标志。 这些标志可以是下表中的任何值。

    标记 含义

    CALLBACK_EVENT

    如果指定了此标志,则假定 MIDIOPENDESC 结构中的 dwCallback 是事件句柄。

    CALLBACK_FUNCTION

    如果指定了此标志,则假定 MIDIOPENDESC 结构中的 dwCallback是回调函数的地址。

    CALLBACK_THREAD

    如果指定了此标志,则假定 MIDIOPENDESC 结构中的 dwCallback 是线程句柄。

    CALLBACK_WINDOW

    如果指定了此标志,则假定 MIDIOPENDESC 结构中的 dwCallback 是窗口句柄。

    MIDI_IO_COOKED

    如果指定了此标志,则以流模式打开设备,并且驱动程序将收到流消息。 驱动程序必须能够处理出现的任何应变。 例如,驱动程序必须能够以异步方式对流播放短消息和系统独占消息。

返回值

如果操作成功,modMessage 函数将返回 MMSYSERR_NOERROR。 否则,它将返回下表中的其中一条错误消息。

返回代码 说明
MMSYSERR_NOTENABLED

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

MMSYSERR_ALLOCATED

由于内存以外的系统资源限制,已按驱动程序支持的最大客户端数分配 MIDI 设备,或无法打开该设备。

MMSYSERR_NOMEM

由于分配或锁定内存失败,无法打开设备。

注解

驱动程序必须能够确定可以允许使用特定设备的客户端数。 为驱动程序支持的最大客户端数打开设备后,驱动程序将返回 MMSYSERR_ALLOCATED,以便任何其他请求打开设备。 如果打开操作成功,驱动程序将使用 DriverCallback 函数,向客户端发送 MOM_OPEN 消息。

要求

目标平台

桌面

版本

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

标头

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

另请参阅

modMessage

MIDIOPENDESC

DriverCallback

MOM_OPEN