Как реализовать IUnknown
[Функция, связанная с этой страницей, DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngineи Audio/Video Capture в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код MediaPlayer, IMFMediaEngine и аудио-видеозахват в Media Foundation вместо DirectShowпо возможности. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]
Microsoft DirectShow основан на объектной модели компонента (COM). При написании собственного фильтра необходимо реализовать его как COM-объект. Базовые классы DirectShow предоставляют платформу для этого. Использование базовых классов не требуется, но может упростить процесс разработки. В этой статье описываются некоторые внутренние сведения о COM-объектах и их реализации в базовых классах DirectShow.
В этой статье предполагается, что вы знаете, как программировать клиентские приложения COM, иными словами, вы понимаете методы в IUnknown, но не предполагает, что какой-либо предыдущий опыт разработки объектов COM. DirectShow обрабатывает многие детали разработки COM-объекта. Если у вас есть опыт разработки COM-объектов, ознакомьтесь с разделом using CUnknown, который описывает базовый класс CUnknown.
COM — это спецификация, а не реализация. Он определяет правила, которые должен следовать компоненту; Введение этих правил в силу остается для разработчика. В DirectShow все объекты являются производными от набора базовых классов C++. Конструкторы и методы базового класса выполняют большую часть работы по администрированию COM, например, обеспечение согласованности счетчика ссылок. Создавая ваш фильтр на основе базового класса, вы наследуете функции и возможности класса. Чтобы эффективно использовать базовые классы, необходимо общее представление о том, как они реализуют спецификацию COM.
В этой статье содержатся следующие разделы.
- как работает IUnknown
- Использование CUnknown
Связанные разделы