对于无效输入,GetFileAttributes 返回 FILE_ATTRIBUTE_DIRECTORY

Tad*_*zys 0 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
}    
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Dav*_*nan 5

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

因此,在我们信任系统的基础上,逻辑结论是," "在运行此代码的计算机上存在一个以当前工作卷的根级别命名的目录。