COM接口实现者的文档

COM接口实现者的文档,com,documentation,winapi,interop,Com,Documentation,Winapi,Interop,我正在从一个C#应用程序进行一些COM互操作,但我似乎找不到这个问题的答案 我想知道在Win32文档中哪里可以找到创建COM接口的实现。例如,我知道(多亏了goodgle),IShellLinkW是由CLSID_ShellLink标识的类实现的,IObjectArray是由CLSID_EnumerableObjectCollection实现的,等等 但是我怎么知道呢?我已经安装了Windows SDK(最新)版本,但我似乎不知道应该如何根据文档中的信息来解决这个问题?你为什么需要知道?导入实用程

我正在从一个C#应用程序进行一些COM互操作,但我似乎找不到这个问题的答案

我想知道在Win32文档中哪里可以找到创建COM接口的实现。例如,我知道(多亏了goodgle),IShellLinkW是由CLSID_ShellLink标识的类实现的,IObjectArray是由CLSID_EnumerableObjectCollection实现的,等等


但是我怎么知道呢?我已经安装了Windows SDK(最新)版本,但我似乎不知道应该如何根据文档中的信息来解决这个问题?

你为什么需要知道?导入实用程序(如tlbimp.exe)正在从exe或dll类型信息中找出必要的详细信息,并为您创建涵盖这些信息的包装器


查看TlbImp示例:

大多数标准COM对象IID和CLSID都列在uuid.lib中,包含在Windows SDK中。所以你可以编写一个简单的应用程序来打印它们


此外,您还可以打开regedit,转到HKCR\Interface并在那里分析记录。

我认为如果不加载系统中的每个COM对象并要求它提供其拥有的类列表以及它们实现的接口,您就不可能实现所需的功能。据我所知,该信息未存储在注册表中(存储所有外部COM信息的位置)


如果你能给出一个具体的例子,说明你正在努力实现的目标,那么这可能是另一种方法。如果您只是想知道特定类或.dll实现了哪些接口,您可以使用查看器来实现,例如

我正在进行一些手动互操作声明,但我最想知道的是,因为我想知道在幕后是如何工作的。。所以问题依然存在。。以给定的com接口为例,我如何知道实现它们的concreate类,从而知道要创建什么..为com启用的PE映像中有一个描述支持的CLSIID和IID的资源(TypeLib)。像regsrv这样的工具可以在注册表中添加necessray信息,像TlbImp这样的工具可以使用它来创建包装库或托管dll。安装程序也在数据库中包含这些信息(见),并将必要的信息添加到注册表中。让我们获得整个托管互操作场景,它与问题无关(它只是一些背景),我知道IDL文件、类型化、导入工具等,我将如何作为一个新的有抱负的C++开发人员,知道具体的课程吗?假设我阅读了文档,看到了IShellLinkW界面,然后说“嗯,coool,我想使用它!”,那么我怎么知道如何创建CLSID_ShellLink的实例呢?或者更模糊,从IObjectArray/IObjectCollectionon->CLSID\u EnumerableObjectCollection?它必须在文档中的某个地方提到,但在哪里?:)感谢您阅读了OLE内部的
内部的OLE2
基本COM
。因为Microsoft刚刚决定不自己编写文档?;)