确定内核模式下Windows卷的区分大小写

时间:2016-04-25 17:07:00

标签: windows winapi kernel32

Windows API支持GetVolumeInformation功能。此功能提供有关Windows卷的信息。具体来说,它返回FILE_CASE_SENSITIVE_SEARCH开关。在内核中有FltQueryVolumeInformationZwQueryVolumeInformationFile,但我没有看到任何从可用信息类派生大小写敏感信息的方法。

我是否理解FILE_CASE_SENSITIVE_SEARCH开关仅指定可以区分大小写的搜索(而不是默认情况下完成)?根据文件的打开方式只知道区分大小写是正确的(即必须使用FILE_FLAG_POSIX_SEMANTICS标志调用CreateFile,否则使用Win32不区分大小写的行为)?

1 个答案:

答案 0 :(得分:1)

好的,我在MSDN上问了这个问题并找到了answer

不知怎的,我错过了FILE_FS_ATTRIBUTE_INFORMATION信息类属性将允许ZwQueryVolumeInformationFile和FltQueryVolumeInformation函数返回一个包含FileSystemAttributes字段的结构,该字段包含各种位标志,包括FILE_CASE_PRESERVED_NAMES和FILE_CASE_SENSITIVE_SEARCH。

这只表明该卷将支持区分大小写的名称搜索(不是默认为它)。您仍然需要在CreateFile上使用FILE_FLAG_POSTIX_SEMANTICS标志来利用区分大小写。似乎还有一个注册表设置,使其成为默认设置(你可以google / bing)。