次の方法で共有


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 は連続しており、初期値は 0 で、最終値はドライバーがサポートするデバイスの数から 1 を引いた値になります。

  • uMsg
    WINMM は、このメッセージを処理するために modMessage を呼び出すときに、このパラメータを 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