Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído pelo MediaPlayer, IMFMediaEngine e Captura de áudio/vídeo no Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use o MediaPlayer, o IMFMediaEngine e a Captura de áudio/vídeo no Media Foundation em vez do 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.
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 .
Valor de retorno
Retorna um valor HRESULT . Os valores possíveis incluem o seguinte.
| Código de retorno | Description |
|---|---|
|
Ê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. |
|
Fracasso. |
Observações
Os aplicativos podem usar esse método para determinar se a reprodução foi iniciada após uma chamada para IMediaControl::Run. Em geral, os aplicativos devem ter seu próprio mecanismo para acompanhar 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 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 de INFINITE, pois os threads não podem processar mensagens enquanto aguardam.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, pois 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.
Requirements
| Requirement | Value |
|---|---|
| Cliente mínimo suportado | Windows 2000 Professional [somente aplicativos da área de trabalho] |
| Servidor mínimo compatível | Windows 2000 Server [somente aplicativos da área de trabalho] |
| da Plataforma de Destino |
Windows |
| Header | control.h (inclua Dshow.h) |
| Library | Strmiids.lib |