【问题标题】:COM component crashCOM 组件崩溃
【发布时间】:2010-06-22 22:13:22
【问题描述】:

当你有一个软件运行一个进程外的 COM 服务器并且 COM 服务器崩溃时,它会向用户显示一条消息(假设它是一个未处理的异常)还是会发生什么?

另外,COM客户端也会崩溃,知道这个客户端非常依赖这个COM服务器吗?

当服务器发生未处理的异常时,COM 服务器和 COM 客户端的行为是什么?

【问题讨论】:

    标签: c++ com crash


    【解决方案1】:

    COM 客户端将从下一个 COM 调用和所有其他调用中获取 RPC_E_SERVERFAULT 作为 HRESULT,直到服务器重新启动。只要客户端检查其错误代码,这不一定会导致崩溃。但是,对于客户端来说,这可能不是可恢复的错误,因此在收到 RPC_E_SERVERFAULT(或者,实际上是任何 RPC_E 错误代码)时,您应该启动正常退出。

    【讨论】:

    • 不是这样,当服务器引发未处理的异常时,您将获得该返回码。顺便说一句,很难对付。应该得到 RPC_E_SERVERDIED。但是,是的,不要处理任何这些错误,客户端应用程序已经死了。
    • @Hans,你得到RPC_E_SERVERDIED还是RPC_E_SERVERFAULT取决于服务器死机的确切方式,但对客户端的意义基本相同。
    • 不幸的是,RPC_E_SERVERFAULT 不会使服务器死机。好吧,也许是无聊的细节。
    猜你喜欢
    • 2011-02-18
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    相关资源
    最近更新 更多