A
reparse point is an object in a file
system with attributes
that activate extended functionality. A tag in the reparse point indicates the location from which external information should be taken and specifies an application associated with that information.
A
single file can contain more than one reparse point, with each point involving
a different application. When a system opens a file and encounters a reparse
point, the system finds the filter associated with the application indicated in the tag. The data in the reparse
point can then be used to transparently
execute whatever task is specified, through the application that created the
reparse point.
The
use of reparse points begins with applications. An
application that wants to use the feature stores data specific
to the application--which can be any sort of data at all--into a reparse point. The reparse point is tagged with an identifier specific to
the application and stored with the file or directory. A special
application-specific filter (a driver of sorts) is also associated with the reparse point tag type and made known to the . More than
one application can store a reparse point with the same file or directory, each
using a different tag. Microsoffile systemt themselves
reserved several different tags for their own use.
Now, let's suppose that the user decides to access a file
that has been tagged with a reparse point. When the file system goes to open
the file, it notices the reparse point associated with the file. It then
"reparses" the original request for the file, by finding the
appropriate filter associated with the application that stored the reparse
point, and passing the reparse point data to that filter. The filter can then
use the data in the reparse point to do whatever is appropriate based on the
reparse point functionality intended by the application. It is a very flexible system; how exactly
the reparse point works is left up to the application.
The really nice thing about reparse points is that
they operate transparently to the user. You simply access the reparse point and
the instructions are carried out automatically. This
creates seamless extensions to file system functionality.
In
addition to allowing reparse points to implement many types of custom
capabilities, Microsoft itself uses them to implement several features within
Windows 2000 itself, including the following:
- Symbolic Links: Symbolic
linking allows you to create a pointer from one area of the directory
structure to the actual location of the file elsewhere in the structure.
NTFS does not implement "true" symbolic file linking as exists
within UNIX file systems, but the functionality can be
simulated by using reparse points. In essence, a symbolic link is a reparse point that redirect access from one file to
another file.
- Junction Points: A junction
point is similar to a symbolic link, but instead of redirecting access
from one file to another, it redirects access from one directory to
another.
- Volume Mount Points: A volume mount point is like a symbolic link or junction point, but
taken to the next level: it is used to create
dynamic access to entire disk volumes. For example, you can create
volume mount points for removable hard disks or other storage media, or
even use this feature to allow several different partitions (C:, D:, E:
and so on) to appear to the user as if they were all in one logical
volume. Windows 2000 can use this capability to break the traditional
limit of 26 drive letters--using volume mount points, you can access volumes without the need for a drive letter for the volume.
This is useful for large CD-ROM servers that would otherwise require a
separate letter for each disk (and would also require the user to keep track of all these drive letters!)
- Remote Storage Server
(RSS): This feature of Windows 2000 uses a set of rules to determine
when to move infrequently used files on an NTFS volume to archive storage
(such as CD-RW or tape). When it moves a file to "offline" or
"near offline" storage in this manner, RSS leaves behind reparse
points that contain the instructions necessary to access the archived
files, if they are needed in the future.
These are just a few examples of how reparse points can be used. As you can see, the functionality is very flexible. Reparse points are a nice addition to NTFS: they allow the capabilities of the file system to be enhanced without requiring any changes to the file system itself.