Du musst natürlich auch beachten, wie die "Übersetzung" in Windows.pas aussieht.
Delphi-Quellcode:
function BackupWrite(hFile: THandle; lpBuffer: PByte; nNumberOfBytesToWrite: DWORD;
var lpNumberOfBytesWritten: DWORD; bAbort, bProcessSecurity: BOOL; var lpContext: Pointer): BOOL; stdcall;
lpContext ist einfach ein Zeiger, den du Anfangs mit
nil initialisieren musst und einfach bei allen weiteren Aufrufen wieder angibst, ohne den Inhalt zu verändern - sonst muss dich dieser Parameter nicht interessieren. Wenn du fertig bist mit dem Schreiben, dann musst du halt
BackupWrite noch einmal mit eben diesem Zeiger aufrufen und
bAbort auf
true setzen - das gibt den Speicher wieder frei. (Steht übrigens alles im
PSDK zu BackupWrite)
lpBuffer ist ein
Zeiger auf die Daten - in deinem Fall, bei einem TMemoryStream, würdest du hier
str.Memory angeben.