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

戻り値

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

リターン コード 説明
E_POINTER
パラメーター ppvNULL です
E_NOINTERFACE
要求されたインターフェイスは使用できません。
AUDCLNT_E_NOT_INITIALIZED
オーディオ ストリームが初期化されていません。
AUDCLNT_E_WRONG_ENDPOINT_TYPE
呼び出し元は、レンダリング エンドポイント上の IAudioCaptureClient インターフェイス、またはキャプチャ エンドポイント上の IAudioRenderClient インターフェイスにアクセスしようとしました。
AUDCLNT_E_DEVICE_INVALIDATED
オーディオ エンドポイント デバイスが取り外されているか、オーディオ ハードウェアまたは関連するハードウェア リソースが再構成、無効、削除、またはその他の方法で使用できなくなります。
AUDCLNT_E_SERVICE_NOT_RUNNING
Windows オーディオ サービスが実行されていません。

注釈

このメソッドでは、 IAudioClient インターフェイスを事前に初期化する必要があります。 クライアントが IAudioClient::Initialize メソッドを正常に呼び出してオーディオ ストリームを初期化するまで、このメソッドの呼び出しはすべてエラー AUDCLNT_E_NOT_INITIALIZEDで失敗します。

GetService メソッドは、次のサービス インターフェイスをサポートしています。

Windows 7 では、出力信頼機関 (OTA) オブジェクトの使用を容易にする新しいサービス識別子 ( IID_IMFTrustedOutput) が追加されました。 これらのオブジェクトは、Media Foundation の保護されたメディア パス (PMP) の内部または外部で動作し、Media Foundation パイプラインの外部にコンテンツを送信できます。 呼び出し元が PMP の外部にある場合、OTA は PMP で動作しない可能性があり、保護設定の堅牢性は低くなります。 OTA は 、IMFTrustedOutput インターフェイスを 実装する必要があります。 GetServiceIID_IMFTrustedOutputを渡すことで、アプリケーションはオブジェクトの IMFTrustedOutput インターフェイスへのポインターを取得できます。 保護されたオブジェクトと IMFTrustedOutput の詳細については、Media Foundation SDK ドキュメントの「保護されたメディア パス」を参照してください。

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 オブジェクトを解放するのと同じスレッドからサービスを解放する必要があります。

IAudioSessionControlIAudioStreamVolumeIChannelAudioVolume、および ISimpleAudioVolume インターフェイスは、オーディオ セッションと共有モード ストリームの側面を制御および監視します。 これらのインターフェイスは、排他モード ストリームでは機能しません。

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

要件

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

こちらもご覧ください

IAudioCaptureClient インターフェイス

IAudioClient インターフェイス

IAudioClient::Initialize

IAudioClock インターフェイス

IAudioRenderClient インターフェイス

IAudioSessionControl インターフェイス

IAudioStreamVolume インターフェイス

IChannelAudioVolume インターフェイス

ISimpleAudioVolume インターフェイス