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