Compartir a través de


Método IMediaControl::GetState (control.h)

[La característica asociada a esta página, DirectShow es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine, y Captura de audio y vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código useMediaPlayer, IMFMediaEngine y Captura de audio y vídeo en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft recomienda reescribir el código actual que usa las API heredadas para usar las nuevas API si es posible.]

El GetState método recupera el estado del gráfico de filtro, en pausa, en ejecución o detenido.

Las transiciones de estado no son necesariamente sincrónicas. Por lo tanto, cuando se llama a este método, el gráfico de filtros podría estar en transición a un nuevo estado. En ese caso, el método se bloquea hasta que se complete la transición o hasta que transcurra el tiempo de espera especificado.

Syntax

HRESULT GetState(
  [in]  LONG          msTimeout,
  [out] OAFilterState *pfs
);

Parámetros

[in] msTimeout

Duración del tiempo de espera, en milisegundos, o INFINITE para especificar un tiempo de espera infinito.

[out] pfs

Recibe un miembro de la enumeración FILTER_STATE .

Valor devuelto

Devuelve un valor HRESULT . Entre los valores posibles se incluyen los siguientes.

Código de retorno Description
S_OK
Éxito.
VFW_S_STATE_INTERMEDIATE
El gráfico de filtros todavía está en transición al estado indicado.
VFW_S_CANT_CUE
El gráfico de filtros está en pausa, pero no puede indicar los datos.
E_FAIL
Fracaso.

Observaciones

Las aplicaciones pueden usar este método para determinar si la reproducción se ha iniciado después de una llamada a IMediaControl::Run. Por lo general, las aplicaciones deben tener su propio mecanismo para realizar el seguimiento del estado en el que han colocado el gráfico de filtro. Las aplicaciones suelen usar el estado actual para determinar qué controles de interfaz de usuario están habilitados o deshabilitados. Por ejemplo, una vez que el gráfico entra en estado de ejecución, la aplicación podría deshabilitar un botón "Reproducir" y habilitar los botones "Detener" y "Pausar".

Si el gráfico de filtros está en una transición a un nuevo estado, el estado devuelto es el nuevo, no el estado anterior.

Este método devuelve un error si hay una llamada en otro subproceso para cambiar el estado mientras este método está bloqueado.

Evite especificar un tiempo de espera de INFINITE, ya que los subprocesos no pueden procesar mensajes mientras esperan en GetState. Si llama desde el subproceso GetState que procesa mensajes de Windows, especifique tiempos de espera pequeños en la llamada para mantener la capacidad de respuesta a la entrada del usuario. Esto es especialmente importante cuando el origen se transmite a través de una red o desde Internet porque las transiciones de estado en estos entornos pueden tardar mucho más tiempo en completarse.

Enumeración FILTER_STATE . Puede convertir la variable de la siguiente manera:


FILTER_STATE fs;
hr = pControl->GetState(msTimeOut, (OAFilterState*)&fs);

Para obtener más información sobre los estados del gráfico de filtro, vea Estados de filtro.

Requisitos

Requirement Importancia
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo admitido Windows 2000 Server [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
Header control.h (include Dshow.h)
Library Strmiids.lib

Consulte también

Códigos de error y de éxito

IMediaControl (interfaz)