Чем отличается ошибка 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 — я получаю «Unspecified error»

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

Так что я должен использовать? какая разница?
Спасибо

1

Решение

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

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

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

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

#else

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

2

Другие решения


По вопросам рекламы [email protected]