CBaseFilter.GetState 方法
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 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;
}
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|