【问题标题】:Convert errno.h error values to Win32 GetLastError() equivalents将 errno.h 错误值转换为 Win32 GetLastError() 等效项
【发布时间】:2011-04-26 12:35:52
【问题描述】:

I'm writingPOSIX filesystem 之间的层,Windows 使用Dokan,需要将errno kindEINVALENOENT 等)的错误值转换为 Win32 等效项'会在调用GetLastError()(如ERROR_INVALID_PARAMETER)时收到。

我是否可以使用现有的函数、库或参考来执行这些转换?

我通常会在 Python 源代码中寻找有关这些问题的灵感,但 Python 巧妙地避免了这种需要(至少据我所知)。

例如,EINVAL (22) 将转换为 ERROR_INVALID_PARAMETER (87)

【问题讨论】:

    标签: c++ winapi posix errno dokan


    【解决方案1】:

    我过去做过一个关于这个主题的实验,主要基于微软DOSMAP.CPP单元。但是,我当时取消了该项目,因为错误映射并不总是适用于特定的错误代码。例如,不是每个 POSIX 版本都为ERROR_INVALID_ACCESS 返回EINVAL,其中一些版本返回EACCES。我还比较了errno.h system error numbers of POSIX.1-2008DOSMAP.CPPmingw.cPostgresql error.ctclWinError.c、MySQL my_winerr.c等等;有时,对于特定的错误代码,它们之间的映射规则会有所不同。就个人而言,我建议您只处理它们之间一致的错误代码映射。

    【讨论】:

      【解决方案2】:

      对于每个errno,通常有许多可能的GetLastError 值,因此您的想法可能不一定可行。

      无论如何,我只是用谷歌搜索了“errno to getlasterror”,第一个谷歌点击提供了来自 Cygwin 来源的this correspondence list

      这是错误的方式,GetLastErrorerrno,但也许有帮助?

      干杯&hth。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-27
        • 2013-03-07
        • 1970-01-01
        • 1970-01-01
        • 2018-03-27
        • 2020-02-20
        • 1970-01-01
        相关资源
        最近更新 更多