Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
[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 |
|---|---|
|
Opération réussie. |
|
Le graphique de filtre est toujours en transition vers l’état indiqué. |
|
Le graphique de filtre est suspendu, mais ne peut pas mettre en avant les données. |
|
É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 |