COM笔记-关于HRESULT

COM笔记-关于HRESULTHRESULTHRESULT(Here'stheRESULT)值分成32位值,HRESULT值中16到30这15个比特位包含的是设备代码。设备代码标识的是可以返回HRESULT返回代码的操作系统部分。由于Windows操作系统是由Microsoft开发的。因此它保留有定义设备代码的权

大家好,欢迎来到IT知识分享网。

HRESULT

HRESULT(Here’s the RESULT)值分成32位值,

 COM笔记-关于HRESULT

COM笔记-关于HRESULT

COM笔记-关于HRESULT

HRESULT值中16到30这15个比特位包含的是设备代码。设备代码标识的是可以返回HRESULT返回代码的操作系统部分。由于Windows操作系统是由Microsoft开发的。因此它保留有定义设备代码的权力。

 COM笔记-关于HRESULT

HRESULT值的查找

获取与某个特定HRESULT值相应的错误消息并将其显示出来的方法。以显示标准COM(以及AcitveX)错误消息,可以使用Win32 API中的FormatMessage函数

 

HRESULT值的使用

注意:

成功的代码有多个,失败的代码也有多个

失败代码可能会发生变化。

1多状态代码

一个函数在各种情况下返回的状态代码通常将包含多个成功代码及多个失败代码。这就是我们为什么要使用SUCCEEDED及FAILED宏的原因。一般不能直接将HRESULT值同某个成功代码(如S_OK)进行比较以决定某个函数是否成功。

 

2错误可能会发生变化

在编写好客户程序之后,其他人可能会定义新的HRESULT错误代码,客户程序也可能会遇到相应的错误。

 

用户自己代码的定义

关于定义自己的HRESULT的一般性规则:

1、不要将0x0000及0x01ff范围内的值作为返回代码。这些值是为COM所定义的FACILITY_ITF代码而保留的。只有遵循这一规则,才不致使用户自己定义的代码同COM所定义的代码相混淆。

2、不要传播FACILITY__ITF错误代码。

3、尽可能地使用通用的COM成功及失败代码。

 

可以使用MAKE_HRESULT宏来定义一个HRESULT值。此宏可以根据所提供的严重级别、设备代码及返回代码生成一个HRESULT值。

 

MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 100);

MAKE_HRESULT(SEVERITY_SUCCESS,, FACILITY_ITF, 101);

对于自己定义的返回代码的命名,有一个约定 是在其名称前面加上组件或接口的名称。

如:

AIRPLANE_E_LANDINGWITHGEARUP

HELICOPTER_S_ROTORRPMGREEN

本文地址:COM笔记-关于HRESULT

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/30730.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信