HRESULT 是一种简单的数据类型,通常被属性和 ATL 用作返回值。下表说明各种不同的值。头文件 winerror.h 中包含更多的值。

名称 说明
S_OK 操作成功 0x00000000
E_UNEXPECTED 意外的失败 0x8000FFFF
E_NOTIMPL 未实现 0x80004001
E_OUTOFMEMORY 未能分配所需的内存 0x8007000E
E_INVALIDARG 一个或多个参数无效 0x80070057
E_NOINTERFACE 不支持此接口 0x80004002
E_POINTER 无效指针 0x80004003
E_HANDLE 无效句柄 0x80070006
E_ABORT 操作已中止 0x80004004
E_FAIL 未指定的失败 0x80004005
E_ACCESSDENIED 一般的访问被拒绝错误 0x80070005

MSDN解释:
The HRESULT data type is a 32-bit value that is used to describe an error or warning.
typedef LONG     HRESULT;
用来存放返回值信息(比如错误或成功)
一般在COM中使用,1-3位表示严重程度,中间有一些表示出错类别代码,后面的表示信息码
HRESULT的意思是Here's Result,这就是结果
返回值是个长整型

使用:
//初始化COM接口********************************
    HRESULT hr = CoInitialize(NULL);
    
if (FAILED(hr))
    {
       TRACE(
"ERROR - Could not initialize COM library.\n");
       
return FALSE;
    }
    
//****************************************************************************
上面的FAILED(hr)为定义的一个宏,转到定义为:
#define FAILED(hr) ((HRESULT)(hr) < 0)
就是判断hr是否错误值。
(COM初始化一般放在 ::InitInstance() 中
int CPlayWndApp::ExitInstance()
{
    
// TODO: 在此添加专用代码和/或调用基类

    
//关闭COM
    CoUninitialize();

    
return CWinApp::ExitInstance();
}

COM的卸载一般放在ExitInstance()中。
Posted on 2006-07-29 16:44  李通通  阅读(1620)  评论(0编辑  收藏  举报