Нужен ли уникальный идентификатор класса для каждого экземпляра фильтра DirectShow, если фильтр содержит постоянные локальные данные? - PullRequest
0 голосов
/ 01 ноября 2011

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

Должен ли я создавать уникальный идентификатор класса (GUID) для каждого экземпляра создаваемого фильтра или безопасно использовать один и тот же идентификатор класса для всех созданных экземпляров? Я обеспокоен этим, потому что каждый экземпляр фильтра создает локальный объект хранения данных для хранения данных, поставленных в очередь для фильтра. Локальный объект хранения данных записывается другим кодом внутри хост-приложения, таким образом, помещая данные в граф фильтра через мой фильтр push-кода.

Мне сейчас недостаточно о DirectShow, чтобы знать, как осуществляется поиск указателей на методы, чтобы узнать, безопасен ли мой дизайн. Когда я добавляю экземпляр фильтра непосредственно в график, сохраняет ли DirectShow интерфейсные методы, которые будет вызывать график фильтра по ссылке на объект или по идентификатору класса? Если это первое, тогда все будет хорошо, но если второе, то это может быть проблемой, если один и тот же экземпляр получает все вызовы метода. Кто-нибудь знает ответ на этот вопрос дизайна?

1 Ответ

2 голосов
/ 01 ноября 2011

Идентификатор класса специфичен для класса, а не для экземпляра класса.Ваш класс фильтра должен иметь свой собственный уникальный идентификатор, и все экземпляры класса будут совместно использовать его во время выполнения.Если вы копируете код из другого проекта, вам необходимо убедиться, что вы заменили все существующие идентификаторы CLSID, IID, LIBID на новые сгенерированные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...