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 |
|
Libreria |
|