检索CIFS文件元数据的最快方法

时间:2018-01-26 18:19:26

标签: winapi filesystems nt-native-api

情况: 我正在使用 /c/Users/username/.ssh/config: line 2: Bad configuration option: \240\240user /c/Users/username/.ssh/config: line 3: Bad configuration option: \240\240identityfile 扫描目录。除了此调用返回的数据外,我还需要安全数据(通常由NtQueryDirectoryFile(..., FileBothDirectoryInformation, ...)返回)和备用流列表(GetKernelObjectSecurity)。

问题: 要检索安全性和备用流信息,我需要打开(并关闭)每个文件。在我的测试中,它将操作减慢了3倍。添加NtQueryInformationFile(..., FileStreamInformation)GetKernelObjectSecurity将其减慢4倍(使其成为12倍)。

问题: 是否有更好/更快的方式来获取此信息(通过更快地打开文件或完全避免文件打开)?

思路: 如果目标文件系统是本地的,我可以直接访问它(知道NTFS / FAT / etc详细信息从原始数据中提取信息)。但它不适用于远程文件系统。

1 个答案:

答案 0 :(得分:0)

自定义SMB客户端就是答案。跳过Windows / NT API层打开了所有大门。