Método IMediaControl::GetState (control.h)
[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]
O GetState
método recupera o estado do grafo de filtro — pausado, em execução ou interrompido.
As transições de estado não são necessariamente síncronas. Portanto, quando você chama esse método, o grafo de filtro pode estar em transição para um novo estado. Nesse caso, o método bloqueia até que a transição seja concluída ou até que o tempo limite especificado se especifique.
Sintaxe
HRESULT GetState(
[in] LONG msTimeout,
[out] OAFilterState *pfs
);
Parâmetros
[in] msTimeout
Duração do tempo limite, em milissegundos ou INFINITE para especificar um tempo limite infinito.
[out] pfs
Recebe um membro da enumeração FILTER_STATE .
Retornar valor
Retorna um valor HRESULT . Os possíveis valores incluem os seguintes.
Código de retorno | Descrição |
---|---|
|
Êxito. |
|
O grafo de filtro ainda está em transição para o estado indicado. |
|
O grafo de filtro está pausado, mas não pode sinalizar dados. |
|
Falha. |
Comentários
Os aplicativos podem usar esse método para determinar se a reprodução foi iniciada após uma chamada para IMediaControl::Run. Geralmente, os aplicativos devem ter seu próprio mecanismo para rastrear em qual estado colocaram o grafo de filtro. Os aplicativos normalmente usam o estado atual para determinar quais controles de interface do usuário estão habilitados ou desabilitados. Por exemplo, depois que o grafo entrar no estado em execução, o aplicativo poderá desabilitar um botão "Reproduzir" e habilitar os botões "Parar" e "Pausar".
Se o grafo de filtro estiver em uma transição para um novo estado, o estado retornado será o novo estado, não o estado anterior.
Esse método retornará um erro se houver uma chamada em outro thread para alterar o estado enquanto esse método estiver bloqueado.
Evite especificar um tempo limite do INFINITE, pois os threads não podem processar mensagens enquanto aguardam no GetState
. Se você chamar GetState
do thread que processa mensagens do Windows, especifique pequenos tempos de espera na chamada para permanecer responsivo à entrada do usuário. Isso é especialmente importante quando a origem está transmitindo por uma rede ou pela Internet porque as transições de estado nesses ambientes podem levar muito mais tempo para serem concluídas.
A enumeração FILTER_STATE . Você pode converter a variável da seguinte maneira:
FILTER_STATE fs;
hr = pControl->GetState(msTimeOut, (OAFilterState*)&fs);
Para obter mais informações sobre estados de grafo de filtro, consulte Estados de filtro.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | control.h (inclua Dshow.h) |
Biblioteca | Strmiids.lib |