Windows桌面应用程序(1-2-3-3rd) COM中的错误代码

为了表示成功或失败,COM方法和函数返回一个HRESULT类型的值。一个HRESULT是一个32位的整数。HRESULT的高位信号成功或失败。零(0)表示成功,1表示失败。

这会产生以下数字范围:

  • 成功代码:0x0-0x7FFFFFFF。
  • 错误代码:0x80000000-0xFFFFFFFF。

少量的COM方法不会返回HRESULT值。例如,AddRefRelease方法返回无符号的长整型值。但是每个返回错误代码的COM方法都会返回一个HRESULT值。

要检查COM方法是否成功,请检查返回的HRESULT的高位。在Windows SDK头提供两个宏使它更简单:在SUCCEEDED宏和FAILED宏。该SUCCEEDED如果宏返回TRUE HRESULT是成功的代码与错误,如果它是一个错误代码。以下示例检查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中的错误处理。)

下一个
在COM中创建一个对象

猜你喜欢

转载自blog.csdn.net/qq_37422196/article/details/79763571