为了表示成功或失败,COM方法和函数返回一个HRESULT类型的值。一个HRESULT是一个32位的整数。HRESULT的高位信号成功或失败。零(0)表示成功,1表示失败。
这会产生以下数字范围:
- 成功代码:0x0-0x7FFFFFFF。
- 错误代码:0x80000000-0xFFFFFFFF。
少量的COM方法不会返回HRESULT值。例如,AddRef和Release方法返回无符号的长整型值。但是每个返回错误代码的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中创建一个对象