2012-04-05 43 views
1

我想在我正在編寫的安全性應用程序的最低級別讀取顯示卡的幀緩衝區。
我想盡可能保證我正在閱讀的內容正是最終 放置在硬件照亮屏幕像素的位上,
並且沒有軟件層位於中間(或至少我想在中間有可能的最低層數)。在最低級別讀取framebuffer可能位於X

我已經看到使用X在一個精確時刻抓住屏幕非常容易,但該呼叫 仍然通過X服務器。
我想要一些更低級別的東西,即使這意味着與視頻卡一些ioctl混淆。
我已經看到DRI和DRI2的存在,但是它們的記錄非常糟糕,特別是後者的 。
我真的不明白他們是如何工作的。 你有什麼想法,參考或起點好的研究?

任何東西將不勝感激!

+0

請注意,在某些類型的重疊圖形(特別是視頻)的情況下,圖像可能永遠不會被寫入您可能確定爲「幀緩衝區」,而是隻是合成到從卡輸出的數據流中(這是很多人抱怨各種屏幕捕獲的事情,只是爲他們的媒體播放器窗口留下空白)不知道這會影響你想要做什麼但可能需要考慮。 – timday 2012-04-12 21:27:41

回答

0

我不確定讀取framebuffer會對你有多大幫助(甚至無視timday在他的評論中指出的問題,決定你閱讀的內容是否是你想要的內容可能不是很容易),但是如果你在Linux上這樣做,你可以映射kernel framebuffer devices,可能使用DirectFB來幫助你。另外,如果您在非Linux PC平臺上,則可以使用VESA(請參閱X.OrgX.Org VESA driver中的VESA代碼(實際代碼在兩者之間分開)。請注意,您可能也會有一些樂趣如多顯示器設置