Reparse Point Operations

To determine whether a file system supports reparse points, call the GetVolumeInformation function and examine the FILE_SUPPORTS_REPARSE_POINTS bit flag.

The DeviceIoControl function enables you to set, modify, obtain, and remove reparse points. 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_TAG_MISMATCH. If you are modifying or deleting a reparse point, you must also specify the reparse GUID 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 or directory contains a reparse point, use the GetFileAttributes function. If the file or directory 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 or directory, call CreateFile with FILE_FLAG_OPEN_REPARSE_POINT. This flag allows you to open the file whether or not the corresponding file system filter is installed and working correctly.