¿Cuándo y por qué usar CoLoadLibrary?
-
06-07-2019 - |
Pregunta
La descripción de CoLoadLibrary () dice que hace más o menos lo mismo que LoadLibraryEx (): carga una DLL en el proceso. Funciones de creación de clases COM: CoCreateInstance () y CoGetClassObject (), ambas también cargan la DLL necesaria en el proceso.
Entonces, ¿por qué se necesita CoLoadLibrary () en primer lugar y cómo se debe usar?
Solución
Echa un vistazo al código:
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
Entonces solo llama:
LoadLibraryEx( FileName, NULL, LOAD_WITH_ALTERED_SEARCH_PATH ).
Presumiblemente, la rutina simplemente existe para la compatibilidad con versiones anteriores, probablemente tenga sus raíces en Win16.
Otros consejos
¿Quizás si estuviera escribiendo su propio regsvr32.exe? Pero el desmontaje de JP realmente no es compatible con mi suposición, porque en su lugar podría usar LoadLibraryEx. Tal vez en los viejos tiempos, Microsoft planeaba que las DLL COM algún día se cargaran de una manera diferente a las DLL normales (¿D-COM?), Así que esta era una forma de garantizar la compatibilidad futura .