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.
|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.