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?