CoLoadLibraryを使用するタイミングと理由
-
06-07-2019 - |
質問
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を書いていたのでしょうか?しかし、代わりにLoadLibraryExを使用することができるため、JPの逆アセンブリは私の推測を実際にはサポートしていません。昔は、MicrosoftはいつかCOM DLLを通常のDLL(D-COM?)とは異なる方法でロードすることを計画していたため、これは future 互換性を保証する方法でした。
所属していません StackOverflow