【问题标题】:What's the different between HRESULT E_FAIL error of 0x80004005 and 0x80000008?HRESULT E_FAIL 错误 0x80004005 和 0x80000008 有什么区别?
【发布时间】:2015-07-15 14:53:52
【问题描述】:

我有点困惑, 我检查了 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 时 - 我得到 desired 行为“文件名无效。”

那么我应该使用什么?有什么不同? 谢谢

【问题讨论】:

  • 这就是为什么试图理解零上下文代码不起作用的原因!
  • 嗯,我添加了上下文 - 在打开文件对话框下。
  • 不,我的意思是,你错过了 #if #else 并且只考虑了孤立的定义。上下文——即周围的代码——被证明是回答问题的关键部分(事实上,the 答案!)而且这种情况经常发生。因此,我们可以从中吸取教训。 :)
  • 我明白 :) 好吧,正如我在你的回答中回答的那样 - 我现在明白了。谢谢!

标签: c++ shell-extensions hresult


【解决方案1】:

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

第二个是在以下情况下定义的:

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

以及第一次何时:

#else

这能回答你的问题吗?

【讨论】:

  • 啊,我错过了(我将其移至托管 C# 代码)。 “_MAC”宏代表什么?如果我要将它迁移到 C#,我应该使用哪组宏?
  • @ArielB:同一个?这完全取决于你。我不知道您的迁移涉及或需要什么...
  • 也是第一条评论 - 谢谢 :) 它实际上是我们拥有的第 3 方和非常复杂的代码,我发现使用了不正确的 E_FAIL。所以我只是想确定为什么。无论如何-它代表MAC OS-所以我需要其他宏。 ftp.icpdas.com/pub/beta_version/VHM/wince600/…
猜你喜欢
  • 2021-06-05
  • 2022-11-11
  • 1970-01-01
  • 2015-03-10
  • 2011-06-29
  • 1970-01-01
  • 2013-09-21
  • 2016-08-20
  • 1970-01-01
相关资源
最近更新 更多