CoLoadLibrary()的描述说它与LoadLibraryEx()几乎完全相同 - 将DLL加载到进程中。 COM类创建函数 - CoCreateInstance()和CoGetClassObject() - 都会将必要的DLL加载到进程中。
那么为什么首先需要CoLoadLibrary()以及如何使用它?
答案 0 :(得分:4)
看看代码:
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。
答案 1 :(得分:1)
也许你在编写自己的regsvr32.exe?但JP的反汇编并不能真正支持我的猜测,因为你可以只使用LoadLibraryEx。也许在过去的日子里,微软计划在某天使用与常规DLL(D-COM?)不同的方式加载COM DLL,因此这是一种确保未来兼容性的方法。