c++ - IFileOperation 在哪里实现(以及如何验证这一点)?

标签 c++ winapi com windows-7

我正在尝试找出 Windows 7 中 IFileOperation 的实现位置。 据我了解the MSDN page它位于 shell32.dll 中。

因此,我使用 DLL 导出查看器(来自 NirSoft)检查了 shell32.dll 中的所有 COM 对象,而 IFileOperation 不是其中之一。

我在注册表中搜索了 CLSID_FileOperation {3ad05575-8857-4850-9277-11b85bdb8e09},我发现(据我所知)它位于 shell32.dll 中。

但是如果我找不到使用 DLL 导出的 COM 导出,那怎么可能呢?

最佳答案

DLL 不需要导出任何特殊内容来实现该接口(interface)。注册表告诉操作系统哪个 DLL 实现了该接口(interface)。当程序调用CoCreateInstance时,操作系统可以在注册表中查找给定的CLSID。然后,操作系统加载关联的 DLL 并调用其 DllGetClassObject 函数来获取 IClassFactory 对象。然后操作系统使用该接口(interface)来获取实现所请求接口(interface)的东西。

关于c++ - IFileOperation 在哪里实现(以及如何验证这一点)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5010620/

相关文章:

c# - 在后台线程中释放 COM 对象

c++ - 没有成员函数的类实例的默认返回

c++ - 如何在不使用Visual Studio的情况下用C++制作Win32应用程序?

.net - 真实世界 strtod();用于 WINAPI 文本框

winapi - Win32 API 失败

c# - 我想删除警告 : "Replace this with a lock against an object with strong-identity"

c++ - 如何使用 OpenSSL 进行 AES 解密

c++ - 如何调用具有结构的函数 (C++)

c++ - 仅消息窗口中的线程泵消息

php - fatal error : Class 'COM' not found PHP. Win7 - Apache - PHP