dlls
-
ich möchte eine dll in einen anderen prozess laden also hab ich keine header datei in diesem prozess
wie weiss ich die adressen der funktionen in dem process space dann ?
das ich aufrufen kann ?!
-
Wozu?
Wenn die DLL in einem anderen Prozessraum steht, daraus aber gar keine Funktion vom Prozess aufgerufen wird, da er sie nicht braucht, liegt sie dort doch nur sinnlos rum!
-
nein ich kann schon aufrufen ... mit DllMain();`!!
ich such einfach im prozess nach LoadLibrary(), mit nem disasm
und nenn die dll so oder ka ich nehm forcelib die macht das auchalso von dllmain kanni ch aufrufen nur wie dann ohne header oder linklib
-
Du musst wissen, welche Aufrufparameter die Funktion in der DLL erwartet.
Dann definierst Du in DEINER Header-Datei die Funktion und bekommst in Deinem c-File mit GetProcAddress alles was Du brauchst. Nachfolgendes Beispiel greift auf die capi2032.dll zu.//das Headerfile typedef int (CALLBACK* LPFNAPI_REGISTER)(DWORD MessageBufferSize, DWORD maxLogicalConnection, DWORD maxBDataBlocks, DWORD maxBDataLen, LPDWORD pApplID); //... HMODULE m_CapiFileHandle; static LPFNAPI_REGISTER m_capi_register; //das cpp-file //... m_CapiFileHandle = LoadLibrary(szDllName); m_capi_register = (LPFNAPI_REGISTER) GetProcAddress((HMODULE)m_CapiFileHandle, "CAPI_REGISTER"); //Aufruf der Funktion CAPI_REGISTER in der DLL m_capi_register(m_CapiRegs.MessageBufferSize, m_CapiRegs.maxLogicalConnection, m_CapiRegs.maxBDataBlocks, m_CapiRegs.maxBDataLen, (DWORD*)&m_ApplID);
[ Dieser Beitrag wurde am 12.04.2003 um 17:35 Uhr von pfalzmarc editiert. ]
-
muss der funktionsaufrufer hier nicht als pointer deklariert werden !?
static LPFNAPI_REGISTER m_capi_register; // <- das hier!!
[ Dieser Beitrag wurde am 12.04.2003 um 20:43 Uhr von ThomasSe editiert. ]
-
schau Dir das typedef mal genau an. Das ist ein Pointer.
-
ui verzeihung das sah alles ein bisl unübersichtlich aus danke dir :>