windows - 在内核模式下确定 Windows 卷的大小写敏感性

标签 windows winapi kernel32

Windows API 支持 GetVolumeInformation功能。此函数提供有关 Windows 卷的信息。具体来说,它返回一个 FILE_CASE_SENSITIVE_SEARCH 开关。在内核中有 FltQueryVolumeInformationZwQueryVolumeInformationFile ,但我看不到任何方法可以从可用信息类中导出区分大小写的信息。

我是否正确理解 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/

相关文章:

windows - wxPython - 在没有窗口焦点的情况下捕获鼠标和键盘事件

c# - 在哪里可以找到 Windows API 常量列表

api - Kernel32 中的 VirtualProtect 函数有什么作用?

windows - kernel32 是否总是从 System32 加载?

c# - 如何从 hWnd 获取 "Application Name"for Windows 10 Store Apps (e.g. Edge)

c - 如何在Windows中确定文件是否存在、不存在或未知(使用c)

windows - FOR 循环变量中的空格问题 - 批处理脚本

c++ - 使用性能计数器不断播种?

python - 从弹出菜单中选择项目 win32 api Python

winapi - win32 api 工具栏中可见的分隔符(不仅仅是间隙)?