Windows 10是美國微軟公司研發的跨平臺及設備應用的操作系統。是微軟發布的最后一個獨立Windows版本。Windows 10共有7個發行版本,分別面向不同用戶和設備。2014年10月1日,微軟在舊金山召開新品發布會,對外展示了新一代Windows操作系統,將它命名為“Windows 10”,新系統的名稱跳過了這個數字“9”。截止至2018年3月7日,Windows 10正式版已更新至秋季創意者10.0.16299.309版本,預覽版已更新至春季創意者10.0.17120版本 如果你是一個Windows內幕和一個游戲玩家,你可能是并不陌生,在Windows 10的Xbox控制器困境;在構建14291,只需連接一個控制器可以降低操作系統。建立14295迅速修復了,但隨后推出,使得它不可能使用很長一段時間的問題?爝M到今天 - 建設14316 - 而且還是看不到修復。什么是Windows業內人士中的Xbox測試賽季呢。
我們開始解決問題,我們知道控制器的作品,那就是,我們可以發揮通過Xbox流功能的Xbox游戲。但是很短的時間量之后,一切都開始減緩和音頻開始噼啪作響。讓我們火起來的Windows性能記錄器(WPR)和微量元素是怎么回事時,事情開始吸吮。
我們將啟用CPU使用率(無圖)和桌面組合活性譜,點擊開始,火起來輻射4,和剛剛上場一分鐘左右。
正如預期的那樣,現在情況非常緩慢。讓我們停下來,讓系統恢復一下,拯救我們的痕跡。
打開在Wi??ndows性能分析器(WPA)的跟蹤,我們看到CPU活動的一個非常有趣的線性發展在我們的計算圖形集縮略圖,但是讓我們專注于用戶界面呆滯第一。
打開視頻圖形集并拖動DWM邊框細節繪制到我們的分析面積計算幀速率隨著時間的推移一個美麗的可視化。這證實了桌面窗口管理器(DWM)以每秒約60幀,直到事情發生,導致它下跌愉快地渲染我全屏的Xbox流媒體窗口。
讓我們在CPU占用率曲線帶來一些副作用并排分析。
OK,至此在CPU占用率曲線肯定確認東西是占用進程,我們的坦克幀速率。
擴展堆棧揭示我們做了很多對控制器的輸入處理工作,每份報告(例如按下按鈕)。等待,我們正在顯示的每一次我們做一些控制器上的界限?并獲得通過的GetDC(其重定向到ZwUserGetDC)每一次新的設備上下文句柄這樣做呢?嗯哦,我們可能會發現我們的問題。

讓我們在偷看DesktopInputDisplay ::使用調試器里面的getBounds什么,F在,因為DWM負責繪制我們機器上所有的UI,我們需要附加一個調試器,是可控的外部。否則,我們就自己掛起來,失去了我們的機器的控制權。
這樣的運行。時間從筆記本電腦連接。
而我們在,F在,讓我們反匯編這個函數。
這個功能是非常小的。閱讀反匯編列表和理解匯編指令超出了這個帖子的目的,所以我會總結一下我們正在考慮與一些C偽代碼:
我做了一些研究,并...為什么這個代碼是在這里,而不是一些初始化的一部分,其他地方還不清楚。
它基本上是告訴Windows來達到到內核空間,喚醒了顯示驅動程序,并告訴它準備在桌面上繪制操作。然后,駕駛員跳下床,看著桌面,在內部設置了一些東西,并給了我們一個道理引用這個工作以后。但是,在一個袋子污垢舉動,我們只要求在桌面上的測量和沒有清理走。
無禮!
無論如何,我們這里有兩個問題:
的GetDC是昂貴的被調用在亞毫秒間隔的輸入處理程序的上下文來調用。我要去猜,我們正在某處與我們重復調用堵塞的隊列。
我們不是清理句柄的GetDC返回。我不相信這是直接關系到我們的問題,但它確實意味著,如果你強硬通過lagginess,你會最終與內存外的一個錯誤崩潰DWM。
再次代碼來看,很明顯的失敗不被視為關鍵。如果壞事有兩種GetDC的或GetDeviceCaps發生,我們始終陷入返回硬編碼值。所以,我們只是砍出的GetDC調用,讓它做所有的時間。
這是我們這個補丁之前。
而這里的后。因為原來的調用指令是6字節長,我用了近跳轉指令(2字節)跳過剩下的4個字節。 (我們可以僅覆蓋了整個指令有6個無使用說明書但更關鍵的一拳。)
讓我們給它一個旋轉。
而且我們的清晰;我沒有打任何突然口吃并核實事情看起來在Windows性能分析器好得多。
這種創可貼應持有直到微軟修復該問題在即將到來的飛行。如果你想你的機器上應用此修復程序沒有所有的手動步驟上面,做到以下幾點:
確保您使用的是Windows 10 14316.rs1_release.160402-2217的64位副本
為Windows安裝調試工具
打開工具被安裝到文件夾中提升的命令提示符
仔細發出以下命令:“.symfix; EB ism32k DesktopInputDisplay :: +的getBounds 29 EB 04; .detach;”國開行-pn dwm.exe -c
Windows 10系統成為了智能手機、PC、平板、Xbox One、物聯網和其他各種辦公設備的心臟,使設備之間提供無縫的操作體驗。
|