需要什么COM支持才能使自定义DirectShow筛选器属性页用于运行对象表中的远程筛选器

需要什么COM支持才能使自定义DirectShow筛选器属性页用于运行对象表中的远程筛选器,com,directshow,Com,Directshow,我有一些带有自定义属性页的自定义DirectShow筛选器。当过滤器与属性页处于相同的过程中时,这些功能可以正常工作 但是,当我使用graph Edit的“连接到远程图形”功能时,属性页不起作用。 当属性页为远程筛选器上的my private COM接口执行查询接口时,查询接口将失败。Microsoft过滤器(如EVR视频渲染器)的属性页工作正常,因此必须能够使用 这大概是因为我的过滤器的私有接口只在“进程内”工作,我需要添加额外的COM支持,以便这些接口能够与“进程外”过滤器一起工作。在COM

我有一些带有自定义属性页的自定义DirectShow筛选器。当过滤器与属性页处于相同的过程中时,这些功能可以正常工作

但是,当我使用graph Edit的“连接到远程图形”功能时,属性页不起作用。 当属性页为远程筛选器上的my private COM接口执行查询接口时,查询接口将失败。Microsoft过滤器(如EVR视频渲染器)的属性页工作正常,因此必须能够使用

这大概是因为我的过滤器的私有接口只在“进程内”工作,我需要添加额外的COM支持,以便这些接口能够与“进程外”过滤器一起工作。在COM术语中,我需要做什么才能实现这一点


DirectShow基类是否支持这些COM功能?我能否可靠地检测到筛选器何时耗尽进程并拒绝优雅地显示属性页?

一个选项是构建代理/存根对。但另一种更简单的方法是使您的私有接口自动化兼容(派生自
IDispatch
,类型构造函数适用),并将其放入类型库,该库将附加到DLL,并以通常的方式注册。将自动为此类接口提供代理/存根对,无需麻烦


DirectShow基类不提供对此的内置支持。Windows提供的Stock DirectShow筛选器可能与通过进程边界传递接口不兼容,我猜这取决于多年前负责各自开发的团队。例如,视频渲染器具有可通过远程连接的接口。相反,音频渲染器的接口中没有这种功能,它们只是使试图建立这种连接的进程之一崩溃(客户端进程,如果我的内存正常的话).

进一步调试-远程图形过滤器上的查询接口适用于标准Microsoft接口IsSpecifyPropertyPage,因此问题似乎出在我自己的私有COM接口上。您需要为COM接口构建并注册代理/存根,以便跨进程边界封送。谢谢您的回答。这一切都有道理。有什么原因我不能将MIDL生成的代理/存根支持代码构建到实现COM服务器的同一个DLL中吗?没有什么好的原因,只是如果进程只需要代理,您并不总是希望加载整个DLL。单独构建它是样板,最不可能导致构建问题。