Okay, funktioniert mittlerweile sehr gut. Nur eine Sache wäre da noch: Wenn ich die Funktion VirtualAlloc aufgerufen habe, muss ich den Speicher ja auch wieder freigeben. Dazu habe ich mir eine CleanUp-Procedure welche ich bei OnTerminate meines Threads ausführe:
Delphi-Quellcode:
procedure TBulkCommandThread.CleanUp(Sender: TObject);
var
bRet : Boolean;
begin
bRet := VirtualFree(FEnumProcInst, 15, MEM_DECOMMIT);
...
end;
Nur leider erhalte ich eine
access violation:
Delphi-Quellcode:
---------------------------
Benachrichtigung über Debugger-Problem
---------------------------
In Projekt ... trat ein Problem mit folgender Meldung auf: '
access violation at 0x01750000: read of address 0x01750000'. Prozess angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK
---------------------------
An welcher Stelle kann ich den Speicher am besten wieder freigeben, ohne dass ich eine
access violation erhalte?
Vielen Dank