Wieviele Handles hat Dein Programm
vor dem Laden der
DLL?
Wieviele Handles benötigst Du beim Laden der
DLL? (vermutlich 1)
Wieviele Handles hat das Programm, wenn die
DLL geladen ist? (vermutlich 1, wenn mehr, benötigt die
DLL selber auch noch welche)
Wieviele Handles hat Dein Programm
nach der Freigabe der
DLL?
Theoretisch Handles des Programmes + 1 beim Laden der
DLL - 1 durch die Freigabe der
DLL.
Sollte also zu einem Nullsummenspiel werden: Handles vorher = Handles nachher.
Wenn aber bei geladener
DLL mehr als 1
Handle hinzukommt, aber beim Freigeben der
DLL nur 1
Handle entfernt wird, liegt der Fehler (höchstwahrscheinlich) in der
DLL.
Hab' keine Ahnung, wie man das sicher und verlässlich überprüfen kann.
Im Zweifelsfalle im Debugger an alle möglichen Stellen 'nen Breakpoint setzen und dort dann jeweils nachschauen, wie es so bei den Handles aussieht.
DLL entladen. true: Das heißt aber nicht, dass die
DLL selbst "vernünftig" aufgeräumt hat, sondern nur, dass Dein Programm die
DLL "vernünftig" entladen hat. Das schließt halt nicht aus, dass hier trotzdem noch Handles übrigbleiben.