Domanda

La descrizione di CoLoadLibrary () dice che fa praticamente lo stesso di LoadLibraryEx () - carica una DLL nel processo. Le funzioni di creazione delle classi COM - CoCreateInstance () e CoGetClassObject () - caricano entrambe anche la DLL necessaria nel processo.

Allora perché è necessario CoLoadLibrary () in primo luogo e come dovrebbe essere usato?

È stato utile?

Soluzione

Dai un'occhiata al codice:

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

Quindi chiama semplicemente:

LoadLibraryEx( FileName, NULL, LOAD_WITH_ALTERED_SEARCH_PATH ).

Presumibilmente, la routine esiste solo per compatibilità con le versioni precedenti - probabilmente ha le sue radici in Win16.

Altri suggerimenti

Forse se stessi scrivendo il tuo regsvr32.exe? Ma il disassemblaggio di JP non supporta davvero la mia ipotesi, perché potresti usare LoadLibraryEx invece. Forse ai vecchi tempi, Microsoft pianificava che un giorno le DLL COM sarebbero state caricate in modo diverso rispetto alle normali DLL (D-COM?), Quindi questo era un modo per garantire la futura compatibilità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top