В чем разница между ошибкой HRESULT E_FAIL 0x80004005 и 0x80000008?

Я немного запутался, я проверил WinError.h и увидел 2 отклонения E_FAIL:

//
// MessageId: E_FAIL
//
// MessageText:
//
// Unspecified error
//
#define E_FAIL                           _HRESULT_TYPEDEF_(0x80000008L)

//
// MessageId: E_FAIL
//
// MessageText:
//
// Unspecified error
//
#define E_FAIL                           _HRESULT_TYPEDEF_(0x80004005L)

Одна проблема, с которой я столкнулся, заключается в том, что я реализую расширения пространства имен, и при открытии файла, который не существует, я получаю следующее:

при возврате 0x80000008 - я получаю «Неопределенная ошибка»

при возврате 0x80004005 - я получаю желаемое поведение «Имя файла недействительно».

Так что мне использовать? какая разница? Благодарность


person ArielB    schedule 15.07.2015    source источник
comment
Вот почему попытки понять код с нулевым контекстом не работают !!   -  person Lightness Races in Orbit    schedule 15.07.2015
comment
ммм, я добавил контекст - в диалоге открытия файла.   -  person ArielB    schedule 15.07.2015
comment
Нет, я имею в виду, что вы пропустили #if #else и рассматривали только определения в отдельности. Контекст, то есть окружающий код, оказался важной частью ответа на вопрос (фактически, ответ!), И это очень часто бывает. Так что из этого можно извлечь урок. :)   -  person Lightness Races in Orbit    schedule 15.07.2015
comment
Я понимаю :) ну, как я ответил в вашем ответе - теперь я понимаю. Спасибо!   -  person ArielB    schedule 15.07.2015


Ответы (1)


Они определены в условном блоке.

Второй определяется, когда:

#if defined(_WIN32) && !defined(_MAC)

и первый, когда:

#else

Это ответ на ваш вопрос?

person Lightness Races in Orbit    schedule 15.07.2015
comment
ах, я пропустил это (я перемещаю его в управляемый код C #). что означает макрос _MAC? Какой набор макросов мне следует использовать, если я перехожу на C #? - person ArielB; 15.07.2015
comment
@ArielB: Те же самые? Все зависит от вас. Я не знаю, что включает в себя или требует ваша миграция ... - person Lightness Races in Orbit; 15.07.2015
comment
также первый комментарий - спасибо :) Это на самом деле сторонний и очень сложный код, который у нас есть, и я обнаружил, что использовался неправильный E_FAIL. так что я просто хотел знать почему. в любом случае - он представляет MAC OS - поэтому мне нужны другие макросы. ftp.icpdas.com/pub/ beta_version / VHM / wince600 / - person ArielB; 15.07.2015