winapintfsjunctionreparsepoint

NTFS Junctions, trouble understanding the API


Update: This question has evolved into a question about the NTFS filesystem filter driver how to use the Win32 API in backup applications and other programs that need to know what a file really is on disk? Junctions and reparse points are key concepts that I needed to consider and are the most confusing thing in the NTFS filesystem.

The original question follows:


  1. What is the Win32 API used to detect if a directory is a junction?
  2. 'Where' (for lack of better understanding) in the NTFS hierarchy are junctions stored?
  3. If I create a junction c:\thejunction_mydir do both directories become junctions of one-another? i.e. the created and the referenced

Solution

  • How do I detect a reparse point?

    Determining Whether a Directory Is a Mounted Folder is the answer. It shows how to determine whether a folder is a reparse point, and thus if it is also potentially: a Junction or a Symlink or a Mount-point.