Apple の AudioReflectorDriver サンプル コードに基づく kext があります (オーディオ出力をインターセプトしてコピーを作成します)。
10.6 以下では、IOAudioEngine サブクラス内で proc_selfpid() を呼び出すと、オーディオを生成するプロセスの PID が報告されます。10.7 では、プロセスとして常に coreaudio_d が報告されます。
何が変わったのですか?Apple がこの変更を文書化した場所を知っている人はいますか? Lion で元のプロセス ID を取得する方法はありますか?
更新... Apple DTS エンジニアから次のように通知されました。
Audio HAL は Lion で完全に書き直されましたが、この変更はほぼ確実にその努力の副作用でした。これは意図的な変更ではなく、CoreAudio のより大きなアーキテクチャの変更によって引き起こされたものだと思います。厳密に言えば、proc_selfpid がオーディオ コンテキストで有用なものを返すように文書化されたことはないと思います。そのため、この情報が利用できなくなっている可能性は十分にあります。
[....]
問題は、カーネルが間違った pid を返すことではなく、オーディオが別のプロセスから来るように CoreAudio のアーキテクチャが変更されたことです。
10.7 でこの情報を取得する方法があれば、彼からの返事を待っています。
私の疑いは、書き換えによって API が変更されなかったため、文書化されていなかったということです。