何时以及为何使用CoLoadLibrary?

CoLoadLibrary()的说明与LoadLibraryEx()几乎相同 – 将DLL加载到进程中。 COM类创build函数 – 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,所以这是确保未来兼容性的一种方式。