Holy cow, I wrote a book!
FindFirstFile, when asked to provide information about
a symbolic link,
returns information about the link itself and not the link destination.
If you use the FindFirstFile function,
you can tell that you have a symbolic link because the
file attributes will have the FILE_ATTRIBUTES_REPARSE_POINT
and the dwReserved0 member will contain the special value
Okay, great, so now I know I have a symbolic link,
but what if I want information about the link target?
For example, I want to know the size of the link target,
its last-modified time, and its name.
To do this, you open the symbolic link.
The I/O manager dereferences the symbolic link and gives
you a handle to the link destination.
You can then call functions like
to obtain information about the symbolic link target.
If the field is called dwReserved0,
shouldn't it be off limits?
Why isn't the field called dwReparsePointType?