On Wed, 20 Apr 2011, reynolight wrote:

Am 20.04.2011 13:47, schrieb Michael Van Canneyt:


On Wed, 20 Apr 2011, reynolight wrote:

g: is the XP system volume. x: is the truecrypted NTFS partition. No
problem to set / get / show file attributes with Win32 GUI on both
volumes. Same with attrib.exe on console.

sysutils.FileGetAttr(g:\*) is fine, as well, but FileGetAttr(x:\*)
returns -1 as an error.

After copying a file from x: to g:, its attributes are - surprise - ok
again. Even bigger surprise: After re-copying from g: to x:,
FileGetAttr(x:\...) delivers the same correct result as on g:

FileGetAttr is not supposed to accept wildcards.

Michael.

Sorry. Just looks like wildcards here in my post. Of course,
FileGetAttr('*') doesn't work at all. To be exact with my issue, assume
a specific file x:\any.any, where x: is a mounted, truecrypted NTFS volume.

FileGetAttr('x:\any.any') returns  -1, i.e. error.

After copying x:\any.any to g:\any.any, FileGetAttr('g:\any.any')
returns 32, i.e. faArchive.

After copying g:\any.any back to x:\any.any, overwriting the previous
version, FileGetAttr('x:\any.any') now returns 32, i.e. faArchive as
well, as it should have been always, since we never modified the attributes.

Trying the same on XP GUI or with attrib.exe on console, I don't see any
similar issues.

Well,

This is the implementation of FileGetAttr:

Function FileGetAttr (Const FileName : String) : Longint;
begin
  Result:=GetFileAttributes(PChar(FileName));
end;

As you can see, the function returns the result of the GetFileAttributes Win32 
API call.
Why this call returns -1 is something that we cannot speculate on.
Most likely seems an error in the filesystem driver.

Michael.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to