十进制: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;所以没有任何额外的调试信息可以继续。
答案 0 :(得分:4)
这是AUDCLNT_S_NO_CURRENT_PROCESS - 我意识到它错过了Windows 7 SDK标题太迟了。
SDK文档将会更新以反映这一点。
结果表示会话是跨进程会话。返回的进程ID是创建会话的第一个进程的进程ID,但如果得到此结果,则实际上不能依赖进程ID,因为进程ID不是唯一的。
答案 1 :(得分:-1)
COM方法可以在失败时设置IErrorInfo。尝试检索它 - 它可以包含其他信息。在非托管代码中,您可以使用GetErrorInfo()。