Partager via


IMediaControl ::GetState, méthode (control.h)

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Elle a été remplacée par MediaPlayer, IMFMediaEngine et Capture audio/vidéo dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Si possible, Microsoft recommande vivement d’utiliser MediaPlayer, IMFMediaEngine et Capture audio/vidéo dans Media Foundation pour le nouveau code, plutôt que DirectShow. Microsoft recommande, si possible, la réécriture du code existant qui utilise les API héritées pour être à jour avec les nouvelles API.]

La GetState méthode récupère l’état du graphique de filtre : suspendu, en cours d’exécution ou arrêté.

Les transitions d’état ne sont pas nécessairement synchrones. Par conséquent, lorsque vous appelez cette méthode, le graphique de filtre peut être en transition vers un nouvel état. Dans ce cas, la méthode se bloque jusqu’à ce que la transition se termine ou jusqu’à ce que le délai d’attente spécifié s’écoule.

Syntaxe

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

Paramètres

[in] msTimeout

Durée du délai d’attente, en millisecondes ou INFINITE pour spécifier un délai d’attente infini.

[out] pfs

Reçoit un membre de l’énumération FILTER_STATE .

Valeur retournée

Retourne une valeur HRESULT . Les valeurs possibles sont les suivantes.

Code de retour Descriptif
S_OK
Opération réussie.
VFW_S_STATE_INTERMEDIATE
Le graphique de filtre est toujours en transition vers l’état indiqué.
VFW_S_CANT_CUE
Le graphique de filtre est suspendu, mais ne peut pas mettre en avant les données.
E_FAIL
Échec.

Remarques

Les applications peuvent utiliser cette méthode pour déterminer si la lecture a démarré après un appel à IMediaControl ::Run. En règle générale, les applications doivent avoir leur propre mécanisme pour le suivi de l’état dans lequel ils ont placé le graphique de filtre. Les applications utilisent généralement l’état actuel pour déterminer quels contrôles d’interface utilisateur sont activés ou désactivés. Par exemple, une fois que le graphique passe à l’état en cours d’exécution, l’application peut désactiver un bouton « Lire » et activer les boutons « Arrêter » et « Suspendre ».

Si le graphique de filtre est en transition vers un nouvel état, l’état retourné est le nouvel état, et non l’état précédent.

Cette méthode retourne une erreur s’il existe un appel sur un autre thread pour modifier l’état pendant que cette méthode est bloquée.

Évitez de spécifier un délai d’attente d’INFINITE, car les threads ne peuvent pas traiter les messages en attendant GetState. Si vous appelez GetState à partir du thread qui traite les messages Windows, spécifiez de petits temps d’attente sur l’appel afin de rester réactif à l’entrée utilisateur. Cela est particulièrement important lorsque la source est en streaming sur un réseau ou à partir d’Internet, car les transitions d’état dans ces environnements peuvent prendre beaucoup plus de temps.

Énumération FILTER_STATE . Vous pouvez convertir la variable comme suit :


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

Pour plus d’informations sur les états de graphique de filtre, consultez États de filtre.

Spécifications

Requirement Valeur
Client minimum requis Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
plateforme cible Fenêtres
Header control.h (include Dshow.h)
Library Strmiids.lib

Voir aussi

Codes d’erreur et de réussite

IMediaControl, interface