Ich gebe schon langsam auf.
Wenn ich zum testen ein file lade in speicher mittels VirtuallAlloc und BackupRead,
und auf festplatte wieder speichere mit BackupWrite ist alles OK.
Das heist mit dem VirtuallAlloc hat es gecklapt.
Wenn ich aber mit WriteFile auf Band das aufnehmen möchte bekomme ich False als ergebnis von
WriteFile und geschriebene menge = 0.
Wenn ich das gleiche mache aber stat VirtuallAlloc, verwende ich TmemoryStream klapt das mit dem nachbar
und es wird gespeichert auf band. Aber der inchalt ist nicht der der sein soll.
Und so versuche ich aufzunehmen :
Delphi-Quellcode:
Var buf : Pointer;
re : boolean;
bow : dword;
bor : dword;
lcm : pointer;
inf : thandle;
begin
TapeHandle := OPENDRIVE_READ;
Security.nLength := SizeOf( TSecurityAttributes );
Security.bInheritHandle := False;
Security.lpSecurityDescriptor := nil;
SetTapePosition ( TapeHandle, 4, 0, 0,0, False );
buf := VirtualAlloc( nil, 23040, MEM_COMMIT, PAGE_READWRITE );
inf := CreateFile('C:\mt.exe',GENERIC_READ,0,
@Security,OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
lcm := nil;
BackupRead( inf, buf, 23040, bor, false, false, lcm );
closedrive;
tapehandle := opendrive_write;
lcm := nil;
re := WriteFile( TapeHandle, buf, bor, bow, lcm);
// und hier wird es gemeldet das re=FALSE und bow=0
WriteTapeMark( TapeHandle, 0, 1, False );
closehandle(inf);
closedrive;
Help.
seba