Create COMException from HRESULT

本文关键字:HRESULT from COMException Create | 更新日期: 2023-09-27 18:28:10

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

我有p/Invoke:ed一个win32方法,它返回HRESULT
如果它返回failure,我希望抛出一个带有标准错误文本的COMException
我该怎么做?

  1. throw new COMException(null, hResult)

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

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

Create COMException from HRESULT

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

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