Вопрос

Описание 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? Но разборка JP не поддерживает мои предположения, потому что вы могли бы просто использовать LoadLibraryEx вместо этого. Возможно, в прежние времена Microsoft планировала загружать COM-библиотеки COM не так, как обычные DLL (D-COM?), Поэтому это был способ обеспечения будущей совместимости.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top