IAudioClient::GetService メソッド (audioclient.h)
GetService メソッドは、オーディオ クライアント オブジェクトから追加のサービスにアクセスします。
構文
HRESULT GetService(
[in] REFIID riid,
[out] void **ppv
);
パラメーター
[in] riid
要求されたサービスのインターフェイス ID。 クライアントは、このパラメーターを次のいずれかの REFIID 値に設定する必要があります。
IID_IAudioCaptureClient
IID_IAudioClientDuckingControl
IID_IAudioClock
IID_IAudioRenderClient
IID_IAudioSessionControl
IID_IAudioStreamVolume
IID_IChannelAudioVolume
IID_IMFTrustedOutput
IID_ISimpleAudioVolume
詳細については、「解説」を参照してください。
[out] ppv
メソッドが要求されたインターフェイスのインスタンスのアドレスを書き込むポインター変数へのポインター。 このメソッドを使用して、呼び出し元はインターフェイスへのカウントされた参照を取得します。 呼び出し元は、インターフェイスの Release メソッドを呼び出すことによって、不要になったときにインターフェイスを 解放 する役割を担います。 GetService 呼び出しが失敗した場合、*ppv は NULL です。
戻り値
メソッドが成功した場合は、S_OK を返します。 失敗した場合、次の表に示す値が含まれますが、これに限定されません。
リターン コード | 説明 |
---|---|
|
パラメーター ppv は NULL です。 |
|
要求されたインターフェイスは使用できません。 |
|
オーディオ ストリームが初期化されていません。 |
|
呼び出し元は、レンダリング エンドポイント上の IAudioCaptureClient インターフェイス、またはキャプチャ エンドポイント上の IAudioRenderClient インターフェイスにアクセスしようとしました。 |
|
オーディオ エンドポイント デバイスが取り外されているか、オーディオ ハードウェアまたは関連するハードウェア リソースが再構成、無効、削除、またはその他の方法で使用できなくなります。 |
|
Windows オーディオ サービスが実行されていません。 |
注釈
このメソッドでは、 IAudioClient インターフェイスを事前に初期化する必要があります。 クライアントが IAudioClient::Initialize メソッドを正常に呼び出してオーディオ ストリームを初期化するまで、このメソッドの呼び出しはすべてエラー AUDCLNT_E_NOT_INITIALIZEDで失敗します。
GetService メソッドは、次のサービス インターフェイスをサポートしています。
- IAudioCaptureClient
- IAudioClock
- IAudioRenderClient
- IAudioSessionControl
- IAudioStreamVolume
- IChannelAudioVolume
- IMFTrustedOutput
- ISimpleAudioVolume
OTA で信頼できるオーディオ ドライバーを使用する方法については、「 Protected User Mode Audio (PUMA)」を参照してください。
このメカニズムを使用して IMFTrustedOutput をアクティブ化すると、呼び出し元が PMP で実行されているかどうかに関係なく機能することに注意してください。 ただし、呼び出し元が保護されたプロセス (つまり、呼び出し元が Media Foundation の PMP 内にいない) で実行されていない場合、オーディオ OTA が PMP で動作せず、保護設定の堅牢性が低下する可能性があります。
サービス インターフェイスのインターフェイス ID を取得するには、 __uuidof 演算子を使用します。 たとえば、 IAudioCaptureClient のインターフェイス ID は次のように定義されます。
const IID IID_IAudioCaptureClient __uuidof(IAudioCaptureClient)
__uuidof 演算子の詳細については、Windows SDKのドキュメントを参照してください。
IAudioClient オブジェクトを解放し、関連付けられているすべてのリソースを解放するには、クライアントは、IAudioClient インターフェイス自体で Release を呼び出すことに加えて、GetService を呼び出して作成されたすべてのサービス オブジェクトへのすべての参照を解放する必要があります。 クライアントは、 IAudioClient オブジェクトを解放するのと同じスレッドからサービスを解放する必要があります。
IAudioSessionControl、IAudioStreamVolume、IChannelAudioVolume、および ISimpleAudioVolume インターフェイスは、オーディオ セッションと共有モード ストリームの側面を制御および監視します。 これらのインターフェイスは、排他モード ストリームでは機能しません。
GetService メソッドを呼び出すコード例については、次のトピックを参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | audioclient.h |