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

时间:2018-02-14 12:07:31

标签: c++ windows com hresult

类似问题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相同。

如果我从我的方法返回CUSTOME_CODE,则来电者无法将其与S_OK区分开来;

Wiki说HRESULT包含一些用于区分Microsoft /用户定义代码属性的内容,但我不了解如何设置它。此外,MSDN表示该位只是"保留"。

如何制作不能与系统重叠的代码?

1 个答案:

答案 0 :(得分:3)

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

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