将errno.h错误值转换为Win32 GetLastError()等效项

Mat*_*ner 10 c++ winapi posix errno dokan

我正在写一个之间的层POSIX文件系统,和Windows使用杜坎,并且需要误差值转换的错误号样(EINVAL,ENOENT,等),在Win32等效打电话时你会收到GetLastError()(比如ERROR_INVALID_PARAMETER).

是否有可用于执行这些转换的现有功能,库或参考?

我通常会在Python源代码中寻找灵感来解决这些问题,但Python巧妙地避免了这种需求(至少就我所知).

作为一个例子,EINVAL (22)将转换为ERROR_INVALID_PARAMETER (87).

Van*_*mex 11

我过去做过关于这个主题的实验,主要基于Microsoft DOSMAP.CPP单元.但是,我当时取消了该项目,因为错误映射并不总是适用于特定的错误代码.例如,不是每个POSIX版本回报EINVALERROR_INVALID_ACCESS,他们中的一些返回EACCES代替.我还对POSIX.1-2008的errno.h系统错误号DOSMAP.CPP,mingw.c,Postgresql error.c,tclWinError.c,MySQL my_winerr.c等进行了比较; 有时,映射规则因特定错误代码而异.就个人而言,我建议你只处理它们之间的一致错误代码映射.


Che*_*Alf 6

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

无论如何,我只是用谷歌搜索了“ errno to getlasterror”,第一个谷歌命中提供了来自Cygwin来源的该通讯录

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

干杯和健康。