解决Windows 7无CSM卡logo的一种可能的方法——修改dxgkrnl.sys

查看 12|回复 1
作者:沐小然   
   
  一、概述  Windows7在一些(如Intel 6代之后的)平台安装时,如果关闭CSM,即使已打入显卡驱动,仍可能出现卡在Windows旋转徽标而无法显示桌面的情况,如果是Administrator空密码自动登录,还能听到Windows启动声音。目前已有一些解决方法,如UEFISeven、FlashBoot、驱动总裁解决卡logo方案等,通过模拟CSM环境,使显卡驱动得以正常工作,顺利进入桌面并发挥特性。  通过远程桌面等方法分析,上述现象出现的一种典型原因,是显卡驱动通过dxgkrnl.sys(可以理解为dxgkrnl.sys强加)上报给操作系统所需的VGA内存和端口资源未能被pci.sys所分配,导致显卡在设备管理器出现代码12错误而无法运行。由于现代显卡运行并不需要这些资源,因此本方法的思路是去掉对这些资源的需求。  二、前提条件  1. 打上不早于KB5022338(2023年1月最终补丁)的月度补丁。  2. 使用UEFI模式启动。  3. 在启动操作系统前将显卡驱动注入。  4. 测试使用的dxgkrnl.sys版本号是6.1.7601.24562。  三、dxgkrnl.sys修改方法  使用IDA载入,找到DpiFdoHandleFilterResources函数的下列位置(见链接图),修改2条指令,重新签名。    ht测试tps://wwdk.lanzouu.c测试om/ifgRQ37srjfa    密码:bc45  四、文件替换方法(务必备份原dxgkrnl.sys)  方法一:进入PE替换。  方法二(属于废话,能开CSM就无需本方法,但是可以用于分析测试):假如有办法打开CSM,则安装网卡驱动,通过远程桌面替换,先将所有者修改为当前用户,再加入完全控制的权限,最后进行文件替换。  五、效果和不足  本人在下列3套设备进行简单测试:  1. 台式机,i7-10700 + Q470 + AMD HD7000亮机卡(原本不卡logo):显卡功能正常,但系统无法睡眠、休眠(powercfg -a命令可以看到是VgaSave禁止睡眠、休眠)。  2. 笔记本,i7-9850H + B365 + RTX2060(原本卡logo):显卡功能正常,睡眠正常。  3. 台式机,i5+12490f + B760 + AMD HD7000亮机卡(原本卡logo):显卡功能正常,睡眠正常。  设备3效果图:    ht测试tps://wwdk.lanzouu.c测试om/idpHK37suqgb    密码:91yf  不足:  1. 部分设备存在无法睡眠、休眠问题。  2. 部分AMD平台和800系列主板上测试存在问题(卡logo无法解决或Direct3D失效)。  3. 未模拟CSM环境,BIOS不提供VGA机制,安全模式无法进入,蓝屏不显示。  4. FlashBoot作者在他的帖子中提到的INT10失败或I/O端口无限等待这一类情形无法用本方法解决(见ht测试tps://forums.mydigitallife.n测试et/threads/installing-windows-7-on-the-pure-uefi-systems-without-csm.80876/)。  六、建议  1. 如果要测试,本人提供按上述修改方法做出一版带测试签名的,见下,要使用必须打开“测试模式”。由于本人没有可用证书,只能提供测试签名版本。    ht测试tps://wwdk.lanzouu.c测试om/iHDZL37srjhc    密码:fhma  2. 如果要测试,务必备份好重要数据,防止系统崩溃数据丢失。  3. 能开CSM尽可能开,能用UEFISeven、FlashBoot、驱动总裁解决卡logo方案尽可能用,除非无效再试用本方法(例如本人的设备3,使用FlashBoot无效)。  4. 32位Win7未进行研究,方法应该一样。  5. 如需分析问题,可查看显卡设备代码、资源、上级PCI桥资源、msinfo32信息、dxdiag信息和RW对显卡设备和上级PCI桥的PCI配置空间数据。  七、分析  (另行记录,略)  本文Word版:    ht测试tps://wwdk.lanzouu.c测试om/iK9Ui37svaid    密码:81jw

测试, 方法, 显卡

ComputerIdiot   
感谢分享
您需要登录后才可以回帖 登录 | 立即注册

返回顶部