Metodo IMediaControl::GetState (control.h)
[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine 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, FMMediaEngine e Audio/Video Capture in Media Foundation anziché 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 del grafico del filtro, sospeso, in esecuzione o arrestato.
Le transizioni di stato non sono necessariamente sincrone. Pertanto, quando si chiama questo metodo, il grafico del filtro potrebbe essere in transizione a un nuovo stato. In tal caso, il metodo blocca fino al completamento della transizione o fino al termine del timeout specificato.
Sintassi
HRESULT GetState(
[in] LONG msTimeout,
[out] OAFilterState *pfs
);
Parametri
[in] msTimeout
Durata del timeout, in millisecondi o INFINITE per specificare un timeout infinito.
[out] pfs
Riceve un membro dell'enumerazione FILTER_STATE .
Valore restituito
Restituisce un valore HRESULT . Di seguito sono indicati alcuni valori possibili.
Codice restituito | Descrizione |
---|---|
|
Operazione completata. |
|
Il grafico del filtro è ancora in transizione allo stato indicato. |
|
Il grafico del filtro viene sospeso, ma non può creare dati. |
|
Esito negativo. |
Commenti
Le applicazioni possono usare questo metodo per determinare se la riproduzione è stata avviata dopo una chiamata a IMediaControl::Run. In genere, le applicazioni devono avere il proprio meccanismo per tenere traccia dello stato in cui hanno inserito il grafico del filtro. Le applicazioni usano in genere lo stato corrente per determinare quali controlli dell'interfaccia utente sono abilitati o disabilitati. Ad esempio, una volta che il grafico entra nello stato in esecuzione, l'applicazione potrebbe disabilitare un pulsante "Play" e abilitare i pulsanti "Stop" e "Pause".
Se il grafico del filtro si trova in una transizione a un nuovo stato, lo stato restituito è il nuovo stato, non lo stato precedente.
Questo metodo restituisce un errore se è presente una chiamata su un altro thread per modificare lo stato mentre questo metodo è bloccato.
Evitare di specificare un timeout infinito, perché i thread non possono elaborare i messaggi durante l'attesa in GetState
. Se si chiama GetState
dal thread che elabora i messaggi di Windows, specificare tempi di attesa di piccole dimensioni nella chiamata per rimanere reattivi all'input utente. Ciò è particolarmente importante quando l'origine è in streaming su una rete o da Internet perché le transizioni di stato in questi ambienti possono richiedere molto più tempo per completare.
Enumerazione FILTER_STATE . È possibile eseguire il cast della variabile come indicato di seguito:
FILTER_STATE fs;
hr = pControl->GetState(msTimeOut, (OAFilterState*)&fs);
Per altre informazioni sugli stati del grafico di filtro, vedere Stati di filtro.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | control.h (includere Dshow.h) |
Libreria | Strmiids.lib |