COM 中的错误代码
为了指示成功或失败,COM 方法和函数返回 HRESULT 类型的值。 HRESULT 是 32 位整数。 HRESULT 的高阶位表示成功或失败。 零 (0) 表示成功,1 表示失败。
这会生成以下数值范围:
- 成功代码:0x0-0x7FFFFFFF。
- 错误代码:0x80000000–0xFFFFFFFF。
少数 COM 方法不返回 HRESULT 值。 例如, AddRef 和 Release 方法返回无符号的长值。 但是,每个返回错误代码的 COM 方法都通过返回 HRESULT 值来执行此操作。
若要检查 COM 方法是否成功,请检查返回的 HRESULT 的高阶位。 Windows SDK 标头提供了两个使此操作更简单的宏: SUCCEEDED 宏和 FAILED 宏。 如果 HRESULT 是成功代码,则 SUCCEEDED 宏返回 TRUE;如果它是错误代码,则返回 FALSE。 以下示例检查 CoInitializeEx 是否成功。
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED |
COINIT_DISABLE_OLE1DDE);
if (SUCCEEDED(hr))
{
// The function succeeded.
}
else
{
// Handle the error.
}
有时测试反向条件更方便。 FAILED 宏与 SUCCEEDED 相反。 对于错误代码,它返回 TRUE ,对于成功代码,则返回 FALSE 。
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED |
COINIT_DISABLE_OLE1DDE);
if (FAILED(hr))
{
// Handle the error.
}
else
{
// The function succeeded.
}
在本模块的后面部分,我们将探讨有关如何构建代码以处理 COM 错误的一些实用建议。 (请参阅 COM.) 中的错误处理
下一步