如果您是一个win内幕和一个游戏玩家,您或许是并不陌生,在win 7的xbox控制器困境;在构建14291,只需连接一个控制器可以降低操作系统。建立14295迅速修复了,但随后推出,使得它不或许使用很长一段时间的问题。快进到今天 - 建设14316 - 而且还是看不到修复。什么是win业内人士中的xbox尝试赛季呢。
你们开始处理问题,你们了解控制器的作品,那便是,你们可以发挥通过xbox流功能的xbox游戏。但是很短的时间量之后,一切都开始减缓和音频开始噼啪作响。让你们火起来的win性能记录器(wpR)和微量元素是如何回事时,事情开始吸吮。
你们将启用Cpu使用率(无图)和桌面组合活性谱,点击开始,火起来辐射4,和刚刚上场一分钟左右。
正如预期的那样,现在处境非常缓慢。让你们停下来,让系统还原一下,拯救你们的痕迹。
打开在wi??ndows性能分析器(wpA)的跟踪,你们看到Cpu活动的一个非常有趣的线性发展在你们的计算图形集缩略图,但是让你们专注于用户界面呆滞第一。
打开视频图形集并拖动dwM边框细节绘制到你们的分析面积计算帧速率伴随时间的推移一个美丽的可视化。这证实了桌面窗口管理器(dwM)以每秒约60帧,直到事情发生,导致它下跌愉快地渲染我全屏的xbox流媒体窗口。
让你们在Cpu占用率曲线带来一些副作用并排分析。
oK,至此在Cpu占用率曲线肯定确认东西是占用进程,你们的坦克帧速率。
扩展堆栈揭示你们做了许多对控制器的输入解决工作,每份报告(例如按下按钮)。等待,你们正在显示的每一次你们做一些控制器上的界限?并获得通过的GetdC(其重定向到ZwuserGetdC)每一次新的设备上下文句柄这样做呢?嗯哦,你们或许会发现你们的问题。
让你们在偷看desktopinputdisplay ::使用调试器里面的getBounds什么。现在,因为dwM负责绘制你们机器上所有的ui,你们需要附加一个调试器,是可控的外部。否则,你们就自己挂起来,失去了你们的机器的控制权。
这样的运行。时间从台式机电脑连接。
而你们在。现在,让你们反汇编这个函数。
这个功能是非常小的。阅读反汇编列表和理解汇编指令超出了这个帖子的目的,所以我会总结一下你们正在考虑与一些C伪代码:
我做了一些研究,并...为何这个代码是在这里,而不是一些初始化的一部分,其他地方还不清楚。
它基本上是告诉win来达到到内核空间,唤醒了显示驱动程序,并告诉它准备在桌面上绘制操作。然后,驾驶员跳下床,看着桌面,在内部配置了一些东西,并给了你们一个道理引用这个工作以后。但是,在一个袋子污垢举动,你们只要求在桌面上的测量和没有清理走。
无礼!
无论怎么,你们这里有两个问题:
的GetdC是昂贵的被调用在亚毫秒间隔的输入解决程序的上下文来调用。我要去猜,你们正在某处与你们重复调用堵塞的队列。
你们不是清理句柄的GetdC返回。我不相信这是即可关系到你们的问题,但它确实意味着,如果您强硬通过lagginess,您会最终与内存外的一个错误崩溃dwM。
再次代码来看,很明显的失败不被视为关键。如果坏事有两种GetdC的或GetdeviceCaps发生,你们始终陷入返回硬编码值。所以,你们只是砍出的GetdC调用,让它做所有的时间。
这是你们这个补丁之前。
而这里的后。因为原来的调用指令是6字节长,我用了近跳转指令(2字节)跳过剩下的4个字节。 (你们可以仅覆盖了整个指令有6个无使用说明书但更关键的一拳。)
让你们给它一个旋转。
而且你们的清晰;我没有打任何突然口吃并核实事情看起来在win性能分析器好得多。
这种创可贴应持有直到微软修复该问题在即将到来的飞行。如果您想您的机器上应用此修复程序没有所有的手动步骤上面,做到以下几点:
确保你使用的是win 7 14316.rs1_release.160402-2217的64位副本
为win安装调试工具
打开工具被安装到文件夹中提升的命令提示符
仔细发出以下命令:“.symfix; EB ism32k desktopinputdisplay :: +的getBounds 29 EB 04; .detach;”国开行-pn dwm.exe -c
企业版装机管家 风林火山官网 系统天地一键重装系统 萝卜花园装机助手 大白菜一键重装系统 木风雨林装机大师 系统之家重装系统 小黑装机卫士 青苹果一键重装系统 大地系统 华硕一键重装系统 极速一键重装系统 系统城官网 电脑公司装机助手 雨林风木装机助理 装机员重装系统 小白装机大师 雨林木风win8系统下载 乡巴佬装机助手 魔法猪u盘装系统