Я написал фильтр с исходным кодом, который я использую в частном порядке в своем приложении Delphi 6. Приложение использует библиотеку компонентов DSPACK DirectShow. Под частной собственностью я подразумеваю, что я просто добавляю экземпляры фильтра непосредственно в мой график фильтра вместо фильтра, находящегося во внешней DLL ( .ax файл).
Должен ли я создавать уникальный идентификатор класса (GUID) для каждого экземпляра создаваемого фильтра или безопасно использовать один и тот же идентификатор класса для всех созданных экземпляров? Я обеспокоен этим, потому что каждый экземпляр фильтра создает локальный объект хранения данных для хранения данных, поставленных в очередь для фильтра. Локальный объект хранения данных записывается другим кодом внутри хост-приложения, таким образом, помещая данные в граф фильтра через мой фильтр push-кода.
Мне сейчас недостаточно о DirectShow, чтобы знать, как осуществляется поиск указателей на методы, чтобы узнать, безопасен ли мой дизайн. Когда я добавляю экземпляр фильтра непосредственно в график, сохраняет ли DirectShow интерфейсные методы, которые будет вызывать график фильтра по ссылке на объект или по идентификатору класса? Если это первое, тогда все будет хорошо, но если второе, то это может быть проблемой, если один и тот же экземпляр получает все вызовы метода. Кто-нибудь знает ответ на этот вопрос дизайна?