GetDevice メソッドは、エンドポイント ID 文字列によって識別されるオーディオ エンドポイント デバイスを取得します。
構文
HRESULT GetDevice(
[in] LPCWSTR pwstrId,
[out] IMMDevice **ppDevice
);
Parameters
[in] pwstrId
エンドポイント ID を含む文字列へのポインター。 呼び出し元は通常、 IMMDevice::GetId メソッドまたは IMMNotificationClient インターフェイスのいずれかのメソッドからこの文字列を取得します。
Windows 11 バージョン 24H2 (ビルド 26100) 以降では、呼び出し元はオーディオ エンドポイントの PKEY_AudioEndpoint_StableId プロパティから取得した文字列を渡して、一致する StableId を持つオーディオ エンドポイントを取得することもできます。
[out] ppDevice
メソッドが指定したデバイスの IMMDevice インターフェイスのアドレスを書き込むポインター変数へのポインター。 このメソッドを使用して、呼び出し元はインターフェイスへのカウントされた参照を取得します。 呼び出し元は、インターフェイスの Release メソッドを呼び出すことによって、不要になったときにインターフェイスを 解放 する役割を担います。 GetDevice 呼び出しが失敗した場合、*ppDevice は NULL です。
値を返す
成功した場合は S_OK を返します。 失敗した場合、可能なリターン コードには、次の表に示す値が含まれますが、これらに限定されません。
| リターン コード | Description |
|---|---|
|
パラメーター pwstrId または ppDevice が NULL です。 |
|
デバイス ID は、このシステム内にあるオーディオ デバイスを識別しません。 |
|
メモリ不足。 |
解説
2 つのプログラムが 2 つの異なるプロセスで実行されていて、両方が同じオーディオ エンドポイント デバイスにアクセスする必要がある場合、1 つのプログラムでデバイスの IMMDevice インターフェイスを他のプログラムに渡すことはできません。 ただし、プログラムは、次の手順に従って同じデバイスにアクセスできます。
- 最初のプログラムは、最初のプロセスで IMMDevice::GetId メソッドを呼び出して、デバイスを識別するエンドポイント ID 文字列を取得します。
- 最初のプログラムは、プロセス境界を越えてエンドポイント ID 文字列を 2 番目のプログラムに渡します。
- 2 番目のプロセスでデバイスの IMMDevice インターフェイスへの参照を取得するために、2 番目のプログラムはエンドポイント ID 文字列を使用して GetDevice を呼び出します。
Requirements
| 要件 | Value |
|---|---|
| サポートされる最小クライアント | Windows Vista [デスクトップ アプリのみ] |
| サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
| ターゲット プラットフォーム | Windows |
| ヘッダー | mmdeviceapi.h |