Когда и зачем использовать CoLoadLibrary? - PullRequest
1 голос
/ 06 мая 2009

Описание CoLoadLibrary () говорит, что он делает почти то же самое, что LoadLibraryEx () - загружает DLL в процесс. Функции создания COM-классов - CoCreateInstance () и CoGetClassObject () - оба загружают необходимую DLL в процесс тоже.

Тогда зачем вообще нужен CoLoadLibrary () и как его использовать?

Ответы [ 2 ]

4 голосов
/ 06 мая 2009

Посмотрите на код:

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 голос
/ 06 мая 2009

Возможно, если вы писали свой собственный regsvr32.exe? Но разборка JP не поддерживает мои предположения, потому что вы могли бы просто использовать LoadLibraryEx вместо этого. Может быть, в былые времена Microsoft планировала когда-нибудь загружать COM-библиотеки COM не так, как обычные DLL (D-COM?), Так что это был способ обеспечить будущую совместимость.

...