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) |