您的位置:首页 > 其它

HRESULT用法

2015-10-06 16:54 686 查看
HRESULT 常被用作COM调用的返回值。充分利用HRESULT返回信息可以帮助提高我们的代码质量,提供程序的健壮性。以下是HRESULT用法小结:

1. HRESULT 值及其含义。

S_OK 操作成功 0x00000000

S_FALSE 函数调用成功 #define S_FALSE ((HRESULT)1L)

E_UNEXPECTED 意外的失败 0x8000FFFF   

E_NOTIMPL 未实现 0x80004001   

E_OUTOFMEMORY 未能分配所需的内存 0x8007000E   

E_INVALIDARG 一个或多个参数无效 0x80070057   

E_NOINTERFACE 不支持此接口 0x80004002   

E_POINTER 无效指针 0x80004003   

E_HANDLE 无效句柄 0x80070006   

E_ABORT 操作已中止 0x80004004   

E_FAIL 未指定的失败 0x80004005   

E_ACCESSDENIED 一般的访问被拒绝错误 0x80070005

2.HRESULT使用方法。

其中最常用的是S_OK,S_FALSE,E_FAIL.

S_OK 操作成功,调用成功。需要用SUCCEEDED(hr) 来判断。

#define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0)

S_FALSE 函数调用成功,可以处理有问题。需要用(hr == S_FALSE)来判断

E_FAIL 未指定的失败,一般来讲是函数调用错误。需要用(hr == E_FAIL) 来判断。

从以上分析可以看出,FAILED 泛指一切错误。

#define FAILED(hr) (((HRESULT)(hr)) < 0)

举例如下:

public static HRESULT Save(
CATDocument&
iDocument,
CATBoolean
iSavePointedIfNecessary
= TRUE)
Returns:

S_OK : The document was saved successfully.

S_FALSE : The document does not need to be saved.

E_FAIL : The document save operation failed.
转自:/article/11026967.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: