Reparse Point Operations

[This is preliminary documentation and subject to change.]

You can determine whether a file system supports reparse points by calling the GetVolumeInformation function and examining the FILE_SUPPORTS_REPARSE_POINTS bit flag.

You can set, modify, obtain, and remove reparse points by using the DeviceIoControl function. The following table describes the reparse point operations that you can perform using DeviceIoControl.

Operation Description
FSCTL_SET_REPARSE_POINT Allows the calling program to set a new reparse point, or to modify an existing one.
FSCTL_GET_REPARSE_POINT Obtains the information stored in an existing reparse point.
FSCTL_DELETE_REPARSE_POINT Removes an existing reparse point.

If you are modifying, getting, or deleting a reparse point, you must specify the same reparse tag in the operation that is contained in the file. Otherwise, the operation will fail with the error ERROR_REPARSE_ATTRIBUTE_CONFLICT.

To determine whether a file contains a reparse point, use the GetFileAttributes function. If the file has an associated reparse point, the FILE_ATTRIBUTE_REPARSE_POINT attribute is set.

To overwrite an existing reparse point without already having a handle to the file, call CreateFile with the FILE_OPEN_REPARSE_POINT flag. This flag allows you to open the file whether or not the corresponding file system filter is installed and working correctly.