我正在尝试找出 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/