Condividi tramite


Metodo CBaseFilter.GetState

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Il GetState metodo recupera lo stato dei filtri (in esecuzione, arrestato o sospeso). Questo metodo implementa il metodo IMediaFilter::GetState .

Sintassi

HRESULT GetState(
   DWORD        dwMilliSecsTimeout,
   FILTER_STATE *State
);

Parametri

dwMilliSecsTimeout

Intervallo di timeout, espresso in millisecondi.

State

Puntatore a una variabile che riceve un membro del tipo enumerato FILTER_STATE , che indica lo stato del filtro.

Valore restituito

Restituisce S_OK o E_POINTER.

Commenti

Nella classe base tutte le transizioni di stato sono sincrone e il parametro dwMilliSeciSecsTimeout viene ignorato. Se una classe derivata esegue transizioni di stato asincrone, deve eseguire l'override di questo metodo per attendere durante le transizioni di stato, con un timeout di dwMilliSeciSecsTimeout millisecondi.

Se il filtro non recapita i dati durante la sospensione, eseguire l'override del GetState metodo per restituire il valore VFW_S_CANT_CUE quando il filtro viene sospeso (vedere Distribuzione di esempi). Ad esempio:

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;
}

Requisiti

Requisito Valore
Intestazione
Amfilter.h (include Streams.h)
Libreria
Strmbase.lib (build retail);
Strmbasd.lib (build di debug)

Vedi anche

Classe CBaseFilter