HRESULT返回值说明 如果函数正常执行,则返回 S_OK,同时真正的函数运行结果则通过参数指针返回。如果遇到了异常情况,则COM系统经过判断,会返回相应的错误值。

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  不支持接口

HRESULT 其实是一个双字节的值,其最高位(bit)如果是0表示成功,1表示错误。具体参见 MSDN 之"Structure of COM Error Codes"说明。我们在程序中如果需要判断返回值,则可以使用比较运算符号;switch开关语句;也可以使用VC提供的宏: 
     HRESULT hr = 调用组件函数;
      if( SUCCEEDED( hr ) ){...} // 如果成功
      ......
      if( FAILED( hr ) ){...} // 如果失败
      ......

大多数 COM 函数以及一些接口成员函数的返回值类型均为 HRESULT 类型。HRESULT 类型的返回值反映了函数中的一些情况,其类型定义规范如下:

31 30 29 28                    16 15                                0
  |-----|--|------------------------|-----------------------------------|

类别码 (30-31) 反映函数调用结果:
                00 调用成功
                01 包含一些信息
                10 警告
                11 错误
自定义标记(29) 反映结果是否为自定义标识,1 为是,0 则不是;
操作码 (16-28) 标识结果操作来源,在 Windows 平台上,其定义如下:
                #define FACILITY_WINDOWS         8
                #define FACILITY_STORAGE         3
                #define FACILITY_RPC             1
                #define FACILITY_SSPI            9
                #define FACILITY_WIN32           7
                #define FACILITY_CONTROL         10
                #define FACILITY_NULL            0
                #define FACILITY_INTERNET        12
                #define FACILITY_ITF             4
                #define FACILITY_DISPATCH        2
                #define FACILITY_CERT            11
操作结果码(0-15) 反映操作的状态,WinError.h 定义了 Win32 函数所有可能返回结果。
                以下是一些经常用到的返回值和宏定义:
                S_OK            函数执行成功,其值为 0 (注意,其值与 TRUE 相反)
                S_FALSE         函数执行成功,其值为 1
                S_FAIL          函数执行失败,失败原因不确定
                E_OUTOFMEMORY   函数执行失败,失败原因为内存分配不成功
                E_NOTIMPL       函数执行失败,成员函数没有被实现
                E_NOTINTERFACE  函数执行失败,组件没有实现指定的接口

不能简单地把返回值与 S_OK 和 S_FALSE 比较,而要用 SECCEEDED 和 FAILED 宏进行判断。

HRESULT返回值解析相关推荐

  1. HRESULT返回值说明

    From: http://www.blogjava.net/JAVA-HE/archive/2010/01/04/308134.html HRESULT返回值说明 如果函数正常执行,则返回 S_OK, ...

  2. HRESULT返回值

    HRESULT返回值 HRESULT返回值说明 如果函数正常执行,则返回 S_OK,同时真正的函数运行结果则通过参数指针返回.如果遇到了异常情况,则COM系统经过判断,会返回相应的错误值. HRESU ...

  3. 微信对账单接口返回值解析

    最近在做微信支付相关的业务,在调用微信的对账单接口时,遇到一个当时感觉很头大的问题,为什么说当时很头大呢?因为现在这个问题已经被我解决了!嘿嘿... 好吧,言归正传.我遇到的问题就是在调用微信的对账单 ...

  4. 根据WebService地址展示方法列表、入参和返回值(解析wsdl)

    项目源码:https://gitee.com/xuchuruo/parsing_wsdl(有些jar包Maven上无法下载) ------------------------------------- ...

  5. 百度地图Bounds返回值解析

    转载自:http://www.cnblogs.com/qiongmiaoer/archive/2013/03/09/2951706.html 使用到百度api获取到的bounds,相信大家都会觉得蹩脚 ...

  6. Java微信对账接口返回值解析

    2019独角兽企业重金招聘Python工程师标准>>> public static void main(String[] args) throws Exception {String ...

  7. java对账_Java微信对账接口返回值解析

    public static void main(String[] args) throws Exception { String downloadbill = getDownloadbill();// ...

  8. 千川数据返回值解析(AES)解密

    之前说过,所有的技术如果不能用来提升效率或者在实际生产中产生价值,那么它其实是没有价值的,哪怕你的技术再屌炸天.因为我的工作性质,我的技术并不是为了抓取数据而搞爬虫,更多是为了帮助到运营营销等方面.干 ...

  9. Fegin RPC调用远程接口返回值解析问题:java.util.LinkedHashMap cannot be cast to com.xxx.xxx

    现象: BaseResponse 对象中有个Property名为result,为Object 类型,接口为这个result赋值是一个Map<String, NodeDetail> 对象,结 ...

最新文章

  1. 明年东京奥运会,将首次引进人脸识别系统
  2. ASP.NET MVC WebAPI实现文件批量上传
  3. 设置超链接在各种状态改变的样式颜色
  4. C语言炫酷的文件操作
  5. html怎么缩进字符间距,css字符间距(css文字间距怎么设置)
  6. python解析mht文件_[原创].mht文件图片解析工具
  7. 2021年国家统计局发布全国统计用区划代码和城乡划分代码
  8. pdf如何转换成excel?教你几个方法
  9. 安装pyinstaller出错的解决办法及刷csdn访客数工具打包
  10. 未能加载文件或程序集“XXX.dll”或它的某个依赖项的解决方法
  11. mysql统计一年中每周的数据,week(时间)和week(时间,1)不同
  12. 2019纪中集训总结
  13. B. Multiply by 2, divide by 6(数学) Codeforces Round #653 (Div. 3)
  14. linux查看cpu核数和内存指令
  15. C++实现简易计算器(正则表达式计算)
  16. 宿命之战:程序员VS产品经理
  17. [转帖]保罗·艾伦的故事
  18. C++四则运算(带负数小数,不含大数)
  19. js实现xml转json
  20. python自动化-Python基础语言篇(字符串数据类型)

热门文章

  1. MTK平台4G执法记录仪开发
  2. C语言八进制数(避坑指南)
  3. hadoop集群启动与关闭需要输入密码
  4. html表单 asp验证,ASP中JavaScript处理复杂表单的生成与验证
  5. 硬盘基本知识(磁道、扇区、柱面、磁头数、簇、MBR、DBR)
  6. python xlrd用法_python3 xlrd包的用法
  7. 一份 “内卷”面试题跟答案,让我年初跳槽14K 变成了 28K
  8. 微信控制家庭智能小管家机器人(附语音聊天、人脸检测)
  9. vue-router路由懒加载
  10. java.lang.SecurityException: Permission Denial