如何将HRESULT从C#返回到C ++而不是抛出异常?

时间:2012-04-02 02:23:12

标签: c# .net exception com-interop hresult

目前我正在编写一个C#COM服务器,它将由C ++客户端使用。我希望在C#代码中引发特定异常时将某个HRESULT返回给C ++代码,如下所示

// C# COM Server Code
public void MyMethod()
{
    try
    {
        //Some Processing 
    }
    catch(CertainException e)
    {
        //I pass in my Own HResult int to the my Custom Exception 
        MyCustomException ex = new MyCustomException(unchecked((int)0xc00491fe)); 
        throw ex;
    }
}

//C++ Code
HRESULT hr = pMyComInstance->MyMethod();

我希望从我的C ++代码获得的“hr”是我在C#代码中分配的int,但是不是获得HRRESULT,我仍然在C ++代码中得到了异常。

我做错了吗?请帮忙..谢谢

1 个答案:

答案 0 :(得分:7)

为了返回HRESULTS,您需要抛出COMException,而不是任何例外。