2009-05-06 43 views
1

CoLoadLibrary()的說明表明它與LoadLibraryEx()幾乎相同 - 將DLL加載到進程中。 COM類創建函數 - CoCreateInstance()和CoGetClassObject() - 都將必要的DLL加載到過程中。什麼時候和爲什麼使用CoLoadLibrary?

那麼爲什麼CoLoadLibrary()首先需要它,應該如何使用?

回答

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的。

+0

當我需要調用它時,是否有任何場景? – sharptooth 2009-05-06 08:29:26

1

也許如果你正在編寫自己的regsvr32.exe?但JP的反彙編並不能真正支持我的猜測,因爲您可以改用LoadLibraryEx。也許在過去的日子裏,微軟計劃在某一天以不同於常規DLL(D-COM?)的方式加載COM DLL,所以這是確保兼容性的一種方式。

相關問題