bpo-37834: Normalise handling of reparse points on Windows by zooba · Pull Request #15231 · python/cpython (original) (raw)

IO_REPARSE_TAG_UNHANDLED (0x80000020), going by its name, is always an unhandled tag. IO_REPARSE_TAG_LX_SYMLINK (0xA000001D) should be an unhandled link tag, since it's used for symlinks between an NT file system and a WSL file system (e.g. "/mnt/c/etc" -> "/etc").

I looked over Microsoft's tags for a handled tag that's not a link, but nothing stands out. I thought that OneDrive used them (i.e. IO_REPARSE_TAG_CLOUD*), but that doesn't appear to be the case anymore. I also thought the new Projected File System support would use them (i.e. IO_REPARSE_TAG_PROJFS). I built the RegFS sample to try to confirm this, and I was surprised to find that none of the virtual directories and files (keys and values) was a reparse point.

However, both OneDrive and ProjFS do make extensive use of the following new file attributes:

FILE_ATTRIBUTE_PINNED  0x00080000
FILE_ATTRIBUTE_UNPINNED  0x00100000
FILE_ATTRIBUTE_RECALL_ON_OPEN  0x00040000
FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS  0x00400000