从HRESULT创建COMException

时间:2012-03-19 09:41:52

标签: c# com

如何在给定HRESULT的情况下创建COMException?

我有P / Invoke:ed a win32-method,它返回一个HRESULT 如果它返回失败,我希望抛出一个带有标准错误文本的COMException 我该怎么做?

  1. throw new COMException(null, hResult)

  2. COMException e = new COMException;
    e.HResult = hResult;
    throw e;

  3. 或者我应该使用其他方法吗?

2 个答案:

答案 0 :(得分:5)

如果您只想获得异常,则应使用Marshal.GetExceptionForHR();如果想要抛出异常,则应使用Marshal.ThrowExceptionForHR()

答案 1 :(得分:1)

我会调查PreserveSig来电中的DllImport字段。这将为函数返回的任何非S_OK HRESULT生成异常。