一、概述 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