MODM_PREPARE 函数
WINMM 将 MODM_PREPARE
消息发送到 MIDI 输出驱动程序的 modMessage 函数,以请求驱动程序为输出配置系统独占数据块。 如果在中断时访问数据块,则必须对其进行页锁定,以确保不会将内存换出到磁盘。
语法
DWORD modMessage(
UINT uDeviceID,
UINT uMsg,
DWORD_PTR dwUser,
DWORD_PTR dwParam1,
DWORD_PTR dwParam2
);
参数
uDeviceID
指定目标设备的 ID。 设备 ID 将按顺序,其初始值为零,最终值等于比驱动程序支持的设备数小一。uMsg
在调用 modMessage 来处理此消息时,WINMM 会将此参数设置为 MODM_PREPARE。dwUser
使用此参数可将实例数据返回到驱动程序。 支持多个客户端的驱动程序可以使用此类实例数据跟踪与消息关联的客户端。dwParam1
指定指向用于标识数据块的 MIDIHDR 结构的远指针。dwParam2
指定 MIDIHDR 结构的大小。
返回值
如果操作成功,modMessage 函数将返回 MMSYSERR_NOERROR。 否则,它将返回下表中的其中一条错误消息。
返回代码 | 说明 |
---|---|
MMSYSERR_NOTENABLED | 驱动程序无法加载或初始化。 |
MMSYSERR_NOTSUPPORTED | 驱动程序不支持此消息。 |
注解
此消息的驱动程序支持为可选。 如果驱动程序支持此消息,则它还必须支持 MODM_UNPREPARE。
此消息的默认响应是返回 MMSYSERR_NOTSUPPORTED。 在这种情况下,WINMM 会将内存段转换为驱动程序的页锁定内存。 如果驱动程序必须执行其他操作,以便可以为输出准备数据块,则必须在 MIDIHDR 结构的 dwFlags 字段中设置 MHDR_PREPARED 位,并返回 MMSYSERR_NOERROR。 在这种情况下,WINMM 假定驱动程序已准备好数据块,并且不会对内存进行页锁定。
要求
目标平台 |
桌面 |
版本 |
适用于 Windows XP 及更高版本的 Windows 操作系统。 |
标头 |
Mmddk.h(包括 Mmddk.h、Mmsystem.h 或 Windows.h) |