Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

ADS Stream lesen

  Alt 10. Okt 2007, 20:22
Ich versuche gerade einen ADS Stream zu lesne, nur leide rkommt da bei mir nur Mist raus. Einen ADS Stream kann man sich zum Beiepil mit Notepad anzeigen lassen:
Code:
notepad tscc.exe:Zone.Identifier
Wobei die Zeichenfolge hinter dem Doppelpunkt der ADS-Name ist. Wenn man Dateien mit dem IE runterläd wird ein ADS Stream mit dem Namen Zone.Identifier angehangen mit dem Inhalt:
Zitat:
[ZoneTransfer]
ZoneId=3
Wenn ich versuche den ADS Stream von der gleichen Datei so auszulesen:
Delphi-Quellcode:
function TMpuADS.GetDataStream(const StreamName: WideString; StreamSize: Int64): WideString;
var
  hFile : THandle;
  ReadBuffer : WideString;
  BytesRead : DWORD;
begin
  hFile := CreateFileW(PWideChar(FFilename), GENERIC_READ, FILE_SHARE_READ, nil,
    OPEN_ALWAYS, 0, 0);
  if hFile <> INVALID_HANDLE_VALUE then
  begin
    Setlength(ReadBuffer, StreamSize);
    if ReadFile(hFile, ReadBuffer[1], StreamSize, BytesRead, nil) then
      SetString(Result, PWideChar(ReadBuffer), StreamSize)
    else
    begin
      CloseHandle(hFile);
      raise Exception.CreateFmt(rsExceptionTemplate, [GetLastError, SysErrorMessage(GetLastError)]);
    end;
    CloseHandle(hFile);
  end;
end;
IN FFilename steht deer Pfad, Exename und der ADS-Name korrekt drinne.
Bekomme ich allerdings nur Datenmüll:
[code]?????????????er :$DATA ???[quote]
Das $DATA hing anfangs noch am ADS-Namen dran, das hab eich abgeschnitte. Was mache ich da falsch?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat