shared data in dll



  • hola leute

    weiß jemand wie ich eine variable fuer jede instanz einer dll erstellen kann ?
    hab es nach dem beispiel von http://bdn.borland.com/article/0,1410,20008,00.html
    probiert. aber da bekomme ich immer den fehler das es die #pragma optionen -zR und -zT nicht gibt. kennt sich da jemand aus ? oder gibt es sonst noch einen trick wie man so ne art globale variable erstellen kann ?

    Meep Meep



  • mit shared memmry

    HINSTANCE hinstglob;
    static LPVOID lpvMem=NULL;
    
    int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
    {
    hinstglob=hinst;
    HANDLE hMapObject=NULL;
    BOOL fInit,fIgnore;
    switch(reason)
       {
    	case DLL_PROCESS_ATTACH:
    		hMapObject = CreateFileMapping((HANDLE) 0xFFFFFFFF,NULL,PAGE_READWRITE,0,4096,"dllmemfilemap");
    		if(hMapObject==NULL)
    			return FALSE;
    		fInit=(GetLastError()!=ERROR_ALREADY_EXISTS);
    		lpvMem=MapViewOfFile(hMapObject,FILE_MAP_WRITE,0,0,0);
    		if(lpvMem==NULL)
    			return FALSE;
    		if(fInit)
    		memset(lpvMem,0,4096);
    	break;
    
    	case DLL_THREAD_ATTACH:
    	break;
    
    	case DLL_THREAD_DETACH:
    	break;
    
    	case DLL_PROCESS_DETACH:
    		fIgnore=UnmapViewOfFile(lpvMem);
    		fIgnore=CloseHandle(hMapObject);
    	break;
    	}
    return 1;
    }
    //---------------------------------------------------------------------------
    

    LPVOID lpvMem=NULL;
    ist dann der Bereich (hier 4096 Bytes) den du gemeinsam nutzen kannst


Anmelden zum Antworten