Oops, ganz vergessen zu dazuzuschreiben, jo der WindowsError ist mal wieder hilfreich wie Fußpilz:
"Unzulässiger Zugriff auf einen Speicherbereich" - auf welchen Speicherbereich? ist meine Context-variable zu klein? oder der Speicherbereich im anderen Programm/Thread geschützt? Da fallen mir noch 100 weitere Möglichkeiten ein wo er auf Speicher zugreifen könnte.
RaiseLastOSError:
Code:
ERROR_NOACCESS
998 (0x3E6)
Invalid
access to memory location.
Und zum nonzero return Value: die Funktion gibt System.Boolean zurück und die Suspend/Resumethread geben im Fehlerfall laut
MSDN -1 zurück.
Edit: mein Programm läuft als Administrator, es holt sich vor CreateProcess das DebugPrivilegeToken.
Edit2: Was mich am meisten ärgert ist, dass ich das ganze nicht vernünftig debuggen kann, mit singlestepping springt er einfach drüber. Das x64 debugging mit Delphi XE2 ist der pure Wahnsinn.