2015-09-30 10 views
1

Я пытаюсь выборочно отображать и отключать некоторые USB-устройства. Для этого я написал драйвер IOUSBInterface, который задает подстановочные знаки для idProduct, idVendor и bcdDevice. В любое время я делаю не хочу отключить данное устройство, я установил probeScore в 0 и вернусь.Не знаю, почему моя OS X kext с более низкой оценкой зонда сопоставляется

Подход probeScore работает практически во всех случаях, и я вижу, что мой водитель рассматривает каждое устройство USB по очереди в system.log. Но в случае с контроллером хоста Bluetooth USB ядро ​​прикрепляет к нему мой драйвер, несмотря на мой счетчик баллов 0. Для сравнения, если мой драйвер отсутствует, контроллер USB USB Host Controller соответствует оценочной отметке 90 000.

Это правда, что мой водитель определяет OSBundleRequired как Root, но USB хост-контроллер Bluetooth определяет OSBundleRequired, как Safe Boot, которые, казалось бы, поставить их на тех же основаниях. С другой стороны, у меня такие же проблемы с Yosemite Bluetooth, как и у других, и моя Bluetooth-мышь не реагирует до тех пор, пока я не войду в систему, предлагая, чтобы Bluetooth-хост-контроллер Bluetooth не загружался до момента загрузки.

+0

У меня есть FileVault 2 включен на машине, что может повлиять на то, что видно перед разблокировкой моего диска. Когда я загружаюсь в однопользовательском режиме и пытаюсь явно загружать '/ System/Library/Extensions/IOBluetoothFamily.kext/Contents/PlutIns/BroadcomBluetoothHostControllerUSBTransport.kext', я получаю недопустимую ошибку подписи, даже если в системе нет проблем с загрузкой этого драйвера один раз Я вхожу. Возможно, мне нужно задать этот вопрос на [Ask Different] (http://apple.stackexchange.com). –

+0

Инструмент командной строки 'kextcache' имеет флаг' -print-diagnostics', который может помочь выявить проблему. – pmdj

+0

@pmdj У меня проблемы с kextcache. Я попробовал 'sudo kextcache -system-caches -print-diagnostics -v 6' и некоторые другие варианты, но на самом деле не нашел то, что искал. Какое использование вы имели в виду? –

ответ

1

Полностью переписан ответ, как я понял вопрос

Во-первых, from the horse's mouth:

«Обратите внимание, что вы никогда не должны добавить свои собственные свойства IOProbeScore в список свойств водителя Укрсоцбанка.»

Вероятно, поэтому вы не испытываете большой радости от оценки зонда. (Обратите внимание, что приведенная выше рекомендация применяется только к устройствам USB, игнорирование Thunderbolt и т. Д.)

Если изменение словаря, соответствующего вашему соответствию, не соответствует рассматриваемому устройству, не является практичным (похоже, вы хотите решить во время выполнения, так что это хорошая причина), затем переопределите метод вашего драйвера probe() и выборочно верните или NULL от него в зависимости от того, хотите ли вы, чтобы ваш (блокирующий) драйвер требовал устройства или нет. Возвращение NULL от probe() должно всегда работать - если это вызывает проблемы, скорее всего, у вас есть ошибка в вашем коде.

+0

Возможно, у нас есть недопонимание? Я использую 10.10 и kext-dev-mode, и моя проблема заключается не в том, что мой kext _won't load_, а скорее в том, что он захватывает аппаратное обеспечение, обычно управляемое хост-контроллером Bluetooth USB, даже когда я возвращаю отрицательный результат матча. Раньше я пробовал возвращать NULL, но у меня были некоторые паники, поэтому я подумал, что было бы более грациозно вернуть невероятно низкий балл. –

+0

Ahhhh, хорошо, вы правы, я неправильно понял ваш вопрос. Если вы хотите, чтобы драйвер Apple взял на себя ответственность, тогда, если сужение ваших критериев соответствия нецелесообразно, возврат 'NULL' из вашего переопределенного' probe() 'действительно лучший способ не совпадать. Если это вызывает панику, у вас есть ошибка в коде; это не является неотъемлемой частью отклонения зонда. IOProbeScore, как известно, ненадежна для USB-устройств, поэтому я не удивлен, что у вас не так много радости от этого. – pmdj

+0

Правильно, я обновил свой ответ на то, что, надеюсь, будет полезно. Если у вас все еще возникают сбои после возвращения «NULL», не стесняйтесь открыть другой вопрос, и я сделаю все возможное, чтобы диагностировать. :-) Извините за дикую гусиную погоню. – pmdj