Oppure

Loading
03/08/11 18:05
giulioscatto
Buonasera,
ho scritto una piccola libreria DLL che non si comporta come mi aspetto.

Questo è il main (che immagino venga eseguito ogni volta che si carichi in memoria la libreria da programma esterno)
HINSTANCE _hInstance = NULL;

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
    switch (fdwReason)
    {
        case DLL_PROCESS_ATTACH:
            _hInstance = hinstDLL;

            if (_hInstance == NULL) return NULL;
			break;
     ....
 


Ho scritto un altro programma che me la carica con LoadLibrary ma, dopo qualche indagine (che parolona), ho scoperto che _hInstance è ancora NULL.
Tutto questo mi fa pensare che DllMain non venga eseguita, oppure che il parametro hinstDLL sia veramente NULL al momento della 'caricata'.
Altro motivo potrebbe essere che fdwReason non sia uguale a DLL_PROCESS_ATTACH ma questo significherebbe che la libreria sia già in memoria (da MSDN: "If the specified module is a DLL that is not already loaded for the calling process, the system calls the DLL's DllMain function with the DLL_PROCESS_ATTACH value";) potrebbe essere il mio caso?

Vi ringrazio per le delucidazioni.
Giulio


Ultima modifica effettuata da giulioscatto 03/08/11 18:08
aaa
03/08/11 18:12
comina8
aaa
03/08/11 19:56
nessuno
Sposta questa linea

_hInstance = hinstDLL;

poco prima dello switch per provare ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.