无法找到UIRibbon在组件服务或OLEVIEW

问题描述 投票:0回答:1

我最近在探索如何在C使用COM +,并用一个简单的色带代码遇到。

代码:

HRESULT hr = CoCreateInstance(CLSID_UIRibbonFramework, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&g_pFramework));

因此,它是基于COM,对不对?应该有关于服务组件此组件的一些信息,但我不能无论如何找到它。

我的问题是Windows如何设法找到相应的头文件(UIRibbon.h)提供CLSID的COM组件?

c++ com ribbon com+ oleview
1个回答
0
投票

Windows如何设法找到相应的CLSID的COM组件

CoCreateInstance

CoCreateInstance函数提供通过连接到与指定CLSID关联的类对象,创建一个未初始化的情况下,和释放类对象的便利快捷方式。因此,它封装了以下功能:CoGetClassObject ...

CoGetClassObject

到CoGetClassObject调用创建,初始化,并给出了呼叫者访问(通过指针与RIID参数指定的界面)对类对象。类对象是您在rclsid参数指定CLSID相关联的一个。的系统如何定位相关联的代码和一个计算机内的细节数据是透明的呼叫者,因为是未已经加载任何代码的动态加载。

[...]

有两个地方找到一个类CLSID:(1)注册成立的协会的CLSID和文件后缀之间,并且,CLSID和文件签名来确定一个对象的类之间。 (2)当一个对象被保存到持久存储,其CLSID存储有其数据。

作为MSDN说查找是透明的呼叫者,而它嵌入多种来源:一些的CLSID可能是由服务器来明确注册,并优先用于查找,再有就是每个用户注册COM类,机宽注册表,“治疗作为”记录等。

据推测,最常见的情况如下。 COM服务器(应用程序或DLL)注册它与系统注册表的CLSID作为其安装的一部分。然后系统注册表持有根据HKEY_CLASSES_ROOT记录其持有特定CLSID以及如何找到与之相关的代码信息。然后CoCreateInstance和朋友关注一下这类信息是主叫方的请求,做魔术让来电者获得调用接口指针所请求的CLSID。

这是特别CLSID_UIRibbonFramework的情况下,在注册表中HKEY_CLASSES_ROOT\CLSID\{926749fa-2615-4987-8845-c33e65f2b957}它的相关信息。

© www.soinside.com 2019 - 2024. All rights reserved.