【发布时间】:2009-05-01 18:57:33
【问题描述】:
我正在将一些 C++ 代码从 UNIX 移植到 Windows,它检测到 EDQUOT 错误的发生,这表明尝试超过当前用户的磁盘配额失败。 Visual Studio 的
【问题讨论】:
-
运行时库源代码显示 ENOSPC 仅在一个地方生成,不出所料的是“写入”。如果 Windows 系统调用 WriteFile 未能写入任何字节,则会发生三个分支之一。
-
如果出现 Win32 错误,则映射并返回。您可能希望 NT_STATUS_QUOTA_EXCEEDED 映射到 EDQUOT,或者根本就没有映射到任何东西,但事实并非如此。第二个分支是关于设备的,可以忽略。第三个分支是其他一切,它产生 ENOSPC。
-
请忽略我上面关于 NT_STATUS_QUOTA_EXCEEDED 的评论;那必须是内核错误代码,而不是 Win32 错误代码。 Win32级别有各种与配额相关的错误代码,恐怕我得写代码看看它们在什么情况下出现,这样我才能弄清楚它们对CRT可能有什么影响.让我担心的一件事是,CRT 似乎没有将任何磁盘配额错误映射到任何东西上,而是退回到 EINVAL。
标签: visual-studio visual-studio-2005 msvcrt errno