c/c++语言开发共享Windows CreateFile可能的错误代码

我正在使用将Windows,Linux和Mac文件IO调用抽象为宏(以避免C运行时,因此没有fopenfclose等……)。 我实际上有相当多的工作,但我遇到了绊脚石。

我试图将每个平台可能抛出的所有可能错误归结为常见的错误:未找到,存在,无效访问等。

Linux显然是很好的文档,Mac甚至有最常见的文档,但Windows没有指定为其本机文件I / O函数抛出哪些错误。 我们显然需要使用GetLastError() ,但我找不到可能值的引用。

这个怎么样?

我正在编写Windows应用程序并使用CreatFile() API。 我想尽可能优雅地处理任何错误,并且可能从错误中恢复而不是告诉用户“废话!不能那样做”。 但是MSDN文档没有列出可能生成的错误代码。

有没有人引用Windows文件函数可能生成的错误代码,特别是(现在) CreateFile()

    Windows支持可安装的文件系统。 Microsoft无法预测第三方文件系统驱动程序将生成哪种错误,因此不会尝试承诺严格的可能错误代码子集。

    所以是的,你真的必须使用GetLastError()。 FormatMessage()函数可用于为错误代码生成可读字符串。 通常,用户将获得一个体面的错误消息,帮助他诊断根本原因。 这并不足以说明智利的地震切断了海底通信电缆,但它肯定会帮助他开始研究网络问题。 您也可以使用CRT包装,但不可避免地会失去特异性。 这可能是您必须处理的服务调用,而不是用户的IT人员。

    避免C运行时

    你正在重新发明轮子。 C运行时已经创建,因此人们可以编写独立于平台的程序(理论上)可以在任何地方编译,只要您没有使用特定于平台的东西。 现在,你正在做同样的事情。

    我建议停止这样做,并使用标准的C文件function,或者支持多个平台的跨平台框架。 你可以使用Boost或Qt 4。

    关于你的问题

    有没有人引用Windows文件函数可能生成的错误代码,

    MSDN上提供了WinAPI文档,您应该阅读它。
    的CreateFile
    GetLastError函数
    SystemErrorCodes

    有没有人引用Windows文件function可能生成的错误代码

    因为CreateFile不仅处理“文件”(它也适用于目录,管道,物理设备等),您应该假设它可以生成任何存在的操作系统代码。 根据msdn,总共有16000个代码。 故事的道德:如果您想生成人类可读的消息,请使用FormatMessage 。 如果文档没有列出可能的错误代码(对于CreateFile),它自动意味着CreateFile可以生成任何存在的错误代码。

      以上就是c/c++开发分享Windows CreateFile可能的错误代码相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/522956.html

      (0)
      上一篇 2020年12月11日
      下一篇 2020年12月11日

      精彩推荐