易截截图软件、单文件、免安装、纯绿色、仅160KB

win32错误码和linux的错误码的简单转换

我们知道,在linux下,我们用errno来查看API返回的错误码,并用strerror(errno)来获得错误信息。
而在windows下也有这的错误码,可以用GetLastError
来获得,在windows下,要获得错误码对应的信息就没有linux下那么方便了。
其获得方式可以参考《windows核心编程》。
但我们也可以用linux下的api来获得windows下的错误信息,其条件就是把windows下的错误码转换成linux下相应的错误码,然后再调用
strerror(errno)来获得错误信息。
如果我们在windows下用cygwin来写程序,那么从windows下的API获得的错误吗,如果用linux下的函数strerror(errno)来显示的话,那么我们就要做一个win32错误码和linux下错误码的一个简单转换。
这个简单转换的函数如下:
int w32error_to_errno(unsigned int w32error)
{
switch (w32error) {
case ERROR_INVALID_FUNCTION:
return EBADRQC;
case ERROR_FILE_NOT_FOUND:
case ERROR_PATH_NOT_FOUND:
case ERROR_INVALID_NAME:
return ENOENT;
case ERROR_TOO_MANY_OPEN_FILES:
return EMFILE;
case ERROR_ACCESS_DENIED:
return EACCES;
case ERROR_INVALID_HANDLE:
return EBADF;
case ERROR_NOT_ENOUGH_MEMORY:
return ENOMEM;
case ERROR_OUTOFMEMORY:
return ENOSPC;
case ERROR_INVALID_DRIVE:
case ERROR_BAD_UNIT:
return ENODEV;
case ERROR_WRITE_PROTECT:
return EROFS;
case ERROR_NOT_READY:
case ERROR_SHARING_VIOLATION:
return EBUSY;
case ERROR_BAD_COMMAND:
return EINVAL;
case ERROR_SEEK:
case ERROR_NEGATIVE_SEEK:
return ESPIPE;
case ERROR_NOT_SUPPORTED:
return EOPNOTSUPP;
case ERROR_BAD_NETPATH:
return ENOSHARE;
default:
/* generic message */
return ENOMSG;
}
}
那么,如果我们想输出错误信息,就可以这样了
errno = w32error_to_errno(GetLastError());
strerror(errno);
虽然,不能获得完全准确的错误信息,但这个对于夸win32和linux的编程来说,至少可以省下一部分麻烦。


相关文档:

Linux设置环境变量小结

1、总结背景
在linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command not found”的提示内容。如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁琐了。这涉及到环境变量PATH的设置问题,而PATH的设置也是在linux下定制环境变量的一个组成部分。本案例基于RedHat AS4讲 ......

Linux 下php的安装

环境软件版本介绍:
 
   APACHE 2.0.59
   PHP5.2.3
   MYSQL5.0.45
   GD-2.0.35
   Zend Optimizer v3.3.0
  
                     ......

在 Linux 上构建一个 RADIUS 服务器

作为一名网络管理员,您需要为您所需管理的每个网络设备存放用于管理的用户信息。但是网络设备通常只支持有限的用户管理功能。学习如何使用 Linux™ 上的一个外部 RADIUS 服务器来验证用户,具体来说是通过一个 LDAP 服务器进行验证,可以集中放置存储在 LDAP 服务器上并且由 RADIUS 服务器进行验证的用户信息,从而既 ......

Fedora Linux 下安装配置C开发环境Code::Blocks


一、提前的话
  要说C语言和Linux的关系大家应该都不会陌生,Linux系统内核就是用C语言开发的,所以所有的Linux系统下面 都会有C的编译调试工具,不过这些工具都是命令式的,正式开发的话会很不方便。Fedora在安装的时候可以选择安装Fedora Eclipse,这个IDE很强大,C,C++,Java,Python等等都支持,而且编译,调试和 ......

Fedora Linux 下安装配置C开发环境Code::Blocks


一、提前的话
  要说C语言和Linux的关系大家应该都不会陌生,Linux系统内核就是用C语言开发的,所以所有的Linux系统下面 都会有C的编译调试工具,不过这些工具都是命令式的,正式开发的话会很不方便。Fedora在安装的时候可以选择安装Fedora Eclipse,这个IDE很强大,C,C++,Java,Python等等都支持,而且编译,调试和 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号