Win32 API 日本語リファレンス
ホームMedia.Audio.Apo › IAudioDeviceModulesClient

IAudioDeviceModulesClient

COM
IID98f37dac-d0b6-49f5-896a-aa4d169a4c48継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

Audio Processing Object (APO) は、IAudioDeviceModulesManager インスタンスへの参照を取得するためにこのインターフェースを実装します。

メソッド 1

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT SetAudioDeviceModulesManager(IUnknown* pAudioDeviceModulesManager)

IAudioDeviceModulesClient インターフェースを実装する Audio Processing Object (APO) に IAudioDeviceModulesManager のインスタンスを渡すために、システムによって呼び出されます。

pAudioDeviceModulesManagerIUnknown*inIAudioDeviceModulesManager を表す IUnknown インターフェース。

戻り値

HRESULT。

解説(Remarks)

次のコード例は、IAudioDeviceModulesClient の実装を示しています。

STDMETHODIMP CTestModuleAPO::SetAudioDeviceModulesManager(_In_ IUnknown* pAudioDeviceModulesManager) 
{
    HRESULT hr = S_OK;
    CComQIPtr<Windows::Media::Devices::IAudioDeviceModulesManager> spModuleManager = pAudioDeviceModulesManager;
    ComPtr<IVectorView<AudioDeviceModule *>> spModules;

    // APO 内で後で使用するためにオーディオモジュールマネージャーをキャッシュする
    m_AudioModulesManager = pAudioDeviceModulesManager;

    // 既知のモジュールをオーディオモジュールから検索する
    hr = m_pAudioDeviceModulesMgr->FindAllById(KNOWN_MODULE_ID, &spModules);

    if (SUCCEEDED(hr))
    {
        // 返されたモジュールに対して何らかの処理を行うか、後で使用するためにキャッシュする
        m_KnownModules = spModules;
    }

    return hr;
}
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

#define global IID_IAudioDeviceModulesClient "{98F37DAC-D0B6-49F5-896A-AA4D169A4C48}"
#usecom global IAudioDeviceModulesClient IID_IAudioDeviceModulesClient "{}"
#comfunc global IAudioDeviceModulesClient_SetAudioDeviceModulesManager  3 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。