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)
举例如下:
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
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) |
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
相关文章推荐
- 沉浸式状态栏
- jquery判断checkbox是否选中及改变checkbox状态
- [Python进阶-7]文件和目录的IO操作,以及json序列化和反序列化
- 【计蒜客】难题题库 001 A+B+C问题
- 五校联考六T2
- yii2 - 邮件发送-示例
- C++输入输出流实现未知数目的输入(相当于实现python的split函数)
- mac开发android之环境搭建--JDK
- AngularJS 指令之 ng-style
- android下的名词/片段解释
- SAP系统常用配置参数设定
- Linux内核模块指南(第九章===>第十章完)。。。翻译完。。。
- Qt学习交流(广告)
- Spineer的用法
- UVa 10340 - All in All【水】
- 五校联考六T1
- 解决虚拟机克隆CentOS系统后eth0消失,显示eth1的问题
- QT学习(打个广告)
- 第六周--建设链栈的算法库
- poj-5497