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 を作成している場合はどうでしょうか。しかし、代わりに LoadLibraryEx を使用することもできるため、JP の逆アセンブリは私の推測を実際にはサポートしていません。おそらく昔、Microsoft は COM DLL を通常の DLL とは異なる方法 (D-COM?) でロードすることを計画していたので、これは将来の互換性を確保する方法でした。

于 2009-05-06T13:51:36.373 に答える