midiOutOpen

MIDI出力デバイスを再生用にオープンします。

MMRESULT midiOutOpen(
    LPHMIDIOUT phmo,       // ハンドルを格納する変数
    UINT_PTR   uDeviceID,  // デバイスID
    DWORD_PTR  dwCallback, // コールバックパラメータ
    DWORD_PTR  dwInstance, // コールバックに渡されるデータ
    DWORD      dwFlags     // コールバックフラグ
);

WINMM.DLL

引数

phmo

MIDI 出力デバイスハンドルを格納するための変数のアドレスを指定します。このハンドルは、他の MIDI 出力用関数の呼び出しで使われます。

uDeviceID

オープンする MIDI 出力デバイスの ID を指定します。

dwCallback

コールバック関数のアドレス、イベントハンドル、スレッド ID 、ウィンドウハンドル、または、スレッドハンドルのいずれかを指定します。 MIDI 再生の間、再生経過に関わるメッセージを処理するために、これらのいずれかでコールバック処理を行ないます。コールバックを使用しない場合は 0 (NULL) を指定します。

dwInstance

それぞれのコールバック処理に渡されるアプリケーション固有のインスタンスデータを指定します。このパラメータは、ウィンドウコールバックまたはスレッドでは使用されません。

dwFlags

デバイスをオープンする際のコールバックフラグを指定します。以下の値のいずれかを指定します。

意味
0x00000000 (CALLBACK_NULL)

コールバックを使用しません。

0x00010000 (CALLBACK_WINDOW)

dwCallback パラメータがウィンドウハンドルであることを指定します。

0x00020000 (CALLBACK_THREAD)

dwCallback パラメータがスレッド ID であることを指定します。

0x00030000 (CALLBACK_FUNCTION)

dwCallback パラメータがコールバック関数のアドレスであることを指定します。

0x00050000 (CALLBACK_EVENT)

dwCallback パラメータがイベントハンドルであることを指定します。

戻り値

関数が成功すると 0 (MMSYSERR_NOERROR) が返ります。

関数が失敗すると、以下のエラーが返ります。

意味
2 (MMSYSERR_BADDEVICEID)

指定されたデバイス ID は範囲外です。

4 (MMSYSERR_ALLOCATED)

指定されたリソースはすでに割り当てられています。

7 (MMSYSERR_NOMEM)

メモリの確保またはロックに失敗しました。

11 (MMSYSERR_INVALPARAM) 指定されたポインタまたは構造体は無効です。
68 (MIDIERR_NODEVICE)

MIDI ポートが見つかりません。このエラーは MIDI Mapper がオープンされようとしたときのみ発生します。

解説

システムに存在する MIDI 出力デバイスの数を取得するには、 midiOutGetNumDevs 関数を使用します。 uDeviceID パラメータで指定されるデバイス ID は、 0 から、存在する MIDI 出力デバイスの数より 1 少ない値までの間の数になります。また、 MIDI Mapper をオープンするのに、デバイス ID として -1 (MIDI_MAPPER) を指定することができます。

コールバック情報を受け取るのにウィンドウまたはスレッドを選択した場合は、 MIDI 出力の経過を示すために MM_MOM_OPEN, MM_MOM_CLOSE, およびMM_MOM_DONE の各メッセージがウィンドウプロシージャまたはスレッドに送られます。

コールバック情報を受け取るのにコールバック関数を選択した場合は、 MIDI 出力の経過を示すために MOM_OPEN, MOM_CLOSE, および MOM_DONE の各メッセージがコールバック関数に送られます。

対応情報

Windows 95 以降 / Windows NT 3.1 以降