Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 26.05.2013
Сообщений: 4
1

Идентификация производителя монитора

26.05.2013, 17:22. Показов 3053. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, не первый день пытаюсь найти способ узнать (идентифицировать) производителя монитора.
Например (из аиды64): ID монитора SAM0691
Программу нужно написать на TASM, нашёл только информацию по EnumDisplayDevices, но как реализовать не знаю,
и ещё вычитал про прерывание INT 1Dh, но про него тоже не где нечего нет...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.05.2013, 17:22
Ответы с готовыми решениями:

Идентификация треугольника
есть фрагменты кода, прошу помощи в адаптации его под emu8086 я то питалась уже но что то не...

Идентификация объектов на изображении
Здравствуйте, а не подскажите какие лучше методы применять, чтобы распознавать различные объекты на...

Идентификация процессора
.model tiny .code org 100h start: mov eax,0 CPUID end start Не работает. Как...

Горячая правая часть монитора, а также адаптер у монитора - в чём причины?
Вчера вечером заходил к знакомой посмотреть комп. Надо было обновить версию браузера, да...

14
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
26.05.2013, 17:36 2
zloymedved,
прерывание 1Dh возвращает адрес активной таблицы видеопараметров и к монитору никакого отношения не имеет, самое правильное это прочитать информацию из веток реестра
0
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
26.05.2013, 18:01 3
Вообще-то вытаскивается по INT 10 4F15 - VESA VBE/DC (Display Data Channel) - READ EDID, если моник поддерживает EDID/DDC. Мой - нет.
Здесь подробно: http://www.ctyme.com/intr/rb-0308.htm
1
0 / 0 / 0
Регистрация: 26.05.2013
Сообщений: 4
26.05.2013, 18:02  [ТС] 4
Спасибо, пробую.
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
26.05.2013, 19:15 5
Цитата Сообщение от zloymedved Посмотреть сообщение
Здравствуйте, не первый день пытаюсь найти способ узнать (идентифицировать) производителя монитора.
C помощью SetupDi-функций можно получить такую информацию.
Последовательность действий примерно следующая:

1) Запрашивается набор устройств системы, поддерживающих интерфейс "монитор".
Для этого вызывается SetupDiGetClassDevsW с параметром GUID_DEVINTERFACE_MONITOR и
флагами DIGCF_PRESENT | DIGCF_DEVICEINTERFACE.

2) Для каждого найденного устройства вызывается SetupDiGetDeviceRegistryPropertyW с
параметром SPDRP_HARDWAREID. В случае успешного вызова функция заполнит буфер
строкой с соответствующим идентификатором. Например, у меня возвращает
"MONITOR\BNQ76BF".

Определений GUID_DEVINTERFACE_MONITOR и некоторых других в стандартных
заголовках Windows SDK нет, их нужно брать из заголовков Windows Driver Kit.

P.S. Учтите, что мониторов в системе может быть как несколько (у меня два), так и
ни одного (на серверах или на виртуалках).
0
0 / 0 / 0
Регистрация: 26.05.2013
Сообщений: 4
26.05.2013, 19:55  [ТС] 6
Тут проблема в том, что я вообще в программировании 0
Попытался написать на FASM:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
org 100h
    push cs
    pop es
    mov ax, 4F15h
    mov bl, 01h
    mov dx, 0000h
    mov cx, 0000h
    mov di, bb
    int 10h
    lds si, [es:di]
    lodsb
    or al, al
    int 29h
    int 16h
    int 20h
bb db 200h dup(?)
Думаю куда и как записывается значение и как получить его в текстовом виде...
Не могу справится с потоком информации...
0
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
26.05.2013, 19:56 7
Убежденный, а можно даже из-под доси[FASM]:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
    org 100h
    push    cs
    pop es
    mov ax, 4F15h
    mov bl, 1
    xor cx,cx
    xor dx,dx
    mov di, buf
    int 10h
    mov si, di
    add si, 5Ah
    lodsd
    cmp eax, 00FC0000h
    jnz @F
    call    puts
@@: mov si, di
    add si, 6Ch
    lodsd
    cmp eax, 00FF0000h
    jnz @F
    call    puts
@@: xor ax, ax
    int 16h
    int 20h
puts:   lodsb
    int 29h
    cmp al, 0Ah
    jnz puts
    mov al, 0Dh
    int 29h
    ret
buf db  100h dup(?)
Актуальная спецификация формата EDID здесь. S//N, дату изготовления и прочее выковыривайте сами. Ну и MonitorInfoView v1.15 - View Monitor Information (EDID) в помощь.
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
26.05.2013, 20:18 8
Charles Kludge, как Вы собираетесь вызывать прерывания в непривилегированном режиме ?
0
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
26.05.2013, 20:24 9
А кто мне вообще мешает вызывать int 10h в realmode? Оно же так и зовётся - VESA BIOS Extension(VBE). Читайте Ральфа...
1
0 / 0 / 0
Регистрация: 26.05.2013
Сообщений: 4
26.05.2013, 20:26  [ТС] 10
Спасибо огромное ещё раз.
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
26.05.2013, 20:51 11
Цитата Сообщение от Charles Kludge Посмотреть сообщение
А кто мне вообще мешает вызывать int 10h в realmode?
Как Вы собираетесь переключаться в реальный режим ? Доступ к CR0 вызовет #GP.
Или я ничего не понимаю и в этом разделе форума подразумевается только DOS и real mode ?
0
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
26.05.2013, 20:57 12
Убежденный, оно у меня и в консоли идёт, да и переделать в PE-console не проблема. Собственно, как и под линупс.
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
26.05.2013, 21:30 13
Ок, скопировал Ваш пример в редактор FASM, запустил.
Вылетела ошибка: "Не удалось запустить программу или компонент из-за
несовместимости с 64-разрядной версией Windows".
Добавил строку "format PE console", не помогло, ошибка 0xC0000005.
0
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
26.05.2013, 21:46 14
Цитата Сообщение от Убежденный Посмотреть сообщение
из-за несовместимости с 64-разрядной версией
Вот поэтому-то сёмка и осьмушка меня не интересуют - там по граблям ещё ходить-не переходить.
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
26.05.2013, 22:02 15
Грабли не при чем. 64-битные Windows не поддерживают 16-битные приложения,
об этом сказано, например, здесь: General Porting Guidelines:
...
Legacy or assembly code. 16-bit Windows-based applications do not run on 64-bit Windows and must be rewritten.
0
26.05.2013, 22:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.05.2013, 22:02
Помогаю со студенческими работами здесь

Выбор монитора за 10-13 тыс. Диагональ монитора 22-24, LED, FullHD, HDMI
Ребята, помогите подобрать хороший монитор!!! Мне понравился Samsung LCD 24" BX2450 Кто что...

Выбор видеокарты для монитора - память карты, разрешение монитора
. Уважаемые специалисты, добрый день. Дайте, пожалуйста, грамотных советов. 1. ...

Правильная настройка монитора или Что делать, если от монитора болят глаза и голова
Приветствую. Немногие умеют правильно настроить монитор, многие не настраивают его вообще либо...

Как задать координаты монитора в зависимости от монитора
На форме есть кнопка. как задать координаты в зависимости от монитора.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru