Сбор информации о приостановленных USB-устройствах через IOUSBDeviceInterface245

StackOverflow https://stackoverflow.com/questions/7377168

  •  28-10-2019
  •  | 
  •  

Вопрос

Я пытаюсь получить некоторую информацию (например, название продукта) с помощью IOUSBDeviceInterface245 (из IOKit в Mac OS X):
Код №1

родовое слово

Этот код хорошо работает для всех работающих устройств, но не работает для приостановленных ("спящих")
устройства (product_name - это просто пустая строка).

Но если я использую этот код:
Код 2

родовое слово

это вообще работает на всех устройствах (не знаю почему).

Я попытался разбудить приостановленные устройства с помощью этого кода (используя код №1):

родовое слово

но это ничего не изменило.

<цитата>

Я заметил одну вещь - код №1 полностью работает для всех свойств. спящих устройств, кроме строковых значений (получаемых строковыми индекс).

ОБНОВЛЕНИЕ:
Итак, мой вопрос: как я могу разблокировать устройство для использования с первым блоком кода ?
Спасибо.

Это было полезно?

Решение

Невозможно прочитать строку с приостановленного устройства (как в коде №1), так как она считывается непосредственно с устройства (которое не может ответить, так как приостановлено).Чтобы прочитать их напрямую, вам нужно сначала отключить устройство (что может быть плохой идеей, если оно было приостановлено драйвером, также не забудьте проверить успех)

Если вы хотите читать стандартные строки, используйте второй блок кода (который считывает свойства, которые уже были получены с устройства)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top