硬件环境
主机: DELL Inspiron 4150 笔记本
显卡: ATI MOBILITY RADEON 7500
软件环境
操作系统: Microsoft Windows 2000 Professional
DirectX: 9.0 for NT
其他: pcAnywhere 10.0.1 Build 370
经过描述
昨天下午打算玩一个老游戏。安装之后运行时报错,错误函数是 InitRenderToSurface。
既然是和「渲染」、「表面」有关,显然是 DirectDraw 的部分出了问题。由于没有办法把 DirectX 9.0 降版本,所以我试了试修改一下显卡驱动的设置,看看是不是某些特效带来的问题。
打开 ATI 显示控制面板的 Direct3D 部分,进入兼容性设置,点击「默认」,应用之后,问题来了。显示方式变为了 640×480 的 16 色模式,即最基本的显示模式。
我手动修改分辨率和色深无效,考虑到已经好几天没有重启过了,于是打算重启之后看看情况会不会有改善。
重启之后,分辨率和色深还是依旧。于是在桌面点击右键准备打开显示控制面板进行调整,没想到等来的却是蓝屏。
蓝屏之后就是自动重启,速度太快,我只是隐约看见有「VGA.DLL」的字样闪过。再次启动之后,又试验了几次,发现只要是打开显示控制面板,就一定会蓝屏,而其他操作则一切正常。
而且这个蓝屏一定会导致自动重启,即使已经把「启动和故障恢复」中的「自动重新启动」给屏蔽掉,依然是如此。
由于我的电脑内安装了较多自动运行的软件与服务,每次重启的速度相当难以忍受,所以我不敢一再试下去,只好先搜集一下情报,分析一下原因,试验一下其它不会导致蓝屏的方案。
蓝屏之后就是自动重启,速度太快,我只是隐约看见有「VGA.DLL」的字样闪过。再次启动之后,又试验了几次,发现只要是打开显示控制面板,就一定会蓝屏,而其他操作则一切正常。
而且这个蓝屏一定会导致自动重启,即使已经把「启动和故障恢复」中的「自动重新启动」给屏蔽掉,依然是如此。
由于我的电脑内安装了较多自动运行的软件与服务,每次重启的速度相当难以忍受,所以我不敢一再试下去,只好先搜集一下情报,分析一下原因,试验一下其它不会导致蓝屏的方案。
很明显,故障就是由于我调整了 ATI 显卡的 D3D 中的那些设置造成的。只要能恢复那些设置,就可以修复故障。
首先想到的,莫过于重装显卡驱动。在设备管理器中卸载当前驱动,然后重新安装,可重启之后,故障依旧。
不过进入安全模式,或采用 VGA 模式启动,则可以打开显示控制面板而不会导致蓝屏。然而此时由于 ATI 的驱动未被加载,所以也无法调整那些导致故障的设置。
我尝试在注册表中清除掉 ATI 相关的键值,并完全删除掉ATI显卡控制面板的整个安装目录后再重新安装驱动,但是问题始终无法解决。
首先想到的,莫过于重装显卡驱动。在设备管理器中卸载当前驱动,然后重新安装,可重启之后,故障依旧。
不过进入安全模式,或采用 VGA 模式启动,则可以打开显示控制面板而不会导致蓝屏。然而此时由于 ATI 的驱动未被加载,所以也无法调整那些导致故障的设置。
我尝试在注册表中清除掉 ATI 相关的键值,并完全删除掉ATI显卡控制面板的整个安装目录后再重新安装驱动,但是问题始终无法解决。
看来,还得从蓝屏时给出的信息着手。根据以前处理 Windows 2000 蓝屏故障的经验,在蓝屏时系统给出的错误信息是极具参考价值的。但我现在由于无法抑制系统在蓝屏后的自动重启,而不能仔细地阅读其中的信息(PAUSE 键无法暂停)。每次重启都只能阅读一个单词,而重启速度又很慢,显然这样不是办法。
好在突然想到自己有一台数码相机,于是用摄像模式把蓝屏过程拍了下来,读出 AVI 片段后传送到别的电脑上仔细研读。640×480 的摄像分辨率虽然不高,但还是可以勉强分辨出其中的信息了。经过研读后,发现其中有价值的信息有三:
- 错误代码:0x000000CE
- 错误说明:DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATION
- 错误发生在:VGA.DLL
然而好景不长,在我试图调整分辨率,点击「应用」后,它又蓝屏了。
这次的蓝屏不会自动重启了,我猜测之前的蓝屏会不顾系统设置而强行重启,和 pcAnywhere 也有关系。这次的错误信息和之前只有一点点差别,即错误位置变成了 ati2dvag.dll,这是 ATI 的显卡驱动中和 DirectDraw 有关的部分。
这次的蓝屏不会自动重启了,我猜测之前的蓝屏会不顾系统设置而强行重启,和 pcAnywhere 也有关系。这次的错误信息和之前只有一点点差别,即错误位置变成了 ati2dvag.dll,这是 ATI 的显卡驱动中和 DirectDraw 有关的部分。
由于 pcAnywhere 已经卸载,罪魁已经不在,我只能尝试卸载显卡驱动程序后重新安装。还好,重装显卡驱动之后,就一切正常了。
看来,显卡驱动在安装的时候,就已经和 pcAnywhere 发生了关系。我迅速把导致故障的那几个设置调回了原来的值。这之后,我重新安装了 pcAnywhere 的仅含主控端的部分,相信以后再也不会发生类似情况了。
至于那个老游戏,就只有放弃了。
看来,显卡驱动在安装的时候,就已经和 pcAnywhere 发生了关系。我迅速把导致故障的那几个设置调回了原来的值。这之后,我重新安装了 pcAnywhere 的仅含主控端的部分,相信以后再也不会发生类似情况了。
至于那个老游戏,就只有放弃了。
后记
本来没有什么好写的,我所做的一切都是按照别人的文档进行尝试而已。
然而我觉得遗憾的是,当我在 Google 上用「VGA.DLL」做关键词在中文网站中进行查找时,居然只有一篇无关的信息被找到。而当我把范围扩大到所有网站时,出现的第一篇就是解决问题的文章。
同样地,当我在搜索 ati2vag.dll 的相关内容的时候,国内网站出现的都是讨论这个驱动文件的版本号以及和游戏相关的内容,而且都是互相抄来抄去,提到发生错误或蓝屏的几乎没有。而国外网站用 ati2vag.dll 加上 blue 就可以搜出一大堆的讨论我这次遇到的问题的文章。
由此可见,我们的 IT 媒体,IT 网站,包括 IT 人,都是浮在表面,比起国外的网站来,我们真的是缺乏对技术的追求。
所以我把这问题写出来,希望能够被 Google 搜到,免得国内不懂英文的人会因为这种问题把系统给格式化重装掉。
所以我把这问题写出来,希望能够被 Google 搜到,免得国内不懂英文的人会因为这种问题把系统给格式化重装掉。