Метод CBaseFilter.GetState
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]
Метод GetState
извлекает состояние фильтров (выполняется, остановлено или приостановлено). Этот метод реализует метод IMediaFilter::GetState .
Синтаксис
HRESULT GetState(
DWORD dwMilliSecsTimeout,
FILTER_STATE *State
);
Параметры
-
dwMilliSecsTimeout
-
Интервал времени ожидания в миллисекундах.
-
Состояние
-
Указатель на переменную, которая получает член перечисленного типа 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;
}
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|