我需要检测一个文件夹是否是一个连接点,所以我的递归文件搜索不会流失到无限循环。
我可以使用一个简单的功能
IsJunction(attr: DWord): boolean;
其中attr是来自TWin32FindData的DWfileAttributes;
我似乎无法让它上班。谢谢!
解决方法 TWO32FindData的DWfileAttributes没有该信息,您必须查看DWReserved0字段。见 documentation。function IsJunction(const filename: string): Boolean;// IO_REPARSE_TAG_MOUNT_POINT = $A0000003;var FindHandle: THandle; FindData: TWin32FindData;begin Result := False; FindHandle := FindFirstfile(PChar(filename),FindData); if FindHandle <> INVALID_HANDLE_VALUE then begin Result := (Bool(FindData.DWfileAttributes and file_ATTRIBUTE_REPARSE_POINT)) and Bool(FindData.DWReserved0 and 000000) // MS bit and Bool(FindData.DWReserved0 and 000000) // name surrogate bit and (LoWord(FindData.DWReserved0) = 3); // mount point value winAPI.windows.FindClose(FindHandle); end else RaiseLastOSError;end;总结
以上是内存溢出为你收集整理的检测目录是否是Delphi中的连接点全部内容,希望文章能够帮你解决检测目录是否是Delphi中的连接点所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)