AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ModuleUnload wozu?

Ein Thema von TurboMagic · begonnen am 20. Nov 2018 · letzter Beitrag vom 20. Nov 2018
Antwort Antwort
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.687 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: ModuleUnload wozu?

  Alt 20. Nov 2018, 18:48
So wie ich den hier umgesetzten Callback verstehe, werden beim Entladen des Packages, welches diese Unit enthält,
alle Klassenreferenzen aus der Registrierungsliste entfernt, deren Instance Handle dem des Packages entspricht.

1. Hab' ich das so richtig verstanden?
2. Was ist ein Instance Handle? Ich kenne bisher Datei- und DLL-Handles...?
3. Warum hat eine Klasse eines, oder doch nicht?
3. Wozu muss man das tun? Wären dann nicht alle registrierten Klassen der Liste zu entfernen, weil alle dieses
handle haben müssten? (es sei den man würde die Instanz der Liste jemandem außerhalb des Packages geben und
der würde sich über den Listenregistrierungsmechanismus auch registrieren)

Kann mir das mal bitte jemand erklären?
Benutztes Delphi ist in dem Projekt noch 10.1 Berlin.
zu 1: Soweit ich das verstehe, hast du Recht: Beim Entladen es Packages werden alle Klassen, die es zur Verfügung stellt, de-registriert, damit sie nicht aus Versehen instantiiert werden, was dann z.B. zu Access Violations führen könnte.

zu 2: Da Packages nur glorifizierte DLLs sind, ist das Instance Handle dasselbe, was Du schon kennst.

zu 3: Es ist nicht die Klasse, die es hat, sondern das Package, in dem sie deklariert - registriert wird.

zu 4: Das System ist vermutlich darauf ausgerichtet, durch weitere Klassen in zusätzlichen Packages dynamisch erweitert zu werden (oder es gibt bereits schon mehrere Packages?).

twm
Thomas Mueller
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.050 Beiträge
 
Delphi 12 Athens
 
#2

AW: ModuleUnload wozu?

  Alt 20. Nov 2018, 18:53
Danke schon mal für diese Antworten.

Was ich noch nicht verstehe ist das hier: FindClassHInstance.
Findet das heraus in welchem package/DLL eine Klasse deklariert ist?
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

AW: ModuleUnload wozu?

  Alt 20. Nov 2018, 19:44
Was ich noch nicht verstehe ist das hier: FindClassHInstance.
Da kann ich grade nichts zu sagen, aber der Cast nach Integer ist problematisch unter 64-Bit. Instance ist dann nämlich ebenfalls 64-bit, dein Ergebnis von FindClassHInstance wird allerdings auf 32-bit truncated.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.050 Beiträge
 
Delphi 12 Athens
 
#4

AW: ModuleUnload wozu?

  Alt 20. Nov 2018, 20:41
Danke für den Tipp mit dem Integer. Momentan ist es auskommentiert, weil ich's ja noch nicht verstanden hatte.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz