共用方式為


CBaseFilter::GetState

 
Microsoft DirectShow 9.0

CBaseFilter::GetState

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

**  Header:** Declared in Amfilter.h; include Streams.h.

**  Library:** Use Strmbase.lib (retail builds) or Strmbasd.lib (debug builds).

See Also