Share via


CSourceSeeking::CheckCapabilities

CheckCapabilities メソッドは、指定したシーク能力をストリームが持っているかどうかを問い合わせる。このメソッドは IMediaSeeking::CheckCapabilities メソッドを実装する。

構文

  HRESULT CheckCapabilities(
    DWORD *pCapabilities
);

パラメータ

pCapabilities

1 つまたは複数の AM_SEEKING_SEEKING_CAPABILITIES 属性の、ビットごとの組み合わせへのポインタ。

戻り値

次のいずれかの HRESULT 値を返す。

説明
S_FALSE pCapabilities のすべての能力を持ってはいない。
S_OK pCapabilities のすべての能力が存在する。
E_POINTER NULL ポインタ引数。

注意

実装されているように、このメソッドは CSourceSeeking::m_dwSeekingCaps メンバ変数に対する *pCapabilities の値をチェックする。しかし、IMediaSeeking::CheckCapabilities メソッドで説明しているように、このメソッドは *pCapabilitiesm_dwSeekingCaps と等しく設定しない。また、指定された能力のいずれも存在しない場合、このメソッドは E_FAIL を返さない。次に示すのは、より完全な実装である。

STDMETHODIMP CheckCapabilities(DWORD *pCapabilities)
{
    CheckPointer(pCapabilities, E_POINTER);
    DWORD dwCaps;
    HRESULT hr = GetCapabilities(&dwCaps);
    if (SUCCEEDED(hr))
    {
        dwCaps &= *pCapabilities;
        if (dwCaps)
        {
            hr =  (dwCaps == *pCapabilities ? S_OK : S_FALSE );
        }
        else 
        {
            dwCaps = E_FAIL;
        }
        *pCapabilities = dwCaps;
    }
    else *pCapabilities = 0;
    return hr;
}

参照