在Windows中,有没有办法将errno转换为HRESULT?

Ale*_*son 6 windows com errno hresult

我知道HRESULT_FROM_WIN32将Win32错误代码转换为HRESULT 的宏,有没有办法从errno错误开始转换?

rko*_*egi 5

简而言之,没有.

http://msdn.microsoft.com/en-us/library/5814770t%28v=vs.100%29.aspx起

errno值是在各种错误情况下分配给errno的常量.

ERRNO.H包含errno值的定义.但是,并非所有ERRNO.H中给出的定义都用于32位Windows操作系统.ERRNO.H中的某些值用于保持与UNIX系列操作系统的兼容性.

32位Windows操作系统中的errno值是XENIX系统中errno值的子集.因此,errno值不一定与Windows操作系统的系统调用返回的实际错误代码相同.要访问实际的操作系统错误代码,请使用包含此值的_doserrno变量.

当然,您可以使用switch-cases编写自己的函数,这将"转换"错误代码.

您可以看到在Windows上定义了大约80个errno值.

  • 这实际上是不正确的。通常 errno 具有 CRT 错误,而 _doserrno 具有 win32 错误,因此从技术上讲 HRESULT_FROM_WIN32(_doserrno) 应该可以工作。您是正确的,并非所有 errno 值都在 Windows 中使用,就像 Windows 中不使用 ENODEV 一样。 (2认同)