c++ - GetFileAttributes 为无效输入返回 FILE_ATTRIBUTE_DIRECTORY

标签 c++ winapi

我对这段代码的行为感到困惑。

const char* file_name = "/  /";
auto attributes = GetFileAttributes(TEXT(file_name)); // same result without TEXT macro
if (attributes == INVALID_FILE_ATTRIBUTES)
{
  //error
}
else if (attributes == FILE_ATTRIBUTE_DIRECTORY)
{
  //directory
}    

这是文件或目录的无效名称,因此我希望它返回 INVALID_FILE_ATTRIBUTES。 用运行在win8上的VS2015编译。 也许这是因为前向字符?也许有一个 winAPI 函数来验证输入?

谢谢

最佳答案

"//" 是完全有效的文件名。正斜杠 / 被解释为路径分隔符。

因此,在我们信任系统的基础上,合乎逻辑的结论是,在你运行这段代码的机器上,当前工作卷的根目录下有一个名为""的目录.

关于c++ - GetFileAttributes 为无效输入返回 FILE_ATTRIBUTE_DIRECTORY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37874067/

相关文章:

c++ - c++11 兼容的编译器是否总是忽略内联提示?

c++ - 将字符串添加到 vector<string> 循环时内存损坏

delphi - EnumerateTraceGuids 返回 "The parameter is incorrect"(87)

c++ - 如何打印调试 C++ Win32 DLL?

windows - 在 Windows XP 上监视显示器电源事件

c++ - 随机数生成器总是选择相同的数字

c++ - 如何从字符串中解析 double?

c++ - 为什么这个涉及重载运算符和隐式转换的 C++ 表达式不明确?

c++ - 为什么不是 "0"== "0"?

windows - Windows 8.1 后 WinAPI 弃用