Получение инфы о оборудовании (не WMI)

Тема в разделе "WASM.WIN32", создана пользователем sasha_s, 25 май 2009.

  1. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    Ну вот стоит такое экзотическое условие, без WMI и все тут.
    Знаю только как у HDD получить инфу без WMI.
    А еще требуеться получить минимум Вендор(марка железа и производитель) и серийник/ID у:
    - материнка
    - сетевая
    - BIOS

    по биосу тоже есть инфа, правда еще не проверял, но вот по материнкам и сетевым -- глухо.
    Кстати у HDD получают инфу путем запросов к девайсу "\\.\PhysicalDrive%d", т.е. "\Device\PhysicalDrive%d", может такиеже девайсы есть для каждой железки?
    Есть мысли?
     
  2. nobodyzzz

    nobodyzzz New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2005
    Сообщения:
    475
    Для материнки http://pastebin.com/m15ba1ae
     
  3. mart

    mart New Member

    Публикаций:
    0
    Регистрация:
    1 окт 2007
    Сообщения:
    67
    Думаю тебе нужно вот это: http://pblog.ru/?p=105
     
  4. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    у меня на компе не сработало, т.е. в ветку
    Код (Text):
    1.     while( fp < 0xFFFFF)
    2.     {
    3.         ReadBIOSRegion(fp, 16, buf); fp += 16;
    4.         ...
    5.         else if(memcmp(buf, "_DMI_", 5)==0 && checksum(buf, 15))
    6.         {
    7.             u16 num=buf[13]<<8|buf[12];
    8.             u16 len=buf[7]<<8|buf[6];
    9.             u32 base=buf[11]<<24|buf[10]<<16|buf[9]<<8|buf[8];
    10.  
    11.  
    12.             ReadMotherBoarSerial(szSerial, base, len, num);
    13.  
    14.             fp += 16;
    15.         }
    16.         ...
    17.     }
    даже не зашло...

    Видать сильно зависит от производителя БИОСа, или еще чего...
     
  5. nobodyzzz

    nobodyzzz New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2005
    Сообщения:
    475
    sasha_s
    а что за ОСь у тебя?
     
  6. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    XP Prof SP2
     
  7. dermatolog

    dermatolog Member

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    406
    Адрес:
    Екатеринбург
    nobodyzzz
    ReadBIOSRegion будет работать только с правами администратора, а на Вын2к3, даже под администратором не будет работать.
     
  8. nobodyzzz

    nobodyzzz New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2005
    Сообщения:
    475
    из драйвер будет
     
  9. dermatolog

    dermatolog Member

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    406
    Адрес:
    Екатеринбург
    nobodyzzz
    Драйвер тут причем?
    Код (Text):
    1. HINSTANCE hDLL = GetModuleHandle (TEXT("ntdll.dll"));
     
  10. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    У него привелегии выше чем от имене админа.
     
  11. dermatolog

    dermatolog Member

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    406
    Адрес:
    Екатеринбург
    Pavia
    Ну ты бы код для начала глянул - там идет чистый юзермод.
     
  12. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    Дык админ я на своем компе, царь и Бох!

    Тока именно секцию "_DMI_" не находит, остальные есть, а этой нет...
     
  13. dermatolog

    dermatolog Member

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    406
    Адрес:
    Екатеринбург
    sasha_s
    А ты только для себя пишешь или для пользователя тоже? :))
    Структура памяти BOIS зависит от производителя. Попробуй скакнуть на +16 от "_SM_".
     
  14. nobodyzzz

    nobodyzzz New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2005
    Сообщения:
    475
    dermatolog
    я к тому что к \device\\physicalmemory в win2k3 только из драйвера можно обораться
     
  15. nobodyzzz

    nobodyzzz New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2005
    Сообщения:
    475
    sasha_s
    а вообще попробуй посмотреть на dmidecode - http://www.nongnu.org/dmidecode/,я на его основе писал этот код
     
  16. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    Взял я сей проектик, переделал под ВИН. Вот что оно мне выдало на моем компе, негусто:

    SMBIOS 2.3 present.
    Structure Table Length: 957 bytes
    Structure Table Address: 0x000F0800
    Number Of Structures: 35
    Maximum Structure Size: 85 bytes
    ACPI 1.0 present.
    OEM Identifier: IntelR
    RSD Table 32-bit Address: 0x5F7F3000
    BIOS32 Service Directory present.
    Revision: 0
    Calling Interface Address: 0x000FB000
    PNP BIOS 1.0 present.
    Event Notification: Not Supported
    Real Mode 16-bit Code Address: F000:BAE8
    Real Mode 16-bit Data Address: F000:0000
    16-bit Protected Mode Code Address: 0x000FBAC0
    16-bit Protected Mode Data Address: 0x000F0000
    PCI Interrupt Routing 1.0 present.
    Router ID: 00:1f.0
    Exclusive IRQs: 3 5 9 11
    Compatible Router: 8086:7000
    Slot Entry 1: ID 01:08, slot number 1
    Slot Entry 2: ID 01:04, slot number 2
    Slot Entry 3: ID 01:05, slot number 3
    Slot Entry 4: ID 01:00, slot number 4
    Slot Entry 5: ID 00:1e, on-board
    Slot Entry 6: ID 00:02, on-board
    Slot Entry 7: ID 00:1f, on-board
    Slot Entry 8: ID 00:1d, on-board
     
  17. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    sasha_s
    Брать сурцы биос и пт. и вручную всю нужную инфу извлекать, ось не предоставляет столь гибкий функционал потомучто это не нужно.
     
  18. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    Ага, и сколько таких сурцов есть на свете?
    Даже если все будут в открытом доступе -- то сколькож нужно перелопатить шоб работало хотябы на 90% компов...
     
  19. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Ну так а что вы хотите, иного способа нет. Хал под обарудование идёт.
     
  20. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    sasha_s
    Из такрытых знаю только свой и он под дос. Не так трудно. Все компы имеют стандартные интерфейсы правда их много.
    PnP - это идеология которая говорит о том что устройство должно передовать ОС информацию об устройстве.
    Что касается PnP как сервиса биоса. Позволяет перечислить все усторевшии устройства такие как PIC, LPT, COM, контроллер клавиатуры и др. Устарел и его заменяет ACPI.

    Что касается современных устройств они почти все находяться на PCI который предусматривает стандартные механизмы доступа через порты или прерывания. В ОС также встречаются специальные средства.

    USB устройства тоже стандартные правда тут помойму много стандартов. Если честно не интересовался.

    DMI он же SMBIOS практического интереса не представляет. Бывает превирает также не все поля заполненны.
    Серийник материнки. А также биоса лучше читать по фиксированным местам так как DMI такую информацию может непридоставлять.

    Тут нет стандарта. Правда существует всего два типа биосов которые предостовляют такую информацию. А именно AMI и Award. Этого достаточно так как они покрывают 90% биосов, а другии биосы такую информацию не придостовляют.

    PCI Interrupt Routing - устарел заменен ACPI. Также возможно получить аналогичную информацию через сервис PCI BIOS'а

    Что касается сетевых карточек. Mac адресс можно получить через сервис ОС. Собственно все больше о ней и говорить нечего.
    Основным производителем является Realteck и Intel. Документация открыта. Также встречаются и другии но реже.

    Жесткий стандарты открыты и получить информацию нетрудно.

    ACPI вобрал в себя все старые технологии. О собенно с выходом UEFI стал основным источником информации.

    Осложнен необходимостью декомпиляции а после сбором информации. Существуют сервисы ОС какие именно не знаю. Копия храниться в реестре.

    Информация о мониторе. В досе проще всего через вызов сервиса биос BIOS. В виндоусе информация хранится в реестре. Задокументирован. Если хотите получить напрямую от видио карты то придеться написать для каждой видеокарты драйвер( 3-4 разновидности).