HRESULT返回值解析
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返回值解析相关推荐
- HRESULT返回值说明
From: http://www.blogjava.net/JAVA-HE/archive/2010/01/04/308134.html HRESULT返回值说明 如果函数正常执行,则返回 S_OK, ...
- HRESULT返回值
HRESULT返回值 HRESULT返回值说明 如果函数正常执行,则返回 S_OK,同时真正的函数运行结果则通过参数指针返回.如果遇到了异常情况,则COM系统经过判断,会返回相应的错误值. HRESU ...
- 微信对账单接口返回值解析
最近在做微信支付相关的业务,在调用微信的对账单接口时,遇到一个当时感觉很头大的问题,为什么说当时很头大呢?因为现在这个问题已经被我解决了!嘿嘿... 好吧,言归正传.我遇到的问题就是在调用微信的对账单 ...
- 根据WebService地址展示方法列表、入参和返回值(解析wsdl)
项目源码:https://gitee.com/xuchuruo/parsing_wsdl(有些jar包Maven上无法下载) ------------------------------------- ...
- 百度地图Bounds返回值解析
转载自:http://www.cnblogs.com/qiongmiaoer/archive/2013/03/09/2951706.html 使用到百度api获取到的bounds,相信大家都会觉得蹩脚 ...
- Java微信对账接口返回值解析
2019独角兽企业重金招聘Python工程师标准>>> public static void main(String[] args) throws Exception {String ...
- java对账_Java微信对账接口返回值解析
public static void main(String[] args) throws Exception { String downloadbill = getDownloadbill();// ...
- 千川数据返回值解析(AES)解密
之前说过,所有的技术如果不能用来提升效率或者在实际生产中产生价值,那么它其实是没有价值的,哪怕你的技术再屌炸天.因为我的工作性质,我的技术并不是为了抓取数据而搞爬虫,更多是为了帮助到运营营销等方面.干 ...
- Fegin RPC调用远程接口返回值解析问题:java.util.LinkedHashMap cannot be cast to com.xxx.xxx
现象: BaseResponse 对象中有个Property名为result,为Object 类型,接口为这个result赋值是一个Map<String, NodeDetail> 对象,结 ...
最新文章
- python使用循环嵌套显示数字金字塔_如何使用Python生成数字金字塔?
- Linux云服务器安装Tomcat
- 好的,每个接触Java字节码的人
- 太实用了,4款常用的可视化大屏工具,你一定要知道!
- DiQuick Web UI 框架 V1.3 正式版发布
- 史上最全的Maven Pom文件标签详解
- Windows操作系统正版盗版知识简介
- POJ 1053 Set Me G++
- 计算机组成原理——总线标准
- 可以打印快递电子面单的表格
- ICPC2019徐州 Yuuki and a problem 树套树
- 利用ChatGPT,一分钟制作思维导图
- 代码报错 Uncaught TypeError: Converting circular structure to JSON
- Ironic console
- 814. Binary Tree Pruning(C语言)
- 自学网络安全,一般人我劝你放弃吧!
- PLM系统能给企业带来什么
- 微信跳转外部浏览器下载app
- Python实现随机生成车牌号
- 模式识别知识结构图(思维导图)
热门文章
- [总结]迟到的期中考总结
- html5 调用谷歌地图定位,使用html5地理定位的网页不如谷歌地图准确?
- Keycloak 常用API
- 导航小车利用laser_scan_matcher实现建图
- 每日一笑--蛛丝马迹
- mysql qps_关于mysql5.7的160万qps
- postman在线测试webservice调用
- Max杀毒,最强插件,解决清理各种max病毒各种弹窗提示
- 对文本进行美化:在中文和英文之间在中文和数字之间增加空格 pangu.spacing_text
- java poi 图片 内存溢出_解决java poi海量数据导出内存溢出问题