midiOutMessage 関数は、MIDI デバイス ドライバーにメッセージを送信します。 この関数は、MIDI API でサポートされていないドライバー固有のメッセージにのみ使用されます。
構文
MMRESULT midiOutMessage(
HMIDIOUT hmo,
UINT uMsg,
DWORD_PTR dw1,
DWORD_PTR dw2
);
パラメーター
hmo
メッセージを受信する MIDI デバイスの識別子。 デバイス ID を HMIDIOUT ハンドルの種類にキャストする必要があります。 デバイス ID の代わりにハンドルを指定すると、関数は失敗し、MMSYSERR_NOSUPPORTエラー コードを返します。
uMsg
送信するメッセージ。
dw1
メッセージ パラメーター。
dw2
メッセージ パラメーター。
戻り値
オーディオ デバイス ドライバーによって返される値を返します。
注釈
DRV_QUERYDEVICEINTERFACEメッセージは、waveIn、waveOut、midiIn、midiOut、またはミキサー デバイスのデバイス インターフェイス名を照会します。
DRV_QUERYDEVICEINTERFACEの場合、dwParam1 は呼び出し元によって割り当てられたバッファーへのポインターであり、このバッファーに対して、関数はデバイス インターフェイス名を含む null で終わる Unicode 文字列を書き込みます。 デバイスにデバイス インターフェイスがない場合、文字列の長さは 0 です。
DRV_QUERYDEVICEINTERFACEの場合、dwParam2 はバッファー サイズをバイト単位で指定します。 これは関数への入力パラメーターです。 呼び出し元は、 DRV_QUERYDEVICEINTERFACESIZE メッセージによって取得されたバッファー サイズ以上のサイズを指定する必要があります。
DRV_QUERYDEVICEINTERFACE メッセージは、Windows Me および Windows 2000 以降でサポートされています。 このメッセージは、 waveInMessage、 waveOutMessage、 midiInMessage、 midiOutMessage、 mixerMessage 関数に対してのみ有効です。 システムはこのメッセージをインターセプトし、デバイス ドライバーにメッセージを送信せずに適切な値を返します。 システムインターセプト xxxMessage 関数の一般的な情報については、「 System-Intercepted デバイス メッセージ」を参照してください。
デバイス インターフェイス名を取得するために、次の 2 つのメッセージ定数が一緒に使用されます。
- DRV_QUERYDEVICEINTERFACESIZE
- DRV_QUERYDEVICEINTERFACE
詳細については、「 デバイス インターフェイス名の取得」を参照してください。
DRV_QUERYDEVICEINTERFACESIZE メッセージは、デバイス インターフェイス名を保持するために必要なバッファーのサイズを照会します。
DRV_QUERYDEVICEINTERFACESIZEの場合、dwParam1 はバッファー サイズへのポインターです。 このパラメーターは、関数が必要なバッファー サイズをバイト単位で書き込む ULONG 変数を指します。 サイズには、名前文字列の終端 null のストレージ領域が含まれます。 デバイス ID がデバイス インターフェイスを持たないデバイスを識別する場合、サイズは 0 です。
DRV_QUERYDEVICEINTERFACESIZEの場合、dwParam2 は使用されません。 このパラメーターを 0 に設定します。
このメッセージは、 waveInMessage、 waveOutMessage、 midiInMessage、 midiOutMessage、 mixerMessage 関数に対してのみ有効です。 システムはこのメッセージをインターセプトし、デバイス ドライバーにメッセージを送信せずに適切な値を返します。 システムインターセプト xxxMessage 関数の一般的な情報については、「 System-Intercepted デバイス メッセージ」を参照してください。
このメッセージによって取得されるバッファー サイズは、バイト数として表されます。 デバイス インターフェイス名を含む null で終わる Unicode 文字列を保持するために必要なバッファーのサイズを指定します。 呼び出し元は、指定したサイズのバッファーを割り当て、 DRV_QUERYDEVICEINTERFACE メッセージを使用してデバイス インターフェイス名の文字列を取得します。
詳細については、「 デバイス インターフェイス名の取得」を参照してください。
DRV_QUERYDEVNODE メッセージは、プラグ アンド プレイ マネージャーによってデバイスに割り当てられた devnode 番号を照会します。
DRV_QUERYDEVNODEの場合、dwParam1 は、関数が devnode 番号を書き込む呼び出し元によって割り当てられた DWORD 変数へのポインターです。 デバイスに devnode が割り当てられていない場合、関数はこの変数を 0 に設定します。
DRV_QUERYDEVNODEの場合、dwParam2 は使用されません。 このパラメーターを 0 に設定します。
Windows 2000 以降では、メッセージは常にMMSYSERR_NOTSUPPORTEDを返します。 このメッセージは、 waveInMessage、 waveOutMessage、 midiInMessage、 midiOutMessage、 mixerMessage 関数に対してのみ有効です。 システムはこのメッセージをインターセプトし、デバイス ドライバーにメッセージを送信せずに適切な値を返します。 システムインターセプト xxxMessage 関数の一般的な情報については、「 System-Intercepted デバイス メッセージ」を参照してください。
DRV_QUERYMAPPABLE メッセージは、指定したデバイスをマッパーが使用できるかどうかを照会します。
DRV_QUERYMAPPABLEの場合、dwParam1 は使用されません。 このパラメーターを 0 に設定します。
DRV_QUERYMAPPABLEの場合、dwParam2 は使用されません。 このパラメーターを 0 に設定します。
このメッセージは、waveInMessage、waveOutMessage、midiInMessage、midiOutMessage、mixerMessage、auxOutMessage 関数に対してのみ有効です。 システムはこのメッセージをインターセプトし、デバイス ドライバーにメッセージを送信せずに適切な値を返します。 システムインターセプト xxxMessage 関数の一般的な情報については、「 System-Intercepted デバイス メッセージ」を参照してください。
アプリケーション プログラムが特定のオーディオ デバイスではなくマッパーを開くと、システムはアプリケーションと使用可能なデバイスの間にマッパーを挿入します。 マッパーは、アプリケーションの要件を使用可能なデバイスのいずれかにマッピングすることで、適切なデバイスを選択します。 マッパーの詳細については、Microsoft Windows SDK のドキュメントを参照してください。
DRVM_MAPPER_CONSOLEVOICECOM_GET メッセージは、優先される音声通信デバイスのデバイス ID を取得します。
DRVM_MAPPER_CONSOLEVOICECOM_GETの場合、dwParam1 はデバイス ID へのポインターです。 このパラメーターは、関数が現在の優先音声通信デバイスのデバイス ID を書き込む DWORD 変数を指します。 この関数は、優先音声通信デバイスとして適格なデバイスがない場合は、値 (-1) を書き込みます。
DRVM_MAPPER_CONSOLEVOICECOM_GETの場合、dwParam2 は状態フラグへのポインターです。 このパラメーターは、関数がデバイス ステータス フラグを書き込む DWORD 変数を指します。 現在定義されているフラグ ビットは 1 つだけです(DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY)。
このメッセージは、 waveInMessage 関数と waveOutMessage 関数に対してのみ有効です。 呼び出し元が DRVM_MAPPER_CONSOLEVOICECOM_GET メッセージを使用してこれら 2 つの関数を呼び出す場合、呼び出し元はデバイス ID をWAVE_MAPPERとして指定し、この値を適切なハンドルの種類にキャストする必要があります。 waveInMessage、waveOutMessage、midiInMessage、midiOutMessage、または mixerMessage 関数の場合、呼び出し元は、それぞれ HWAVEIN、HWAVEOUT、HMIDIIN、HMIDIOUT、または HMIXER の型のハンドルにデバイス ID をキャストする必要があります。 呼び出し元がこのパラメーターのデバイス ID ではなく有効なハンドルを指定した場合、関数は失敗し、エラー コードMMSYSERR_NOSUPPORT返されることに注意してください。
システムはこのメッセージをインターセプトし、デバイス ドライバーにメッセージを送信せずに適切な値を返します。 システムインターセプト xxxMessage 関数の一般的な情報については、「 System-Intercepted デバイス メッセージ」を参照してください。
このメッセージは、他のすべてのオーディオ機能にどのデバイスが優先するかを決定する DRVM_MAPPER_PREFERRED_GET メッセージとは対照的に、音声通信に対して優先されるデバイスを決定する方法を提供します。
たとえば、音声通信に推奨される waveOut デバイスはヘッドセットのイヤーピースですが、他のすべてのオーディオ機能に推奨される waveOut デバイスは、ステレオ スピーカーのセットである可能性があります。
DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY フラグ ビットが dwParam2 が指す DWORD の場所に設定されている場合、 waveIn および waveOut API は現在の優先音声通信デバイスのみを使用し、優先デバイスが使用できない場合は他の使用可能なデバイスを検索しません。 waveInMessage 呼び出しまたは waveOutMessage 呼び出しによって出力されるフラグは、waveInMessage または waveOutMessage に対して呼び出しが行われるかどうかに関係なく、waveIn API と waveOut API の両方の優先音声通信デバイスに適用されます。 詳細については、「 優先 Voice-Communications デバイス ID」を参照してください。
DRVM_MAPPER_PREFERRED_GET メッセージは、優先オーディオ デバイスのデバイス ID を取得します。
DRVM_MAPPER_PREFERRED_GETの場合、dwParam1 はデバイス ID へのポインターです。 このパラメーターは、関数が現在の優先デバイスのデバイス ID を書き込む DWORD 変数を指します。 この関数は、優先デバイスとして適格なデバイスがない場合は、値 (-1) を書き込みます。
DRVM_MAPPER_PREFERRED_GETの場合、dwParam2 は状態フラグへのポインターです。 このパラメーターは、関数がデバイス ステータス フラグを書き込む DWORD 変数を指します。 現在定義されているフラグ ビットは 1 つだけです ( waveInMessage 呼び出しと waveOutMessage 呼び出しの場合のみ): DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY。
このメッセージは、waveInMessage、waveOutMessage、および midiOutMessage 関数に対してのみ有効です。 呼び出し元がDRVM_MAPPER_PREFERRED_GET メッセージを使用してこれらの関数を呼び出すとき、呼び出し元は最初にデバイス ID を WAVE_MAPPER ( waveInMessage または waveOutMessage の場合) またはMIDI_MAPPER ( midiOutMessage の場合) として指定してから、この値を適切なハンドルの種類にキャストする必要があります。 waveInMessage、waveOutMessage、または midiOutMessage 関数の場合、呼び出し元は、デバイス ID をそれぞれハンドル型 HWAVEIN、HWAVEOUT、または HMIDIOUT にキャストする必要があります。 呼び出し元がこのパラメーターのデバイス ID ではなく有効なハンドルを指定した場合、関数は失敗し、エラー コードMMSYSERR_NOSUPPORT返されることに注意してください。
システムはこのメッセージをインターセプトし、デバイス ドライバーにメッセージを送信せずに適切な値を返します。 システムインターセプト xxxMessage 関数の一般的な情報については、「 System-Intercepted デバイス メッセージ」を参照してください。
このメッセージは、 DRVM_MAPPER_CONSOLEVOICECOM_GET メッセージとは 対照的に、一般的にオーディオ機能にどのデバイスが優先されているかを判断する方法を提供します。これにより、どのデバイスが音声通信に対して優先されているかが決まります。
dwParam2 が指す DWORD の場所にDRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY フラグ ビットが設定されている場合、waveIn および waveOut API は現在の優先デバイスのみを使用し、優先デバイスが使用できない場合は他の使用可能なデバイスを検索しません。 midiOutMessage 関数はこのフラグを出力しないことに注意してください。midiOut API は常に優先デバイスのみを使用します。 waveInMessage または waveOutMessage 呼び出しによって出力されるフラグは、waveInMessage と waveOutMessage のどちらに対して呼び出しが行われるかに関係なく、waveIn API と waveOut API の両方の優先デバイスに適用されます。
xxxメッセージ関数は、アプリケーションが最初にデバイスを開かなくても既定のデバイス ID を決定できるようにするために、有効なデバイス ハンドルの代わりにこの値を受け入れます。 詳細については、「 優先デバイス ID へのアクセス」を参照してください。
Requirements
| Requirement | 価値 |
|---|---|
| サポートされる最小クライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
| サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
| ターゲット プラットフォーム の | ウィンドウズ |
| Header | mmeapi.h (Windows.h を含む) |
| Library | Winmm.lib |
| DLL | Winmm.dll |