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.