Question

La description de CoLoadLibrary () indique qu’elle a sensiblement le même effet que LoadLibraryEx () - charge une DLL dans le processus. Les fonctions de création de classes COM, CoCreateInstance () et CoGetClassObject (), chargent également la DLL nécessaire dans le processus.

Dans ce cas, pourquoi CoLoadLibrary () est-il nécessaire et comment doit-il être utilisé?

Était-ce utile?

La solution

Regardez le code:

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

Il suffit donc d'appeler:

LoadLibraryEx( FileName, NULL, LOAD_WITH_ALTERED_SEARCH_PATH ).

Il est probable que la routine existe uniquement pour des raisons de compatibilité ascendante - elle a probablement ses racines dans Win16.

Autres conseils

Peut-être si vous écriviez votre propre regsvr32.exe? Mais le désassemblage de JP ne supporte pas vraiment mon hypothèse, car vous pourriez simplement utiliser LoadLibraryEx à la place. Autrefois, Microsoft prévoyait peut-être que les DLL COM seraient chargées différemment des DLL normales (D-COM?). C’était donc un moyen de garantir la future compatibilité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top