代码之家  ›  专栏  ›  技术社区  ›  Kevin Montrose

神秘的hresult,0x889000d

  •  1
  • Kevin Montrose  · 技术社区  · 15 年前

    小数:143196173
    十六进制:0x88 9000D

    呼叫的结果 IAudioSessionControl2->GetProcessId() .

    GetLastError=126*
    message=“找不到指定的模块”

    我不太确定如何解释这个错误。另外,我在任何地方都找不到对hresult的描述。记录的返回代码是S ouk、E_指针、Audclnt_e_no_single_进程和Audclnt_e_设备无效。

    有人知道这代码的含义吗?

    *这是一个跨托管/非托管边界进行封送处理的错误,由Marshal.GetLastError获取,Win32Exception提供消息。它可能是假的,但它是我所拥有的。hresult直接从非托管代码中提取。


    进一步调查, FAILED() 似乎不认为这是一个错误。但是,out参数被清除(设置为0),这实际上没有意义。此外,getErrorInfo返回s_false;因此没有任何其他调试信息可供继续。

    2 回复  |  直到 13 年前
        1
  •  4
  •   Kevin Montrose    15 年前

    这是audclnt_s_no_current_进程-我意识到它错过Windows7sdk头太晚了。

    将更新SDK文档以反映这一点。

    结果意味着会话是一个跨进程会话。返回的进程ID是创建会话的第一个进程的进程ID,但如果得到此结果,则确实不能依赖进程ID,因为进程ID不是唯一的。

        2
  •  -1
  •   sharptooth    15 年前

    COM方法无法在失败时设置IErrorInfo。尝试检索它-它可以包含其他信息。在非托管代码中,使用getErrorInfo()。