Prüfen, ob HINSTANCE noch gültig ist?
-
hallo,
kann ich mit einer FUnktion prüfen, ob meine HINSTANCE noch gültig ist? Ich will wissen ob eine DLL(funktion) gültig ist.
-
Nein! Das ist so nicht möglich. An dieser Stelle könnte ein neues Modul liegen.
Aber solange Du ein HINSTANCE mit LoadLibrary hast, kann dieses nicht ungültig werden bis Du selbst FreeLibrary aufrufst!
-
Lade die DLL mittels LoadLibrary, dann ist das HISTANCE gültig.
-
Hm, ist es nicht möglich ein Handle einre DLL zuzuordnen?
-
Möglich ist dies schon...
Nur: Was bringt Dir dass, wenn kurz darauf in einem anderen Thread "FreeLibrary" aufgerufen wird!?
-
Eben!
Wenn man die DLL benutzt sollte man entweder wissen, dass diese DLL implizit geladen wurde und somit niemals entladen wird. Oder man besorgt sich das HINSTANCE Handle mit einem LoadLibrary. Solange man diese eben nicht freigibt ist das gute Stück gelockt. Solange sind eben auch die GetProcAddr Einsprünge gültig und eben nur solange.Noch schlimmer wird es, wenn in der DLL auch ein Zustand (Heap, Objekte etc.) verwaltet werden. Dieser dürfte ja in keinem Fall verloren gehen...
-
JamesBond schrieb:
Hm, ist es nicht möglich ein Handle einre DLL zuzuordnen?
GetModuleFileName auf die entsprechende DLL-HINSTANCE...aber wie gesagt [...-siehe die Posts von Jochen und Martin-...] LoadLibrary und sie ist Dein
.