2015-07-26 3 views
0

Я пишу USB-драйвер и имею всплывающее окно, содержащее определенную информацию о выбранном в данный момент устройстве USB.Текущее USB-устройство Power Draw

Однако, похоже, я не могу найти способ определить текущую мощность, используемую устройством. Я могу получить текущую мощность, доступную на порту, но не само устройство.

Есть API, требующий дополнительной мощности и его выпуска, но я не могу найти ничего, что подскажет мне, что такое потребляемая мощность устройства.

Я знаю, что это возможно, поскольку другие утилиты могут показывать эту информацию, однако IOKit, похоже, не имеет обычного уровня документации Apple!

+0

Если нет фактического способа считывания фактического энергопотребления устройства USB, лучшим решением, которое я нашел, было чтение поля MaxPower структуры IOUSBConfigurationDescriptor. –

ответ

0

Это свойство «Требуемая мощность» на узле IOUSBDevice, соответствующем используемому устройству? Это значение свойства «bMaxPower» в дескрипторе конфигурации, то есть объявленная максимальная потребляемая мощность устройства в единицах 2 мА. Все становится немного сложнее с USB3, дополнительные 400 мА, которые могут быть доступны для сверхскоростного устройства, записываются отдельно, и я думаю, что это опять-таки отличается от дополнительной мощности, поставляемой на iPod, iPhone и т. Д., Которые не следуют за USB3 спекуляция Вам нужно будет проверить исходный код IOUSBDevice для этого и, возможно, сделать кое-какие операции с помощью IORegistryExplorer.

+0

Да, теперь я использую поле bMaxPower, и добавляю также «лишнюю» мощность, которая для моего использования, вероятно, всегда будет равна нулю, но никогда не помешает быть уверенным. Спасибо за Ваш ответ! :) –