2014-12-19 304 views
3

我正在修改原型的監視器控制器。使用DDC/CI將命令發送到原型會很方便。在Windows中,我無法找到將DDC/CI命令發送到「顯示相關設備」的明顯方法。如何從Windows應用程序訪問DDC/CI顯示器相關設備?

Monitor Configuration API可以發送虛擬控制面板命令,但它不允許訪問顯示相關設備(其具有非0x6e的I2C地址)。

Nicomsoft的WinI2C/DDC產品似乎可以訪問依賴於顯示器的設備,但它是報廢的。我不希望建立對生命週期結束產品的依賴。

NVIDIA的NVAPI有一個I2C API,但我想要一個同樣適用於Intel和AMD圖形適配器的解決方案。

回答

1

解決方案存在Windows尊重XDDM驅動程序顯示模型。 Windows 8和10使用WDDM。

在XDDM中有一個窗口O.S.提供的視頻端口驅動程序,硬件供應商提供微型端口驅動程序。當微型端口驅動程序調用視頻端口驅動程序的edid幫助程序API(VideoPortDDCMonitorHelper)時,微型端口必須提供4個i2c函數指針作爲參數。

但是,爲了利用這些接口,您必須充當視頻端口驅動程序。所以你必須編寫一個視頻端口較低的過濾器驅動程序,它將所有從Windows提供的視頻端口驅動程序的接口傳遞到微端口驅動程序。鉤住api並將它們導出到應用程序可以調用的用戶模式驅動程序或ioctl中。

它可能簡單地安裝微型端口驅動程序的實例,以及如何讓它調用VideoPortDDCMonitorHelper。但是,如果沒有實際的視頻端口驅動程序的幫助,就很難獲得關於如何做到這一點的指導。此外,您將有2個驅動程序實例可能違反Windows規則。

它沒有出現這個解決方案適用於Windows 8和10,因爲它們使用不同的顯示驅動程序模型,似乎並沒有公開低層次的i2c控制。它是微型端口驅動程序的內部。

+1

以下是過濾器驅動程序必須註冊的函數列表https://msdn.microsoft.com/en-us/library/windows/hardware/ff566464(v=vs.85).aspx。您必須模仿視頻微型端口驅動程序,將所有內容傳遞給驅動程序對之間。 –

+0

謝謝您讓我知道一個XDDM視頻端口過濾器驅動程序可以解決問題。 – joshuanapoli

+0

我認爲一個解決方案也存在,使用WDDM更容易,但有一個小問題。你不能獲得數據和時鐘線的低級別訪問,而只需發送一個緩衝區。然而,根據msdn的顯示,微型端口驅動程序被允許拒絕對edid地址以外的i2c地址的請求。因此,雖然跨平臺的驅動程序可能是可能的,但窗口並未強制提供這種支持,而是留給了oem。 –

相關問題