|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.01.2012, 02:47 | #1 |
Пользователь
Регистрация: 12.01.2012
Сообщений: 10
|
SetupAPI
Здравствуйте!
У меня такая проблема: Необходимо получить зависимости шины драйвера USB-устройства. Перерыл все, не могу найти как это сделать. В моей программе используется SetupAPI для получения кода экземпляра устройства. Как получить параметр, который в диспетчере устройств значится как "Зависимости шины"? |
12.01.2012, 10:09 | #2 |
Форумчанин
Регистрация: 11.01.2012
Сообщений: 177
|
SetupDiGetDeviceRegistryProperty с параметрами SPDRP_LEGACYBUSTYPE, SPDRP_LOWERFILTERS, SPDRP_UPPERFILTERS. Пробовал?
progromore.i2p - первый русскоязычный портал программистов в скрытосети
|
12.01.2012, 13:27 | #3 |
Пользователь
Регистрация: 12.01.2012
Сообщений: 10
|
Пробовал. SPDRP_LOWERFILTERS - нижние фильтры класса, SPDRP_UPPERFILTERS - верхние фильтры класса. SPDRP_LEGACYBUSTYPE - The function retrieves the device's legacy bus type as an INTERFACE_TYPE value. Возвращает 5. По идее там должно быть значение в формате REG_MULTI_SZ. Все свойства перепробовал, которые есть в MSDN в функции SetupDiGetDeviceRegistryProperty, ни один не совпал... Если в свойства составного USB устройства зайти, потом в сведения, там можно помимо "Зависимости шины" еще увидеть "Зависимости удаления" и "Зависимости извлечения". Может эти параметры как-то связаны? Но значения присутствуют только в "зависимости шины", мне они и нужны, хотя бы одно из них.
|
12.01.2012, 15:50 | #4 |
Форумчанин
Регистрация: 11.01.2012
Сообщений: 177
|
я сам занимался этим вопрос примерно месяц, но бросил...
во-первых надо исходить из того что там написано не вполне корректное название "Зависимости шины", там выводится список устройств, которые зависят от данного, таким образом будет более корректно его назвать "Зависимые устройства". возможно это как-то поможет в получении этого параметра
progromore.i2p - первый русскоязычный портал программистов в скрытосети
|
12.01.2012, 16:37 | #5 |
Пользователь
Регистрация: 12.01.2012
Сообщений: 10
|
А вот интересно, возможно ли замониторить какие функции SetupAPI вызывает диспетчер устройств? Щас еще поставлю английскую версию винды, посмотрю как там называется этот параметр. Искал в реестре значения параметра "зависимости шины", нашел в разделе HKEY_LOCAL_MACHINE\SYSTEM\ControlSe t001\Services\hwdatacard\Enum параметры 0,1,2, которые соответствуют зависимостям шины Составного USB-устройства. Но когда подключил еще одно такое же устройство, там появились параметры 3, 4, 5, соответствующие следующему USB-устройства. Может быть для каждого устройства какая-то функция выдает эти номера? Возможно ли в драйвере, зависимом от USB-устройства узнать код экземляра устройства (InstanceId) USB-устройства? Тогда вопрос поиска параметра "зависимости шины" отпал. В windows 7 в свойствах драйвера есть параметр "Родитель", в котором записан код экземпляра USB-устройства, "породившего" его. Но в windows XP такого параметра нет! Также в windows 7 есть параметр "код контейнера чего-то там...", который совпадает с соответствующим USB-устройством и есть спец. функция, которая его берет, но опять же в XP такого нет... Короче вопроса три:
1. А вот интересно, возможно ли замониторить какие функции SetupAPI вызывает диспетчер устройств? 2. Когда подключил еще одно такое же устройство, там появились параметры 3, 4, 5, соответствующие следующему USB-устройству. Может быть для каждого устройства какая-то функция выдает эти номера? 3. Возможно ли в драйвере, который появился вследствии подключения USB-устройства узнать код экземляра устройства (InstanceId) составного USB-устройства? |
12.01.2012, 16:51 | #6 |
Форумчанин
Регистрация: 11.01.2012
Сообщений: 177
|
могу ответить только на этот вопрос
возможно, только перехватчик придётся самому реализовывать
progromore.i2p - первый русскоязычный портал программистов в скрытосети
|
13.01.2012, 06:20 | #7 |
Пользователь
Регистрация: 12.01.2012
Сообщений: 10
|
Поставил английскую винду. Там этот параметр называется "bus relations". Поискал по MSDN, вроде нашел то что нужно. Щас проверю, выложу результат, может кому пригодится.
ЗЫ: вычитал с MSDN, что начиная с windows vista можно запросить ряд дополнительных параметров, используя property keys. Там есть параметр child и parent, который как раз соответствует потомкам и родителю драйвера устройства. |
14.01.2012, 17:20 | #8 |
Пользователь
Регистрация: 12.01.2012
Сообщений: 10
|
Для того, чтобы получить InstanceID родителя драйвера делаем следующее:
Код:
Подробнее тут: Retrieving Device Relations |
14.01.2012, 18:22 | #9 |
Форумчанин
Регистрация: 11.01.2012
Сообщений: 177
|
vanesko, понятно. получается этот параметр вычисляется на лету а не извлекается из функции SetupDiGetDeviceRegistryProperty
progromore.i2p - первый русскоязычный портал программистов в скрытосети
|
15.01.2012, 05:34 | #10 | |
Пользователь
Регистрация: 12.01.2012
Сообщений: 10
|
Цитата:
|
|