HRESULT
What we should know about HRESULT ?
- HRSULT is a kind of Data Type ( Long 32bit) which is used for Windows.
- It is The return codes used by COM interfaces.
- To test an HRESULT value, use the FAILED and SUCCESSED macros.
- This type is declared in WinNT.h as follows:
typedef LONG HRESULT;
Structure of COM Error Codes.
- HRESULT value has 32bits and is divided into 3 fields: a severity code, a facility code, and an error code.
Bit 31 30 29 28 27, 26 25 24 ... 16, 15 14 ... 0
Field S R C N r , Facility , Error
Convert HRSULT retrun codes to error messages.
法(1) We can use AMGetErrorText Function.
- Syntax :
DWORD AMGetErrorText (
HRESULT hr, // HRESULT value.
TCHAR *pBuffer, // Pointer to a character buffer that receives the error message.
DWORD MaxLen // Number of characters in pBuffer.
);
- Requirement:
Header: Errors.h (dshow.h)
Lib : Quarz.lib
- Example:
void ShowError(HRESULT hr)
{
if (FAILED(hr))
{
TCHAR szErr[MAX_ERROR_TEXT_LEN];
DWORD res = AMGetErrorText(hr, szErr, MAX_ERROR_TEXT_LEN);
if (res == 0)
{
StringCchPrintf(szErr, MAX_ERROR_TEXT_LEN, "Unknown Error: 0x%2x", hr);
}
MessageBox(0, szErr, TEXT("Error!"), MB_OK | MB_ICONERROR);
}
}
//But , 我尝试上述,似乎总是找不到AMGetErrorText函数,找不到合适的H文件,可能需要安装额外的SDK.
法 (2)
CString HrToMessage( HRESULT hr )
{
LPVOID lpMsgBuf;
CString strTmp;
::FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
hr,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0,
NULL );
strTmp.Format( _T("%s"), (char *) lpMsgBuf );
::LocalFree( lpMsgBuf );
return strTmp;
}
分享到:
相关推荐
Arcgis 学习--COM 组件的调用返回了错误 HRESULT E_FAIL
快速查看AE运行过程出现的1000多个异常代码对应的错误描述,如HResult:0x80040210,对应Invalid envelope encountered. HResult:0x80040228,对应License not intialized。
可以查询大部分微软错误代码的含义;
主要介绍了VS2019添加引用出错:对COM组件的调用返回了错误HRESULT E_FAIL(未能完成操作。未指定的错误),需要的朋友可以参考下
试图加载格式不正确的程序。 (异常来自 HRESULT0x8007000B)
基于异常的错误检查,可自动执行FAILED()比较。
COM技术COM技术COM技术 参考书是COM技术内幕,如果大家要看某一部分,课件就很好了
Excel 权限错误和应用程序8000401A错误解决办法;对 Excel进行编程,实际上就是通过 .Net Framework去调用 Excel的 COM组件,所有要在 Web环境下调用 COM组件的时候,都需要对其进行相应的配置。 很多朋友都反映在 ...
安装版Win7展开失败错误代码:0x80070570,本人亲身测试,绝对就是这个问题,绝对能够解决展开失败,无论展开百分比是多少!
软件安装过程中提示“无法注册模块C:\Program Files\XXXXXXX HRESULT-2147010895.请与您的技术支持人员联系。”的问题,以上是我针对自身遇到情况做的一个解决该问题的教程,有错的地方,望大家批评指正。
• COM——到底是什么?——COM标准的要点介绍,...• 使用和处理COM对象——如何创建、使用和销毁COM对象 • 基本接口——描述IUnknown基本接口及其方法 ...• 处理HRESULT——HRESULT类型描述,如何监测错误及成功代码
COM——到底是什么?——COM标准的要点介绍,它被... ... 使用和处理COM对象——如何创建、使用和销毁COM对象。 基本接口——描述IUnknown基本接口及其方法。 ...处理HRESULT——HRESULT类型描述,如何监测错误及成功代码。
Add-AppxPackage : 部署失败,原因是 HRESULT: 0x80073CF3, 包无法进行更新、相关性或冲突验证。 Windows 无法安装程序包 MicrosoftCorporationII.WindowsSubsystemForAndroid_1.7.32815.0_x64__8wekyb3d8bbwe,因为...
问题:没有注册类 (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))。用来解决此问题缺少的dll文件。博客中有问题描述及解决方法:链接:https://blog.csdn.net/qq_34147601/article/details/115303651
NULL 博文链接:https://wooffen.iteye.com/blog/836226
9.3.1 共享代码、资源和数据 236 9.3.2 隐藏实现的细节 237 9.3.3 自定义控件 237 9.4 创建和使用DLL 237 9.4.1 数美分:一个简单的DLL 237 9.4.2 显示DLL中的模式窗体 239 9.5 显示DLL中的无模式窗体 241 9.6 在...
工作过程中,需要在后台C#中操作Excel...错误信息:检索 COM 类工厂中 CLSID 为{00024500-0000-0000-C000-000000000046} 的组件 因是出现以下错误:80070005 拒绝访问。 (异常来自HRESULT:0x80070005 (E_ACCESSDENIED))