1

我有一个基于 Apple 的 AudioReflectorDriver 示例代码的 kext(它拦截音频输出并制作副本)。

在 <= 10.6 上,当您在 IOAudioEngine 子类中调用 proc_selfpid() 时,它会报告生成音频的进程的 PID。在 10.7 上,它始终将 coreaudio_d 报告为进程。

发生了什么变化?有谁知道苹果在哪里记录了这一变化?有什么方法可以在 Lion 中获取原始进程 ID?

更新……一位 Apple DTS 工程师告诉我:

Audio HAL 完全用 Lion 重写,这种变化几乎可以肯定是这种努力的副作用。我不认为这是故意的更改,而是由 CoreAudio 中更大的架构更改驱动的。严格来说,我不相信 proc_selfpid 曾被记录为在音频上下文中返回有用的东西,因此完全有可能这些信息不再可用。

[……]

问题不在于内核返回了错误的 pid,而是 CoreAudio 的架构发生了变化,使得音频来自不同的进程。

如果有任何方法可以在 10.7 中获取此信息,仍在等待他的回复。

我现在怀疑它没有被记录,因为重写没有改变 API。

4

0 回答 0