mixerMessage 関数 (mmeapi.h)

mixerMessage 関数は、カスタム ミキサー ドライバー メッセージをミキサー ドライバーに直接送信します。

構文

DWORD mixerMessage(
  HMIXER    hmx,
  UINT      uMsg,
  DWORD_PTR dwParam1,
  DWORD_PTR dwParam2
);

パラメーター

hmx

メッセージを受信するミキサーの識別子。 デバイス ID を HMIXER ハンドルの種類にキャストする必要があります。 デバイス ID の代わりにハンドルを指定すると、関数は失敗し、MMSYSERR_NOSUPPORTエラー コードを返します。

uMsg

ミキサー ドライバーに送信するカスタム ミキサー ドライバー メッセージ。 このメッセージは、MXDM_USER定数以上である必要があります。

dwParam1

送信されるメッセージに関連付けられているパラメーター。

dwParam2

送信されるメッセージに関連付けられているパラメーター。

戻り値

カスタム ミキサー ドライバー メッセージに固有の値を返します。 考えられるエラー値は次のとおりです。

リターン コード 説明
MMSYSERR_INVALHANDLE
指定されたデバイス ハンドルが無効です。
MMSYSERR_INVALPARAM
MXDM_USER メッセージで指定された uMsg パラメーターが無効です。
MMSYSERR_NOSUPPORT
deviceID パラメーターは有効なデバイス ID である必要があります。
MMSYSERR_NOTSUPPORTED
ミキサー デバイスがメッセージを処理しませんでした。

解説

ユーザー定義メッセージは、メッセージをサポートするミキサー ドライバーにのみ送信する必要があります。 アプリケーションでは、ミキサー ドライバーが、ミキサー機能を取得し、MIXERCAPS 構造体の wMidwPidvDriverVersion、および szPname メンバーを確認することで、メッセージをサポートするドライバーであることを確認する必要があります。

メッセージはDRV_QUERYDEVICEINTERFACEwaveIn、waveOut、midiInmidiOut、またはミキサー デバイスのデバイス インターフェイス名を照会します。

の場合 DRV_QUERYDEVICEINTERFACEdwParam1 は呼び出し元によって割り当てられたバッファーへのポインターであり、このバッファーに対して、デバイス インターフェイス名を含む null で終わる Unicode 文字列が関数によって書き込まれます。 デバイスにデバイス インターフェイスがない場合、文字列の長さは 0 です。

の場合 DRV_QUERYDEVICEINTERFACEdwParam2 はバッファー サイズをバイト単位で指定します。 これは 関数への入力パラメーターです。 呼び出し元は、 DRV_QUERYDEVICEINTERFACESIZE メッセージによって取得されたバッファー サイズ以上のサイズを指定する必要があります。

DRV_QUERYDEVICEINTERFACE メッセージは、Windows Me および Windows 2000 以降でサポートされています。 このメッセージは、 waveInMessagewaveOutMessagemidiInMessagemidiOutMessagemixerMessage 関数に対してのみ有効です。 システムはこのメッセージをインターセプトし、デバイス ドライバーにメッセージを送信せずに適切な値を返します。 システムインターセプト xxxMessage 関数の一般的な情報については、「 System-Intercepted Device Messages」を参照してください。

次の 2 つのメッセージ定数は、デバイス インターフェイス名を取得するために一緒に使用されます。

  • DRV_QUERYDEVICEINTERFACESIZE
  • DRV_QUERYDEVICEINTERFACE
最初のメッセージは、デバイス インターフェイス名を含む文字列を保持するために必要なバッファーのサイズをバイト単位で取得します。 2 番目のメッセージは、必要なサイズのバッファー内の名前文字列を取得します。

詳細については、「 デバイス インターフェイス名の取得」を参照してください。

メッセージは DRV_QUERYDEVICEINTERFACESIZE 、デバイス インターフェイス名を保持するために必要なバッファーのサイズを照会します。

の場合 DRV_QUERYDEVICEINTERFACESIZEdwParam1 はバッファー サイズへのポインターです。 このパラメーターは、関数が必要なバッファー サイズをバイト単位で書き込む ULONG 変数を指します。 サイズには、名前文字列の終端 null の記憶域が含まれます。 デバイス ID がデバイス インターフェイスを持たないデバイスを識別する場合、サイズは 0 です。

の場合 DRV_QUERYDEVICEINTERFACESIZEdwParam2 は使用されません。 このパラメーターを 0 に設定します。

このメッセージは、 waveInMessagewaveOutMessagemidiInMessagemidiOutMessagemixerMessage 関数に対してのみ有効です。 システムはこのメッセージをインターセプトし、デバイス ドライバーにメッセージを送信せずに適切な値を返します。 システムインターセプト xxxMessage 関数の一般的な情報については、「 System-Intercepted Device Messages」を参照してください。

このメッセージによって取得されるバッファー サイズは、バイト数として表されます。 デバイス インターフェイス名を含む null で終わる Unicode 文字列を保持するために必要なバッファーのサイズを指定します。 呼び出し元は、指定したサイズのバッファーを割り当て、 DRV_QUERYDEVICEINTERFACE メッセージを使用してデバイス インターフェイス名文字列を取得します。

詳細については、「 デバイス インターフェイス名の取得」を参照してください。

メッセージはDRV_QUERYDEVNODE、Plug and Play マネージャーによってデバイスに割り当てられた devnode 番号を照会します。

の場合 DRV_QUERYDEVNODEdwParam1 は、関数が devnode 番号を書き込む呼び出し元によって割り当てられた DWORD 変数へのポインターです。 デバイスに devnode が割り当てられていない場合、関数はこの変数を 0 に設定します。

の場合 DRV_QUERYDEVNODEdwParam2 は使用されません。 このパラメーターを 0 に設定します。

Windows 2000 以降では、メッセージは常にMMSYSERR_NOTSUPPORTEDを返します。 このメッセージは、 waveInMessagewaveOutMessagemidiInMessagemidiOutMessagemixerMessage 関数に対してのみ有効です。 システムはこのメッセージをインターセプトし、デバイス ドライバーにメッセージを送信せずに適切な値を返します。 システムインターセプト xxxMessage 関数の一般的な情報については、「 System-Intercepted Device Messages」を参照してください。

メッセージは DRV_QUERYMAPPABLE 、指定したデバイスをマッパーが使用できるかどうかを照会します。

の場合 DRV_QUERYMAPPABLEdwParam1 は使用されません。 このパラメーターを 0 に設定します。

の場合 DRV_QUERYMAPPABLEdwParam2 は使用されません。 このパラメーターを 0 に設定します。

このメッセージは、waveInMessagewaveOutMessagemidiInMessage、midiOutMessagemixerMessageauxOutMessage 関数に対してのみ有効です。 システムはこのメッセージをインターセプトし、デバイス ドライバーにメッセージを送信せずに適切な値を返します。 システムインターセプト xxxMessage 関数の一般的な情報については、「 System-Intercepted Device Messages」を参照してください。

アプリケーション プログラムが特定のオーディオ デバイスではなくマッパーを開くと、アプリケーションと使用可能なデバイスの間にマッパーが挿入されます。 マッパーは、アプリケーションの要件を使用可能なデバイスのいずれかにマッピングすることで、適切なデバイスを選択します。 マッパーの詳細については、Microsoft Windows SDKドキュメントを参照してください。

メッセージは DRVM_MAPPER_CONSOLEVOICECOM_GET 、優先される音声通信デバイスのデバイス ID を取得します。

の場合 DRVM_MAPPER_CONSOLEVOICECOM_GETdwParam1 はデバイス ID へのポインターです。 このパラメーターは、関数が現在優先される音声通信デバイスのデバイス ID を書き込む DWORD 変数を指します。 この関数は、優先される音声通信デバイスとして適格なデバイスがない場合は、値 (-1) を書き込みます。

の場合 DRVM_MAPPER_CONSOLEVOICECOM_GETdwParam2 は状態フラグへのポインターです。 このパラメーターは、関数がデバイス状態フラグを書き込む DWORD 変数を指します。 現在定義されているフラグ ビットは 1 つだけです:DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY。

このメッセージは、 waveInMessage 関数と waveOutMessage 関数に対してのみ有効です。 呼び出し元が DRVM_MAPPER_CONSOLEVOICECOM_GET メッセージを使用してこれら 2 つの関数を呼び出す場合、呼び出し元はデバイス ID をWAVE_MAPPERとして指定し、この値を適切なハンドルの種類にキャストする必要があります。 waveInMessagewaveOutMessagemidiInMessagemidiOutMessage、または mixerMessage 関数の場合、呼び出し元は、それぞれデバイス ID を HWAVEIN、HWAVEOUT、HMIDIIN、HMIDIOUT、または HMIXER 型のハンドルにキャストする必要があります。 呼び出し元がこのパラメーターのデバイス ID ではなく有効なハンドルを提供すると、関数は失敗し、エラー コード MMSYSERR_NOSUPPORTを返します。

システムはこのメッセージをインターセプトし、デバイス ドライバーにメッセージを送信せずに適切な値を返します。 システムインターセプト xxxMessage 関数の一般的な情報については、「 System-Intercepted Device Messages」を参照してください。

このメッセージは、他のすべてのオーディオ機能に優先するデバイスを決定する DRVM_MAPPER_PREFERRED_GET メッセージとは対照的に、音声通信に対して優先されるデバイスを決定する方法を提供します。

たとえば、音声通信に推奨される waveOut デバイスはヘッドセットのイヤホンですが、他のすべてのオーディオ機能に推奨される waveOut デバイスは、ステレオ スピーカーのセットである可能性があります。

DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY フラグ ビットが dwParam2 が指す DWORD の場所に設定されている場合、 waveInwaveOut API は現在の優先音声通信デバイスのみを使用し、優先デバイスが使用できない場合は他の使用可能なデバイスを検索しません。 waveInMessage 呼び出しまたは waveOutMessage 呼び出しによって出力されるフラグは、waveInMessagewaveOutMessage のどちらを呼び出すかに関係なく、waveIn API と waveOut API の両方で優先される音声通信デバイスに適用されます。 詳細については、「 優先 Voice-Communications デバイス ID」を参照してください。

メッセージは DRVM_MAPPER_PREFERRED_GET 、優先オーディオ デバイスのデバイス ID を取得します。

の場合 DRVM_MAPPER_PREFERRED_GETdwParam1 はデバイス ID へのポインターです。 このパラメーターは、関数が現在の優先デバイスのデバイス ID を書き込む DWORD 変数を指します。 この関数は、優先デバイスとして適格なデバイスが使用できない場合は、値 (-1) を書き込みます。

の場合 DRVM_MAPPER_PREFERRED_GETdwParam2 は状態フラグへのポインターです。 このパラメーターは、関数がデバイス状態フラグを書き込む DWORD 変数を指します。 現在定義されているフラグ ビットは 1 つだけです ( waveInMessage 呼び出しと waveOutMessage 呼び出しの場合のみ): DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY。

このメッセージは、waveInMessage、waveOutMessageおよび midiOutMessage 関数に対してのみ有効です。 呼び出し元がDRVM_MAPPER_PREFERRED_GET メッセージを使用してこれらの関数を呼び出すとき、呼び出し元は最初にデバイス ID を WAVE_MAPPER ( waveInMessage または waveOutMessage の場合) またはMIDI_MAPPER ( midiOutMessage の場合) として指定してから、この値を適切なハンドルの種類にキャストする必要があります。 waveInMessagewaveOutMessage、または midiOutMessage 関数の場合、呼び出し元はデバイス ID をそれぞれハンドル型 HWAVEIN、HWAVEOUT、または HMIDIOUT にキャストする必要があります。 呼び出し元がこのパラメーターのデバイス ID ではなく有効なハンドルを提供すると、関数は失敗し、エラー コード MMSYSERR_NOSUPPORTを返します。

システムはこのメッセージをインターセプトし、デバイス ドライバーにメッセージを送信せずに適切な値を返します。 システムインターセプト xxxMessage 関数の一般的な情報については、「 System-Intercepted Device Messages」を参照してください。

このメッセージは、音声機能全般にどのデバイスが優先されているかを判断する方法を提供します。 DRVM_MAPPER_CONSOLEVOICECOM_GET メッセージとは対照的に、音声通信に対して優先されるデバイスが決まります。

DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY フラグ ビットが dwParam2 が指す DWORD の場所に設定されている場合、 waveIn API と waveOut API は現在の優先デバイスのみを使用し、優先デバイスが使用できない場合は他の使用可能なデバイスを検索しません。 midiOutMessage 関数はこのフラグを出力しないことに注意してください。midiOut API は常に優先デバイスのみを使用します。 waveInMessage または waveOutMessage 呼び出しによって出力されるフラグは、waveInMessagewaveOutMessage のどちらを呼び出すかに関係なく、waveIn API と waveOut API の両方の優先デバイスに適用されます。

xxxMessage 関数は、有効なデバイス ハンドルの代わりにこの値を受け入れます。これにより、アプリケーションは最初にデバイスを開かなくても既定のデバイス ID を判断できます。 詳細については、「 優先デバイス ID へのアクセス」を参照してください。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー mmeapi.h (Windows.h を含む)
Library Winmm.lib
[DLL] Winmm.dll

関連項目

オーディオ ミキサー関数

オーディオ ミキサー