2014-12-19 2 views
3

Я модифицирую контроллер монитора для прототипа. Было бы удобно отправлять команды прототипу с использованием DDC/CI. В Windows я не могу найти очевидный способ отправить команду DDC/CI на «зависимое от дисплея устройство».Как получить доступ к зависимому устройству DDC/CI Display из приложения Windows?

Monitor Configuration API может отправлять команды виртуальной панели управления, но не дает доступа к устройствам, зависящим от отображения (которые имеют адрес I2C, отличный от 0x6e).

Продукт Nicomsoft WinI2C/DDC, похоже, дает доступ к устройству, зависящему от дисплея, но это конец жизни. Я бы предпочел не создавать зависимость от продукта с истекшим сроком службы.

У NVIDIA NVAPI есть API I2C, но я хотел бы получить решение, которое также будет работать с графическими адаптерами Intel и AMD.

ответ

1

Решение для окон, которые рассматривают модель дисплея драйвера XDDM. Windows 8 и 10 используют WDDM.

В XDDM есть окна O.S. драйвер видеопотока, а поставщик оборудования поставляет драйвер минипорта. Когда вызовом драйвера минипорта используется вспомогательный помощник edid apr (VideoPortDDCMonitorHelper) драйвера видеопортала, минипорт должен предоставить 4 указателя функций i2c в качестве аргументов.

Чтобы использовать эти интерфейсы, вы должны действовать как драйвер видеопорта. Таким образом, вам нужно написать драйвер нижнего фильтра видеопорта, который просто проходит по всем интерфейсам от драйвера драйвера видеопорта, подключенного к окну, к драйверу минипорта. Возьмите api и экспортируйте их в драйвер usermode или ioctl, который приложение может вызвать.

Возможно, вы сможете просто установить экземпляр драйвера минипорта, а некоторые - как позвонить ему VideoPortDDCMonitorHelper. Но без помощи фактического драйвера видеопортала было бы трудно получить руководство о том, как это сделать. Также у вас будет 2 экземпляра запускающего драйвера, который может быть против правил для окон.

Это не похоже, что это решение работает для окон 8 и 10, потому что они используют другую модель драйвера дисплея, которая, как представляется, не обеспечивает низкий уровень контроля i2c. Он является внутренним для драйвера минипорта.

+1

Вот список функций, которые должны быть зарегистрированы вашим драйвером фильтра https://msdn.microsoft.com/en-us/library/windows/hardware/ff566464(v=vs.85).aspx. Вы должны имитировать драйвер мини-порта видео, передавая все между ними. –

+0

Благодарим вас за то, что сообщила мне, что драйвер фильтра видеопортера XDDM решит проблему. – joshuanapoli

+0

Я думаю, что решение также существует и проще с WDDM, но есть небольшая оговорка. Вы не получаете такой низкий уровень доступа к линиям данных и тактовых линий, вместо этого вы просто отправляете буфер. Однако в соответствии с msdn dispaly miniport драйверам разрешено отклонять запросы к адресам i2c, отличным от адреса edid. Поэтому, хотя драйвер кросс-платформы может быть возможен, для Windows такая поддержка не предусмотрена, а скорее оставлена ​​до oem. –

 Смежные вопросы

  • Нет связанных вопросов^_^