HRESULT E_FAIL 0x80004005 和 0x80000008 的错误有什么区别?

What's the different between HRESULT E_FAIL error of 0x80004005 and 0x80000008?

本文关键字:错误 什么 区别 0x80000008 FAIL 0x80004005 HRESULT      更新时间:2023-10-16

我有点困惑,我检查了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 -我得到所需的行为"文件名无效"。

那么我应该用什么呢?有什么区别?由于

这些是在条件块中定义的。

第二个定义在:

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

和第一个

#else

这样回答你的问题了吗?

相关文章: