Ja also, ich verzweifle grad daran, daß laut OpenFileMapping, aus mir unerklärlichen Gründen und nach ständig unterschiedlichen Zeiten (Befehlzszeilen) eine
MMF einfach nicht mehr existieren soll.
Es handelt sich dabei um diesen Code:
DLL-EntryPoint mit Funktion tauschen?
Die
MMF sollte eigentlich nie freigegeben werden (solange der Prozess existiert, da ich einen Aufruf nicht mit CloseHandle schließe).
Leider ist mal kurz nach dem erstellen die
MMF weg oder erst nach ein/zwei Code-Zeilen
und manchmal ist sie am Ende der EntryPoint-Prozedur (in der
DLL) noch vorhanden und fehlt dann erst drüben in der EXE.
Nur irgendwie bleibt der Zeitpunkt wann sie angeblich verschwindet unterschiedlich und daß bei fast jedem Debugvorgang.
Es kam sogar schon vor, daß direkt nach einem erfolgreichen CreateFileMapping die
MMF nicht per OpenFileMapping geöffnet werden konnte.
Und laut GetLastError "Name existiert nicht" existiert die
MMF wohl nicht, obwohl sie existieren sollte.
selbst wenn nix passiert, ändert sich das Ergebnis...
Delphi-Quellcode:
// aus Procedure EntryPoint in TestDLL.dpr
{1}
Error := (Map = 0) or not Assigned(Data);
{2}
If not Error Then
If Assigned(Data.OldEntryPoint) Then Begin
ich hatte schon den Fall, daß die
MMF an Punkt {2} weg war, wenn ich es dort prüfe
und sobald ich den Prüfcode an Punkt {1} auch noch einfüge, dann war an beiden Punkten die
MMF noch da, dabei passiert bei dieser Zuweisung doch rein garnichts mit der
MMF.
ja und das ist mein einfacher Prüfcode ... beim Debuggen kann ich da ja bequem TempMap auslesen
Delphi-Quellcode:
TempMap := OpenFileMappingA(FILE_MAP_READ or FILE_MAP_WRITE, False, @Name);
TempData := MapViewOfFile(TempMap, FILE_MAP_READ or FILE_MAP_WRITE, 0, 0, 0);
If (TempMap = 0) or not Assigned(TempData) Then ;
Also ich hab absolut keine Ahnung, was mit der
MMF los ist, denn die Aufrufe sind richtig so (auch wenn sie halt nicht so richtig wollen) und von der Programmlogic her sollte es (hoffentlich) auch stimmen.
Ich bin praktisch fast am Verzeifeln und weiß einfach nicht mehr, was ich noch groß machen soll.
http://fnse.de/S01/17P.gif
Ein Therapeut entspricht 1024 Gigapeut.