CBaseFilter.GetState method
[The feature associated with this page, DirectShow, is a legacy feature. It has been superseded by MediaPlayer, IMFMediaEngine, and Audio/Video Capture in Media Foundation. Those features have been optimized for Windows 10 and Windows 11. Microsoft strongly recommends that new code use MediaPlayer, IMFMediaEngine and Audio/Video Capture in Media Foundation instead of DirectShow, when possible. Microsoft suggests that existing code that uses the legacy APIs be rewritten to use the new APIs if possible.]
The GetState
method retrieves the filters's state (running, stopped, or paused). This method implements the IMediaFilter::GetState method.
Syntax
HRESULT GetState(
DWORD dwMilliSecsTimeout,
FILTER_STATE *State
);
Parameters
-
dwMilliSecsTimeout
-
Time-out interval, in milliseconds.
-
State
-
Pointer to a variable that receives a member of the FILTER_STATE enumerated type, indicating the filter's state.
Return value
Returns S_OK or E_POINTER.
Remarks
In the base class, all state transitions are synchronous and the dwMilliSecsTimeout parameter is ignored. If a derived class performs asynchronous state transitions, it should override this method to wait during state transitions, with a time-out of dwMilliSecsTimeout milliseconds.
If your filter does not deliver data while paused, override the GetState
method to return the value VFW_S_CANT_CUE when the filter is paused (see Delivering Samples). For example:
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;
}
Requirements
Requirement | Value |
---|---|
Header |
|
Library |
|