导航:首页 > 源码编译 > 111AA新源码平台

111AA新源码平台

发布时间:2022-05-08 10:09:57

‘壹’ 请问电脑在使用时经常出现蓝屏代码怎么解决

蓝屏"的硬件原因及解决

"蓝屏"现象多和内存大小、CPU频率、光驱、硬盘碎片等等关系密切......在计算机的使用过程中,经常会遇到蓝屏的情况。对于初学者来讲,好象就是一场电脑灾难一样,不知所措。其实只要了解了原因之后就不用怕了。造成计算机蓝屏的原因有很多种,硬件方面的原因总体可以概括为以下几种:

一、屏幕显示系统忙,请按任意键继续……

1、虚拟内存不足造成系统多任务运算错误
虚拟内存是WINDOWS系统所特有的一种解决系统资源不足的方法,其一般要求主引导区的硬盘剩余空间是其物理内存的2-3倍。而一些发烧友为了充分利用空间,将自己的硬盘塞到满满的,忙记了WINDOWS这个苛刻的要求。结果导致虚拟内存因硬盘空间不足而出现运算错误,所以就出现蓝屏。要解决这个问题好简单,尽量不要把硬盘塞得满满的,要经常删除一些系统产生的临时文件、交换文件,从而可以释放空间。或可以手动配置虚拟内存,选择高级,把虚拟内存的默认地址,转到其他的逻辑盘下。这样就可以避免了因虚拟内存不足而引起的蓝屏。

2、CPU超频导致运算错误
超频对于发烧友来说是常事,所以由超频所引起的各种故障也就在所难免了。超频,就本身而言就是在原有的基础上完成更高的性能,但由于进行了超载运算,造成其内部运算过多,使CPU过热,从而导致系统运算错误。有些CPU的超频性能比较好,如INTEL的赛扬处理器和AMD-K6-2处理器还算较好的,但有时也会出现一些莫名其妙的错误。(例如:我曾试过将INTEL赛扬300A,在超频到450时,软驱在没有接受命令时,进行读盘操作)。 INTEL的低于200的CPU以及AMD-K5的超频能力就不是那么好。建议高档的CPU要超频时,那么散热工作一定要做好,最好装一个大的风扇,再加上一些硅胶之类的散热材料。至于一些低档的CPU我建议你就最好不要超频了,免得超频达不到预想的效果反而经常出现蓝屏影响计算机的正常速度。

二、内存条的互不兼容或损坏引起运算错误

这时个最直观的现象,因为这个现象往往在一开机的时候就可以见到,根本启动不了计算机,画面提示出内存有问题,问你是否要继续。造成这种错误是物理上的损坏内存或者内存与其它硬件不兼容所致。这时候只有换过另外的内存了。

三、光驱在读盘时被非正常打开所至

这个现象是在光驱正在读取数据时,由于被误操作打开而导致出现蓝屏。这个问题不影响系统正常动作,只要再弹入光盘或按ESC键就可以。
以上是我在维护计算机中碰到导致蓝屏的几种原因,或许还会有其他一些莫名其妙的问题导致计算机出现蓝屏。不管怎样,遇到这类问题后,应先仔细分析问题发生的原因,然后再着手解决。

四、硬件剩余空间太小或碎片太多

由于Win9X运行时需要用硬盘作虚拟内存,这就要求硬盘必须保留一定的自由空间以保证程序的正常运行。一般而言,最低应保证100MB以上的空间,否则出现“蓝屏”很可能与硬盘剩余空间太小有关。另外,硬盘的碎片太多,也容易导致“蓝屏”的出现。因此,每隔一段时间进行一次碎片整理是必要的。

五、系统硬件冲突

这种现象导致“蓝屏”也比较常见。实践中经常遇到的是声卡或显示卡的设置冲突。在“控制面板”→“系统”→“设备管理”中检查是否存在带有黄色问号或感叹号的设备,如存在可试着先将其删除,并重新启动电脑,由Win9X自动调整,一般可以解决问题。若还不行,可手工进行调整或升级相应的驱动程序。

"蓝屏"的软件原因及解决

与硬件密切联系的是软件,有时软件在"蓝屏"现象中也"功不可没",加载了过多的程序、注册表有问题、软硬不兼容、驱动程序有问题,相对于硬件原因来说要不易察觉些,可要多加注意.........

一、启动时加载程序过多

不要在启动时加载过多的应用程序(尤其是你的内存小于64MB),以免使系统资源消耗殆尽。正常情况下,Win9X启动后系统资源应不低于90%。最好维持在90%以上,若启动后未运行任何程序就低于70%,就需要卸掉一部分应用程序,否则就可能出现“蓝屏”。

二、应用程序存在着BUG

有些应用程序设计上存在着缺陷或错误,运行时有可能与Win9X发生冲突或争夺资源,造成Win9X无法为其分配内存地址或遇到其保护性错误。这种BUG可能是无法预知的,免费软件最为常见。另外,由于一些用户还在使用盗版软件(包括盗版Win9X),这些盗版软件在解密过程中会破坏和丢失部分源代码,使软件十分不稳定,不可靠,也常常导致“蓝屏”。

三、遭到不明的程序或病毒攻击所至

这个现象只要是平时我们在上网的时候遇到的,当我们在冲浪的时候,特别是进到一些BBS站时,可能暴露了自己的IP,被"黑客"用一些软件攻击所至。对互这种情况最好就是在自己的计算机上安装一些防御软件。再有就是登录BBS要进行安全设置,隐藏自己IP。

四、版本冲突

有些应用程序需调用特定版本的动态链接库DLL,如果在安装软件时,旧版本的DLL覆盖了新版本的DLL,或者删除应用程序时,误删了有用的DLL文件,就可能使上述调用失败,从而出现“蓝屏”。不妨重新安装试一试。

五、注册表中存在错误或损坏

很多情况下这是出现“蓝屏”的主要原因。注册表保存着Win9X的硬件配置、应用程序设置和用户资料等重要数据,如果注册表出现错误或被损坏,就很可能出现“蓝屏”。如果你的电脑经常出现“蓝屏”,你首先就应考虑是注册表出现了问题,应及时对其检测、修复,避免更大的损失。

六、软硬件不兼容

新技术、新硬件的发展很快,如果安装了新的硬件常常出现“蓝屏”,那多半与主板的BIOS或驱动程序太旧有关,以致不能很好支持硬件。如果你的主板支持BIOS升级,应尽快升级到最新版本或安装最新的设备驱动程序。

Windows 2000"蓝屏"分析与解决篇

Win2000也许可以说得上是一个划时代的操作系统,但是它仍然不能够避免蓝屏死机(Blue Screen of Death)问题,Win2000的"蓝屏"(BSOD)和NT4以前的"蓝屏"消息是完全不同的。最大的不同就是NT中的BSOD只包含一个通用的停止消息类型(就是实际的出错代码), 但是Win2000的BSOD包含有两种消息类型:停止消息和硬件消息。停止消息是指,当win2000的内核发现一个它不能够恢复的软件错误时候产生的错误消息,它分为:常规停止消息、安装停止消息、可执行程序安装停止消息、软件陷阱停止消息四种类型......针对Windows2000的蓝屏,在上述概括的现象与对策基础上,我们分两方面来分析:

Windows 2000中蓝屏死机之停止信息分析

简介:什么是蓝屏死机(BSOD)问题?

BSOD就是显示在蓝色屏幕背景下的出错信息。一般这种出错信息严重到你的整个操作系统当机,你只有重新冷启动的选择。

刨析BSOD

BSOD可以分成独立的几部分,每部分包含有有价值的错误处理信息。这几部分包括:

1、bug检查部分:这是BSOD中包含实际出错消息的位置。在这部分中,你应该注意的是出错代码(就是在单词“Stop”后面的十六进制数字)和错误符号(就是紧跟在出错代码后的单词)

2、推荐用户采取行动部分:这部分经常包含一些一般的指导你如何纠正错误的步骤的消息。

3、调试端口信息部分:这部分包含有你应该如何设置你的内核调试器的信息。内核调试器是让你可以通过手工连接到计算机并对进程进行调试的工具。

下面是一个具体的BSOD例子:

*** Stop: 0x0000001E (0xF24A447A, 0X00000001, 0X0000000)
KMODE_EXCEPTION_NOT_HANDLED
*** Address F24A447A base at f24A0000, DateStamp 35825ef8d - wdmaud.sys

If this is the first time you've seen this Stop error screen, restart your computer.
If this screen appears again, follow these steps:

Check to be sure you have adequate disk space. If a driver is identified in the
Stop message, disable the driver or check with the manufacturer for driver updates.
Try changing video adapters.

Check with your hardware vendor for any BIOS updates. Disable BIOS memory options
such as caching or shadowing. If you need to use Safe Mode to remove or disable
components, restart your computer, press F8 to select Advanced Startup Options,
and then select Safe Mode.

Refer to your Getting Started manual for more information on troubleshooting Stop errors.

Kernel Debugger Using: COM2 (Port 0x2f8, Baud Rate 19200)
Beginning mp of physical memory
Physical memory mp complete. Contact your system administrator or technical support group.

根据这个具体的例子,按照上面刨析的BSOD四个部分,下面一一介绍:

bug检查部分:

这是BSOD中包含实际出错消息的位置。它看上去就是下面的代码:
*** Stop: 0x0000001E (0xF24A447A, 0X00000001, 0X0000000)
KMODE_EXCEPTION_NOT_HANDLED *** Address F24A447A base at f24A0000, DateStamp 35825ef8d - wdmaud.sys

其中错误代码是一个紧跟在Stop后面的十六进制数,在这里面它由其它四个数字组成。

而错误符号是指紧随其后的KMODE_EXCEPTION_NOT_HANDLED.

在一些BSOD出错信息中,一个内存位置和文件名出现在错误符号的后面。这个信息告诉了当错误发生的时候在内存中的位置和哪个文件导致了错误的发生。当然你是否能够看到该信息是由哪种停止消息类型来决定的。在一些实际运用中,你只能够看到上面的第一行。而这里通常是表示由显示服务中导致的问题。推荐用户采取行动部分:

在上面的例子中推荐用户采取行动部分如下:

If this is the first time you've seen this Stop error screen, restart your computer. If this screen appears again, follow these steps:
Check to be sure you have adequate disk space. If a driver is identified in the Stop message, disable the driver or check with the manufacturer for driver updates. Try changing video adapters.
Check with your hardware vendor for any BIOS updates. Disable BIOS memory options such as caching or shadowing. If you need to use Safe Mode to remove or disable components, restart your computer, press F8 to select Advanced Startup Options, and then select Safe Mode.
Refer to your Getting Started manual for more information on troubleshooting Stop errors.

推荐用户采取行动部分通常是推荐用户在遇到了出错信息后应该采取的解决步骤。在消息中可以看到,解决一个BSOD也许只要重新启动或则整理出足够大的剩余空间就能够解决了。尽管这样的方法偶尔会起到作用,但是实际上要解决BSOD经常要远远复杂得多。

调试端口信息部分:

这部分包含有你应该如何设置你的内核调试器的信息。我会在以后的网站里面详细介绍什么是2000的内核调试器。在上面的例子中,这部分内容是:

Kernel Debugger Using: COM2 (Port 0x2f8, Baud Rate 19200)
Beginning mp of physical memory Physical memory mp complete. Contact your system administrator or technical support group.

停止信息的四种类型

当程序或则驱动程序发生了一个不能够控制的错误消息或则试图执行一个非法指令时,系统就会发生停止出错信息。而这种信息通常由四种类型组成。

1、常规停止消息:在正常的使用win2000时发生的停止消息
常规停止消息通常是最难解决的出错信息,因为有可能有无数的原因能够导致错误的发生。

2、安装停止消息:在安装win2000过程中的停止消息,通常由你的系统中存在和2000不兼容的硬件设备引起的。

解决办法是你查看系统中的硬件设备,找到没有列出在2000兼容列表中的设备。然后和你的硬件设备厂商联系看他们是否能够给你提供该设备的驱动程序。如果他们不能,那你只好从你的系统中删除该设备,并用其它的可以兼容的设备替换掉。
如果你的所有硬件都是兼容的,你也许是存在有两个互相冲突的硬件设备。要解决这个问题,先移走任何不是必要的硬件设备,然后重新装载2000,一旦2000装载成功后,把所有移走的设备全部重新加入到系统中。这样做,通常能够解决这个问题,至少能够告诉你哪些硬件是有冲突的。

3、可执行程序安装停止消息:表示发生在2000安装过程中第4个阶段(执行程序部分)的停止消息。

安装2000在可执行程序的安装过程中有两个阶段。第一个阶段是禁止硬件中断同时装载一些基本的组件,例如硬件提取层。第二个阶段是初始化你系统中所有的硬件。如果你在安装程序到了这个阶段的时候收到了停止消息错误。需要再次运行诊断程序,来判断你的硬件是否都工作正常。然后重新安装2000。如果你仍然遇到这个出错消息,那么就需要和微软技术支持部打交道了。

4、软件陷阱停止消息:由于软件中的错误陷阱并且当程序试图执行一个非法指令的时候发生的停止消息。

由于软件中的错误陷阱并且当程序试图执行一个非法指令的时候发生的停止消息。例如,程序试图向一个本来是保存数字的变量写字符串的时候,这个错误就有可能发生。如果你遇到了这种类型的错误,需要记下出错信息,是什么软件导致了错误,一般这些软件都有新的版本来纠正这些错误的。

当你遇到了停止消息时候可能需要的解决问题的步骤:

首先判断你最近是不是在系统中有任何的变动。如果你有,那么这些变动经常是问题产生的根源。试图删除或者移走新的硬件或软件,看是否能够解决问题。检查系统中的硬件,最好如果有硬件检测程序的话,可以运行该程序进行检测,同时重新插放你的内存卡和扩展卡。

如果你的停止信息是发生在启动中或刚启动的过程中,那么这有可能是你的某个服务或则设备驱动程序中的问题。可以尝试将机器启动到安全模式。如果你的2000系统能够启动成功安全模式,那么表示你的猜测是正确的。

同时要确保你的防病毒程序是设计成和win2000兼容的,并且随时保持更新。如果错误仍然发生,那么进入你的CMOS设置,禁止掉BIOS中的象缓存或则shadow之类的选项,然后重新启动。
Windows 2000蓝屏死机之STOP对"症"下药

从理论上讲,纯32位的Windows 2000是不会出现死机的,但是这仅仅是理论上。病毒或硬件和硬件驱动程序不匹配等原因将造成Windows2000的崩溃,当Windows 2000出现死机时,显示器屏幕将变为蓝色,然后出现STOP故障提示信息。下面我们分别介绍通用的STOP故障处理方法和特殊的STOP故障排除。

通用STOP故障处理

1.首先使用新版杀毒软件检查计算机上是否有病毒。

2.如果Windows 2000可以启动,请检查“事件查看器”中的信息,以确定导致故障的设备或驱动程序。启动“事件查看器”的方法是:“开始”\“设置”\“控制面板”\“管理工具”\“事件查看器”\“系统日志”。

3.如果不能启动计算机,试着用“安全模式”或“最后一次正确的配置”启动计算机,然后删除或禁用新安装的附加程序或驱动程序。如果用“安全模式”启动不了计算机,可使用修复控制台。修复控制台可以禁用一些服务、重新命名设备驱动程序、检修引导扇区或主引导记录。

4.拆下新安装的硬件设备(RAM、适配卡、硬盘、调制解调器等等)。

5.确保已经更新了硬件设备的驱动程序,以及系统有最新的BIOS。

6.运行由计算机制造商提供的系统诊断工具,尤其是内存检查。

7.检查Microsoft兼容硬件列表(HCL),确保所有的硬件和驱动程序都与Windows2000兼容。Hcl.txt在Windows 2000 CD-ROM的\Support文件夹中。

8.在BIOS中禁用内存缓存功能。

9.重新启动计算机,在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。(注:使用“最后一次正确的配置”的方式启动计算机,计算机的所有设置被重置为最后一次成功启动时的配置。)

10.如果能够访问Web,请进入http://www.microsoft.com/ntserver/,单击“Support”/“Search Knowledge Base”,在“Type your keywords here”处,输入“stop”和相应的号码(如出现STOP消息“stop:0x0000000A”,可在此输入“stop0x0000000A”),按Enter键,就可以找出所出现的STOP问题的解决方法。(E文)

部分STOP代码

STOP消息 0x0000000A故障(刚加入新设备时)
通常原因 驱动程序使用了不正常的内存地址。

1.在安装过程中,屏幕上提示“安装程序正在检查计算机硬件配置”时,按F5,根据提示选择合适的计算机类型。例如,如果计算机是单处理器,请选择“标准PC”。
2.在BIOS中禁用内存缓存功能。
3.拆下所有适配卡,并断开所有不是启动计算机所必需的硬件设备,再重新安装Windows2000。
4.如果系统配有SCSI适配卡,请向适配卡销售商索取最新的Windows2000驱动程序,禁用同步协商功能,检查终结头和设备的SCSI ID号。
5.如果系统配有IDE设备,设IDE端口为Primary。检查IDE设备的Master/Slave/Only设置。除了硬盘,拆下其它所有的IDE设备。
6.运行由计算机制造商提供的系统诊断工具,尤其是内存检查。
7.检查Microsoft兼容硬件列表(HCL),确保所有的硬件和驱动程序都与Windows2000兼容。
8.重新启动计算机。在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。

STOP消息 0x0000001E故障

1.检查是否有充分的磁盘空间,尤其是新安装。
2.禁用STOP消息中显示的驱动程序和所有新安装的驱动程序。
3.如果所使用的视频驱动程序不是Microsoft提供的,试着切换到标准VGA驱动程序或者由Win2000支持的合适的驱动程序。
4.确保系统有最新的BIOS。
5.重新启动计算机。在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。

STOP消息 0x00000023和0x00000024故障
通常原因 严重的驱动器碎片、超载的文件I/O、第三方的驱动器镜像软件或者一些防病毒软件出错。

1.禁用一些防病毒软件或者备份程序,禁用所有碎片整理应用程序。
2.运行CHKDSK /f 检修硬盘驱动器,然后重新启动计算机。
3.重新启动计算机。在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。

STOP消息 0x0000002E故障
通常原因 系统内存中的奇偶校验错误。

1.运行由计算机制造商提供的系统诊断工具,尤其是内存检查。
2.在BIOS中禁用内存缓存功能。
3.试着用“安全模式”启动。如果“安全模式”可启动计算机,试着更改为标准VGA驱动程序。如果这不能解决问题,可能须要用另外的视频适配卡。“兼容硬件列表”中列出了兼容的视频适配卡。
4.确保已经更新了硬件设备的驱动程序,以及系统有最新的BIOS。
5.拆下一些新安装的硬件(RAM、适配器、硬盘、调制解调器等等)。
6.重新启动计算机。在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。

STOP消息 0x0000003F故障
通常原因 驱动程序没有被完全清除。

删除一些新安装的软件,包括备份工具或磁盘工具,例如碎片整理和防病毒软件。

STOP消息 0x00000058故障
通常原因 在容错集的主驱动器中发生错误。

1.用Windows 2000引导软盘,从镜像(第二个)系统驱动器启动计算机。
2.重新启动计算机。在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。

STOP消息 0x0000007B故障
通常原因 在I/O系统的初始化过程中出现问题(通常是引导驱动器或文件系统)。

1.检查计算机上是否有病毒。这个STOP消息通常在引导扇区有病毒时出现。
2.使用“修复控制台”来修复驱动器。
3.拆下新安装的硬盘驱动器或控制卡。
4.如果系统配有SCSI适配卡,请向适配卡销售商索取最新的Windows2000驱动程序,禁用同步协商功能,检查终结头和设备的SCSI ID号。
5.如果系统配有IDE设备,设IDE端口为Primary。检查IDE设备的Master/Slave/Only设置。除了硬盘,拆下其它所有的IDE设备。
6.运行CHKDSK。如果Windows 2000不能启动CHKDSK,则必须把硬盘拆下并连接到另一个Windows2000系统上,然后用CHKDSK命令检查该硬盘。
7.重新启动计算机。在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。

STOP消息 0x0000007F故障
通常原因 硬件或软件问题;常见的原因是硬件失效。

1.运行由计算机制造商提供的系统诊断工具,尤其是内存检查。这个STOP消息经常出现在错误或误配内存的情况下。
2.在BIOS中禁用内存缓存功能。
3.试着拆下或替换硬件:RAM、控制器、适配器、调制解调器和其它外围设备。
4.检查Microsoft兼容硬件列表(HCL),确保所有的硬件和驱动程序都与Windows2000兼容。这个问题可能是由于不兼容的主板引起的。
5.重新启动计算机。在启动屏幕处,按F8进入“高级启动选项”,然后选择“最后一次正确的配置”。

解决蓝屏之工具篇:

"两手抓,两手都要硬",针对 "蓝屏"现象除了在硬件方面改善你的系统硬件环境外,"软环境"的建设也不可忽视,就我们所知道的一些工具介绍给你,当然,可能还有更多的好工具,不妨平时多留意!

RAM Idle--让蓝屏消失

不管是曾经远去的DOS时代,还是如日中天的Windows时代,作为系统资源中最重要的一项——内存资源,一直都是电脑爱好者们最为头疼的事情。虽然现在主板上的内存插槽越来越多,内存的价钱也越来越低,但无论怎样,还是有很多朋友的内存资源时常不够用,以至于系统性能无法正常发挥。究其原因,主要是由于Windows操作系统不能有效地对内存资源进行管理,导致大量内存资源被白白占用,从而使系统性能大幅度降低,造成程序锁死、系统挂起等烦人的问题。因此,不少专门用来对内存资源进行管理的工具软件也就应运而生,而今天要介绍的RAM Idle则是这类软件中的佼佼者。

一、安装

首先用Winzip等软件将下载得到的压缩解压,然后点击Setup.exe文件,在弹出的对话框中选择【是】即可开始安装RAM Idle(如图1)。和大多数Windows应用程序一样,RAM Idle的安装过程很简单,只需要一路点击【Next】即可完成。

二、 使用

RAM Idle的主要功能是在系统空闲的时候按照用户设置自动释放回收一定数量的内存,从而避免因Windows系统不足而造成的内存资源枯竭问题,并大幅提高系统性能与稳定性。
俗话说:工欲善其事,必先利其器,使用RAM Idle也是一样,只有设置合理,它才能更好的对内存资源进行管理。下面就请大家点击【开始】-【程序】-【RAM Idle】-【Configuration】打开RAM Idle设置界面(如图2)和我一起认识下RAM Idle的设置选项

1. 【Main】选项卡:为软件的主要设置部分,包括以下几个内容:
·Target Free RAM:设置到达最小剩余内存时,RAM Idle所要尝试恢复的内存数量。
·Minimum Free RAM:设置最小剩余内存数量,当达到这个数值的时候,RAM Idle将会自动恢复内存资源。
·Disable the CPU usage detection:选中此项后,RAM Idle恢复内存的时候将不再检测CPU占用率,不过只是在你的CPU占用率总是显示100%的时候才需要选中。一般情况下我们不用选中该项,【Recover RAM if only……】中可以设置恢复内存时的最高CPU占用率,也就是说只有CPU占用率低于设定数值时,RAM Idle才可以恢复内存,否则,不予恢复。
·Free up……if free RAM below 50%:设置剩余内存少于总内存50%的时候,每隔多少时间恢复多少数量的内存。
·Pop up menu free……:设置弹出菜单中手动恢复内存部分的三个恢复数值。

2. 【Options】选项卡:主要包括总在最前面、随Windows启动而启动、隐藏系统托盘图标等一些常规设置。

3. 【Gator】选项卡:一个填表软件的简要介绍和下载链接。

4. 【About】选项卡:显示当前系统的内存资源信息(如图3)

RAM Idle释放内存共有两种方法,一种是当剩余内存少于总内存50%的时候,按照设置每隔一段时间自动释放一定数量的内存(设置方法见上);一种是在系统托盘的RAM Idle图标上点击鼠标右键,使用弹出菜单(如图4)中的三个选项快速手动释放一定数量的内存(设置方法见上)。

三、 小结

与同类软件相比,RAM Idle基本综合了该类软件的所有精华,具有无可比拟的强大内存管理能力。首先RAM Idle可以自动释放内存资源,并且优化时间快,效率高。其次RAM Idle设置方便,功能齐备,并且占用系统资源少,可在系统较为空闲的时候运行。另外,该软件还具有多种方便且实用的小功能,如重新启动,关机,挂起等。

虽然MemMAX、FREERAM、RAMFIX等软件也各有特色,但由于这样或者那样的缺点,比如不能自动优化、占用系统资源太高、优化效率低下、使用繁琐等,使得它们很难超越RAM Idle。

如果你正在为你的内存资源的管理而发愁的话,那么我建议你一定要试试RAM Idle,以它的实力相信一定不会让你失望!

‘贰’ 配置文件 易语言 配置文件内容: [AAA] 111-aa 222-bb 33-ccc [BBB] 444-asa 555-sss 446-dff

如果你想用读配置文件命令读取ini文件的话,配置文件不能那样写,你缺少了配置项名称,要写成这样:
[AAA]
a=111-aa
b=222-bb
c=33-ccc
[BBB]
a=444-asa
b=555-sss
c=446-dff

然后代码是这样:
.版本 2
.程序集 窗口程序集1
.子程序 __启动窗口_创建完毕
组合框1.清空 ()组合框2.清空 ()
.子程序 _按钮1_被单击
.局部变量 配置节, 文本型, , "0"
.局部变量 计次, 整数型

配置节 = 取配置节名 (取运行目录 () + “\1.ini”)
.计次循环首 (取数组成员数 (配置节), 计次)
组合框1.加入项目 (配置节 [计次], )
组合框2.加入项目 (读配置项 (取运行目录 () + “\1.ini”, 配置节 [计次], “a”, ), )
组合框2.加入项目 (读配置项 (取运行目录 () + “\1.ini”, 配置节 [计次], “b”, ), )
组合框2.加入项目 (读配置项 (取运行目录 () + “\1.ini”, 配置节 [计次], “c”, ), )
.计次循环尾 ()
组合框2.现行选中项 = 0
组合框1.现行选中项 = 0

.子程序 _组合框1_列表项被选择
.如果真 (组合框1.现行选中项 = 1)
组合框2.现行选中项 = 3
.如果真结束
.如果真 (组合框1.现行选中项 = 0)
组合框2.现行选中项 = 0
.如果真结束

如果你一定要按原来那样写配置项文件,那就用下面的代码:
.版本 2
.程序集 窗口程序集1
.子程序 __启动窗口_创建完毕
组合框1.清空 ()组合框2.清空 ()
.子程序 _按钮1_被单击
.局部变量 计次, 整数型
.局部变量 文件号, 整数型
.局部变量 配置文件内容, 文本型, , "0"

文件号 = 打开文件 (取运行目录 () + “\1.ini”, , )
配置文件内容 = 分割文本 (读入文本 (文件号, ), #换行符, )
.计次循环首 (取数组成员数 (配置文件内容), 计次)
.如果 (寻找文本 (配置文件内容 [计次], “[”, , 假) > 0)
配置文件内容 [计次] = 子文本替换 (配置文件内容 [计次], “[”, “”, , , 真)
配置文件内容 [计次] = 子文本替换 (配置文件内容 [计次], “]”, “”, , , 真)
组合框1.加入项目 (配置文件内容 [计次], )
.否则
组合框2.加入项目 (配置文件内容 [计次], )
.如果结束

.计次循环尾 ()
组合框2.现行选中项 = 0
组合框1.现行选中项 = 0
关闭文件 (文件号)

.子程序 _组合框1_列表项被选择
.如果真 (组合框1.现行选中项 = 1)
组合框2.现行选中项 = 3
.如果真结束
.如果真 (组合框1.现行选中项 = 0)
组合框2.现行选中项 = 0
.如果真结束

‘叁’ 怎么用gdb和bochs调试内核

gdbstub可以使得Bochs程序在本地1234网络端口侦听接收gdb的命令,并且向gdb发送命令执行结果。从而我们可以利用gdb对linux 0.11内核进行C语言级的调试。当然,Linux 0.11内核也需要进行使用-g选项重新编译

14.13.1 编译带gdbstub的Bochs系统{.j,
Bochs用户手册中介绍了自行编译Bochs系统的方法。这里我们给出编译带gdbstub的Bochs系统的方法和步骤。首先从下面网站下载最新Bochs系统源代码(例如:bochs-2.2.tar.gz):U
使用tar对软件包解压后会在当前目录中生成一个bochs-2.2子目录。进入该子目录后带选项“--enable-gdb-stub”运行配置程序configure,然后运行make和make install即可,见如下所示:
[root@plinux bochs-2.2]# ./configure --enable-gdb-stubI0B%
checking build system type... i686-pc-linux-gnu7.tY.
checking host system type... i686-pc-linux-gnuQ
checking target system type... i686-pc-linux-gnu{
...©OldLinux论坛 -- 有关早期Linux内核代码发展的论坛。M
[root@plinux bochs-2.2]# makeQ
[root@plinux bochs-2.2]# make installN?
©OldLinux论坛 -- 有关早期Linux内核代码发展的论坛。ufVz
若在运行./configure时我们碰到一些问题而不能生成编译使用的Makefile文件,那么这通常是由于没有安装X window开发环境软件或相关库文件造成的。此时我们就必须先安装这些必要的软件。>1z<z

14.13.2 编译带调试信息的Linux 0.11内核"jmg
通过把Bochs的模拟运行环境与gdb符号调试工具联系起来,我们既可以使用Linux 0.11系统下编译的带调试信息的内核模块来调试,也可以使用在RedHat 9环境下编译的0.11内核模块来调试。这两种环境下都需要对0.11内核源代码目录中所有Makefile文件进行修改,即在其中编译标志行上添加-g标志,并去掉链接标志行上的-s选项:2

LDFLAGS = -M -x // 去掉 -s 标志。XJFU)Y
CFLAGS =-Wall -O -g -fomit-frame-pointer / // 添加 -g 标志。iMN

进入内核源代码目录后,利用find命令我们可以找到以下所有需要修改的Makefile文件:_6

[root@plinux linux-0.11]# find ./ -name MakefileSn^
./fs/Makefile-
./kernel/Makefile/"`p%
./kernel/chr_drv/Makefile(pyM
./kernel/math/MakefileV
./kernel/blk_drv/Makefiles/CDu
./lib/Makefile[x~
./Makefile980
./mm/Makefile/zb
[root@plinux linux-0.11]#S9/Q

另外,由于此时编译出的内核代码模块中含有调试信息,因此system模块大小可能会超过写入内核代码映像文件的默认最大值SYSSIZE = 0x3000(定义在boot/bootsect.s文件第6行)。我们可以按以下方法修改源代码根目录中的Makefile文件中产生Image文件的规则,即把内核代码模块system中的符号信息去掉后再写入Image文件中,而原始带符号信息的system模块保留用作gdb调试器使用。注意,目标的实现命令需要以一个制表符(TAB)作为一行的开始。pP

Image: boot/bootsect boot/setup tools/system tools/build)=1
cp -f tools/system system.tmp=-&a
strip system.tmphQ6n0S
tools/build boot/bootsect boot/setup system.tmp $(ROOT_DEV) $(SWAP_DEV) > ImageA-)
rm -f system.tmpY3w[/@
sync9=P2n
©OldLinux论坛 -- 有关早期Linux内核代码发展的论坛。KuEo
当然,我们也可以把boot/bootsect.s和tools/build.c中的SYSSIZE值修改成0x8000来处理这种情况。a?g4

14.13.3 调试方法和步骤;M]3!
下面我们根据在现代Linux系统(例如RedHat 9)系统上和运行在Bochs中Linux 0.11系统上编译出的内核代码分别来说明调试方法和步骤。
1 调试现代Linux系统上编译出的Linux 0.11内核?E
假设我们的Linux 0.11内核源代码根目录是linux-rh9-gdb/,则我们首先在该目录中按照上面方法修改所有Makefile文件,然后在linux-rh9-gdb/目录下创建一个bochs运行配置文件并下载一个配套使用的根文件系统映像文件。我们可以直接从网站下载已经设置好的如下软件包来做实验:
使用命令“tar zxvf linux-gdb-rh9-050619.tar.gz”解开这个软件包后,可以看到其中包含以下几个文件和目录:MX{-
©OldLinux论坛 -- 有关早期Linux内核代码发展的论坛。X
[root@plinux linux-gdb-rh9]# ll'*5tfq
total 1600bJT~Q
-rw-r--r-- 1 root root 18055 Jun 18 15:07 bochsrc-fd1-gdb.bxrcf%J2s
drwxr-xr-x 10 root root 4096 Jun 18 22:55 linux[dM&
-rw-r--r-- 1 root root 1474560 Jun 18 20:21 rootimage-0.11-for-orig8EIChk
-rwxr-xr-x 1 root root 35 Jun 18 16:54 run{gj
[root@plinux linux--gdb-rh9]#t|f

这里的bochs配置文件与其他Linux 0.11配置文件的主要区别是在文件头部添加有以下一行内容,表示当bochs使用这个配置文件运行时将在本地网络端口1234上侦听gdb调试器的命令:NhL

gdbstub: enabled=1, port=1234, text_base=0, data_base=0, bss_base=0J,i/6

运行这个实验的基本步骤如下:@EkQ

(1).启动X window系统后打开两个终端窗口;(mPN
(2).在一个窗口中,把工作目录切换进linux-gdb-rh9/目录中,并运行程序“./run”,此时该窗口中会显示一条等待gdb来连接的信息:“Wait for gdb connection on localhost:1234”,并且系统会创建一个Bochs主窗口(此时无内容);1P=VI<
(3).在另一个窗口中,我们把工作目录切换到内核源代码目录中linux-gdb-rh9/linux/,并运行命令:“gdb tools/system”;iDqm8
(4).在运行gdb的窗口中键入命令“break main”和“target remote localhost:1234”,此时gdb会显示已经连接到Bochs的信息;p
(5).在gdb环境中再执行命令“cont”,稍过一会gdb会显示程序停止在init/main.c的main()函数处。v3L2

下面是运行gdb和在其中执行的一些命令示例。[2;jS

[root@plinux linux]# gdb tools/system hI/
GNU gdb Red Hat Linux (5.3post-0.20021129.18rh)!mC}
Copyright 2003 Free Software Foundation, Inc.|3
GDB is free software, covered by the GNU General Public License, and you areC$NY4
welcome to change it and/or distribute copies of it under certain conditions.boNdAL
Type "show ing" to see the conditions.3[nfHW
There is absolutely no warranty for GDB. Type "show warranty" for details.'1-V
This GDB was configured as "i386-redhat-linux-gnu"...Oq&*[
(gdb) break main }<;
Breakpoint 1 at 0x6621: file init/main.c, line 110.+%!.]{
(gdb) target remote localhost:12342 .yc
Remote debugging using localhost:1234X6X&7
0x0000fff0 in sys_mkdir (pathname=0x0, mode=0) at namei.c:481(
481 namei.c: No such file or directory.5QU
in namei.c&%P'
(gdb) cont Pv'/S$
Continuing.P:O_{
Breakpoint 1, main () at init/main.c:110 *
110 ROOT_DEV = ORIG_ROOT_DEV;T7PkpD
(gdb) list 5XT
105 { /* The startup routine assumes (well, ...) this */2L$
106 /*_c
107 * Interrupts are still disabled. Do necessary setups, then)Z0k
108 * enable themjZ@+wn
109 */u
110 ROOT_DEV = ORIG_ROOT_DEV;d&!*`
111 drive_info = DRIVE_INFO;#yRW,
112 memory_end = (1<<20) + (EXT_MEM_K<<10);9Uaw
113 memory_end &= 0xfffff000;`v8fAR
114 if (memory_end > 16*1024*1024)lA#
(gdb) next DH.zM
111 drive_info = DRIVE_INFO;X
(gdb) next ?+S:q
112 memory_end = (1<<20) + (EXT_MEM_K<<10);iXdDt
(gdb) print /x ROOT_DEV <W<
$3 = 0x21d }{%Q
(gdb) quit |
The program is running. Exit anyway? (y or n) yt
[root@plinux linux]#lixBs
=====================================================
14.1 利用bochs调试内核%UU
Bochs具有非常强大的操作系统内核调试功能。这也是本文选择Bochs作为首选实验环境的主要原因之一。有关Bochs调试功能的说明参见前面14.2节,这里基于Linux 0.11内核来说明Windows环境下Bochs系统调试操作的基本方法。m[2

14.1.1 运行Bochs调试程序.g8O
我们假设Bochs系统已被安装在目录“C:/Program Files/Bochs-2.1.1/”中,并且Linux 0.11系统的Bochs配置文件名称是bochsrc-hd.bxrc。现在在包含内核Image文件的目录下建立一个简单的批处理文件run.bat,其内容如下:R

"C:/Program Files/Bochs-2.1.1/bochsdbg" -q -f bochsrc-hd.bxrcjFypV+

其中bochsdbg是Bochs系统的调试执行程序。运行该批处理命令即可进入调试环境。此时Bochs的主显示窗口空白,而控制窗口将显示以下类似内容:D8v~

C:/Documents and Settings/john1/桌面/Linux-0.11>"C:/Program Files/Bochs-2.1.1/boRW6RNY
chsdbg" -q -f bochsrc-hd.bxrc2
========================================================================`)2?os
Bochs x86 Emulator 2.1.13$O@R
February 08, 2004x2
========================================================================/26c3(
00000000000i[ ] reading configuration from bochsrc-hd.bxrcq4
00000000000i[ ] installing win32 mole as the Bochs GUI4UW
00000000000i[ ] Warning: no rc file specified.1dsv
00000000000i[ ] using log file bochsout.txtmM
Next at t=0*
(0) context not implemented because BX_HAVE_HASH_MAP=0c
[0x000ffff0] f000:fff0 (unk. ctxt): jmp f000:e05b ; ea5be000f0g$
<bochs:1>i/

此时Bochs调试系统已经准备好开始运行,CPU执行指针已指向ROM BIOS中地址0x000fffff0处的指令处。其中'<bochs:1>'是命令输入提示符,其中的数字表示当前的命令序列号。在命令提示符'<bochs:1>'后面键入'help'命令,可以列出调试系统的基本命令。若要了解某个命令的具体使用方法,可以键入'help'命令并且后面跟随一个用单引号括住的具体命令,例如:“help 'vbreak'”,如下面所示。V7

<bochs:1> help@n{L(
help - show list of debugger commands5&6^
help 'command'- show short command description~B
-*- Debugger control -*-e!/;l
help, q|quit|exit, set, instrument, show, trace-on, trace-off,u7J
record, playback, load-symbols, slistr2:
-*- Execution control -*-pOHjE
c|cont, s|step|stepi, p|n|next, modebpj
-*- Breakpoint management -*-|EQ
v|vbreak, lb|lbreak, pb|pbreak|b|break, sb, sba, blist,dL/rBI
bpe, bpd, d|del|deleteyR%|
-*- CPU and memory contents -*-xsMy
x, xp, u|disas|disassemble, r|reg|registers, setpmem, crc, info, mp_cpu,@|'p
set_cpu, ptime, print-stack, watch, unwatch, ?|calc7
<bochs:2> help 'vbreak'_t*<#o
help vbreak/?
vbreak seg:off - set a virtual address instruction breakpoint0
<bochs:3>flx+

为了让Bochs直接模拟执行到Linux的引导启动程序开始处,我们可以先使用断点命令在0x7c00处设置一个断点,然后让系统连续运行到0x7c00处停下来。执行的命令序列如下:.Xfk

<bochs:3> vbreak 0x0000:0x7c00hDzuWy
<bochs:4> cfMH/'X
(0) Breakpoint 1, 0x7c00 (0x0:0x7c00))W&
Next at t=4409138<-0m5
(0) [0x00007c00] 0000:7c00 (unk. ctxt): mov ax, 0x7c0 ; b8c007b 03*
<bochs:5>3R28Q

此时,CPU执行到boot.s程序开始处的第1条指令处,Bochs主窗口将显示出“Boot From floppy...”等一些信息。现在,我们可以利用单步执行命令's'或'n'(不跟踪进入子程序)来跟踪调试程序了。在调试时可以使用Bochs的断点设置命令、反汇编命令、信息显示命令等来辅助我们的调试操作。下面是一些常用命令的示例:J'P

<bochs:8> u /10 # 反汇编从当前地址开始的10条指令。,S/2
00007c00: ( ): mov ax, 0x7c0 ; b8c007Wvl
00007c03: ( ): mov ds, ax ; 8ed8)1f*
00007c05: ( ): mov ax, 0x9000 ; b80090WmD1
00007c08: ( ): mov es, ax ; 8ec0(`|
00007c0a: ( ): mov cx, 0x100 ; b90001iW1|1
00007c0d: ( ): sub si, si ; 29f6ze_QZY
00007c0f: ( ): sub di, di ; 29ffZStl
00007c11: ( ): rep movs word ptr [di], word ptr [si] ; f3a5=yF
00007c13: ( ): jmp 9000:0018 ; ea18000090!s?PR9
00007c18: ( ): mov ax, cs ; 8cc8(
<bochs:9> info r # 查看当前CPU寄存器的内容aM>/D
eax 0xaa55 436057a@`_
ecx 0x110001 1114113/$3$K"
edx 0x0 00j3G?
ebx 0x0 0gE
esp 0xfffe 0xfffee7{
ebp 0x0 0x0]*lX
esi 0x0 0m
edi 0xffe4 65508TD}Zo
eip 0x7c00 0x7c00e
eflags 0x282 642Wlg
cs 0x0 0b s=]
ss 0x0 0=Z'
ds 0x0 02R;%
es 0x0 0!
fs 0x0 0BX/
gs 0x0 0D*)}n{

‘肆’ 蓝屏代码 0x0000007b 救命

0x007B档名、目录名称或储存体标签语法错误。

Windows蓝屏错误代码一览表,请需要的人自己查看.
数 值 叙 述
0 0x0000作业完成。
1 0x0001不正确的函数。
2 0x0002系统找不到指定的档案。
3 0x0003系统找不到指定的路径。
4 0x0004系统无法开启档案。
5 0x0005拒绝存取。
6 0x0006无效的代码。
7 0x0007储存体控制区块已毁。
8 0x0008储存体空间不足,无法处理这个指令。
9 0x0009储存体控制区块位址无效。
10 0x000A环境不正确。
11 0x000B尝试载入一个格式错误的程式。
12 0x000C存取码错误。
13 0x000D资料错误。
14 0x000E储存体空间不够,无法完成这项作业。
15 0x000F系统找不到指定的磁盘机。
16 0x0010无法移除目录。
17 0x0011系统无法将档案移到 其他的磁盘机。
18 0x0012没有任何档案。
19 0x0013储存媒体为防写状态。
20 0x0014系统找不到指定的装置。
21 0x0015装置尚未就绪。
22 0x0016装置无法识别指令。
23 0x0017资料错误 (cyclic rendancy check)
24 0x0018程式发出一个长 度错误的指令。
25 0x0019磁盘机在磁盘找不到 持定的磁区或磁轨。
26 0x001A指定的磁盘或磁片无法存取。
27 0x001B磁盘机找不到要求的磁区。
28 0x001C印表机没有纸。
29 0x001D系统无法将资料写入指定的磁盘机。
30 0x001E系统无法读取指定的装置。
31 0x001F连接到系统的某个装置没有作用。
32 0x0020 The process cannot access the file because it is being used
by another process.
33 0x0021档案的一部份被锁定,现在无法存取。
34 0x0022磁盘机的磁片不正确。 请将 %2 (Volume Serial Number: %3) 插入磁
碟 机%1。
36 0x0024开启的分享档案数量太多。
38 0x0026到达档案结尾。
39 0x0027磁盘已满。
50 0x0032不支援这种网路要求。
51 0x0033远端电脑无法使用。
52 0x0034网路名称重复。
53 0x0035网路路径找不到。
54 0x0036网路忙碌中。
55 0x0037 The specified network resource or device is no longer
available.
56 0x0038 The network BIOS command limit has been reached.
57 0x0039网路配接卡发生问题。
58 0x003A指定的服务器无法执行要求的作业。
59 0x003B网路发生意外错误。
60 0x003C远端配接卡不相容。
61 0x003D印表机伫列已满。
62 0x003E服务器的空间无法储存等候打印的档案。
63 0x003F等候打印的档案已经删除。
64 0x0040指定的网路名称无法使用。
65 0x0041拒绝存取网路。
66 0x0042网路资源类型错误。
67 0x0043网路名称找不到。
68 0x0044超过区域电脑网路配接卡的名称限制。
69 0x0045超过网路BIOS作业阶段的限制。
70 0x0046远端服务器已经暂停或者正在起始中。
71 0x0047由于连线数目已达上限,此时无法再连线到这台远端电脑。
72 0x0048指定的印表机或磁盘装置已经暂停作用。
80 0x0050档案已经存在。
82 0x0052无法建立目录或档案。
83 0x0053 INT 24 失败
84 0x0054处理这项要求的储存体无法使用。
85 0x0055近端装置名称已经在使用中。
86 0x0056指定的网路密码错误。
87 0x0057叁数错误。
88 0x0058网路发生资料写入错误。
89 0x0059此时系统无法执行其他行程。
100 0x0064无法建立其他的系统semaphore。
101 0x0065属于其他行程专用的semaphore 。
102 0x0066 semaphore已经设定,而且无法关闭。
103 0x0067无法指定semaphore 。
104 0x0068在岔断时间无法要求专用的semaphore 。
105 0x0069此semaphore先前的拥有权已经结束。
106 0x006A请将磁片插入 %1。
107 0x006B因为代用的磁片尚未插入,所以程式已经停止。
108 0x006C磁盘正在使用中或被锁定。
109 0x006D Pipe已经中止。
110 0x006E系统无法开启指定的 装置或档案。
111 0x006F档名太长。
112 0x0070磁盘空间不足。
113 0x0071没有可用的内部档案识别字。
114 0x0072目标内部档案识别字不正确。
117 0x0075由应用程式所执行的IOCTL呼叫 不正确。
118 0x0076写入验证叁数值不正确。
119 0x0077系统不支援所要求的指令。
120 0x0078此项功能仅在Win32模式有效。
121 0x0079 semaphore超过逾时期间。
122 0x007A传到系统呼叫的资料区域 太小。
123 0x007B档名、目录名称或储存体标签语法错误。
124 0x007C系统呼叫层次不正确。
125 0x007D磁盘没有设定标签。
126 0x007E找不到指定的模组。
127 0x007F找不到指定的程序。
128 0x0080没有子行程可供等待。
129 0x0081 %1这个应用程式无法在Win32模式下执行。
130 0x0082 Attempt to use a file handle to an open disk partition for
an operation other than raw disk I/O.
131 0x0083尝试将档案指标移至档案开头之前。
132 0x0084无法在指定的装置或档案,设定档案指标。
133 0x0085 JOIN或SUBST指令 无法用于 内含事先结合过的磁盘机。
134 0x0086尝试在已经结合的磁盘机,使用JOIN或SUBST指令。
135 0x0087尝试在已经替换的磁盘机,使 用JOIN或SUBST指令。
136 0x0088系统尝试删除 未连结过的磁盘机的连结关系。
137 0x0089系统尝试删除 未替换过的磁盘机的替换关系。
138 0x008A系统尝试将磁盘机结合到已经结合过之磁盘机的目录。
139 0x008B系统尝试将磁盘机替换成已经替换过之磁盘机的目录。
140 0x008C系统尝试将磁盘机替换成已经替换过之磁盘机的目录。
141 0x00系统尝试将磁盘机SUBST成已结合的磁盘机 目录。
142 0x008E系统此刻无法执行JOIN或SUBST。
143 0x008F系统无法将磁盘机结合或替换同一磁盘机下目录。
144 0x0090这个目录不是根目录的子目录。
145 0x0091目录仍有资料。
146 0x0092指定的路径已经被替换过。
147 0x0093资源不足,无法处理这项 指令。
148 0x0094指定的路径这时候无法使用。
149 0x0095尝试要结合或替换的磁盘机目录,是已经替换过的的目标。
150 0x0096 CONFIG.SYS档未指定系统追踪资讯,或是追踪功能被取消。
151 0x0097指定的semaphore事件DosMuxSemWait数目不正确。
152 0x0098 DosMuxSemWait没有执行;设定太多的semaphore。
153 0x0099 DosMuxSemWait清单不正确。
154 0x009A您所输入的储存媒体标 元长度限制。
155 0x009B无法建立其他的执行绪。
156 0x009C接收行程拒绝接受信号。
157 0x009D区段已经被舍弃,无法被锁定。
158 0x009E区段已经解除锁定。
159 0x009F执行绪识别码的位址不正确。
160 0x00A0传到DosExecPgm的引数字串不正确。
161 0x00A1指定的路径不正确。
162 0x00A2信号等候处理。
164 0x00A4系统无法建立执行绪。
167 0x00A7无法锁定档案的部份范围。
170 0x00AA所要求的资源正在使用中。
173 0x00AD取消范围的锁定要求不明显。
174 0x00AE档案系统不支援自动变更锁定类型。
180 0x00B4系统发现不正确的区段号码。
182 0x00B6作业系统无法执行 %1。
183 0x00B7档案已存在,无法建立同一档案。
186 0x00BA传送的旗号错误。
187 0x00BB指定的系统旗号找不到。
188 0x00BC作业系统无法执行 %1。
189 0x00BD作业系统无法执行 %1。
190 0x00BE作业系统无法执行 %1。
191 0x00BF无法在Win32模式下执行 %1。
192 0x00C0作业系统无法执行 %1。
193 0x00C1 %1不是正确的Win32应用程式。
194 0x00C2作业系统无法执行 %1。
195 0x00C3作业系统无法执行 %1。
196 0x00C4作业系统无法执行 这个应用程式。
197 0x00C5作业系统目前无法执行 这个应用程式。
198 0x00C6作业系统无法执行 %1。
199 0x00C7作业系统无法执行 这个应用程式。
200 0x00C8程式码的区段不可以大于或等于64KB。
201 0x00C9作业系统无法执行 %1。
202 0x00CA作业系统无法执行 %1。
203 0x00CB系统找不到输入的环境选项。 \r
205 0x00CD在指令子目录下,没有任何行程有信号副处理程式。
206 0x00CE档案名称或副档名太长。
207 0x00CF ring 2堆叠使用中。
208 0x00D0输入的通用档名字符 * 或 ? 不正确, 或指定太多的通用档名字符。
209 0x00D1所传送的信号不正确。
210 0x00D2无法设定信号处理程式。
212 0x00D4区段被锁定,而且无法重新配置。
214 0x00D6附加到此程式或动态连结模组的动态连结模组太多。
215 0x00D7 Can''t nest calls to LoadMole.
230 0x00E6 The pipe state is invalid.
231 0x00E7所有的pipe instances都在忙碌中。
232 0x00E8 The pipe is being closed.
233 0x00E9 No process is on the other end of the pipe.
234 0x00EA有更多可用的资料。
240 0x00F0作业阶段被取消。
254 0x00FE指定的延伸属性名称无效。
255 0x00FF延伸的属性不一致。
259 0x0103没有可用的资料。
266 0x010A无法使用Copy API。
267 0x010B目录名称错误。
275 0x0113延伸属性不适用于缓冲区。
276 0x0114在外挂的档案系统上的延伸属性档案已经毁损。
277 0x0115延伸属性表格档满。
278 0x0116指定的延伸属性代码无效。
282 0x011A外挂的这个档案系统不支援延伸属性。
288 0x0120意图释放不属于叫用者的mutex。
298 0x012A semaphore传送次数过多。
299 0x012B只完成Read/WriteProcessMemory的部份要求。
317 0x013D系统找不到位于讯息档 %2中编号为0x%1的讯息。
487 0x01E7尝试存取无效的位址。
534 0x0216运算结果超过32位元。
535 0x0217通道的另一端有一个行程在接送资料。
536 0x0218等候行程来开启通道的另一端。
994 0x03E2存取延伸的属性被拒。
995 0x03E3由于执行绪结束或应用程式要求,而异常终止I/O作业。
996 0x03E4重叠的I/O事件不是设定成通知状态。
997 0x03E5正在处理重叠的I/O作业。
998 0x03E6对记忆体位置的无效存取。
999 0x03E7执行inpage作业发生错误。

‘伍’ Akima 插值和样条插值的C语言源代码,要有注释。

Akima插值

附带的图片为运行结果

#include"stdio.h"

#include"math.h"

#include"interpolation.h"

voidinterpolation_akima(AKINTEPap){

intnum,k,kk,m,l;

doublepio,*mtr,*x,*y,u[5],p,q;

num=ap->n;k=ap->k;

pio=ap->t;mtr=ap->s;

x=ap->x;y=ap->y;

if(num<1){

return;

}

elseif(num==1){

mtr[0]=mtr[4]=y[0];

return;

}

elseif(num==2){

mtr[0]=y[0];

mtr[1]=(y[1]-y[0])/(x[1]-x[0]);

if(k<0)

mtr[4]=(y[0]*(pio-x[1])-y[1]*(pio-x[0]))/(x[0]-x[1]);

return;

}

if(k<0){

if(pio<=x[1])kk=0;

elseif(pio>=x[num-1])kk=num-2;

else{

kk=1;m=num;

while(((kk-m)!=1)&&((kk-m)!=-1)){

l=(kk+m)/2;

if(pio<x[l-1])m=l;

elsekk=l;

}

kk--;

}

}

elsekk=k;

if(kk>=num-1)kk=num-2;

u[2]=(y[kk+1]-y[kk])/(x[kk+1]-x[kk]);

if(num==3){

if(kk==0){

u[3]=(y[2]-y[1])/(x[2]-x[1]);

u[4]=2.0*u[3]-u[2];

u[1]=2.0*u[2]-u[3];

u[0]=2.0*u[1]-u[2];

}

else{

u[1]=(y[1]-y[0])/(x[1]-x[0]);

u[0]=2.0*u[1]-u[2];

u[3]=2.0*u[2]-u[1];

u[4]=2.0*u[3]-u[2];

}

}

else{

if(kk<=1){

u[3]=(y[kk+2]-y[kk+1])/(x[kk+2]-x[kk+1]);

if(kk==1){

u[1]=(y[1]-y[0])/(x[1]-x[0]);

u[0]=2.0*u[1]-u[2];

if(num==4)u[4]=2.0*u[3]-u[2];

elseu[4]=(y[4]-y[3])/(x[4]-x[3]);

}

else{

u[1]=2.0*u[2]-u[3];

u[0]=2.0*u[1]-u[2];

u[4]=(y[3]-y[2])/(x[3]-x[2]);

}

}

elseif(kk>=(num-3)){

u[1]=(y[kk]-y[kk-1])/(x[kk]-x[kk-1]);

if(kk==(num-3)){

u[3]=(y[num-1]-y[num-2])/(x[num-1]-x[num-2]);

u[4]=2.0*u[3]-u[2];

if(num==4)u[0]=2.0*u[1]-u[2];

elseu[0]=(y[kk-1]-y[kk-2])/(x[kk-1]-x[kk-2]);

}

else{

u[3]=2.0*u[2]-u[1];

u[4]=2.0*u[3]-u[2];

u[0]=(y[kk-1]-y[kk-2])/(x[kk-1]-x[kk-2]);

}

}

else{

u[1]=(y[kk]-y[kk-1])/(x[kk]-x[kk-1]);

u[0]=(y[kk-1]-y[kk-2])/(x[kk-1]-x[kk-2]);

u[3]=(y[kk+2]-y[kk+1])/(x[kk+2]-x[kk+1]);

u[4]=(y[kk+3]-y[kk+2])/(x[kk+3]-x[kk+2]);

}

}

mtr[0]=fabs(u[3]-u[2]);

mtr[1]=fabs(u[0]-u[1]);

if((fabs(mtr[0])<0.0000001)&&(fabs(mtr[1])<0.0000001))

p=(u[1]+u[2])/2.0;

elsep=(mtr[0]*u[1]+mtr[1]*u[2])/(mtr[0]+mtr[1]);

mtr[0]=fabs(u[3]-u[4]);

mtr[1]=fabs(u[2]-u[1]);

if((fabs(mtr[0])<0.0000001)&&(fabs(mtr[1])<0.0000001))

q=(u[2]+u[3])/2.0;

elseq=(mtr[0]*u[2]+mtr[1]*u[3])/(mtr[0]+mtr[1]);

mtr[0]=y[kk];

mtr[1]=p;

mtr[3]=x[kk+1]-x[kk];

mtr[2]=(3.0*u[2]-2.0*p-q)/mtr[3];

mtr[3]=(q+p-2.0*u[2])/(mtr[3]*mtr[3]);

if(k<0){

p=pio-x[kk];

mtr[4]=mtr[0]+mtr[1]*p+mtr[2]*p*p+mtr[3]*p*p*p;

}

return;

}

main()

{

doublex[11]={3.0,5.0,8.0,13.0,17.0,25.0,27.0,29.0,31.0,35.0,39.0};

doubley[11]={7.0,10.0,11.0,17.0,23.0,18.0,13.0,6.0,3.0,1.0,0.0};

AKINTEaa={11,x,y,-1,14.0,{0}};

AKINTEab={11,x,y,-1,28.0,{0}};

printf(" ");

interpolation_akima(&aa);

printf("x=%6.3f,f(x)=%e ",aa.t,aa.s[4]);

printf("mtr0=%e,mtr1=%e,mtr2=%e,mtr3=%e ",aa.s[0],aa.s[1],aa.s[2],aa.s[3]);

printf(" ");

interpolation_akima(&ab);

printf("x=%6.3f,f(x)=%e ",ab.t,ab.s[4]);

printf("mtr0=%e,mtr1=%e,mtr2=%e,mtr3=%e ",ab.s[0],ab.s[1],ab.s[2],ab.s[3]);

printf(" ");

}

三次样条插值的实现

1、程序比较简单的:

#include<iostream>

#include<iomanip>

usingnamespacestd;

constintMAX=50;

floatx[MAX],y[MAX],h[MAX];

floatc[MAX],a[MAX],fxym[MAX];

floatf(intx1,intx2,intx3){

floata=(y[x3]-y[x2])/(x[x3]-x[x2]);

floatb=(y[x2]-y[x1])/(x[x2]-x[x1]);

return(a-b)/(x[x3]-x[x1]);

}//求差分

voidcal_m(intn){//用追赶法求解出弯矩向量M……

floatB[MAX];

B[0]=c[0]/2;

for(inti=1;i<n;i++)

B[i]=c[i]/(2-a[i]*B[i-1]);

fxym[0]=fxym[0]/2;

for(i=1;i<=n;i++)

fxym[i]=(fxym[i]-a[i]*fxym[i-1])/(2-a[i]*B[i-1]);

for(i=n-1;i>=0;i--)

fxym[i]=fxym[i]-B[i]*fxym[i+1];

}

voidprintout(intn);

intmain(){

intn,i;charch;

do{

cout<<"Pleaseputinthenumberofthedots:";

cin>>n;

for(i=0;i<=n;i++){

cout<<"PleaseputinX"<<i<<':';

cin>>x[i];//cout<<endl;

cout<<"PleaseputinY"<<i<<':';

cin>>y[i];//cout<<endl;

}

for(i=0;i<n;i++)//求步长

h[i]=x[i+1]-x[i];

cout<<"Please输入边界条件 1:已知两端的一阶导数 2:两端的二阶导数已知 默认:自然边界条件 ";

intt;

floatf0,f1;

cin>>t;

switch(t){

case1:cout<<"PleaseputinY0'Y"<<n<<"' ";

cin>>f0>>f1;

c[0]=1;a[n]=1;

fxym[0]=6*((y[1]-y[0])/(x[1]-x[0])-f0)/h[0];

fxym[n]=6*(f1-(y[n]-y[n-1])/(x[n]-x[n-1]))/h[n-1];

break;

case2:cout<<"PleaseputinY0"Y"<<n<<"" ";

cin>>f0>>f1;

c[0]=a[n]=0;

fxym[0]=2*f0;fxym[n]=2*f1;

break;

default:cout<<"不可用 ";//待定

};//switch

for(i=1;i<n;i++)

fxym[i]=6*f(i-1,i,i+1);

for(i=1;i<n;i++){

a[i]=h[i-1]/(h[i]+h[i-1]);

c[i]=1-a[i];

}

a[n]=h[n-1]/(h[n-1]+h[n]);

cal_m(n);

cout<<" 输出三次样条插值函数: ";

printout(n);

cout<<"Doyoutohaveanthertry?y/n:";

cin>>ch;

}while(ch=='y'||ch=='Y');

return0;

}

voidprintout(intn){

cout<<setprecision(6);

for(inti=0;i<n;i++){

cout<<i+1<<":["<<x[i]<<","<<x[i+1]<<"] "<<" ";

/*

cout<<fxym[i]/(6*h[i])<<"*("<<x[i+1]<<"-x)^3+"<<<<"*(x-"<<x[i]<<")^3+"

<<(y[i]-fxym[i]*h[i]*h[i]/6)/h[i]<<"*("<<x[i+1]<<"-x)+"

<<(y[i+1]-fxym[i+1]*h[i]*h[i]/6)/h[i]<<"(x-"<<x[i]<<") ";

cout<<endl;*/

floatt=fxym[i]/(6*h[i]);

if(t>0)cout<<t<<"*("<<x[i+1]<<"-x)^3";

elsecout<<-t<<"*(x-"<<x[i+1]<<")^3";

t=fxym[i+1]/(6*h[i]);

if(t>0)cout<<"+"<<t<<"*(x-"<<x[i]<<")^3";

elsecout<<"-"<<-t<<"*(x-"<<x[i]<<")^3";

cout<<" ";

t=(y[i]-fxym[i]*h[i]*h[i]/6)/h[i];

if(t>0)cout<<"+"<<t<<"*("<<x[i+1]<<"-x)";

elsecout<<"-"<<-t<<"*("<<x[i+1]<<"-x)";

t=(y[i+1]-fxym[i+1]*h[i]*h[i]/6)/h[i];

if(t>0)cout<<"+"<<t<<"*(x-"<<x[i]<<")";

elsecout<<"-"<<-t<<"*(x-"<<x[i]<<")";

cout<<endl<<endl;

}

cout<<endl;

}

2、程序比较复杂的:

(程序前面的01.,02.,03.等等为语句编号,实际应用时请一一删除)01./*=======================================================================*/

02.#include<stdio.h>

03.////////////////////////////////////////////////////////////////////////////////

04.#defineMAXNUM50//定义样条数据区间个数最多为50个

05.typedefstructSPLINE//定义样条结构体,用于存储一条样条的所有信息

06.{//初始化数据输入

07.floatx[MAXNUM+1];//存储样条上的点的x坐标,最多51个点

08.floaty[MAXNUM+1];//存储样条上的点的y坐标,最多51个点

09.unsignedintpoint_num;//存储样条上的实际的点的个数

10.floatbegin_k1;//开始点的一阶导数信息

11.floatend_k1;//终止点的一阶导数信息

12.//floatbegin_k2;//开始点的二阶导数信息

13.//floatend_k2;//终止点的二阶导数信息

14.//计算所得的样条函数S(x)

15.floatk1[MAXNUM+1];//所有点的一阶导数信息

16.floatk2[MAXNUM+1];//所有点的二阶导数信息

17.//51个点之间有50个段,func[]存储每段的函数系数

18.floata3[MAXNUM],a1[MAXNUM];

19.floatb3[MAXNUM],b1[MAXNUM];

20.//分段函数的形式为Si(x)=a3[i]*{x(i+1)-x}^3+a1[i]*{x(i+1)-x}+

21.//b3[i]*{x-x(i)}^3+b1[i]*{x-x(i)}

22.//xi为x[i]的值,xi_1为x[i+1]的值

23.}SPLINE,*pSPLINE;

24.typedefintRESULT;//返回函数执行的结果状态,下面为具体的返回选项

25.#ifndefTRUE

26.#defineTRUE1

27.#endif

28.#ifndefFALSE

29.#defineFALSE-1

30.#endif

31.#ifndefNULL

32.#defineNULL0

33.#endif

34.#ifndefERR

35.#defineERR-2

36.#endif

37.//////////////////////////////////////////////////////////////////////////////////

38./*===============================================================================

39.***函数名称:Spline3()

40.***功能说明:完成三次样条差值,其中使用追赶法求解M矩阵

41.***入口参数:(pSPLINE)pLine样条结构体指针pLine中的x[],y[],num,begin_k1,end_k1

42.***出口参数:(pSPLINE)pLine样条结构体指针pLine中的函数参数

43.***返回参数:返回程序执行结果的状态TRUEorFALSE

44.================================================================================*/

45.RESULTSpline3(pSPLINEpLine)

46.{

47.floatH[MAXNUM]={0};//小区间的步长

48.floatFi[MAXNUM]={0};//中间量

49.floatU[MAXNUM+1]={0};//中间量

50.floatA[MAXNUM+1]={0};//中间量

51.floatD[MAXNUM+1]={0};//中间量

52.floatM[MAXNUM+1]={0};//M矩阵

53.floatB[MAXNUM+1]={0};//追赶法中间量

54.floatY[MAXNUM+1]={0};//追赶法中间变量

55.inti=0;

56.////////////////////////////////////////计算中间参数

57.if((pLine->point_num<3)||(pLine->point_num>MAXNUM+1))

58.{

59.returnERR;//输入数据点个数太少或太多

60.}

61.for(i=0;i<=pLine->point_num-2;i++)

62.{//求H[i]

63.H[i]=pLine->x[i+1]-pLine->x[i];

64.Fi[i]=(pLine->y[i+1]-pLine->y[i])/H[i];//求F[x(i),x(i+1)]

65.}

66.for(i=1;i<=pLine->point_num-2;i++)

67.{//求U[i]和A[i]和D[i]

68.U[i]=H[i-1]/(H[i-1]+H[i]);

69.A[i]=H[i]/(H[i-1]+H[i]);

70.D[i]=6*(Fi[i]-Fi[i-1])/(H[i-1]+H[i]);

71.}

72.//若边界条件为1号条件,则

73.U[i]=1;

74.A[0]=1;

75.D[0]=6*(Fi[0]-pLine->begin_k1)/H[0];

76.D[i]=6*(pLine->end_k1-Fi[i-1])/H[i-1];

77.//若边界条件为2号条件,则

78.//U[i]=0;

79.//A[0]=0;

80.//D[0]=2*begin_k2;

81.//D[i]=2*end_k2;

82./////////////////////////////////////////追赶法求解M矩阵

83.B[0]=A[0]/2;

84.for(i=1;i<=pLine->point_num-2;i++)

85.{

86.B[i]=A[i]/(2-U[i]*B[i-1]);

87.}

88.Y[0]=D[0]/2;

89.for(i=1;i<=pLine->point_num-1;i++)

90.{

91.Y[i]=(D[i]-U[i]*Y[i-1])/(2-U[i]*B[i-1]);

92.}

93.M[pLine->point_num-1]=Y[pLine->point_num-1];

94.for(i=pLine->point_num-1;i>0;i--)

95.{

96.M[i-1]=Y[i-1]-B[i-1]*M[i];

97.}

98.//////////////////////////////////////////计算方程组最终结果

99.for(i=0;i<=pLine->point_num-2;i++)

100.{

101.pLine->a3[i]=M[i]/(6*H[i]);

102.pLine->a1[i]=(pLine->y[i]-M[i]*H[i]*H[i]/6)/H[i];

103.pLine->b3[i]=M[i+1]/(6*H[i]);

104.pLine->b1[i]=(pLine->y[i+1]-M[i+1]*H[i]*H[i]/6)/H[i];

105.}

106.returnTRUE;

107.}

108.//////////////////////////////////////////////////////////////////////////////////

109.SPLINEline1;

110.pSPLINEpLine1=&line1;

111.//////////////////////////////////////////////////////////////////////////////////

112.main()

113.{

114.line1.x[0]=27.7;

115.line1.x[1]=28;

116.line1.x[2]=29;

117.line1.x[3]=30;

118.line1.y[0]=4.1;

119.line1.y[1]=4.3;

120.line1.y[2]=4.1;

121.line1.y[3]=3.0;

122.line1.point_num=4;

123.line1.begin_k1=3.0;

124.line1.end_k1=-4.0;

125.Spline3(pLine1);

126.return0;

127.}

128.//////////////////////////////////////////////////////////////////////////////////

‘陆’ 求Sn=a+aa+aaa+……+aa…a(n个a)之值,其中a是一个数字,n表示a的位数 。用C语言怎样编程

C语言编程:

#include<stdio.h>

intmain(intargc,char*argv[])

{

inta;

intn;

intnum=1;//计算每次n个a的值

intsum=0;//计算总和

inti;

scanf("%d%d",&a,&n);

for(i=0;i<n;i++)

{

if(i==0)//第一次

{

num=a;

sum+=num;

}

else//以后的都满足关系:这个数等于前一个数*10+a

{

num=num*10+a;

sum+=num;

}

}

printf("%d",sum);//输出总和

return0;

‘柒’ 电脑频繁蓝屏,代码为0x0100000D1

一、Windows 2000/XP爆发蓝色警报的原因

Windows 2000/XP采用了分层结构,它的两个层又称模式,分别为用户模式(User Mode)和内核模式(Kernel Mode),应用程序是无法直接访问硬件设备的,只有借助驱动程序才能直接访问。

不过,即使NT架构再稳定,由于会由于某些原因,例如硬件冲突、硬件产生问题、注册表错误、虚拟内存不足、动态链接库文件丢失、资源耗尽等,此时可能会导致驱动程序或应用程序出现错误,严重时甚至会波及内核层。这种情况下,Windows会中止系统运行,并启动名为KeBugCheck的功能,通过检查所有中断的处理进程,并同预设的停止代码和参数比较后,屏幕将变为蓝色,并显示相应的错误信息和故障提示,由于出现这种现象时实际上就意味着死机,因此常称为“Blue Screen of Death”(BSOD),又称“STOP信息”或“停止信息”。

二、认识蓝色警报中隐藏的信息

Windows 2000/XP的BSOD窗口与Windows NT4以前的BOSD窗口有着很大的区别,最大的区别是NT的BSOD窗口仅包括一个通用的停止消息代码,但Windows 2000/XP的BSOD包含了停止消息和硬件消息两种类型,前者是发现一个无法恢复的软件错误时产生的错误信息,后者是发现一个严重的硬件错误时产生的错误信息。

虽然图1窗口中的信息看起来很复杂,但一般均由以下三部分组成:

1.错误信息

在“*** Stop:”至“****** wdmaud.sys”之间的这段内容是所谓的错误信息,由出错代码、自定义参数、错误符号等三部分组成,各部分的含义如下:

出错代码:STOP后面的16进制数字;

自定义参数:出错代码字符的组成,由程序人员定义,一般用户很难理解;

错误符号:KMODE_EXCEPTION_NOT_HANDLED

在错误符号后面,这里还显示了一个内存位置和文件名,可以了解到发生错误时的内存位置和源文件。对我们来说,其实最有用的还是前面的出错代码信息,在搜索微软知识库时将会用到。

2.推荐操作

这里显示了系统推荐用户采取的操作措施和步骤,例如在安全模式下卸载程序、回滚驱动程序、更新BIOS、安装补丁等,不过大部分情况下都需要重新启动系统后才能考虑进一步的操作。

3.调试端口信息

这里会显示应该如何设置内核调试器的信息,包括内存转储映像是否已写入磁盘、使用什么端口来完成这次调试。

其实,根据笔者的经验,蓝色警报中除了出错代码比较有用外,对普通用户来说,其余的大部分信息并无多少实际意义,仅供参考而已。

为调试系统的需要,Windows在系统出现BSOP错误后,KeBugCheck会自动生成一个名为Memory.dmp的侦错文件,该文件位于C:WindowsMinimp文件夹下,默认设置下,该文件的大小与系统物理内存容量一致,我们可以将该文件压缩后发送给微软的技术支持部门,以获取相应的解决方案,但该文件的容量是如此巨大,如何发送是一个大问题,因此很少有用户真正这样做。

提示:打开“系统属性→高级→启动和故障恢复”窗口,如图2所示,在这里可以看到“写入调试信息”的生成方式:小内存转储、核心内存转储、完全内存转储、无,基于上面的分析的原因,建议在这里选择“无”。

三、处理蓝色警报三部曲

虽然Windows 2000/XP的蓝色警报窗口显示的信息可能各有不同,或者是硬件原因,或者是驱动程序与系统兼容性方面的问题,或者索性是应用程序的某些Bug。首先当然是排除病毒的原因,然后我们可以按照如下步骤进行处理:

第1步:重启系统

出现蓝色警报窗口时,我们首先应该考虑的是重新启动系统,大部分情况下重启系统后即可解决问题。不过,一般此时已无法通过“Ctrl+Alt+Del”热启动,而只能按下复位按钮冷启动,或者索性断电后重新开机。

进入系统时,从“控制面板→管理工具→事件查看器”,或者在“开始→运行”框中键入“eventvwr.msc”命令进入事件查看器界面,如图3所示,在这里根据日期和时间重点检查“系统”和“应用程序”中的类型标志为“错误”的事件,例如图4报告某个服务启动失败的错误。

第2步:恢复至最后一次正确的配置

Windows 2000/XP出现蓝色警报并不是无缘无故而来,NT架构的操作系统也不会乱发脾气,一般都是由于更新了设备驱动程序或者安装了某些软件而造成,有时甚至是用户自行优化系统或删除了某些重要的系统文件所导致,此时可以重启系统,并快速按下F8键,选择“最后一次正确配置”,这样会恢复注册表中HKEY_LOCAL_项的有效注册表信息,但无法解决驱动程序或文件损坏而导致的错误。

或者,你也可以尝试按下F8键选择启动至安全模式,如果能够正常进入安全模式,那么说明可能是驱动程序或系统服务的问题。

第3步:查询出错代码
蓝屏画面解读

数 值 叙 述

0 0x0000 作业完成。
1 0x0001 不正确的函数。
2 0x0002 系统找不到指定的档案。
3 0x0003 系统找不到指定的路径。
4 0x0004 系统无法开启档案。
5 0x0005 拒绝存取。
6 0x0006 无效的代码。
7 0x0007 储存体控制区块已毁。
8 0x0008 储存体空间不足,无法处理这个指令。
9 0x0009 储存体控制区块位址无效。
10 0x000A 环境不正确。
11 0x000B 尝试载入一个格式错误的程式。
12 0x000C 存取码错误。
13 0x000D 资料错误。
14 0x000E 储存体空间不够,无法完成这项作业。
15 0x000F 系统找不到指定的磁盘机。
16 0x0010 无法移除目录。
17 0x0011 系统无法将档案移到 其他的磁盘机。
18 0x0012 没有任何档案。
19 0x0013 储存媒体为防写状态。
20 0x0014 系统找不到指定的装置。
21 0x0015 装置尚未就绪。
22 0x0016 装置无法识别指令。
23 0x0017 资料错误 (cyclic rendancy check) 24 0x0018 程式发出一个长 度错误的指令。
25 0x0019 磁盘机在磁盘找不到 持定的磁区或磁轨。
26 0x001A 指定的磁盘或磁片无法存取。
27 0x001B 磁盘机找不到要求的磁区。
28 0x001C 印表机没有纸。
29 0x001D 系统无法将资料写入指定的磁盘机。
30 0x001E 系统无法读取指定的装置。
31 0x001F 连接到系统的某个装置没有作用。
32 0x0020 The process cannot access the file because it is being used by
another process.
33 0x0021 档案的一部份被锁定, 现在无法存取。
34 0x0022 磁盘机的磁片不正确。 请将 %2 (Volume Serial Number: %3) 插入磁盘
机%1。
36 0x0024 开启的分享档案数量太多。
38 0x0026 到达档案结尾。
39 0x0027 磁盘已满。
50 0x0032 不支援这种网路要求。
51 0x0033 远端电脑无法使用。
52 0x0034 网路名称重复。
53 0x0035 网路路径找不到。
54 0x0036 网路忙碌中。
55 0x0037 The specified network resource or device is no longer available.
56 0x0038 The network BIOS command limit has been reached. 57 0x0039 网路配接卡发生问题。
58 0x003A 指定的服务器无法执行要求的作业。
59 0x003B 网路发生意外错误。
60 0x003C 远端配接卡不相容。
61 0x003D 印表机伫列已满。
62 0x003E 服务器的空间无法储存等候打印的档案。
63 0x003F 等候打印的档案已经删除。
64 0x0040 指定的网路名称无法使用。
65 0x0041 拒绝存取网路。
66 0x0042 网路资源类型错误。
67 0x0043 网路名称找不到。
68 0x0044 超过区域电脑网路配接卡的名称限制。
69 0x0045 超过网路 BIOS 作业阶段的限制。
70 0x0046 远端服务器已经暂停或者正在起始中。
71 0x0047 由于连线数目已达上限,此时无法再连线到这台远端电脑。
72 0x0048 指定的印表机或磁盘装置已经暂停作用。
80 0x0050 档案已经存在。
82 0x0052 无法建立目录或档案。
83 0x0053 INT 24?@失败
84 0x0054 处理这项要求的储存体无法使用。
85 0x0055 近端装置名称已经在使用中。
86 0x0056 指定的网路密码错误。
87 0x0057 参数错误。
88 0x0058 网路发生资料写入错误。
89 0x0059 此时系统无法执行其他行程。
100 0x0064 无法建立其他的系统 semaphore。 101 0x0065 属于其他行程专用的 semaphore 。
102 0x0066 semaphore 已经设定,而且无法关闭。
103 0x0067 无法指定 semaphore 。
104 0x0068 在岔断时间无法要求专用的 semaphore 。
105 0x0069 此 semaphore 先前的拥有权已经结束。
106 0x006A 请将磁片插入 %1。
107 0x006B 因为代用的磁片尚未插入,所以程式已经停止。
108 0x006C 磁盘正在使用中或被锁定。
109 0x006D Pipe 已经中止。
110 0x006E 系统无法开启指定的 装置或档案。
111 0x006F 档名太长。
112 0x0070 磁盘空间不足。
113 0x0071 没有可用的内部档案识别字。
114 0x0072 目标内部档案识别字不正确。
117 0x0075 由应用程式所执行的 IOCTL 呼叫 不正确。
118 0x0076 写入验证参数值不正确。
119 0x0077 系统不支援所要求的指令。
120 0x0078 此项功能仅在 Win32 模式有效。
121 0x0079 semaphore 超过逾时期间。
122 0x007A 传到系统呼叫的资料区域 太小。
123 0x007B 档名、目录名称或储存体标签语法错误。
124 0x007C 系统呼叫层次不正确。
125 0x007D 磁盘没有设定标签。
126 0x007E 找不到指定的模组。
127 0x007F 找不到指定的程序。
128 0x0080 没有子行程可供等待。
129 0x0081 %1 这个应用程式无法在 Win32 模式下执行。
130 0x0082 Attempt to use a file handle to an open disk partition for an
operation other than raw disk I/O.
131 0x0083 尝试将档案指标移至档案开头之前。
132 0x0084 无法在指定的装置或档案,设定档案指标。
133 0x0085 JOIN 或 SUBST 指令 无法用于 内含事先结合过的磁盘机。
134 0x0086 尝试在已经结合的磁盘机,使用 JOIN 或 SUBST 指令。
135 0x0087 尝试在已经替换的磁盘机,使 用 JOIN 或 SUBST 指令。
136 0x0088 系统尝试删除 未连结过的磁盘机的连结关系。
137 0x0089 系统尝试删除 未替换过的磁盘机的替换关系。
138 0x008A 系统尝试将磁盘机结合到已经结合过之磁盘机的目录。
139 0x008B 系统尝试将磁盘机替换成已经替换过之磁盘机的目录。
140 0x008C 系统尝试将磁盘机替换成已经替换过之磁盘机的目录。
141 0x008d系统尝试将磁盘机 SUBST 成已结合的磁盘机 目录。
142 0x008E 系统此刻无法执行 JOIN 或 SUBST。
143 0x008F 系统无法将磁盘机结合或替换同一磁盘机下目录。
144 0x0090 这个目录不是根目录的子目录。
145 0x0091 目录仍有资料。
146 0x0092 指定的路径已经被替换过。
147 0x0093 资源不足,无法处理这项 指令。
148 0x0094 指定的路径这时候无法使用。
149 0x0095 尝试要结合或替换的磁盘机目录,是已经替换过的的目标。
150 0x0096 CONFIG.SYS 档未指定系统追踪资讯,或是追踪功能被取消。
151 0x0097 指定的 semaphore事件 DosMuxSemWait 数目不正确。
152 0x0098 DosMuxSemWait 没有执行;设定太多的 semaphore。 153 0x0099 DosMuxSemWait 清单不正确。
154 0x009A 您所输入的储存媒体标 元长度限制。
155 0x009B 无法建立其他的执行绪。
156 0x009C 接收行程拒绝接受信号。
157 0x009D 区段已经被舍弃,无法被锁定。
158 0x009E 区段已经解除锁定。
159 0x009F 执行绪识别码的位址不正确。
160 0x00A0 传到 DosExecPgm 的引数字串不正确。
161 0x00A1 指定的路径不正确。
162 0x00A2 信号等候处理。
164 0x00A4 系统无法建立执行绪。
167 0x00A7 无法锁定档案的部份范围。
170 0x00AA 所要求的资源正在使用中。
173 0x00AD 取消范围的锁定要求不明显。
174 0x00AE 档案系统不支援自动变更锁定类型。
180 0x00B4 系统发现不正确的区段号码。
182 0x00B6 作业系统无法执行 %1。
183 0x00B7 档案已存在,无法建立同一档案。
186 0x00BA 传送的旗号错误。
187 0x00BB 指定的系统旗号找不到。
188 0x00BC 作业系统无法执行 %1。
189 0x00BD 作业系统无法执行 %1。
190 0x00BE 作业系统无法执行 %1。
191 0x00BF 无法在 Win32 模式下执行 %1。
192 0x00C0 作业系统无法执行 %1。
193 0x00C1 %1 不是正确的 Win32 应用程式。
194 0x00C2 作业系统无法执行 %1。
195 0x00C3 作业系统无法执行 %1。
196 0x00C4 作业系统无法执行 这个应用程式。
197 0x00C5 作业系统目前无法执行 这个应用程式。
198 0x00C6 作业系统无法执行 %1。
199 0x00C7 作业系统无法执行 这个应用程式。
200 0x00C8 程式码的区段不可以大于或等于 64KB。
201 0x00C9 作业系统无法执行 %1。
202 0x00CA 作业系统无法执行 %1。
203 0x00CB 系统找不到输入的环境选项。 r
205 0x00CD 在指令子目录下,没有任何行程有信号副处理程式。
206 0x00CE 档案名称或副档名太长。
207 0x00CF ring 2 堆叠使用中。
208 0x00D0 输入的通用档名字符 * 或 ? 不正确, 或指定太多的通用档名字符。
209 0x00D1 所传送的信号不正确。
210 0x00D2 无法设定信号处理程式。
212 0x00D4 区段被锁定,而且无法重新配置。
214 0x00D6 附加到此程式或动态连结模组的动态连结模组太多。
215 0x00D7 Can`t nest calls to LoadMole.
230 0x00E6 The pipe state is invalid.
231 0x00E7 所有的 pipe instances 都在忙碌中。
232 0x00E8 The pipe is being closed.
233 0x00E9 No process is on the other end of the pipe.
234 0x00EA 有更多可用的资料。
240 0x00F0 作业阶段被取消。
254 0x00FE 指定的延伸属性名称无效。
255 0x00FF 延伸的属性不一致。
259 0x0103 没有可用的资料。
266 0x010A 无法使用 Copy API。
267 0x010B 目录名称错误。
275 0x0113 延伸属性不适用于缓冲区。
276 0x0114 在外挂的档案系统上的延伸属性档案已经毁损。
277 0x0115 延伸属性表格档满。
278 0x0116 指定的延伸属性代码无效。
282 0x011A 外挂的这个档案系统不支援延伸属性。
288 0x0120 意图释放不属于叫用者的 mutex。
298 0x012A semaphore 传送次数过多。
299 0x012B 只完成 Read/WriteProcessMemory 的部份要求。
317 0x013D 系统找不到位于讯息档 %2 中编号为 0x%1 的讯息。
487 0x01E7 尝试存取无效的位址。
534 0x0216 运算结果超过 32 位元。
535 0x0217 通道的另一端有一个行程在接送资料。
536 0x0218 等候行程来开启通道的另一端。
994 0x03E2 存取延伸的属性被拒。
995 0x03E3 由于执行绪结束或应用程式要求,而异常终止 I/O 作业。
996 0x03E4 重叠的 I/O 事件不是设定成通知状态。
997 0x03E5 正在处理重叠的 I/O 作业。
998 0x03E6 对记忆体位置的无效存取。
999 0x03E7 执行 inpage 作业发生错误。

蓝屏故障和其它故障一样,根据成因大致可以分为软件和硬件两个方面。现在还是遵循先软后硬的原则来看看故障的成因和解决办法吧!
一、软件引起的蓝屏故障
1.重要文件损坏或丢失引起的蓝屏故障(包括病毒所致)。
实例:Win98中的VxD(虚拟设备驱动程序)或是.DLL�动态连接库之类的重要文件丢失,情况一般会比较严重,会出现“蓝屏警告”。
解决方法一:记下所丢失或损坏的文件名�用Win98启动盘中的“Ext”命令从Win98安装盘中提取和恢复被损坏或丢失的文件,步骤如下:
(1)用Win98启动盘引导计算机,在提示符下敲入“Ext”命令。
(2)在提示“Please enter the path to the Windows CAB files( a):”后输入Win98安装压缩包所在的完整路径,如“F�\Pwin98\Win98”,完成后回车。
(3)在提示“Please enter the name(s)of the file(s) you want to extract:”后输入你记下的丢失文件名,如“Bios.Vxd”,回车。
(4)在解压路径提示“Please enter path to extract to(‘Enter’ for current directory):”后输入文件将被解压到的完整路径,如“C� \Windows\System”并敲回车。
(5)最后出现确认提示“Is this Ok?(y/n):”,输入“y”后回车。“Ext”程序会自动查找安装盘中的CAB压缩包,并将文件释放到指定的位置。
(6)重新启动即可。
解决方法二:用杀毒软件杀毒。有的病毒可能会破坏注册表项�杀毒后注册表应恢复中毒之前的备份。
解决方法三:如果能启动图形界面,可以采取重装主板以及显卡的驱动程序,和进行“系统文件扫描”来恢复被破坏或丢失的文件。“系统文件扫描”的方法为�单击“开始/程序/附件/系统工具/系统信息/工具/系统文件检查器”,然后扫描改动过的文件即可。
2.注册表损坏导致文件指向错误所引起的蓝屏。
实例:注册表的擅自改动(包括人为地改动和软件安装时的自动替换)�其现象表现为开机或是在调用程序时出现蓝屏,并且屏幕有出错信息显示(包含出错的文件名)。
解决方法一:恢复备份。
(1)单击“开始/关机/重新启动计算机并切换到MS-DOS方式”,然后单击“是”;
(2)进入Windows目录下。例如,如果你的Windows安装在“C�\Windows” 目录下,应键入以下内容�“CD C�\WINDOWS”后回车;
(3)键入“SCANREG\RESTORE”后回车。
(4)按照上述步骤,可以将注册表恢复到最近一次启动计算机时的状态。
解决方法二:删除键值。
如果是在卸载程序后出现蓝屏的话,笔者断定故障是由于程序卸载不完善造成的。解决这类问题非常简单,首先你要记下出错的文件名,然后再到注册表中找到以下分支“HKEY_LOCAL_MACHINE\System
\CurrentControlSet\Services\VxD”。在“查找”中输入刚才的文件名,把查到的键值删除即可。此时,千万不要忘记备份注册表哦!
典型案例:笔者在删除金山毒霸时中途死机,重新启动后刚看到桌面的图标就出现蓝屏,并伴有错误信息出现。错误信息中提到Kavkrnl.vxd文件找不到,笔者首先根据文件名的前两个字符确定该文件不是Win98的系统文件,ka开头的应是金山毒霸的虚拟设备驱动程序。基本判断为文件指向错误,于是决定删除它在注册表中相应键值。在注册表编辑器的查找中输入“Kavkrnl.vxd”,将它在“HKEY_LOCAL_
MACHINE\System\CurrentControlSet\Services\VxD”中的相应主键值删除,重启后故障消除。
3.System.ini 文件错误引起的“蓝屏”。
实例:软件卸载或是安装后未即时更新System.ini 文件所造成的错误。
解决方法:禁用注册表中该项或是重新安装相应的软件或驱动程序。
4.Win98自身的不完善造成的蓝屏。
实例:Win98的sp1和Microsoft的Vxd_fix.exe补丁程序对Win98的稳定性起着至关重要的作用。
解决方法:快去下载吧,如华军网站南京站http�//nj.onlinedown.net/Win98SP1.htm�Win98sp1及http�//nj.onlinedown.net/Windows98VxDpatch.htm� Vxd_fix.exe。
5.系统资源耗尽引起的蓝屏故障。
实例:蓝屏故障常常发生在进行一项比较大的工作时,或是在保存复制的时候,且往往发生得比较突然。这类故障的发生原因主要是与三个堆资源(系统资源、用户资源、GDI资源)的占用情况有关。
解决方法:打开你的资源状况监视器,看一下剩余资源,如果你的三种资源都在50%甚至更低,就很容易出现诸如“非法操作”、“蓝屏”或“死机”故障。为此,必须减少资源浪费,减少不必要的程序加载,避免同时运行大程序(图形、声音和视频软件),例如加载计划任务程序,输入法和声音指示器,声卡的DOS驱动程序,系统监视器程序等等。
6.DirectX问题引起的蓝屏故障。
实例:(1)DirectX版本过低或是过高;(2)游戏与它不兼容或是不支持;(3)辅助重要文件丢失;(4)显卡对它不支持。
解决方法:升级或是重装DirectX。如果是显卡不支持高版本的DirectX那就说明你的显卡实在是太老了,尝试更新显卡的BIOS和驱动程序,否则,只好花钱升级显卡了。
二、硬件引起的蓝屏故障
1.内存超频或不稳定造成的蓝屏。
实例:随机性蓝屏。
解决方法:先用正常频率运行,若还有问题。找一根好的内存条进行故障的替换查找,一般可以解决。再就是应当注意当CPU离内存很近时内存的散热问题。
2.硬件的兼容性不好引起的蓝屏。
兼容机好就好在它的性价比较高,坏就坏在它在进行组装的时候,由于用户没有完善的监测手段和相应的知识,无法进行一系列的兼容性测试,从而把隐患留在了以后的使用过程中。
实例:升级内存时,将不同规格的内存条混插引起的故障。
解决方法:注意内存条的生产厂家、内存颗粒和批号的差异,往往就是因为各内存条在主要参数上的不同而产生了蓝屏或死机,甚至更严重的内存故障。也可以换一下内存条所插的插槽位置。如果内存条还是不能正常工作,那就只好更换了。此处,提醒各位:内存在整个微机系统中起着非常重要的作用,它的好坏将直接影响到系统的稳定性,所以在内存的选购时要注意,最好是有内行人陪伴,避免买到Remark过的条子或频率过低的条子。
3.硬件散热引起的“蓝屏”故障。
实例:在微机的散热问题上所出现的故障,往往都有一定规律,一般在微机运行一段时间后才出现,表现为蓝屏死机或随意重启。故障原因主要是过热引起的数据读取和传输错误。
解决方法:采取超频的应降频,超温的应降温。其实不一定所有的故障都那么复杂,有时候从简单的方面考虑,也能很好地解决问题�要学会触类旁通。
4.I/O冲突引起的蓝屏现象。
解决方法:这种现象出现得比较少,如果出现了,可以从系统中删除带!号或?号的设备名,重新启动计算机进行确认,或者请高手手动分配系统资源。
凡事要防患于未然,下面是笔者总结出来的一些经验,可供大家参考:
1定期对重要的注册表文件进行手工备份,避免系统出错后,未能及时替换成备份文件而产生不可挽回的错误。
2尽量避免非正常关机,减少重要文件的丢失。如.VxD .DLL文件等。
3对普通用户而言,只要能正常运行,没有必要去升级显卡、主板的BIOS和驱动程序,避免升级造成的危害。
4定期检查优化系统文件,运行“系统文件检查器”进行文件丢失检查及版本校对。检查步骤参见前面相关介绍。
5减少无用软件的安装,尽量不用手工卸载或删除程序,以减少非法替换文件和文件指向错误的出现。
6如果不是内存特别大和其管理程序非常优秀,尽量避免大程序的同时运行,如果你发现在听MP3时有沙沙拉拉的声音,基本可以判定该故障是由内存不足而造成的

阅读全文

与111AA新源码平台相关的资料

热点内容
dos的删除命令 浏览:307
区块链的加密物联网传输 浏览:568
如何卸载桌面布局已定的app 浏览:675
vs重置命令 浏览:611
如何学会学习python 浏览:222
程序员钉钉 浏览:756
gcc编译器生成目标文件 浏览:156
怎么改服务器ip地址吗 浏览:55
cmd输入命令断开连接 浏览:911
二线大厂程序员员工年薪 浏览:987
程序员能从事导弹行业吗 浏览:938
林园炒股指标源码 浏览:468
pdf页面间距 浏览:66
vi命令实训操作 浏览:973
传说古代洪水肆虐谁奉帝尧的命令 浏览:693
如何卸载爱思app 浏览:43
安卓app如何不显示图标 浏览:527
桌面云服务器组建配置 浏览:926
济宁织梦源码怎么跳转到qq 浏览:293
西安java培训 浏览:300