IMFAudioPolicy::SetIconPath メソッド (mfidl.h)

オーディオ セッションのアイコン リソースを設定します。 Windows ボリューム コントロールにこのアイコンが表示されます。

構文

HRESULT SetIconPath(
  [in] LPCWSTR pszPath
);

パラメーター

[in] pszPath

アイコンを指定するワイド文字列。 「解説」を参照してください。

戻り値

このメソッドは、成功すると S_OK を返します。 そうでない場合は、HRESULT エラー コードを返します。

解説

アイコン パスの形式は "path,index" または "path,-id" です。 path は DLL、実行可能ファイル、またはアイコン ファイルへの完全修飾パスです。 index は、ファイル内のアイコンの 0 から始まるインデックスです。と id はリソース識別子です。 リソース識別子の前には、インデックスと区別するためにマイナス記号 (-) が付きます。 パスには、"%windir%" などの環境変数を含めることができます。 詳細については、Windows SDK の 「IAudioSessionControl::SetIconPath 」を参照してください。

次の例では、アプリケーションの実行可能ファイル内のアイコンのリソース識別子を使用してアイコンを設定します。

HRESULT SetIcon(IMFMediaSession *pSession, int nID)
{
    IMFAudioPolicy *pPolicy = NULL;

    const DWORD CCH_ICON_PATH = MAX_PATH + 16;
    WCHAR szFileName[MAX_PATH];
    WCHAR szIconPath[CCH_ICON_PATH];

    HRESULT hr = S_OK;

    DWORD result = GetModuleFileNameW(NULL, szFileName, MAX_PATH);

    // Note: GetModuleFileName can return a truncated string without a 
    // NULL terminator. If so, the function succeeds but sets the last 
    // error to ERROR_INSUFFICIENT_BUFFER.
    if ((result == 0) || (GetLastError() ==  ERROR_INSUFFICIENT_BUFFER))
    {
        hr = E_FAIL;
        goto done;
    }

    hr = StringCchPrintfW(szIconPath, CCH_ICON_PATH, 
                 L"%s,-%d", szFileName, nID);

    if (FAILED(hr))
    {
        goto done;
    }

    hr = MFGetService(
        pSession, 
        MR_AUDIO_POLICY_SERVICE, 
        IID_PPV_ARGS(&pPolicy)
        );

    if (FAILED(hr))
    {
        goto done;
    }

    hr = pPolicy->SetIconPath(szIconPath);
    if (FAILED(hr))
    {
        goto done;
    }

done:
    SafeRelease(&pPolicy);
    return hr;
}

要件

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

関連項目

IMFAudioPolicy

ストリーミング オーディオ レンダラー