HRESULT |
值 |
含义 |
S_OK |
0x00000000 |
成功 |
S_FALSE |
0x00000001 |
函数成功执行完成,但返回时出现错误 |
E_INVALIDARG |
0x80070057 |
参数有错误 |
E_OUTOFMEMORY |
0x8007000E |
内存申请错误 |
E_UNEXPECTED |
0x8000FFFF |
未知的异常 |
E_NOTIMPL |
0x80004001 |
未实现功能 |
E_FAIL |
0x80004005 |
没有详细说明的错误。一般需要取得 Rich Error 错误信息(注1) |
E_POINTER |
0x80004003 |
无效的指针 |
E_HANDLE |
0x80070006 |
无效的句柄 |
E_ABORT |
0x80004004 |
终止操作 |
E_ACCESSDENIED |
0x80070005 |
访问被拒绝 |
E_NOINTERFACE |
0x80004002 |
不支持接口 |
大多数 COM 函数以及一些接口成员函数的返回值类型均为 HRESULT 类型。
HRESULT 类型的返回值反映了函数中的一些情况,其类型定义规范如下:
图一、HRESULT 的结构
HRESULT 其实是一个双字的值,具体参见 MSDN 之"Structure of COM Error Codes"说明,这里不详述。
我们在程序中如果需要判断返回值,则可以使用比较运算符号;switch开关语句;也可以使用VC提供的宏:
HRESULT hr = 调用组件函数;
if( SUCCEEDED( hr ) ){...} // 如果成功
......
if( FAILED( hr ) ){...} // 如果失败