COM 组件中的错误码
- W_Z_C
- 共 411 字,阅读约 1 分钟
COM 组件 中的函数一般返回值都是 HRESULT 类型,该值代表着 COM 接口 调用的结果正确与否。HRESULT是一个32位的整型值。其中最高位代表着成功还是失败。0 表示成功,1 表示失败。
这种方法会将结果值划分为两个区间:
- 成功的值:0x00000000 —— 0x7FFFFFFF。
- 失败的值:0x80000000 —— 0xFFFFFFFF。
有一些 COM 组件中的函数返回的不是 HRESULT 类型的值,例如 AddRef 和 Release 方法返回的是一个 unsinged long 类型,但是每个返回包含错误代码的方法都是 HRESULT 类型。
可以通过HRESULT高位的值来确定 COM 组件方法执行是否成功。Windows SDK 为此提供两个便捷的宏操作:SUCCEEDED 和 FAILED。前者返回TRUE 代表成功,FALSE 代表失败。下面是一个使用案例:
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED |
COINIT_DISABLE_OLE1DDE);
if (SUCCEEDED(hr))
{
// The function succeeded.
}
else
{
// Handle the error.
}
有些时候测试失败与否更加方便,使用 FAILED 宏替代 SUCCEEDED。返回 TURE 代表失败,FALSE 代表成功。
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED |
COINIT_DISABLE_OLE1DDE);
if (FAILED(hr))
{
// Handle the error.
}
else
{
// The function succeeded.
}