Windows API 支持 GetVolumeInformation功能。此函数提供有关 Windows 卷的信息。具体来说,它返回一个 FILE_CASE_SENSITIVE_SEARCH 开关。在内核中有 FltQueryVolumeInformation和 ZwQueryVolumeInformationFile ,但我看不到任何方法可以从可用信息类中导出区分大小写的信息。
我是否正确理解 FILE_CASE_SENSITIVE_SEARCH 开关仅指定可以进行区分大小写的搜索(不是默认情况下完成的)?您仅根据文件打开方式了解区分大小写是否正确(即您必须使用 FILE_FLAG_POSIX_SEMANTICS 标志调用 CreateFile,否则将使用 Win32 不区分大小写的行为)?
最佳答案
好的,我在 MSDN 上问了这个问题并找到了 answer
不知何故我错过了FILE_FS_ATTRIBUTE_INFORMATION信息类属性将允许 ZwQueryVolumeInformationFile 和 FltQueryVolumeInformation 函数返回一个包含 FileSystemAttributes 字段的结构,该字段具有各种位标志,包括 FILE_CASE_PRESERVED_NAMES 和 FILE_CASE_SENSITIVE_SEARCH。
这仅表明该卷将支持区分大小写的名称搜索(而不是默认情况下)。您仍然需要在 CreateFile 上使用 FILE_FLAG_POSTIX_SEMANTICS 标志以利用区分大小写的优势。似乎还有一个注册表设置可以将其设为默认设置(您可以通过 google/bing 搜索)。
关于windows - 在内核模式下确定 Windows 卷的大小写敏感性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36846841/