TWI405120B - Use the filter driver to get the graphical device interface call method - Google Patents
Use the filter driver to get the graphical device interface call method Download PDFInfo
- Publication number
- TWI405120B TWI405120B TW96103003A TW96103003A TWI405120B TW I405120 B TWI405120 B TW I405120B TW 96103003 A TW96103003 A TW 96103003A TW 96103003 A TW96103003 A TW 96103003A TW I405120 B TWI405120 B TW I405120B
- Authority
- TW
- Taiwan
- Prior art keywords
- update
- ddi
- driver
- function
- display
- Prior art date
Links
Landscapes
- Controls And Circuits For Display Device (AREA)
Description
本發明係關於電腦圖形及圖像處理領域,更係關於一種透過過濾驅動獲取電腦顯示設備圖形資料的方法。
個人電腦計算能力的增強和配套圖形處理器的提供使得個人電腦上的圖形圖像處理能力逐日增強,即從早期的二維點陣圖處理及向量應用邁至今日之三維處理和視頻應用。在使用個人電腦的圖形處理時,豐富圖形內容雖帶給用戶更好的體驗,同時卻也帶給遠端控制、遠端投影、多用戶共用和螢幕靜態截圖等需要同步獲得顯示內容的應用帶來很大挑戰,特別是需要即時獲取螢幕內容的應用。
即時獲取螢幕內容的技術得以軟體方式和硬體方式實現之。以透過硬體即時獲取螢幕內容的技術而言,其係直接截取一顯示配接卡的視頻輸出信號,並將該視頻輸出信號作為輸入源,以輸入至一視頻壓縮卡中,以透過該視頻壓縮卡將視頻資料予以壓縮,並將視頻資料以視頻資料流的形式記錄下來。這種硬體實現方式比較簡單,因其係以硬體壓縮卡處理視頻信號,故對電腦的處理能力沒有額外要求。然而,這種方式卻有需增加額外視頻壓縮卡硬體的缺點,因其設備配置複雜,並導致用戶使用不便。此外,在硬體實現方式中,信號會經過兩次數位至類比轉換,故視頻資料有一定精度的損失,即有某種程度的失真,故不能為用戶提供高質量的畫面。
以下將簡單介紹以軟體方即時獲得螢幕內容的技術。在Windows作業系統下,應用程式透過GDI(圖形設備介面)完成螢幕的繪製,其中圖形設備介面支援圖元操作和點陣介面。圖元級介面相對較為高級,故所需之描述資料較少,但卻有無法被直接顯示的缺點,故需要Windows顯示體系和顯示卡硬體配合才能轉換成點陣輸出。點陣級介面則相對等級較低,故所需資料量較大,但其截獲之資料可被直接顯示。因此,在軟體實現方式中,截獲GDI資料既可以在點陣層次進行,也可以在圖元調用(invocation)層次進行,或者二者結合進行。
第一種軟體實現方式是採用一用戶態應用程式定時獲取FrameBuffer(幀緩衝),然後將獲取的幀圖像進行後續處理。第二種軟體實現方式是採用微軟公司定義的顯示Mirror體系,其方式為首先載入映像顯示驅動程式(mirror),接著即時複製當前顯示幕的各個更新,然後將映像後的資料加以壓縮並以並流的形式記錄下來。
在第一種軟體實現方式中,每次獲取的是整個螢幕,不管區域有沒有更新。而且該方式只能採用點陣介面,所以資料量大、處理慢、帶寬要求高,適用於靜態單個螢幕截獲處理的應用。在第二種軟體實現方式中,由於只獲取螢幕變化的部分,因而獲取圖像資料的速度更快,在圖像顯示的同時即可被複製(即時性更高),故已被廣泛採用。但是,由於視頻和三維處理源資料量大,又需要複雜的本地計算,故通常由顯示卡硬體的GPU(圖形處理單元)進行加速處理,所以微軟定義Mirror體系時自動禁止了本地電腦的視頻和三維加速支援,使得依賴於三維和視頻加速的應用程式無法運行,故採用Mirror的應用程式的運行效果受到很大限制。因此,一種能同時支援視頻和三維加速處理之類似Mirror的快速截獲GDI調用方法確有其被提出的必要。
鑒於上述問題,本發明之目的即在於提供一種利用圖形過濾驅動獲取圖形設備介面調用的方法,以支援本地電腦的視頻和三維加速處理。
本發明之一態樣為一種利用過濾驅動截取圖形設備介面調用的方法,該過濾驅動對圖形設備介面引擎和真實顯示驅動是透明的,該方法包括下列步驟:複製從真實顯示驅動返回的一DDI函數表;修改需要截取螢幕更新之真實顯示驅動的DDI函數;建立一輔助緩衝區,以作為截獲之螢幕更新的一更新緩衝區;以及對該更新緩衝區進行進一步處理。
利用本發明的方法,對本地電腦的視頻和三維加速支援可透過軟體方式實現之,故能為用戶提供高品質的畫面和顯示效果。與現有之Mirror體系相較,由於本發明未採用Mirror體系,故系統的圖形設備介面引擎並不知過濾驅動的存在,顯示卡的視頻和三維加速功能仍然存在,這些功能在系統中仍然可以獲得支援,故採用視頻和三維加速的應用程式可以正常運行。
以下將配合附圖詳細說明本發明的具體實施方式,其中省略了本領域技術人士所公知之技術細節的說明,以避免模糊本發明的焦點。
在Windows作業系統中,顯示驅動被要求支援一系列圖形設備驅動介面DDI,這些介面大致可以分為管理驅動的設備物件、Surface、滑鼠、設備點陣圖、DirectX和繪製DDI。一個程式只要實現了DDI介面就可以作為顯示驅動被系統載入。
圖1所示為本發明之利用過濾驅動截取圖形設備介面調用之方法之一實施例中所使用之圖形過濾驅動150與GDI引擎100和真實顯示驅動200之間的邏輯關係。
如圖1所示,本發明在GDI引擎100與真實顯示驅動200之間加入了一過濾層,稱為圖形過濾驅動150。透過安裝該圖形過濾驅動150並對系統進行初始化,該過濾層對Windows GDI引擎100表現為真實顯示驅動200,而對真實顯示驅動200則表現為Windows GDI引擎100。也就是說,此處圖形過濾驅動150對GDI引擎100和真實顯示驅動200是透明的。
對於每個顯示更新對應的繪製DDI,圖形過濾驅動150的DDI首先獲得調用(invocation),執行時先調用真實顯示驅動的對應DDI完成本地顯示更新,然後將該調用參數保存到調用更新表300中,或者調用GDI引擎100轉化為點陣,同時記錄顯示畫面中有變化的區域。
圖2所示為本發明之利用過濾驅動截取圖形設備介面調用之方法之一實施例的流程圖。如圖2所示,在步驟S210,將上述的圖形過濾驅動150安裝為當前顯示卡的虛擬驅動。
在安裝過程中,安裝程式獲取當前系統之主顯示設備的PND DeviceID(即插即用設備標識),枚舉並匹配顯示卡註冊項{4d36e968-e325-11ce-bfc1-08002be10318}下每個註冊項的DeviceID。對於匹配的註冊項,修改其Settings(設置)鍵下的Installed DisplayDrivers註冊項,並將該Key的值修改為本發明的圖形過濾驅動150的名字。
在步驟S220,作業系統透過圖形過濾驅動的名字獲得顯示驅動的模組名稱並載入至系統中,從而將圖形過濾驅動150載入至系統中。
在系統載入圖形過濾驅動期間,在驅動入口函數Drv EnableDriver中,圖形過濾驅動150載入真實顯示驅動200,並將真實顯示驅動200返回的DDI函數表複製一份;對需要截取螢幕更新的DDI函數,將其在函數表中的值修改成指向過濾驅動對應函數的指標,同時保存原始函數指標;對不需要處理的函數(如視頻和三維加速介面),仍然保留為真實顯示驅動的函數指標,並將複製的函數表返回給GDI。以此方式為之,圖形過濾驅動150實現了對真實顯示驅動200調用的過濾功能。
圖3所示為在圖2所示流程圖中載入圖形過濾驅動期間所需複製和處理之介面之名稱的DDI列表。
在這些介面DDI中,圖形過濾驅動150需要實現所有的驅動管理DDI,以實現將GDI要求的驅動載入及驅動禁止等功能截獲下來、建立內部的管理資料、並將調用轉發給真實驅動的相應函數。
此外,繪製DDI是截獲內容的重點,所有的螢幕更新都是透過繪製DDI完成的。在這些函數中,圖形過濾驅動150記錄更新DDI的參數和更新的源資料、保存到更新調用表300中、並調用真實顯示驅動200的相應DDI完成本地繪製。若有必要,圖形過濾驅動150也可以更新DDI的調用轉換成點陣,並保存至更新幀緩衝中。
此外,滑鼠控制DDI實現滑鼠位置和形狀更新,圖形過濾驅動150將該等資訊記錄下來供後續處理400。
在步驟S230,圖形過濾驅動200的DrvEnable Surface DDI獲得調用,該DDI負責建立一個主Surface,後繼之所有繪製DDI的輸出結果都被保存至該主Surface中。若過濾驅動要保存更新緩衝,則圖形過濾過濾驅動150建立一個輔助Surface,作為截獲之螢幕更新的更新緩衝。當後續的繪製DDI被調用時,將繪製點陣被保存在該輔助Surface中。
在步驟S240,需要截取螢幕更新的繪製DDI得到調用,圖形過濾驅動150將調用參數和更新資料源保存至更新調用表300中,且先透過保存的原始函數指標調用真實驅動的DDI,藉以完成真實顯示卡的顯示更新。若欲保存幀緩衝,則圖形過濾驅動150自行或者借助GDI引擎100在輔助Surface上完成繪製。以此方式為之,輔助緩衝區中的內容就與顯示幕幕得到了同步更新。
圖4所示為以記錄更新點陣之TextOut為例說明圖2所示方法的處理流程。
如圖4所示,在步驟S410時,系統首先判斷真實顯示驅動200是否支援該DDI;若是,則調用真實顯示驅動200的函數在步驟S420時更新本地顯示,否則跳過步驟S420。
然後,系統在步驟S430時判斷圖形過濾驅動150是否在工作狀態;若否,則結束。若圖形過濾驅動為處於截屏狀態,則在步驟S440時查找在DrvEnablePDEV階段創建之過濾驅動的結構。在步驟S450時,判斷是否找到;若是,則說明該結構的確為過濾驅動所建立。在步驟S460時,鎖定輔助Surface。在步驟S470時,將點陣繪製至該輔助Surface中,並在步驟S480時解鎖該輔助Surface。在步驟S490時,對所獲得的點陣加以後續處理。
本發明之採用過濾驅動截獲GDI資料的方法可以應用於支援視頻和三維應用的無線投影方案中,在該方案中對截獲的繪製DDI透過調用GDI Engine的對應函數可完成繪製處理,然後將保存在更新緩衝區中的點陣透過其它模組進行壓縮編碼並透過網路發送至投影機遠端。或者,也可以將截獲的繪製元語進行區分,並對涉及點陣操作的DDI的點陣資料進行壓縮處理,而對非點陣資料則直接處理更新緩衝中的繪製元語,並將點陣與非點陣兩種資料一起發送至投影機端進行解壓縮和元語繪製,以複製主機端的畫面。
以上所述僅為本發明中的具體實施方式,但本發明的保護範圍並不僅侷限於此,任何熟悉該技術之人士得在本發明所揭露的技術範圍內輕易思及其變更或替換,該等變更及替換都應涵蓋在本發明的包含範圍之內。因此,本發明的保護範圍當以申請專利範圍所列的保護範圍為準。
100...GDI引擎
150...圖形過濾驅動
200...真實顯示驅動
300...調用更新表
400...後續處理
S210...步驟
S220...步驟
S230...步驟
S240...步驟
S410...步驟
S420...步驟
S430...步驟
S440...步驟
S450...步驟
S460...步驟
S470...步驟
S480...步驟
S490...步驟
藉由詳細說明及附圖可更全面理解本發明,在附圖中:圖1所示為本發明之利用過濾驅動截取圖形設備介面調用之方法之一實施例中所使用之圖形過濾驅動與GDI引擎和真實顯示驅動之間的邏輯關係。
圖2所示為本發明之利用過濾驅動截取圖形設備介面調用之方法之一實施例的流程圖。
圖3所示為在圖2所示流程圖中載入圖形過濾驅動期間所需複製和處理之介面之名稱的DDI列表。
圖4所示為以記錄更新點陣之TextOut為例說明圖2所示方法的處理流程。
100...GDI引擎
150...圖形過濾驅動
200...真實顯示驅動
300...調用更新表
400...後續處理
Claims (4)
- 一種利用過濾驅動截取圖形設備介面調用的方法,其中該過濾驅動對圖形設備介面引擎和真實顯示驅動是透明的,且該方法包括下列步驟:複製從真實顯示驅動返回的一DDI函數表;修改需要截取螢幕更新的真實顯示驅動的一DDI函數,其中該修改需要截取螢幕更新的DDI函數的步驟包括:將該需要截取螢幕更新的DDI函數在該函數表中的值修改成一指向過濾驅動對應函數的指標,同時保存一原始函數指標;建立一輔助緩衝區,以作為截獲的螢幕更新的一更新緩衝區;以及對該更新緩衝區進行一後續處理。
- 如申請專利範圍第1項所述之方法,其中對更新緩衝區之後續處理的步驟包括下列步驟:根據需要將該更新緩衝區進行繪製成點陣或直接處理截獲的元語。
- 如申請專利範圍第1項所述之方法,更包括下列步驟:調用真實顯示驅動的相應繪製DDI,以完成本地的顯示更新。
- 如申請專利範圍第3項所述之方法,其中該調用真實顯示驅動的相應繪製DDI以完成本地顯示更新的步驟包括下列步驟:透過保存的原始函數指標調用真實顯示驅動的繪製 DDI,完成真實顯示卡的顯示更新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW96103003A TWI405120B (zh) | 2007-01-26 | 2007-01-26 | Use the filter driver to get the graphical device interface call method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW96103003A TWI405120B (zh) | 2007-01-26 | 2007-01-26 | Use the filter driver to get the graphical device interface call method |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200832212A TW200832212A (en) | 2008-08-01 |
TWI405120B true TWI405120B (zh) | 2013-08-11 |
Family
ID=44818828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW96103003A TWI405120B (zh) | 2007-01-26 | 2007-01-26 | Use the filter driver to get the graphical device interface call method |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI405120B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030103058A1 (en) * | 2001-05-09 | 2003-06-05 | Candice Hellen Brown Elliott | Methods and systems for sub-pixel rendering with gamma adjustment |
TW200608781A (en) * | 2004-08-10 | 2006-03-01 | Nvidia Corp | VGA connector with integral filter |
TW200627279A (en) * | 2004-08-13 | 2006-08-01 | Ibm | A prioritization system |
-
2007
- 2007-01-26 TW TW96103003A patent/TWI405120B/zh not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030103058A1 (en) * | 2001-05-09 | 2003-06-05 | Candice Hellen Brown Elliott | Methods and systems for sub-pixel rendering with gamma adjustment |
TW200608781A (en) * | 2004-08-10 | 2006-03-01 | Nvidia Corp | VGA connector with integral filter |
TW200627279A (en) * | 2004-08-13 | 2006-08-01 | Ibm | A prioritization system |
Non-Patent Citations (1)
Title |
---|
Paul Blenkhorn, David Gareth Evans, and Alex Baude, "Full-screen magnification for windows using DirectX overlays", Neural Systems and Rehabilitation Engineering, IEEE Transactions, Volume 10, Dec. 2002, page(s): 225-231 * |
Also Published As
Publication number | Publication date |
---|---|
TW200832212A (en) | 2008-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8773443B2 (en) | Compression for co-processing techniques on heterogeneous graphics processing units | |
US12067409B2 (en) | Streaming per-pixel transparency information using transparency-agnostic video codecs | |
JP4856019B2 (ja) | グラフィックフィルタドライバを用いてグラフィックデバイスインターフェイスコールを取得する方法 | |
US20060079214A1 (en) | Method and apparatus for showing wireless mobile device data content on an external viewer | |
CN111818120A (zh) | 端云用户交互方法、系统及相应设备、存储介质 | |
US20110169844A1 (en) | Content Protection Techniques on Heterogeneous Graphics Processing Units | |
JP2006338531A (ja) | 画面共有サーバ装置、画面共有方法、画面共有サーバプログラム及び記録媒体 | |
WO2007114886A1 (en) | Selective window exclusion for captured content | |
CN101211258B (zh) | 完整获取GDI和DirectX数据的方法 | |
EP2854030A1 (en) | Sharing non-page aligned memory | |
WO2023143280A1 (zh) | 渲染图像的方法和相关装置 | |
CN116821040B (zh) | 基于gpu直接存储器访问的显示加速方法、装置及介质 | |
WO2023125273A1 (zh) | 电子设备的图像显示方法、图像处理电路和电子设备 | |
WO2023030519A1 (zh) | 投屏处理方法及相关设备 | |
CN114741081A (zh) | 一种基于异构缓存访问的跨运行环境显示输出共享方法 | |
CN114968152A (zh) | 减少virtio-gpu额外性能损耗的方法 | |
JP7160495B2 (ja) | 画像前処理方法、装置、電子機器及び記憶媒体 | |
TWI405120B (zh) | Use the filter driver to get the graphical device interface call method | |
CN114035903A (zh) | 实现Linux KVM虚拟机支持3D应用的方法及系统 | |
CN113713375B (zh) | 一种界面元素显示方法、装置、终端及存储介质 | |
WO2018231523A1 (en) | Method and system for a transactional based display pipeline to interface with graphics processing units | |
CN118018861A (zh) | 一种拍摄预览方法及电子设备 | |
CN118264836A (zh) | 多屏幕共享显示方法与装置、设备 | |
CN115913939A (zh) | 一种云桌面图像传输过程中图像数据实时修改方法及装置 | |
CN116934887A (zh) | 基于端云协同的图像处理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |