IFileOperation 在哪里实现(以及如何验证这一点)?
我试图找出 Windows 7 中 IFileOperation
的实现位置。 据我了解 MSDN 页面 它位于 shell32.dll 中。
因此,我使用 DLL 导出查看器(来自 NirSoft)检查了 shell32.dll 中的所有 COM 对象,而 IFileOperation 不是其中之一。
我在注册表中搜索了 CLSID_FileOperation
{3ad05575-8857-4850-9277-11b85bdb8e09},我发现(据我所知)它位于 shell32.dll 中。
但是如果我找不到使用 DLL 导出的 COM 导出,那怎么可能呢?
I am trying to find out where IFileOperation
is implemented in Windows 7.
As far as I understand from the MSDN page it is in shell32.dll.
So, I checked all the COM objects in shell32.dll using a DLL export viewer (from NirSoft) and IFileOperation is not one of them.
I searched the registry for the CLSID_FileOperation
{3ad05575-8857-4850-9277-11b85bdb8e09} and I found (as far as I understand) that it is in shell32.dll.
But how can that be if I couldn't find that COM export using DLL export?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
DLL 不需要导出任何特殊内容来实现该接口。注册表告诉操作系统哪个 DLL 实现了该接口。当程序调用
CoCreateInstance
时,操作系统可以在注册表中查找给定的CLSID。然后,操作系统加载关联的 DLL 并调用其DllGetClassObject
函数来获取IClassFactory
对象。然后操作系统使用该接口来获取实现所请求接口的东西。A DLL doesn't need to export anything special to implement that interface. The registry tells the OS what DLL implements the interface. When a program calls
CoCreateInstance
, the OS can look up the given CLSID in the registry. The OS then loads the associated DLL and calls itsDllGetClassObject
function to get anIClassFactory
object. The OS then uses that interface to get something that implements the requested interface.