У меня есть kext, основанный на примере кода Apple AudioReflectorDriver (он перехватывает аудиовыход и делает копию).
При <= 10.6, когда вы вызываете proc_selfpid () внутри подкласса IOAudioEngine, он сообщает PID процесса, который генерирует аудио. На 10.7 он всегда сообщает coreaudio_d как процесс. </p>
Что изменилось? Кто-нибудь знает, где Apple зарегистрировала это изменение? Есть ли способ получить идентификатор исходного процесса в Lion?
Обновление ... инженер Apple DTS сообщил мне, что:
Audio HAL был полностью переписан в Lion, и это изменение почти наверняка стало побочным эффектом этих усилий. Я не верю, что это было преднамеренное изменение, но вместо этого оно было вызвано большими архитектурными изменениями в CoreAudio. Строго говоря, я не верю, что proc_selfpid когда-либо документировался, чтобы возвращать что-то полезное в аудио-контексте, поэтому вполне возможно, что эта информация просто больше недоступна.
[....]
Проблема не в том, что ядро извлекает неправильный pid, а в том, что архитектура CoreAudio изменилась так, что звук поступает из другого процесса.
Все еще ждет ответа от него, есть ли способ получить эту информацию в 10.7.
Теперь я подозреваю, что это не было задокументировано, потому что переписывание не изменило API.