
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[44.200.112.172] |
![]() |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
ищу WMI клас, хранящий информацию о диагностических портах оборудования (USB)
нашол модемы и сериал порт ![]() ![]() Модемы в системе: ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_POTSModem"); Физические порты(COM ports): searcher = new ManagementObjectSearcher("select * from Win32_SerialPort"); гдето в этих класах(WMI) есть инфа о диагностических ЮСБ портах... в Win32_USBControler точно нету, а вот вроде как есть чтото интересное в Win32_USBControlerDevice... но я не понимаю как пользоваться информацией предоставляемой этим класом ![]() |
Сообщ.
#2
,
|
|
|
Цитата Fox @ в Win32_USBControler точно нету A в Win32_USBHub? ![]() |
Сообщ.
#3
,
|
|
|
информации о номере компорта там не нашол
|
Сообщ.
#4
,
|
|
|
попросту говоря мне нужно сделать чтото типа окна
"Управление компьютером"-"Диспечер устройств"-"Порты КОМ и ЛПТ" ![]() ![]() |
Сообщ.
#5
,
|
|
|
Цитата Fox @ информации о номере компорта там не нашол Это все, что оттуда вытянул на скорую руку. ![]() ![]() ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_USBHub"); foreach (ManagementObject mo in searcher.Get()) { Console.WriteLine(mo["Name"]); Console.WriteLine(mo["DeviceID"]); Console.WriteLine(mo["Status"]); } Пустые порты выдают типа USB-mainhub USB\ROOT_HUB\4&14C69700&0 OK После подключения ЮСБ мемори-стик изменилось на USB-storage device USB\VID_1043&PID_8006\200506090855 OK Добавлено Win32_USBController выдает примерно то же самое: ![]() ![]() ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_USBController"); foreach (ManagementObject queryObj in searcher.Get()) { Console.WriteLine("-----------------------------------"); Console.WriteLine("Win32_USBController instance"); Console.WriteLine("-----------------------------------"); Console.WriteLine(queryObj["Caption"]); Console.WriteLine(queryObj["ConfigManagerUserConfig"]); Console.WriteLine(queryObj["DeviceID"]); Console.WriteLine(queryObj["Manufacturer"]); Console.WriteLine(queryObj["ProtocolSupported"]); Console.WriteLine(queryObj["Status"]); } Добавлено Вот все пропертиз класса Win32_USBControllerDevice , других там нету ![]() ![]() ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_USBControllerDevice"); foreach (ManagementObject queryObj in searcher.Get()) { Console.WriteLine("-----------------------------------"); Console.WriteLine("Win32_USBControllerDevice instance"); Console.WriteLine("-----------------------------------"); Console.WriteLine(queryObj["AccessState"]); Console.WriteLine(queryObj["Antecedent"]); Console.WriteLine(queryObj["Dependent"]); Console.WriteLine(queryObj["NegotiatedDataWidth"]); Console.WriteLine(queryObj["NegotiatedSpeed"]); Console.WriteLine(queryObj["NumberOfHardResets"]); Console.WriteLine(queryObj["NumberOfSoftResets"]); } |
Сообщ.
#6
,
|
|
|
это все понятно, но проблема в том, что я ищу именно имя порта, а весь остальной набор веселых параметров безсловно полезен и интересен но мне абсолютно не нужен.
перебор свойств ВМИ класов, в именах которых вствречается "юсб", "ком" или "порт", я уже давно сделал, но нихрена не нашол. |
Сообщ.
#7
,
|
|
|
Цитата Fox @ я ищу именно имя порта, А в каком виде имя должно быть записано? |
Сообщ.
#8
,
|
|
|
в таком чтобы можно было получить доступ к порту. в таком как он отображается в менеджере устройств винды.
COM2 например ![]() ![]() и именно через ВМИ класы. искать в реестре и т д не предлагать. |
Сообщ.
#9
,
|
|
|
Цитата Fox @ COM2 например Так значит нужен меппинг USB и виртуальных COM портов? Неслабая задачка... ![]() Добавлено У меня на машине их вообще нет: ![]() ![]() ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_SerialPort"); Console.WriteLine(searcher.Get().Count); Возвращает 0 ![]() Добавлено Во, вроде есть утилити, чтобы жизнь облегчить: http://www.microsoft.com/downloads/details.aspx?familyid=2CC30A64-EA15-4661-8DA4-55BBC145C30E&displaylang=en Добавлено WMI классы находятся в root\CIMV2 неймспейсе |
Сообщ.
#10
,
|
|
|
Win32_SerialPort отдает только железные порты
а у тебя ноут скорее всего потому их нету. а мне надо юсб ![]() |
Сообщ.
#11
,
|
|
|
Цитата Fox @ а мне надо юсб Ютилити дает перечень всех WMI классов и всех их пропертиз, других нету. ![]() |
Сообщ.
#12
,
|
|
|
хорошо
![]() ![]() |
Сообщ.
#13
,
|
|
|
Цитата Fox @ хорошо вопрос тогда - откуда винда берет инфу в девайс менагер о компортах? Хороший вопрос! ![]() |
Сообщ.
#14
,
|
|
|
думаю придутся брать инфу о юсб всетаки с реестра както по идентификатору ЮСБ устройства чтоли... только вот как это сделать представляю смутно.
обидно что не получилось найти ВМИ клас с этой инфой, а ведь он есть 100%... |
Сообщ.
#15
,
|
|
|
Fox, а как насчет того, чтобы слить всю базу WMI со всеми классами и свойствами в текстовый файлик, и поискать в нем слово COM?
|