神秘的HRESULT,0x889000D

时间:2009-07-22 08:40:55

标签: c++ winapi audio windows-7

十进制:143196173
十六进制:0x889000D

致电IAudioSessionControl2->GetProcessId()的结果。

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

我不确定如何解释这个错误。另外,我无法在任何地方找到HRESULT的描述。记录的返回代码为S_OK,E_POINTER,AUDCLNT_E_NO_SINGLE_PROCESS和AUDCLNT_E_DEVICE_INVALIDATED。

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

*这是在托管/非托管边界上编组的错误,由Marshal.GetLastError获取,并提供消息的Win32Exception。它可能是假的,但它是我所拥有的。 HRESULT直接从非托管代码中取出。


进一步调查,FAILED()似乎并不认为这是一个错误。但是,out参数被清除(设置为0),这实际上没有意义。此外,GetErrorInfo返回S_FALSE;所以没有任何额外的调试信息可以继续。

2 个答案:

答案 0 :(得分:4)

这是AUDCLNT_S_NO_CURRENT_PROCESS - 我意识到它错过了Windows 7 SDK标题太迟了。

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

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

答案 1 :(得分:-1)

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