HRESULT:区分自定义代码和系统一

HRESULT: distinguish custom code from system one

类似的问题was asked before,但我还没有找到答案。

据我所知,为了制作自定义 HRESULT 代码,我创建了一个 .mc 文件,我在其中描述了代码,然后编译它并获得一个 .h 文件。但是我不知道如何防止可能与系统重叠。

示例:

LanguageNames=(English=0x409:MSG00409)
MessageId = 0x0
Severity = Success
Facility = Application
SymbolicName = CUSTOME_CODE
Language=English
Cusome message
.

产生

#define CUSTOME_CODE                     0x00000000L

其实和S_OK是一样的。

如果我的方法 return CUSTOME_CODE ,调用者无法将它与 S_OK;

区分开来

Wiki 说 HRESULT 包含一些用于区分 Microsoft / 用户定义的代码属性,但我不明白如何设置它。 MSDN 还说该位只是 "reserved".

如何编写不能与系统代码重叠的代码?

描述接口特定 return 代码的 HRESULT 应包含 FACILTY_ITF 设施代码。但是请注意,0x0000 和 0x01FF 之间的 return 值保留给 COM 定义的 FACILITY_ITF 代码。

有关详细信息,请参阅 this link。