midiInOpen 函数 (mmeapi.h)

midiInOpen 函数打开指定的 MIDI 输入设备。

语法

MMRESULT midiInOpen(
  LPHMIDIIN phmi,
  UINT      uDeviceID,
  DWORD_PTR dwCallback,
  DWORD_PTR dwInstance,
  DWORD     fdwOpen
);

参数

phmi

指向 HMIDIIN 句柄的指针。 此位置由标识打开的 MIDI 输入设备的句柄填充。 句柄用于在调用其他 MIDI 输入函数时标识设备。

uDeviceID

要打开的 MIDI 输入设备的标识符。

dwCallback

指向回调函数、线程标识符或调用窗口句柄的指针,其中包含有关传入 MIDI 消息的信息。 有关回调函数的详细信息,请参阅 MidiInProc

dwInstance

传递给回调函数的用户实例数据。 此参数不与窗口回调函数或线程一起使用。

fdwOpen

用于打开设备的回调标志以及(可选)状态标志,以帮助控制快速数据传输。 它可以是以下值。

含义
CALLBACK_FUNCTION dwCallback 参数是回调过程地址。
CALLBACK_NULL 没有回调机制。 此值为默认设置。
CALLBACK_THREAD dwCallback 参数是线程标识符。
CALLBACK_WINDOW dwCallback 参数是窗口句柄。
MIDI_IO_STATUS 如果此参数还指定 CALLBACK_FUNCTION,MIM_MOREDATA 消息将发送到回调函数以及 MIM_DATA 消息。 或者,如果此参数还指定 CALLBACK_WINDOW,MM_MIM_MOREDATA 消息将发送到窗口以及 MM_MIM_DATA 消息。 此标志不会影响事件或线程回调。
 

大多数使用回调机制的应用程序将为此参数指定CALLBACK_FUNCTION。

返回值

如果成功,则返回MMSYSERR_NOERROR,否则返回错误。 可能的错误值包括以下/

返回代码 说明
MMSYSERR_ALLOCATED
已分配指定的资源。
MMSYSERR_BADDEVICEID
指定的设备标识符在范围外。
MMSYSERR_INVALFLAG
dwFlags 指定的标志无效。
MMSYSERR_INVALPARAM
指定的指针或结构无效。
MMSYSERR_NOMEM
系统无法分配或锁定内存。

注解

若要确定系统中存在的 MIDI 输入设备数,请使用 midiInGetNumDevs 函数。 wDeviceID 指定的设备标识符从 0 到比存在的设备数少 1 不等。

如果选择窗口或线程接收回调信息,则会将以下消息发送到窗口过程或线程以指示 MIDI 输入的进度: MM_MIM_OPENMM_MIM_CLOSEMM_MIM_DATAMM_MIM_LONGDATAMM_MIM_ERRORMM_MIM_LONGERRORMM_MIM_MOREDATA

如果选择函数接收回调信息,则会向函数发送以下消息以指示 MIDI 输入的进度: MIM_OPENMIM_CLOSEMIM_DATAMIM_LONGDATAMIM_ERRORMIM_LONGERRORMIM_MOREDATA

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 mmeapi.h (包括 Windows.h)
Library Winmm.lib
DLL Winmm.dll

另请参阅

MIDI 函数