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

fastest way to retrieve CIFS file metadata

情况: 我正在使用 NtQueryDirectoryFile(..., FileBothDirectoryInformation, ...) 扫描目录。除了此调用返回的数据外,我还需要安全数据(通常由 GetKernelObjectSecurity 返回)和备用流列表 (NtQueryInformationFile(..., FileStreamInformation))。

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

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

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

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