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?

¿Fue útil?

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 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top