AGB  ·  Datenschutz  ·  Impressum  







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

warum HookHandle global machen?

Ein Thema von originalhanno · begonnen am 13. Apr 2006 · letzter Beitrag vom 18. Apr 2006
Antwort Antwort
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#1

Re: warum HookHandle global machen?

  Alt 15. Apr 2006, 13:31
Zitat:
Wieso kann dann nicht auch jeder Prozess seinen eigenen Handle auf seine eigene Kopie haben?
Du siehst einen Widerspruch wo keiner ist. Jeder Prozess hat sein eigenes Datensegment und eine globale Variable in diesem Prozess wäre eine "eigene Kopie für jeden Prozess". Eine DLL die in mehreren Prozessen geladen wurde und in der DLL selber eine globale Variable ablegt, hat defakto für jeden Prozess in dem sie geladen wurde ein eigenes Datensegment und ergo eine eigene Kopie pro Prozess von diesem Datensegment und ergo auch Prozessbezogene Kopien dieser globalen Variablen.

Die Benuztung von globalen Variablen ist also in diesem Zusammenhang nichts widersprüchliches sondern nur konsequent.

Wenn also ein Prozess eine DLL lädt dann wird zwar der Code dieser DLL in den meisten Fällen gemeinsam durch alle Prozesse die die gleiche DLL geladen haben, auch gemeinsam benutzt. Die Datensegment dieser DLL werden aber quasi als "Kopien" für jeden Prozess indiviuell "dupliziert".

Es entsteht also nicht das Problem eine globale Variable einer DLL für jeden Prozess separat zu halten, sondern umgekehrt "wie kann eine solche DLL, Prozess-übergreifend, bzw. Prozess-unabhängig eine globale Variable" implementieren. Das wird meistens durch Sharded Segemente in den DLLs erledigt. Geht aber eben nur in einer Programmiersprache die erstens eine solche Möglichkeit bieten und zweitens auch einen Linker enthält der sowas unterstützt. Beides ist in Delphi nicht der Fall. Also muß man den "umständlichen" Weg gehen und über MMFs, Semaphore, Events, Threads und gloable Mutex gehen.

Gruß Hagen
  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 17:08 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