IMMDeviceEnumerator::GetDefaultAudioEndpoint メソッド (mmdeviceapi.h)
GetDefaultAudioEndpoint メソッドは、指定されたデータ フローの方向とロールの既定のオーディオ エンドポイントを取得します。
構文
HRESULT GetDefaultAudioEndpoint(
[in] EDataFlow dataFlow,
[in] ERole role,
[out] IMMDevice **ppEndpoint
);
パラメーター
[in] dataFlow
エンドポイント デバイスのデータ フローの方向。 呼び出し元は、このパラメーターを次の 2 つの EDataFlow 列挙値のいずれかに設定する必要があります。
eRender
eCapture
レンダリング デバイスのデータ フローの方向は eRender です。 キャプチャ デバイスのデータ フローの方向は eCapture です。
[in] role
エンドポイント デバイスのロール。 呼び出し元は、このパラメーターを次のいずれかの ERole 列挙値に設定する必要があります。
eConsole
eMultimedia
eCommunications
詳細については、「解説」を参照してください。
[out] ppEndpoint
メソッドが既定のオーディオ エンドポイント デバイスのエンドポイント オブジェクトの IMMDevice インターフェイスのアドレスを書き込むポインター変数へのポインター。 このメソッドを使用して、呼び出し元はインターフェイスへのカウントされた参照を取得します。 呼び出し元は、インターフェイスの Release メソッドを呼び出すことによって、不要になったときにインターフェイスを 解放 する役割を担います。 GetDefaultAudioEndpoint 呼び出しが失敗した場合、*ppDevice は NULL です。
戻り値
メソッドが成功した場合は、S_OK を返します。 失敗した場合、次の表に示す値が含まれますが、これに限定されません。
リターン コード | 説明 |
---|---|
|
パラメーター ppDevice は NULL です。 |
|
パラメーター dataFlow または ロール が範囲外です。 |
|
使用できるデバイスがありません。 |
|
メモリが不足しています。 |
注釈
注
Windows Vista では、MMDevice API は デバイスの役割 をサポートしていますが、システム提供のユーザー インターフェイス プログラムではサポートされていません。 Windows Vista のユーザー インターフェイスを使用すると、レンダリング用の既定のオーディオ デバイスとキャプチャ用の既定のオーディオ デバイスを選択できます。 ユーザーが既定のレンダリングまたはキャプチャ デバイスを変更すると、システムは 3 つのデバイス ロール (eConsole、eMultimedia、および eCommunications) をすべてそのデバイスに割り当てます。 したがって、 GetDefaultAudioEndpoint では、 ロール パラメーターによって示されるロールに関係なく、常に既定のレンダリングまたはキャプチャ デバイスが選択されます。 将来のバージョンの Windows では、ユーザー インターフェイスを使用して、ユーザーが個々のロールを異なるデバイスに割り当て可能になる場合があります。 その場合、 GetDefaultAudioEndpoint によるレンダリングまたはキャプチャ デバイスの選択は 、ロール パラメーターによって異なります。 したがって、将来のバージョンの Windows で実行すると、Windows Vista で実行するように開発されたオーディオ アプリケーションの動作が変わる可能性があります。 詳細については、「 Windows Vista のデバイス ロール」を参照してください。
このメソッドは、指定されたデータ フロー方向 (レンダリングまたはキャプチャ) とロールの既定のエンドポイント デバイスを取得します。 たとえば、クライアントは、次の呼び出しを行うことで、既定のコンソール再生デバイスを取得できます。
hr = pDevEnum->GetDefaultAudioEndpoint(
eRender, eConsole, &pDeviceOut);
前のコード フラグメントでは、変数 hr は HRESULT 型、 pDevEnum は IMMDeviceEnumerator インターフェイスへのポインター、 pDeviceOut は IMMDevice インターフェイスへのポインターです。
Windows システムには、デスクトップ スピーカー、忠実度の高いヘッドホン、デスクトップ マイク、スピーカーとマイクを備えたヘッドセット、忠実度の高いマルチチャネル スピーカーなどのオーディオ エンドポイント デバイスの組み合わせが含まれている場合があります。 ユーザーは、デバイスに適切なロールを割り当てることができます。 たとえば、音声通信ストリームを管理するアプリケーションでは 、GetDefaultAudioEndpoint を 呼び出して、そのロールの指定されたレンダリングとキャプチャ デバイスを識別できます。
1 つのレンダリングまたはキャプチャ デバイスしか使用できない場合、システムは常に 3 つのレンダリングロールまたはキャプチャ ロールをすべてそのデバイスに割り当てます。 メソッドが指定したロールのレンダリングまたはキャプチャ デバイスを見つけることができない場合は、レンダリングまたはキャプチャ デバイスがまったく使用できないということです。 使用可能なデバイスがない場合、メソッドは *ppEndpoint = NULL を 設定し、ERROR_NOT_FOUNDを返します。
GetDefaultAudioEndpoint メソッドを呼び出すコード例については、次のトピックを参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | mmdeviceapi.h |