CoLoadLibrary()的描述说它与LoadLibraryEx()几乎完全相同 - 将DLL加载到进程中。 COM类创建函数 - CoCreateInstance()和CoGetClassObject() - 都会将必要的DLL加载到进程中。

那么为什么首先需要CoLoadLibrary()以及如何使用它?

有帮助吗?

解决方案

看看代码:

mov     edi,edi
push    ebp
mov     ebp,esp
push    8
push    0
push    dword ptr [ebp+8]
call    dword ptr [ole32!_imp__LoadLibraryExW (71eb1214)]
pop     ebp
ret     8

所以它只是打电话:

LoadLibraryEx( FileName, NULL, LOAD_WITH_ALTERED_SEARCH_PATH ).

据推测,该例程仅用于向后兼容 - 它可能源于Win16。

其他提示

也许你在编写自己的regsvr32.exe?但JP的反汇编并不能真正支持我的猜测,因为你可以只使用LoadLibraryEx。也许在过去的日子里,微软计划在某天使用与常规DLL(D-COM?)不同的方式加载COM DLL,因此这是一种确保未来兼容性的方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top