HRESULT和GUID

HRESULT

        HRESULT类型并不是一个指向某个结果的句柄,它实际上是一个可分成三个域的32位值,三个部分的含义如图1

    系统所生成的HRESULT值在Win32的头文件WINERROR.h中有定义。如图1HRESULT值中最重要的比特位表示函数调用是否成功。这种设计是的函数可以返回多个表示成功或失败的代码。HRESULT的低16为包含的就是函数的返回代码,其余的15为包含的是此类型及返回值起源的更详细的信息。

    最常用的错误代码如下表,前缀S_表示成功返回,E_表示失败返回。

名称

含义

S_OK

函数成功。在某些情况下,它还表示函数返回了一个布尔真值。S_OK被定义为0

NOERROR

S_OK

S_FALSE

函数成功并返回一个布尔假值。S_FALSE被定义为1

E_UNEXPECTED

无法预知的失败。

E_NOIMPLE

成员函数未被实现。

E_NOINTERFACE

组件不支持所请求的接口。此值将由QueryInterface函数返回。

E_OUTOFMEMORY

组件无法分配所需的内存。

E_FAIL

没有指定的失败。

    一般不能直接将HRESULT值同某个成功代码如S_OK或失败代码E_FAIL比较,而应使用SUCCEEDEDFAILED宏。

全局唯一标识符GUID

        GUIDglobally unique identifier)实际上是组件和接口的标识号。而IID实际上是一个128比特(16字节)的一个GUID结构。

GUID在时间和空间上都是唯一的。为保证空间唯一性,每一个GUID需要一个对于生成他的计算机来说是单一的48位值,这个值一般是机器上所装的网卡的地址。如果计算机上没有网卡,此单一值将用其他算法来生成。为保证时间上的唯一性,每一个GUID值具有一个60位的时间戳。这个时间戳表示的是自 1853 10 15 00000000以来以100纳秒未间隔的计数值。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值