IMFMediaEvent::GetValue メソッド (mfobjects.h)

イベントに関連付けられている値 (存在する場合) を取得します。 値は PROPVARIANT 構造体として取得されます。 実際のデータ型と値の意味は、イベントによって異なります。

構文

HRESULT GetValue(
  [out] PROPVARIANT *pvValue
);

パラメーター

[out] pvValue

PROPVARIANT 構造体へのポインター。 メソッドは、この構造体にデータを入力します。

戻り値

このメソッドは HRESULT を返します。 有効な値を次の表に示しますが、これ以外にもあります。

リターン コード 説明
S_OK
メソッドが成功しました。

注釈

このメソッドを呼び出す前に、 PropVariantInit を呼び出して PROPVARIANT 構造体を初期化します。 メソッドが戻った後、 PropVariantClear を呼び出して、 PROPVARIANT データに割り当てられたメモリを解放します。

このインターフェイスは、Windows Media Format 11 SDK 再頒布可能コンポーネントがインストールされている場合、次のプラットフォームで使用できます。

  • Windows XP Service Pack 2 (SP2) 以降。
  • Windows XP Media Center Edition 2005 KB900325 (Windows XP Media Center Edition 2005) とKB925766 (2006 年 10 月 Windows XP Media Center Edition の更新プログラムのロールアップ) がインストールされています。

次の関数は、値が IUnknown ポインターの場合にイベント値を取得します。 PROPVARIANT 型がVT_UNKOWNされていない場合、関数は MF_E_INVALIDTYPEを返します。

//  Gets an IUnknown pointer from an IMFMediaEvent event and queries 
//  the pointer for a specified interface.
//
//  NOTE: Applies only to events that contain IUnknown pointers.
//        Otherwise, the function returns MF_E_INVALIDTYPE.

template <class Q>
HRESULT GetEventObject(IMFMediaEvent *pEvent, Q **ppObject)
{
    *ppObject = NULL;   // zero output

    PROPVARIANT var;
    HRESULT hr = pEvent->GetValue(&var);
    if (SUCCEEDED(hr))
    {
        if (var.vt == VT_UNKNOWN)
        {
            hr = var.punkVal->QueryInterface(ppObject);
        }
        else
        {
            hr = MF_E_INVALIDTYPE;
        }
        PropVariantClear(&var);
    }
    return hr;
}


要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー mfobjects.h (Mfidl.h を含む)
Library Mfuuid.lib

こちらもご覧ください

IMFMediaEvent

メディア イベント ジェネレーター