我正在研究编写一个 c++ KlocWork 自定义检查器来突出显示以下情况。
当 COM 函数可能返回失败代码时,调用 COM 函数的应用程序应编写适当的异常处理代码。
COM 组件:
{代码}
STDMETHODIMP CCMeasurement::DivideNums(LONG numerator, LONG denominator, LONG* result)
{
if (denominator == 0) {
return E_FAIL;
}
else {
result = numerator/denominator;
}
return S_OK;
}
{代码}
消费应用:
{代码}
ICMeasurementPtr msptr(__uuidof(CMeasurement));
long denominator = 0, numerator = 5, result;
msptr-> DivideNums (denominator, numerator, &result); //Highlight this line.
{代码}
我有兴趣强调那些返回失败代码(例如:E_FAIL)的 COM API 调用,而不是那些只返回成功代码(例如:S_OK)的 COM API 调用。将理解检测上述情况的 KAST 模式或任何其他可能的方式。