Comment implémenter IUnknown

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si 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.]

Microsoft DirectShow est basé sur le modèle COM (Component Object Model). Si vous écrivez votre propre filtre, vous devez l’implémenter en tant qu’objet COM. Les classes de base DirectShow fournissent une infrastructure à partir de laquelle effectuer cette opération. L’utilisation des classes de base n’est pas obligatoire, mais elle peut simplifier le processus de développement. Cet article décrit certains détails internes des objets COM et leur implémentation dans les classes de base DirectShow.

Cet article part du principe que vous savez comment programmer des applications clientes COM, en d’autres termes, que vous comprenez les méthodes dans IUnknown, mais ne suppose pas d’expérience préalable dans le développement d’objets COM. DirectShow gère la plupart des détails du développement d’un objet COM. Si vous avez de l’expérience dans le développement d’objets COM, vous devez lire la section Using CUnknown, qui décrit la classe de base CUnknown .

COM est une spécification, pas une implémentation. Il définit les règles qu’un composant doit suivre ; La mise en œuvre de ces règles est laissée au développeur. Dans DirectShow, tous les objets dérivent d’un ensemble de classes de base C++. Les constructeurs et méthodes de classe de base effectuent la majeure partie du travail de « comptabilité » COM, comme la conservation d’un nombre de références cohérent. En dérivant votre filtre d’une classe de base, vous héritez des fonctionnalités de la classe . Pour utiliser efficacement les classes de base, vous avez besoin d’une compréhension générale de la façon dont elles implémentent la spécification COM.

Cet article contient les rubriques suivantes.

DirectShow et COM