C FindFirstFile和连接

C FindFirstFile和连接,c,windows,winapi,C,Windows,Winapi,我使用此命令获取目录foo:FindFirstFile(L“foo\\\*”,&findData)的内容。当foo是一个常规目录时,它非常有效。但是,当foo是指向另一个目录(使用mklink/j foo C:\gah创建)的连接时,FindFirstFile会失败 文档中有这样一句话:“如果路径指向一个符号链接,那么WIN32查找数据缓冲区包含有关符号链接的信息,而不是目标。”但当我运行调试器时,我只得到一个无效的句柄值,findData保持不变 那么,我该如何解决这个问题呢?陈雷蒙有一个好主

我使用此命令获取目录foo:
FindFirstFile(L“foo\\\*”,&findData)
的内容。当foo是一个常规目录时,它非常有效。但是,当foo是指向另一个目录(使用
mklink/j foo C:\gah
创建)的连接时,FindFirstFile会失败

文档中有这样一句话:“如果路径指向一个符号链接,那么WIN32查找数据缓冲区包含有关符号链接的信息,而不是目标。”但当我运行调试器时,我只得到一个
无效的句柄值,findData保持不变

那么,我该如何解决这个问题呢?

陈雷蒙有一个好主意要告诉你

函数,如
GetFileAttributes
FindFirstFile
,当要求 提供有关符号链接的信息,返回有关符号链接的信息 链接本身,而不是链接目标。如果你使用
FindFirstFile
函数,可以看出您有一个符号链接 因为文件属性将具有
FILE\u ATTRIBUTES\u resparse\u POINT
标志集,以及
dwReserved0
成员 将包含特殊值
IO\u repasse\u TAG\u SYMLINK

好的,很好,现在我知道我有一个符号链接,但是如果我想要呢 关于链接目标的信息?例如,我想知道 链接目标的大小、上次修改时间及其名称

要执行此操作,请打开符号链接。I/O管理器取消引用 符号链接,并提供指向链接目标的句柄。你 然后可以调用函数,如
GetFileSize
GetFileInformationByHandleEx
,或
GetFinalPathNameByHandle
获取 有关符号链接目标的信息