com技术内幕--读书笔记(6)

本文是关于COM技术的读书笔记,主要探讨了HRESULT的结构及其使用,包括SUCCEEDED和FAILED宏的判断,以及自定义HRESULT的规则。接着介绍了GUID在组件和接口标识中的应用,以及如何生成和使用GUID。此外,还详细阐述了Windows注册表在COM组件定位中的作用,特别是CLSID、ProgID与组件注册的关联。最后提到了COM库的一些核心函数,如CoInitialize和CoUninitialize,以及内存管理和字符串与GUID的相互转换函数。
摘要由CSDN通过智能技术生成

第6章

在前五章,作者将细节问题隐藏起来。本章主要将讨论COM的细节问题--HRESULT,GUID,注册表,最后介绍了COM库中一些函数。


HRESULT:

是QueryInterface的返回值。在设计组件的时候,可以用它来返回争取及错误代码。


HRESULT值实际上是一个可分成3个域的32位值,

HRESULT的低16位(0-15位)是函数返回值;16到30bit位返回的是设备值(操作系统代码),可以使用HRESULT_FACILITY宏来查看HRESULT值的设备;31bit返回严重级别。

WIN32的API中的FormatMessage函数可以将HRESULT错误信息打印出来,判断成功和失败使用SUCCEEDED和FAILED宏。

用户还可以自定义跟接口相关的HRESULT返回值,其中设备值部分必须是FACILITY_ITF,使用MAKE_HRESULT宏。还有几条规则:

(1)不能使用0x0000到0x01FF范围内的值。这是COM定义的FACILITY_ITY保留值。

(2)不要传播FACILITY_ITY错误代码。

(3)尽可能使用通用的COM成功和失败代码。

(4)避免定义自己的HRESULT,可以在函数中使用一个输出参数。


HRESULT其实是一个LONG型的值。预定义的HRESULT值在WINERROR.H,打开该文件看了一下。第31bit是一个Severity - indicates success/fail

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值