次の方法で共有


IMMDeviceEnumerator::GetDevice メソッド (mmdeviceapi.h)

GetDevice メソッドは、エンドポイント ID 文字列で識別されるオーディオ エンドポイント デバイスを取得します。

構文

HRESULT GetDevice(
  [in]  LPCWSTR   pwstrId,
  [out] IMMDevice **ppDevice
);

パラメーター

[in] pwstrId

エンドポイント ID を含む文字列へのポインター。 呼び出し元は通常、 IMMDevice::GetId メソッドまたは IMMNotificationClient インターフェイスのいずれかのメソッドからこの文字列を取得します。

[out] ppDevice

メソッドが指定したデバイスの IMMDevice インターフェイスのアドレスを書き込むポインター変数へのポインター。 このメソッドを使用して、呼び出し元はインターフェイスへのカウントされた参照を取得します。 呼び出し元は、インターフェイスの Release メソッドを呼び出すことによって、不要になったインターフェイスを解放する必要があります。 GetDevice 呼び出しが失敗した場合、*ppDeviceNULL です

戻り値

メソッドが成功した場合は、S_OK を返します。 エラーが発生した場合、次の表に示す値が、可能なリターン コードに含まれますが、これらに限定されません。

リターン コード 説明
E_POINTER
パラメーター pwstrId または ppDeviceNULL です
E_NOTFOUND
デバイス ID は、このシステム内にあるオーディオ デバイスを識別しません。
E_OUTOFMEMORY
メモリが不足しています。

注釈

2 つのプログラムが 2 つの異なるプロセスで実行されていて、両方が同じオーディオ エンドポイント デバイスにアクセスする必要がある場合、1 つのプログラムでデバイスの IMMDevice インターフェイスを他のプログラムに渡すことはできません。 ただし、プログラムは、次の手順に従って同じデバイスにアクセスできます。

  1. 最初のプログラムは、最初のプロセスで IMMDevice::GetId メソッドを呼び出して、デバイスを識別するエンドポイント ID 文字列を取得します。
  2. 最初のプログラムは、プロセス境界を越えてエンドポイント ID 文字列を 2 番目のプログラムに渡します。
  3. 2 番目のプロセスでデバイスの IMMDevice インターフェイスへの参照を取得するために、2 番目のプログラムはエンドポイント ID 文字列を使用して GetDevice を呼び出します。
GetDevice メソッドの詳細については、次のトピックを参照してください。 GetDevice メソッドを使用するコード例については、次のトピックを参照してください。

要件

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

こちらもご覧ください

IMMDevice インターフェイス

IMMDevice::GetId

IMMDeviceEnumerator インターフェイス

IMMNotificationClient インターフェイス