如何在给定HRESULT的情况下创建COMException?
我有P / Invoke:ed a win32-method,它返回一个HRESULT 如果它返回失败,我希望抛出一个带有标准错误文本的COMException 我该怎么做?
throw new COMException(null, hResult)
COMException e = new COMException;
e.HResult = hResult;
throw e;
或者我应该使用其他方法吗?
答案 0 :(得分:5)
如果您只想获得异常,则应使用Marshal.GetExceptionForHR()
;如果想要抛出异常,则应使用Marshal.ThrowExceptionForHR()
。
答案 1 :(得分:1)
我会调查PreserveSig来电中的DllImport字段。这将为函数返回的任何非S_OK
HRESULT
生成异常。