从c#,HRESULT错误处理调用COM dll?

时间:2010-04-29 02:17:33

标签: c# com interop

我正在使用c#将要使用的COM接口,但是我想知道如何检查c#end上的异常处理错误。目前我只是为大多数方法返回一个HRESTULT或bool,然后执行Marshal.ThrowExceptionForHR但是在某些方法中出现了一些问题并且返回一个E_FAIL并没有削减它。

如何返回更多信息,我该怎么办?我可以自己做一个人吗?

1 个答案:

答案 0 :(得分:1)

我从来没有真正这样做过,但从理论上讲,你应该可以通过supporting IErrorInfo来做到这一点。 Marshal.GetExceptionForHR()有一个带有IErrorInfo指针的重载。

顺便说一下,你不必手动调用Marshal.ThrowExceptionForHR() - 如果你的方法返回HRESULT和[out]参数作为返回值你可以在.NET中声明它返回返回值和如果HRESULT指示失败,则set PreserveSig=false和CLR将自动抛出异常。