Einzelnen Beitrag anzeigen

shifter

Registriert seit: 2. Jan 2005
175 Beiträge
 
Delphi 2007 Enterprise
 
#24

Re: Bandlaufwerk / Streamer ansprechen unter Delphi.

  Alt 10. Nov 2005, 21:40
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
  Mit Zitat antworten Zitat