【发布时间】:2011-03-09 12:43:44
【问题描述】:
在我的 COM 组件中,我需要将所有错误转换为可能的最合适的 HRESULT 值。目前,如果我调用一些 RPC 接口方法(我调用 MIDL 生成的存根,然后调用 NdrClientCall2())并且调用失败,我会返回 E_FAIL,这不是很方便。
有所谓的facility in HRESULT。我可以用这个吗?
我尝试执行以下操作:
HRESULT RpcStatusToHresult( RPC_STATUS status )
{
if( status <= 0 ) {
return status;
}
return ( status & 0x0000FFFF ) | (FACILITY_RPC << 16) | 0x80000000;
}
这会正确地将RPC_STATUS 转换为有意义的HRESULTs 吗?
【问题讨论】:
标签: windows visual-c++ com error-handling rpc