| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1546 人关注过本帖
标题:[求助]调用函数返回值hresult,遇到疑问,帮忙
只看楼主 加入收藏
liuxuer
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-4-22
收藏
 问题点数:0 回复次数:2 
[求助]调用函数返回值hresult,遇到疑问,帮忙
调用一个函数,它的返回值为hresult类型,我判断E_FAIL == hr,结果没有输出,我如果E_FAIL & hr ,就输出来,问题是每个错误情况都输出来或者都不输出来,汗啊
我的代码如下:
hr = pIWMDMStorageControl->Insert(
WMDM_MODE_BLOCK | WMDM_STORAGECONTROL_INSERTINTO | WMDM_CONTENT_FILE,
L"E:\amani.wma" ,
NULL, NULL,
&pIStorage);
if SUCCEEDED(hr)//这个没有输出,就是这个函数没有调用成功,这是系统的宏。
wprintf(L"The method Succeeded\n");
if(WMDM_E_INTERFACEDEAD & hr)
printf("The file was previously deleted.\n");
if(WMDM_E_NORIGHTS & hr)
printf("The caller has no rights to insert.\n");
if(E_INVALIDARG & hr)
printf("Some of the parameters are invalid or null.\n");
if(E_FAIL & hr)
printf("An unspecified error occurred.\n");
if(WMDM_E_NOTCERTIFIED & hr)
printf("The caller is not certified.\n");
if(WMDM_E_MAC_CHECK_FAILED & hr)
printf("The message authentication check failed.\n");

下面的六个都会输出,如果换成==判断,结果都不输出,我怎样判断是什么错误呢?郁闷中,各位支招,先谢。
补充一点,关于hresult返回值的判断,我以前用过是用==判断,结果是有输出的,这里不懂为什么
题外话:
唉,写了不多点程序,被打击坏了,动不动一个疑难杂症,受不了,编程真的好痛苦
搜索更多相关主题的帖子: 函数 返回值 hresult 疑问 WMDM 
2005-05-20 10:29
C++大粉丝
Rank: 4
等 级:贵宾
威 望:10
帖 子:477
专家分:0
注 册:2004-4-23
收藏
得分:0 
一般的COM库,如果返回值大于0的话就是调用成功了,你可以参考一下COM提供的相关宏的实现。
比如:
表达式(DWORD)hr > 0 就代表调用成功。

你也可以参考一下《COM本质论》的第二章。

I am a big fan of c plus plus.
2005-05-22 19:49
mountain
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2005-5-28
收藏
得分:0 
关于hresult返回值是一个32位的值 不能用==简单的判断是否成功
用SUCCEEDED和FAILED宏判断才是正确的做法
WMDM_E_NOTCERTIFIED & hr 为什么用&呢 因为32位中的每一位都表示不同的信息
2005-05-28 14:59
快速回复:[求助]调用函数返回值hresult,遇到疑问,帮忙
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014441 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved