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 を含む) |