0

我编写了一个推送源过滤器,我在我的 Delphi 6 应用程序中私下使用它。该应用程序使用 DSPACK DirectShow 组件库。私下我的意思是我只是将过滤器的实例直接添加到我的过滤器图表中,而不是驻留在外部 DLL(.ax文件)中的过滤器。

我应该为我创建的每个过滤器实例创建一个唯一的类 ID (GUID),还是在创建的所有实例之间使用相同的类 ID 是否安全?我担心这一点,因为过滤器的每个实例都会创建一个本地数据存储对象,用于保存为过滤器排队的数据。本地数据存储对象由主机应用程序中的其他代码写入,从而通过我的推送源过滤器将数据推送到过滤器图中。

我现在对 DirectShow 还不够了解如何进行方法指针查找以了解我的设计是否安全。当我直接将过滤器的实例添加到图形时,DirectShow 是否存储过滤器图形将通过对象引用或类 ID 调用的接口方法指针?如果是前者,那么一切都会好起来的,但如果是后者,那么如果同一个实例获得所有方法调用,那可能是个问题。有人知道这个设计问题的答案吗?

4

1 回答 1

2

类标识符特定于类,而不是类实例。您的过滤器类应该有自己的唯一标识符,并且该类的所有实例都将在运行时共享它。如果您从另一个项目复制代码,您需要确保将所有现有的 CLSID、IID、LIBID 标识符替换为新生成的标识符。

于 2011-11-01T19:26:28.533 回答