В Windows есть ли способ преобразовать errno в HRESULT?

Я знаю HRESULT_FROM_WIN32 макрос для преобразования кода ошибки Win32 в HRESULT, есть ли способ сделать преобразование, начиная с errno ошибка?

1 ответов


короче, нет.

по состоянию на 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.

значения errno в 32-разрядной операционной системе Windows являются подмножеством значения для errno в системах XENIX. таким образом, значение errno не обязательно такой же, как фактический код ошибки, возвращаемый системой звонок из операционных систем Windows. Для доступа к фактическому код ошибки операционной системы, используйте переменную _doserrno, которая содержит это значение.

конечно, вы можете написать свой собственная функция с switch-cases, которая будет "переводить" коды ошибок.

вы можете видеть, что в windows определено около 80 значений errno.