当调用运行时实现的COM接口函数时,可能会向本机代码返回一条HRESULT错误。
如果忽略HRESULT或错误代码,可能会导致在出错或资源不足的情况下出现意外行为。
因此,如果将HRESULT隐式强制转换为整数,则将生成错误的值并可能导致错误的结果。
或者,如果RCW本身是一个代理,则该调用可能导致RPC_E_WRONG_THREAD的HRESULT引发COMException。
此代码示例导致SHAutoComplete函数第一次生成带有异常的任何错误,第二次则生成HRESULT。
将HRESULT值转换为由指定区域设置标识符表示的区域性的相应错误消息。
获得HRESULT使调用方可以确定一般异常的起因。
通过HResult,执行模式可以在单个运行树中结合MDX和XML,实现更高的灵活性和查询性能。
默认情况下,运行时会将失败的HRESULT映射到一个等效的托管异常,从而向托管代码引发异常。
请注意,COM签名返回一个HRESULT,而且对于返回值具有附加的out参数。
有关处理HRESULT返回代码的详细信息,请参阅OLE自动化返回代码和错误信息。
当本机代码中的COM方法返回HRESULT时,公共语言运行时会引发一个异常。
如果方法A调用了方法B,但并未使用该方法返回的HRESULT或错误代码。
这就避免了运行库将HRESULT值转换为COM调用上的异常时必需的。
如果HRESULT不提供附加的错误信息,则运行库用默认值填充异常的许多属性。
警告C6221:语义不同的整数类型之间的隐式强制转换:将HRESULT与一个整数进行比较。
未调用托管方法就将故障HRESULT返回到COM。
若为true,生成的方法签名将返回一个包含HRESULT值的整数值。
注意,DllImportAttribute属性仅对返回HRESULT的方法执行此转换。
用户定义的异常类可以指定任何适当的HRESULT。
警告C6217:语义不同的整数类型之间的隐式强制转换:使用“not”测试HRESULT。
所有指示失败的HRESULT值都被转换为托管异常。
使用当前线程的默认区域性将HRESULT值转换为相应的错误消息。
运行库自动将HRESULT从COMinterop映射为更特定的异常。
一个Exception对象,表示转换后的HRESULT以及从errorInfo获取的信息。
从JScript返回至COM传统客户端的HRESULT。