Share via


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

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

La Run méthode exécute tous les filtres dans le graphe de filtres. Pendant l’exécution du graphe, les données se déplacent dans le graphe et sont rendues.

Syntaxe

HRESULT Run();

Valeur renvoyée

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

Code de retour Description
S_FALSE
Le graphe se prépare à s’exécuter, mais certains filtres n’ont pas terminé la transition vers un état d’exécution.
S_OK
Tous les filtres du graphique ont terminé la transition vers un état en cours d’exécution.

Notes

Si le graphe de filtre est arrêté, cette méthode interrompt le graphe avant de l’exécuter. Si le graphique est déjà en cours d’exécution, la méthode retourne S_OK mais n’a aucun effet.

Le graphique s’exécute jusqu’à ce que l’application appelle la méthode IMediaControl::P ause ou IMediaControl::Stop . Lorsque la lecture atteint la fin du flux, le graphe continue de s’exécuter, mais les filtres ne diffusent plus de données. À ce stade, l’application peut suspendre ou arrêter le graphe. Pour plus d’informations sur l’événement de fin de flux, consultez IMediaControl::P ause et EC_COMPLETE.

Cette méthode ne cherche pas au début du flux. Par conséquent, si vous exécutez le graphique, le suspendez, puis le réexécutez, la lecture reprend à partir de la position suspendue. Si vous exécutez le graphique une fois qu’il a atteint la fin du flux, rien n’est rendu. Pour rechercher le graphique, utilisez l’interface IMediaSeeking .

Si la méthode retourne S_FALSE, cela signifie que la méthode retournée avant que tous les filtres soient passés à un état en cours d’exécution. Les filtres terminent la transition après le retour de la méthode. Si vous le souhaitez, vous pouvez attendre la fin de la transition en appelant la méthode IMediaControl::GetState avec une valeur de délai d’expiration. Cependant, cette condition n'est pas requise.

Si la méthode Run retourne un code d’erreur, cela signifie qu’un ou plusieurs filtres n’ont pas pu s’exécuter. Toutefois, certains filtres peuvent être en cours d’exécution. Dans un graphique multistream, des flux entiers peuvent être lues avec succès. En règle générale, l’application détruit le graphique et signale une erreur dans ce cas.

Configuration requise

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête control.h (include Dshow.h)
Bibliothèque Strmiids.lib

Voir aussi

Codes d’erreur et de réussite

IMediaControl Interface