1

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

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

4

2 回答 2

5

看一下代码:

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。

于 2009-05-06T08:22:48.053 回答
1

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

于 2009-05-06T13:51:36.373 回答