CBaseFilter.GetState 方法

[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayerIMFMediaEngine音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

方法 GetState 检索筛选器的状态 (运行、停止或暂停) 。 此方法实现 IMediaFilter::GetState 方法。

语法

HRESULT GetState(
   DWORD        dwMilliSecsTimeout,
   FILTER_STATE *State
);

参数

dwMilliSecsTimeout

超时间隔(以毫秒为单位)。

State

指向一个变量的指针,该变量接收 FILTER_STATE 枚举类型的成员,指示筛选器的状态。

返回值

返回S_OK或E_POINTER。

备注

在基类中,所有状态转换都是同步的, dwMilliSecsTimeout 参数将被忽略。 如果派生类执行异步状态转换,则它应重写此方法以在状态转换期间等待,超时为 dwMilliSecsTimeout 毫秒。

如果筛选器在暂停时未传递数据,请重写 GetState 方法以在筛选器暂停时返回值VFW_S_CANT_CUE, (请参阅) 传送示例 。 例如:

CMyFilter::GetState(DWORD dw, FILTER_STATE *pState)
{
    CheckPointer(pState, E_POINTER);
    *pState = m_State;
    if (m_State == State_Paused)
        return VFW_S_CANT_CUE;
    else
        return S_OK;
}

要求

要求
标头
Amfilter.h (包括 Streams.h)

Strmbase.lib (零售版本) ;
Strmbasd.lib (调试生成)

另请参阅

CBaseFilter 类