AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi MemoryMapped Files unter Vista - keine Daten
Thema durchsuchen
Ansicht
Themen-Optionen

MemoryMapped Files unter Vista - keine Daten

Ein Thema von Zacherl · begonnen am 29. Mai 2007 · letzter Beitrag vom 18. Jan 2008
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#11

Re: MemoryMapped Files unter Vista - keine Daten

  Alt 30. Mai 2007, 21:08
um dazu etwas sagen zu können müsste man wissen wie du das, was sich hinter data verbirgt zusammemsetzt. So sieht man ja nur das du etwas kopierst aber mehr nicht
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

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

Re: MemoryMapped Files unter Vista - keine Daten

  Alt 30. Mai 2007, 21:48
Ich habe einmal die Variable Len vom Typ Integer. Schreiben tue ich die so:

WriteToMMF(Pointer(Len), SizeOf(Integer), 'MyMapName1')
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#13

Re: MemoryMapped Files unter Vista - keine Daten

  Alt 30. Mai 2007, 21:56
genau da liegt der Fehler!
Deine Funktion erwartet einen Pointer auf die Daten.
Du castest aber deine Länge einfach zu einem Pointer und übergibst dies dann als Adresse. Es wird also nicht deine Länge geschrieben sondern wenn deine Länge "5" ist dann wird das geschrieben was an Adresse 5 ist.
Du musst also die Adresse von deiner Längenvariable übergeben und nicht einfach deine Variable zu einem Pointer casten (Grundlagen).
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

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

Re: MemoryMapped Files unter Vista - keine Daten

  Alt 30. Mai 2007, 22:10
Ah sorry hatte das falsch im Kopf. So meinte ich auch:

WriteToMMF(@Len, SizeOf(Len), 'InjectionMappingTest2'); Unter XP funktioniert das wunderbar. Unter Vista leider nicht. Der String kommt unter Vista allerdings an .. ich darf nicht mit Strings arbeiten, sondern ausschließlich mit PChar. Es könnte mein Problem lösen, wenn ich eine Assembler Funktion hätte, die mit IntToPChar macht ..
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

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

Re: MemoryMapped Files unter Vista - keine Daten

  Alt 31. Mai 2007, 22:43
*push*
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

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

Re: MemoryMapped Files unter Vista - keine Daten

  Alt 1. Jun 2007, 21:30
Konnte das Problem weiter eindämmen: Es passiert nicht auf allen Rechnern, sondern nur auf einigen. Egal ob XP oder Vista. Auch funktiniert es nicht mit Microsoft Virtual PC 2007.

Dort ist der ankommende Integer immer = 0.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

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

Re: MemoryMapped Files unter Vista - keine Daten

  Alt 1. Jun 2007, 23:15
Ich weiß ich nerve Sehr seltsame Sache muss man sagen:

Delphi-Quellcode:
procedure WriteToMMF(Filename: PChar; Data: Pointer; Len: Integer);
var
  hFile: Cardinal;
  Mem: Pointer;
begin
  hFile := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, Len +1, Filename);
  if hFile <> 0 then
  begin
    Mem := MapViewOfFile(hFile, FILE_MAP_WRITE, 0, 0, 0);
    CopyMemory(Mem, Data, Len);
  end;
  //CloseHandle(hFile);
end;

function ReadFromMMF(Filename: PChar; Size: Integer): Pointer;
var
  hFile: Cardinal;
begin
  hFile := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, Size, Filename);
  if hFile <> 0 then
  begin
    Result := MapViewOfFile(hFile, FILE_MAP_READ, 0, 0, 0);
  end
    else
  begin
    Result := nil;
  end;
  CloseHandle(hFile);
end;
Es kommt eine AV bei CopyMemory im WriteToMMF Teil, wenn ich das Programm auf einer VM starte. Sehr komisch ist noch, dass es auf meinem normalen System funktioniert. Und das sogar, wenn ich CopyMemory auskommentiere Kann ich mir nicht erklären, denke aber mal, dass da mein Fehler liegt.

ARGH Ich habs .. heureka Mein Programm hat sich teilweise geschlossen, befor mein RemoteThread auf die Daten zugegriffen hat. Ein simples WaitForSingleObject hats getan.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#18

Re: MemoryMapped Files unter Vista - keine Daten

  Alt 18. Jan 2008, 06:12
Zitat von SirThornberry:
Das ist kein Fehler. Wenn du die Datei schließt und die Memory-Datei somit von keinem Prozess mehr geöffnet ist wird sie wieder frei gegeben.
eben nicht, wenn eine Datei per MMF geöffnet ist und nur das FileHandle (das von CreateFile) geschlossen wird, dann bleibt der gemappte Teil erhalten.

hab mir so ein geiles MemoryLeak geschaffen, wo z.B. "angeblich" geschlossene Dateien, solange das Programm noch aktiv war, nicht von anderen Programmen (Explorer) gelöscht werden konnten.


ach ja ....

och menno, war schon fast soweit mich auf die MMFs zusammen SendMessage zu stürzen, um Programmübergreifend kommunizieren zu können, da es für mich wohl am Einfachsten wär.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#19

Re: MemoryMapped Files unter Vista - keine Daten

  Alt 18. Jan 2008, 07:35
Zitat von Zacherl:
Konnte das Problem weiter eindämmen: Es passiert nicht auf allen Rechnern, sondern nur auf einigen. Egal ob XP oder Vista. Auch funktiniert es nicht mit Microsoft Virtual PC 2007.

Dort ist der ankommende Integer immer = 0.
Läuft da ein virenscanner?
Es gibt Virenscanner die öffnen Dateien obwohl das Flag tragen das sie sich beim Schließen automatisch löschen sollen.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#20

Re: MemoryMapped Files unter Vista - keine Daten

  Alt 18. Jan 2008, 08:57
Möchte es kurz in den Raum schmeissen....

...vergesst nicht, daß es auch noch das gute alte TCP/IP gibt, damit kann man ja nicht nur
zwischen verschiedenen Rechnern kommunizieren, sondern auch innerhalb des selben Rechners, ich sehe
dies als eine alternative zu MMF, Named Pipes, usw.
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 03:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz