次の方法で共有


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 呼び出しが失敗した場合、*ppDeviceNULL です

戻り値

メソッドが成功した場合は、S_OK を返します。 失敗した場合、次の表に示す値が含まれますが、これに限定されません。

リターン コード 説明
E_POINTER
パラメーター ppDeviceNULL です
E_INVALIDARG
パラメーター dataFlow または ロール が範囲外です。
E_NOTFOUND
使用できるデバイスがありません。
E_OUTOFMEMORY
メモリが不足しています。

注釈

Windows Vista では、MMDevice API は デバイスの役割 をサポートしていますが、システム提供のユーザー インターフェイス プログラムではサポートされていません。 Windows Vista のユーザー インターフェイスを使用すると、レンダリング用の既定のオーディオ デバイスとキャプチャ用の既定のオーディオ デバイスを選択できます。 ユーザーが既定のレンダリングまたはキャプチャ デバイスを変更すると、システムは 3 つのデバイス ロール (eConsole、eMultimedia、および eCommunications) をすべてそのデバイスに割り当てます。 したがって、 GetDefaultAudioEndpoint では、 ロール パラメーターによって示されるロールに関係なく、常に既定のレンダリングまたはキャプチャ デバイスが選択されます。 将来のバージョンの Windows では、ユーザー インターフェイスを使用して、ユーザーが個々のロールを異なるデバイスに割り当て可能になる場合があります。 その場合、 GetDefaultAudioEndpoint によるレンダリングまたはキャプチャ デバイスの選択は 、ロール パラメーターによって異なります。 したがって、将来のバージョンの Windows で実行すると、Windows Vista で実行するように開発されたオーディオ アプリケーションの動作が変わる可能性があります。 詳細については、「 Windows Vista のデバイス ロール」を参照してください。

このメソッドは、指定されたデータ フロー方向 (レンダリングまたはキャプチャ) とロールの既定のエンドポイント デバイスを取得します。 たとえば、クライアントは、次の呼び出しを行うことで、既定のコンソール再生デバイスを取得できます。


  hr = pDevEnum->GetDefaultAudioEndpoint(
                   eRender, eConsole, &pDeviceOut);

前のコード フラグメントでは、変数 hrHRESULT 型、 pDevEnumIMMDeviceEnumerator インターフェイスへのポインター、 pDeviceOutIMMDevice インターフェイスへのポインターです。

Windows システムには、デスクトップ スピーカー、忠実度の高いヘッドホン、デスクトップ マイク、スピーカーとマイクを備えたヘッドセット、忠実度の高いマルチチャネル スピーカーなどのオーディオ エンドポイント デバイスの組み合わせが含まれている場合があります。 ユーザーは、デバイスに適切なロールを割り当てることができます。 たとえば、音声通信ストリームを管理するアプリケーションでは 、GetDefaultAudioEndpoint を 呼び出して、そのロールの指定されたレンダリングとキャプチャ デバイスを識別できます。

1 つのレンダリングまたはキャプチャ デバイスしか使用できない場合、システムは常に 3 つのレンダリングロールまたはキャプチャ ロールをすべてそのデバイスに割り当てます。 メソッドが指定したロールのレンダリングまたはキャプチャ デバイスを見つけることができない場合は、レンダリングまたはキャプチャ デバイスがまったく使用できないということです。 使用可能なデバイスがない場合、メソッドは *ppEndpoint = NULL を 設定し、ERROR_NOT_FOUNDを返します。

GetDefaultAudioEndpoint メソッドを呼び出すコード例については、次のトピックを参照してください。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー mmdeviceapi.h

こちらもご覧ください

IMMDevice インターフェイス

IMMDeviceEnumerator インターフェイス