question on rename operations

OSR’s ‘NT Insider’ has an article a while back which described a rename
operation from the perspective of a file system filter. In the article, the
author describes three different ‘types’ of rename operation:

* ‘Simple Rename’: SetFile.FileObject == NULL
* ‘Fully Qualified Rename’: SetFile.FileObject != NULL &&
FILE_RENAME_INFORMATION.RootDir == NULL
* ‘Relative Rename’: SetFile.FileObject != NULL &&
FILE_INFORMATION.RootDir != NULL

All I’ve ever seen on my system (NT4 SP5) is the ‘Fully Qualified’
flavor of rename operation. The article is from 1997, so I’m wondering if
things have changes since the article was written, and now only ‘Fully
Qualified Renames’ are supported. If the others ‘types’ of renames still
can occur, how can I produce them (so I can test all my code paths). Also,
I’ve notices that the target path always begins with the symbolic link for
the volume device prepended: ‘??\D:\Whatever’. Can I always expect this
form?
Here’s a link to the article:
http://www.osr.com/ntinsider/1997/rename.htm

Thanks!

Absolute rename is most common because it fits with the semantics of the
Win32 API. To generate the others you need to either (a) write a program
that uses an alternative API and explicitly generates relative renames; or
(b) test using other access mechanisms (example: try doing renames via a
remote system using redirector from within a subdirectory share. That should
generate a relative rename as I recall.)

There are many special cases within the file systems that are not exercised
when you restrict yourself to the Win32 API. For example, try testing your
handling of extended attributes via Win32 - it CAN be done, but it is quite
a challenge. Thus, you won’t normally see them used and hence might assume
that just because you don’t see them they aren’t there.

Regards,

Tony Mason
Consulting Partner
OSR Open Systems Resources, Inc.
http://www.osr.com http:

-----Original Message-----
From: Smith, Joel [mailto:xxxxx@ntpsoftware.com]
Sent: Monday, May 08, 2000 2:48 PM
To: File Systems Developers
Subject: [ntfsd] question on rename operations

OSR’s ‘NT Insider’ has an article a while back which described a rename
operation from the perspective of a file system filter. In the article, the
author describes three different ‘types’ of rename operation:

* ‘Simple Rename’: SetFile.FileObject == NULL

* ‘Fully Qualified Rename’: SetFile.FileObject != NULL &&
FILE_RENAME_INFORMATION.RootDir == NULL

* ‘Relative Rename’: SetFile.FileObject != NULL &&
FILE_INFORMATION.RootDir != NULL

All I’ve ever seen on my system (NT4 SP5) is the ‘Fully Qualified’
flavor of rename operation. The article is from 1997, so I’m wondering if
things have changes since the article was written, and now only ‘Fully
Qualified Renames’ are supported. If the others ‘types’ of renames still
can occur, how can I produce them (so I can test all my code paths). Also,
I’ve notices that the target path always begins with the symbolic link for
the volume device prepended: ‘??\D:\Whatever’. Can I always expect this
form?

Here’s a link to the article:
http://www.osr.com/ntinsider/1997/rename.htm
http:

Thanks!</http:></http:>