На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> select * from Win32_???? , помогите найти WMI клас
    ищу WMI клас, хранящий информацию о диагностических портах оборудования (USB)

    нашол модемы и сериал порт
    ExpandedWrap disabled
      Модемы в системе:
       ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_POTSModem");
      Физические порты(COM ports):
       searcher = new ManagementObjectSearcher("select * from Win32_SerialPort");


    гдето в этих класах(WMI) есть инфа о диагностических ЮСБ портах...

    в Win32_USBControler точно нету, а вот вроде как есть чтото интересное в Win32_USBControlerDevice... но я не понимаю как пользоваться информацией предоставляемой этим класом :( для модемов все понятно, для компорта тоже, а вот для этого бред какойто - мне собственно нужно узнать к какому физпорту(КОМ) приатачено ЮСБ устройство...
      Цитата Fox @
      в Win32_USBControler точно нету



      A в Win32_USBHub? :huh:
        информации о номере компорта там не нашол
          попросту говоря мне нужно сделать чтото типа окна
          "Управление компьютером"-"Диспечер устройств"-"Порты КОМ и ЛПТ" :(

          :wall:
            Цитата Fox @
            информации о номере компорта там не нашол


            Это все, что оттуда вытянул на скорую руку.


            ExpandedWrap disabled
              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 выдает примерно то же самое:


            ExpandedWrap disabled
              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 , других там нету


            ExpandedWrap disabled
              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"]);
               
                          }
              это все понятно, но проблема в том, что я ищу именно имя порта, а весь остальной набор веселых параметров безсловно полезен и интересен но мне абсолютно не нужен.

              перебор свойств ВМИ класов, в именах которых вствречается "юсб", "ком" или "порт", я уже давно сделал, но нихрена не нашол.
                Цитата Fox @
                я ищу именно имя порта,


                А в каком виде имя должно быть записано?
                  в таком чтобы можно было получить доступ к порту. в таком как он отображается в менеджере устройств винды.

                  COM2 например :) или СОМ50 или СОМ100 :) ну короче СОМ

                  и именно через ВМИ класы. искать в реестре и т д не предлагать.
                  Сообщение отредактировано: Fox -
                    Цитата Fox @
                    COM2 например




                    Так значит нужен меппинг USB и виртуальных COM портов? Неслабая задачка... :yes-sad:

                    Добавлено
                    У меня на машине их вообще нет:

                    ExpandedWrap disabled
                      ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_SerialPort");
                      Console.WriteLine(searcher.Get().Count);


                    Возвращает 0 :no-sad:

                    Добавлено
                    Во, вроде есть утилити, чтобы жизнь облегчить:

                    http://www.microsoft.com/downloads/details.aspx?familyid=2CC30A64-EA15-4661-8DA4-55BBC145C30E&displaylang=en

                    Добавлено
                    WMI классы находятся в root\CIMV2 неймспейсе
                      Win32_SerialPort отдает только железные порты
                      а у тебя ноут скорее всего потому их нету.

                      а мне надо юсб :(
                        Цитата Fox @
                        а мне надо юсб



                        Ютилити дает перечень всех WMI классов и всех их пропертиз, других нету. :no:
                          хорошо :) вопрос тогда - откуда винда берет инфу в девайс менагер о компортах?:)
                            Цитата Fox @
                            хорошо вопрос тогда - откуда винда берет инфу в девайс менагер о компортах?



                            Хороший вопрос! :D
                              думаю придутся брать инфу о юсб всетаки с реестра както по идентификатору ЮСБ устройства чтоли... только вот как это сделать представляю смутно.

                              обидно что не получилось найти ВМИ клас с этой инфой, а ведь он есть 100%...
                                Fox, а как насчет того, чтобы слить всю базу WMI со всеми классами и свойствами в текстовый файлик, и поискать в нем слово COM?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0500 ]   [ 16 queries used ]   [ Generated: 28.05.23, 23:48 GMT ]