Prozess-spezifische Daten setzen/ lesen
-
Moin,
also, folgendes Szenario:
Ich hab eine oder mehrere Anwendungen laufen, die sich mehrere DLLs teilen. Eine davon ist eine Art Basis-DLL, die von den Anwendungen und anderen DLLs genutzt wird.
Ich möchte nun, dass die Basis-DLL rausfinden kann, aus welcher Anwendung heraus eine Funktion der DLL gerufen wurde, geht das über ::GetCurrentProcess()?Wenn ja, wie kann ich für den Prozess spezifische Daten setzen/ lesen, die nur für den Prozess gelten, aber von der Basis-DLL verwaltet werden sollen? Mir würde es reichen, wenn ich einen Pointer ablegen könnte.
Ach ja, es kann sein, dass ein Prozess ohne Fenster läuft, also scheidet der Zugriff auf das Hauptfenster des Prozesses und ::GetWindowLong() aus.
-
vielleicht hilft dir
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getmodulehandle.asp
weitermsdn schrieb:
If this parameter is NULL, GetModuleHandle returns a handle to the file used to create the calling process (.exe file).
ps: aber so richtig verstanden habe ich es nicht

-
Das geht nicht.
Du kannst nur den Prozess heraus finden der die DLL benutz.char cBuffer[256] GetModuleFileName(GetModuleHandle(NULL),cBuffer,sizeof(cBuffer));Meine Homepage:
[url]
http://members.inode.at/anton.zechner/az/index.html
[/url]
-
Kann man das was du machen willst nicht mit ThreadLocalStorage abbilden ?
Schau dir mal die Funktionen TlsAlloc und Co. an oder wenn du mit Visual C++ entwickelst, dann schau mal unter __declspec(thread) nach.