目前我正在编写一个 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++ 代码中得到了异常。

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

最佳答案

为了返回 HRESULTS,您需要抛出 COMException ,而不仅仅是任何异常。

关于c# - 如何将 HRESULT 从 C# 返回到 C++ 而不是抛出异常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9970206/

10-17 01:47