rasapi32.dll文件丢失怎么办 怎么办

热门日志推荐
人人最热标签
分享这篇日志的人常去
北京千橡网景科技发展有限公司:
文网文[号··京公网安备号·甲测资字
文化部监督电子邮箱:wlwh@··
文明办网文明上网举报电话: 举报邮箱:&&&&&&&&&&&&
请输入手机号,完成注册
请输入验证码
密码必须由6-20个字符组成
下载人人客户端
品评校花校草,体验校园广场6913人阅读
Windows延缓写入失败:Windows无法为某盘某文件保存所有数据,数据已经丢失。这个错误可能是由于您的计算机硬件或网络连接的失败导致的。
提示“Windows-延缓写入失败”,一般都是由于硬盘坏道故障引起的。可以挂从盘用MHDD检测硬盘坏道,如果你数据重要建议还是通过51Recovery这种专业机构进行数据恢复,数据恢复完成以后如果你的硬盘在保修期内就去保修;如果超过保修期了就用MHDD自带的修理功能修复硬盘坏道。要提醒的是,坏道故障比较忌讳继续通电尝试,这样问题会加重。是不是因为打开了磁盘的“对磁盘启用写入缓存”功能。 关闭试试。
关闭方法为:我的电脑--右键任意一个本地磁盘--属性--硬件--点选需要设置的磁盘驱动器--属性--策略--为快速删除而优化(不使用磁盘写入缓存)
硬盘盒的故障,我有个160的三星移动硬盘就是这个样子。
1、硬盘有问题2、开始菜单-运行-输入msconfig回车&在里边的启动栏里把**.dll前面的勾去掉就行了&1、开始——运行——msconfig——启动——把加载项***.log的那个勾勾去掉。 重启电脑,通常到这就可以了,如果还弹出来再进行第二步&2、开始——运行——regedit 在下面的位置删除相应键值: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run&
windows&无法为D:$Mft&文件保存所有数据。数据已经丢失.这是为什么呀? 我的电脑总是弹出这样一个错误:&windows&无法为D:\$Mft&文件保存所有数据。数据已经丢失。这个错误可能是由于您的计算机硬件或网络连接的失误而造成的。请尝试把这份文件保存到别处。&解决方法:(参考文摘)虽然许多读者都知道NTFS这个名词,但细细深究起来却又似懂非懂,比如:有人认为NTFS对游戏支持不好,它的安全性到底体现在什么地方,&即使用了似乎也没有什么感觉。本篇文章将给大家一个关于NTFS的满意答案。&一、什么是文件系统和NTFS&首先,需要澄清读者对于文件系统的一些错误理解,经常有这样的说法,“我的硬盘是FAT32格式的”,“C盘是NTFS格式”等,它们的错误在于,&NTFS或是FAT32并不是格式,而是管理文件的系统,其次刚买回来的硬盘并没有文件系统,必须使用FDISK或Windows 2000/XP的分区工具等对其进行分区并格式化后&才会有管理文件的系统,因此文件系统是对应分区的,而不是硬盘,不管是将硬盘分成一个分区,还是几个分区。&举个通俗的比喻,一块硬盘就像一个块空地,文件就像不同的材料,我们首先得在空地上建起仓库(分区),并且指定好(格式化)仓库对材料的管理规范(文件系统),&这样才能将材料运进仓库保管。文件不会受所在分区的文件系统影响,就像同样是汽车轮胎在A仓库可能直接堆在地上,而B仓库则会挂在墙上,&仅仅是放置和管理方法不同而已,因此,在NTFS分区和FAT32分区的文件可以随意在分区间移动,内容不会因此产生任何不同。&NTFS的英文全称为“NT File System”,中文意为NT文件系统(见图1 24rntfs01 在“我的电脑”中右击“属性”,在弹出窗口中就可以看到文件系统信息)。&它随着1996年7月的Windows NT 4.0诞生的,但直到Windows 2000,它才开始在个人用户中间得以推广,跨入了主力分区文件系统的行列。今天,&Windows XP/2003和NTFS早已是“如胶似漆”了。&我们知道,当初FAT32文件系统的出现对于FAT16而言,可以说是有了比较明显的改善,但NTFS对FAT32的改进,就必须得用“卓越”来形容了。&NTFS最大分区上限已达到了2TB(1TB=1024GB),从诞生到现在经历了多个版本,Windows NT4.0中的版本为1.2,Windows ,Windows XP为3.1。&如果要查看当前NTFS版本号,只要在命令提示符中输入“fsutil fsinfo ntfsinfo c:”(C为分区盘符)即可看到。&小知识&常见文件系统&FAT12:是IBM第一台个人电脑中的MS-DOS 1.0使用的文件系统,主要用于软盘。这种系统限制分区的容量最大为16MB——但这根本算不上问题,&因为软盘容量从来没有达到16MB。&FAT16:它被很多操作系统支持,兼容性最好,但分区最大只能到2GB,并且空间浪费现象比较严重。并且由于FAT16文件系统是单用户文件系统,&不支持任何安全性及长文件名。&FAT32:是在FAT16基础上发展而来,随着Windows 95 OSR2一起发布,可以被大多数操作系统支持,FAT32比FAT16更有效地利用了硬盘空间,&并且最大分区的上限已经达到了32GB,适合一般家庭使用。&ISO9660:CD-ROM的文件系统,不过现在已经延伸出很多新的文件系统,对它的一些缺点进行了弥补,如Juliet等。&UDF:可读写光盘的文件系统。&Mac HFS:苹果电脑的文件系统,对大容量磁盘有比较好的支持。不过,现在大多数苹果电脑还在使用FAT32文件系统。&二、细数NTFS的四大优点&1.具备错误预警的文件系统&在NTFS分区中,最开始的16个扇区是分区引导扇区,其中保存着分区引导代码,接着就是主文件表(Master File Table,以下简称MFT),但如果它所在的磁盘扇区恰好出现损坏,NTFS文件系统会比较智能地将MFT换到硬盘的其他扇区,保证了文件系统的正常使用,也就是保证了Windows的正常运行。而以前的FAT16和FAT32的FAT(文件分配表)则只能固定在分区引导扇区的后面,一旦遇到扇区损坏,那么整个文件系统就要瘫痪。&但这种智能移动MFT的做法当然并非十全十美,如果分区引导代码中指向MFT的部分出现错误,那么NTFS文件系统便会不知道到哪里寻找MFT,从而会报告“磁盘没有格式化”这样的错误信息。为了避免这样的问题发生,分区引导代码中会包含一段校验程序,专门负责侦错。&2.文件读取速度更高效!&恐怕很多人都听说NTFS文件系统在安全性方面有很多新功能,但你可否知道:NTFS在文件处理速度上也比FAT32大有提升呢?&对DOS略知一二的读者一定熟悉文件的各种属性:只读、隐藏、系统等。在NTFS文件系统中,这些属性都还存在,但有了很大不同。在这里,一切东西都是一种属性,就连文件内容也是一种属性。这些属性的列表不是固定的,可以随时增加,这也就是为什么你会在NTFS分区上看到文件有更多的属性(见图2 24rntfs02)。&NTFS文件系统中的文件属性可以分成两种:常驻属性和非常驻属性,常驻属性直接保存在MFT中,像文件名和相关时间信息(例如创建时间、修改时间等)永远属于常驻属性,非常驻属性则保存在MFT之外,但会使用一种复杂的索引方式来进行指示。如果文件或文件夹小于1500字节(其实我们的电脑中有相当多这样大小的文件或文件夹),那么它们的所有属性,包括内容都会常驻在MFT中,而MFT是Windows一启动就会载入到内存中的,这样当你查看这些文件或文件夹时,其实它们的内容早已在缓存中了,自然大大提高了文件和文件夹的访问速度。&小提示&为什么FAT的效率不如NTFS高&FAT文件系统的文件分配表只能列出了每个文件的名称及起始簇,并没有说明这个文件是否存在,而需要通过其所在文件夹的记录来判断,而文件夹入口又包含在文件分配表的索引中。因此在访问文件时,首先要读取文件分配表来确定文件已经存在,然后再次读取文件分配表找到文件的首簇,接着通过链式的检索找到文件所有的存放簇,最终确定后才可以访问。&3.磁盘自我修复功能&NTFS利用一种“自我疗伤”的系统,可以对硬盘上的逻辑错误和物理错误进行自动侦测和修复。在FAT16和FAT32时代,我们需要借助Scandisk这个程序来标记磁盘上的坏扇区,但当发现错误时,数据往往已经被写在了坏的扇区上了,损失已经造成。&NTFS文件系统则不然,每次读写时,它都会检查扇区正确与否。当读取时发现错误,NTFS会报告这个错误;当向磁盘写文件时发现错误,NTFS将会十分智能地换一个完好位置存储数据,操作不会受到任何影响。在这两种情况下,NTFS都会在坏扇区上作标记,以防今后被使用。这种工作模式可以使磁盘错误可以较早地被发现,避免灾难性的事故发生。&有些人发现当把磁盘转换为NTFS文件系统后,用磁盘扫描程序就很难发现磁盘错误了。经过前面的介绍,你知道这是为什么了吗?&4.“防灾赈灾”的事件日志功能&在NTFS文件系统中,任何操作都可以被看成是一个“事件”。比如将一个文件从C盘复制到D盘,整个复制过程就是一个事件。事件日志一直监督着整个操作,当它在目标地——D盘发现了完整文件,就会记录下一个“已完成”的标记。假如复制中途断电,事件日志中就不会记录“已完成”,NTFS可以在来电后重新完成刚才的事件。事件日志的作用不在于它能挽回损失,而在于它监督所有事件,从而让系统永远知道完成了哪些任务,那些任务还没有完成,保证系统不会因为断电等突发事件发生紊乱,最大程度降低了破坏性。&5.我是否需要哪些附加的功能?&其实,NTFS还提供了磁盘压缩、数据加密、磁盘配额(在“我的电脑”中右击分区并并行“属性”,进入“配额”选项卡即可设置)、动态磁盘管理等功能,这些功能在很多报刊杂志上介绍的比较多了,这里不再详细介绍。&NTFS提供了为不同用户设置不同访问控制、隐私和安全管理功能。如果你的系统处于一个单机环境,比如家用电脑,那么这些功能对你意义不是很大。&小提示&从FAT转换过来的NTFS,性能有折扣&如果分区是从FAT32转换为NTFS文件系统的(使用命令为“CONVERT 驱动器盘符 /FS:NTFS”),不仅MFT会很容易出现磁盘碎片,更糟糕的是,磁盘碎片整理工具往往不能整理这各分区中的MFT,严重影响系统性能。因此,建议将分区直接格式化为NTFS文件系统。&三、NTFS的七大热点问答&1.是不是NTFS一定比FAT32更高效,为什么我感觉不到呢?&当然也不能这样一概而论,因为NTFS与FAT的单个文件操作速度差异往往仅在毫秒之间.一般无法察觉,如果硬盘小,文件操作不频繁,那么差异不明显,&不过随着硬盘向200GB迈进,电脑同时执行多任务的机会不断增加,差异会越来越明显。&同时,NTFS的MFT相当于一个小型数据库,因此对硬件也有较高要求,而且对于较小分区它反而不如FAT32更高效,因此,是否使用NTFS文件系统还有以下几个注意点:&★微软建议分区大于32GB最好使用NTFS文件系统,而且在Windows XP中,分区超过个数字后,就无法格式为FAT32文件系统了。&专家的建议是,分区在8GB以下,FAT32会更高效,分区在16GB或更高时,最好选择NTFS文件系统。对于8GB~16GB的分区,使用哪种就看你自己的喜好了。&★硬盘转速最好在5400转以上,CPU主频不低于700MHz,内存不少于256MB。&2.在Windows 98中如何查看NTFS分区中的内容?&推荐你使用NTFS Reader for DOS(下载地址:),它可以在DOS中查看、复制NTFS分区中的文件。另外,你还可以下载,用它可以制作能够访问NTFS分区的启动软盘,而则可制作相应的启动光盘。&3.看起来主文件分区表(MFT)十分重要,如果它损坏了如何恢复?&很简单,在“开始→运行”中输入“Cmd”,进入命令提示符。输入“Chkdsk”,回车后就会开始查找磁盘错误,找到后可以使用“Chkdsk /F”进行修复(见图3 24rntfs03)。&另外,还有朋友在看过22期《系统慢可能是你的文件太多了》一文后询问,如何优化MFT,其实很简单,就是定期用磁盘碎片整理工具整理磁盘,这样同时也会对MFT中的碎片进行整理。这里还有一个手工的方法,就是将分区中所有文件移动到其他分区,然后再移动回来,这等于重新整理和优化了数据分区的MFT,但效果比碎片整理差一些。&4.NTFS会对游戏运行有不良影响吗?&很多人关注这个问题,而有些人认为FAT32更适合玩游戏。其实,NTFS只是一种管理文件的系统,和游戏没有任何直接联系。也就是说,NTFS不会对游戏有特别优势,FAT32也同样如此。惟一值得小心的是一些较低级别的应用程序,它们会跳过高端的Win32 API接口,试图直接访问磁盘扇区,它们才是NTFS可怕的敌人。&5.如何配置簇的大小呢?&簇是文件系统中基本的储存单位,当你在Windows对分区进行格式化时,会有簇大小的选择(见图4 24rntfs04),如果设置的值比较大,那么文件保存时占用的簇就会少,从而文件读取性能就越高。还是用个比喻,簇就像仓库中的柜子,如果你选择的是小号柜子,那么一批材料可能一个柜子装不满,还得用三到四个,如果是大号柜子,那么可能只用一个或两个就装下了。这样装和取材料时,柜子越少效率就越高。但是,不少批次的材料可能一个大柜子都装不满,这样柜子就只能空着许多空间,积少成多,会浪费不少空间。&到底应该选择多少更合适呢?一个简单的办法就是,首先确定分区主要用来保存什么样的文件,如果是体积很大的视频和多媒体文件,那么最好将簇设置得大一些,这样可以提高性能。如果分区主要存储网页或文本文件等文件,建议簇小一些,推荐使用Windows的“默认值”,这样会减少空间浪费。&如果你想更改当前分区的簇的大小,同时又不想重新格式化,可以使用PQMagic来完成(“高级→调整簇的大小”)。&6.什么时候选择压缩NTFS卷&在“我的电脑”中右击某个分区并选择“属性”,在“常规”选项卡中有一个“压缩驱动器以节省磁盘空间”的选项,这个功能确实可以节省一些磁盘空间,但根据CPU速度、分区的大小和要压缩的数据,应用它后可能会不同的效率,或者提升,或者降低系统性能。&我们建议,如果CPU非常快,但硬盘属于比较慢的型号,可以考虑压缩,这样会对文件读取效率有些提高;如果分区大于8GB,则不要选择压缩,这样会影响系统性能;如果分区中保存的文件大部分是已经不能压缩的数据,比如:JPG、ZIP等已经压缩过的文件,那么即使选择了压缩,也不会有节省空间的效果,建议对主要保存文本、Office、BMP等文件的分区进行压缩。&7.给文件/文件夹加密之后,系统被格式化了,怎么才能访问这些文件夹?&最保险的方式是在格式化之前,以管理员身份设置“数据恢复代理”,以备将来的不时之需。具体使用方法参见。
一般你在某一存贮设备(硬盘、移动硬盘、U盘)安装、复制大文件的时候,在系统托盘区域图标可能会出现一个提示“Windows - 延缓写入失败 windows无法为c:\???文件保存所有数据。数据已经丢失。这个错误可能是由于您的计算机硬件或者网络的连接失败而造成的。请尝试把这份文件保存到别处。”。
如果出现这种情况,恭喜你,你的“苦难”也许开始了,因为即使你看完下面的内容,也可能无法解决问题;如果还没过质保期又非人为错误(例如优化),强烈推荐重装系统(没有重要软件)或者送检。
一般有三种设备会引起这种情况:1、硬盘,2、移动硬盘,3、U盘(优盘)。
一、如果出错的时候开了BT、电骡等耗内存的程序,建议先关闭它们看看是否还会出错;
二、如果系统启动时候就出错,清空临时文件、清空预读文件或者关闭预读机制(用Windows优化大师);
三、如果移动硬盘、U盘出错,也可以考虑在BIOS里关闭USB2.0支持,使用USB1.1;
四、一般U盘(优盘)建议使用FAT格式,当然,FAT32也不是绝对不能用,但稳定性不好。
零、运行磁盘检查(U盘就不用检查了,没什么重要数据直接格式化吧);
一、系统设置问题
1.1、关闭存贮设备的“写入缓存”(一般不建议硬盘禁用这个)。
对任意盘符右键,选择菜单的“属性”,再选择上面的“硬件”标签——好了,现在你可以尝试关闭出错设备的“写入缓存”——选定某一设备,按右下的“属性”按钮,在新窗口再选择上面的“策略”标签;选择“为快速删除而优化”的,按下面的“确定”按钮。
警告:当U盘使用“为快速删除而优化”后,你需要观测U盘灯判断是否读写完成,不要乱插拔。。。。。
1.2、(警告:只针对硬盘,不到最后别尝试这个,貌似损失性能比较厉害,如果无效,一定要改回去!!!)XP“控制面板”、“系统”,选择上面的“硬件”标签,按“设备管理器”按钮,在新窗口里双击“IDE ATA/ATA PI控制器”,再双击下面的设备(一般就两个,IED口嘛),然后选中硬盘所在的位置(Primary Channel 或者 Secondary Channel),将下面的“Enable write caching”的钩去掉(我的是非系统自带的英文驱动,所以中文也不知道是怎么样的)。
1.2、禁止LargeSystemCache(大系统缓存)。
1.2.1、你用Wopti Utilities(Windows优化大师)取消“启用大系统缓存(服务器可选)”( V7.6版以前的版本,应该能看见“启用大系统缓存(服务器可选)”这个选项,为了系统的稳定,后续版本貌似已经取消。);
1.2.2、运行注册表程序regedit.exe,查看HKEY LOCAL MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management这个项目右边是否有“LargeSystemCache”的键,如果有并且值为1,双击把值改为0。
提示:你也可以直接查找“LargeSystemCache”这个值。
二、BIOS设置问题
2.0、清CMOS,然后BIOS载入默认值;
2.1、不要乱设驱动器的UDMA模式,一般使用AUTO自动检测;
2.2、尝试关闭内存的奇偶校验(英文叫“Master ECC Enable”,设置为“Disabled”);
2.3、(多条内存的话)尝试降低内存时序,增大CAS Latency(CL)、DRAM RAS TO CAS Delay、DRAM RAS PRECHANGE TIME、DRAM ACTIVE TIME的值(其实就是增加延迟~)
三、硬件问题
3.1、IDE线尽量用80线而别用40线,USB线尽量别使用延长线,另外检查线是否接触不良或者质量问题;
3.2、盘符冲突问题,例如硬盘、光盘跳线不对等。
3.3、电源问题(U盘一般可以忽略);
硬盘问题,老机器需要检查电脑电源是否供电不足;
移动硬盘问题
新做的系统,开机后右下角显示黄色小三角:windows无法为C:windows\system32文件保存所有数据,数氢已经丢失,这个错误可能是由于您的计算机硬件或网络连接的失败造成的,请尝试把这份文件保存到别处。后来百度了一些资料,写下来希望对有同样问题的朋友有所帮助:可能是Windows 延缓写入失败
电脑右下角总是显示 Windows 无法为C:\WINDOWS\SYSTEM32\Config\SysEvent.Evt 文件保存所有数据。数据已经丢失。这个错误可能是由于您的计算机硬件或网络链接的失败而造成的。请尝试把这份文件保存到别处。
用金山毒霸杀毒的时候就会死机
常见的引起“写入缓存失败”的原因:
1.磁盘驱动器本身的原因。这种情况尤其发生SCSI或者RAID驱动器上。有一些RAID驱动器的驱动程序会在安装了SP2的XP操作系统中报告一个虚假消息告诉用户“写入缓存失败”。所以你应该为你的磁盘驱动器安装最新版本的驱动程序。
2.数据线的原因。一些错误或者损坏的数据线,特别是外部USB线和火线,会造成这种情况。如果你的数据线过长,或者数据线连接到的是一个质量不合格的USB HUB上,也会造成写入缓存失败。最后,还有可能是因为你有一个需要80针数据线的UDMA驱动器,但你却使用了一条40针脚的数据线。
&&& 3.SCSI终止错误。虽然这种情况在使用了self-terminating技术的SCSI设备上很少发生,但是我们还是必须把它考虑进来。
&&& 4.媒体错误。这是可能发生的最严重的情况,换句话说,也就是磁盘驱动器坏了。如果你能通过SMART(比如SMART & Simple )软件获取磁盘驱动器的统计信息,那么你可以通过这些信息来判断磁盘驱动器出现了机械(物理)故障。你还可以使用一个叫Gibson Research's SpinRite的工具来帮助你诊断媒体错误,只是这个软件在对磁盘驱动器进行完全检测的时候会耗费相当长的时间。
5.计算机的BIOS设定强制开启了驱动器控制器不支持的UDMA模式。虽然UDMA 模式能够增强磁盘的性能,但是如果驱动器控制器不支持的话将会导致一些错误发生。这种情况并不多见,主要是发生在新安装的硬件设备上(该硬件设备支持UDMA模式),用户可以通过升级BIOS或者将BIOS中关于硬盘驱动器的选项恢复成默认的“自动检测”模式来解决这个问题。举个例子:如果设置成UDMA Mode6模式的设备出现了问题,那么你可以将它设置成Mode5模式。
6.驱动器控制器的问题。我曾经遇到USB控制器和其他硬件设备冲突并产生写入缓存失败的情况。如果你的系统同时拥有长和短两种PCI插槽(64位和32位),请尝试将USB控制器从长PCI插槽中拔出。一些比较老的PCI 卡并不支持这种类型的插槽。
7.内存的奇偶校验错误。这种情况通常发生在你新增了一条内存之后,造成这种错误的原因是很可能是你的新内存条和主板所支持的内存类型不符,或者是内存本身有问题。(内存有问题还会造成其他一些错误,例如随机死锁等)
8.注册表中的LargeSystemCache键值错误。这种情况很少见,通常发生在那些安装了ATI显示适配器,内存大于521MB的机器上。这些机器上的注册表中有一个叫做LargeSystemCache的键(HKEY LOCAL MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management),该键值用来管理系统分配给一些核心进程的内存容量,如果键值被设为1的话(这样设置可以增强内存大于512MB的机器的性能),有可能会在一些系统中导致数据错误和产生写入缓存失败的错误。如果出现这种情况的话,请把该键值改为0。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1821001次
积分:20856
积分:20856
排名:第124名
原创:217篇
转载:1113篇
译文:13篇
评论:72条
阅读:4740
(22)(38)(17)(6)(17)(22)(75)(10)(8)(44)(15)(3)(1)(1)(8)(5)(2)(17)(8)(23)(13)(55)(92)(64)(45)(56)(82)(49)(111)(98)(49)(117)(125)(12)(3)(1)(6)(1)(1)(15)(3)(8)(4)Windows CE笔记
阅读:1022次&&&时间: 00:00:00&&
&项目名称&Windows CE笔记版本 &0.1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&修订历史记录日期版本说明作者V0.1建立文档杨亦红&&&&&&&&&&&&&目录WinCE笔记& windows CE.net是microsoft在嵌入式市场推出的操作系统版本,它是一种微内核体系,各部分功能分层并且模块化,除具有一般操作系统多线程,多任务,按需调页,共享存储等特征外,明显拥有嵌入式领域操作系统所需的如电源管理,模块可灵活定制等各种特点.另外,CE的应用开发非常类似于桌面windows的开发,图形界面优越,并提供有多媒体与网络通信等功能块,开发工具PlatForm Builder(用于内核定制)和Embedded Visual C++(应用开发工具)的推出使得开发者能够较快速地完成产品级的开发,所有这一切为CE进入嵌入式市场并占据优势地位垫定了基础.&& windows CE.net内核定制及应用开发OAL&&&&& OEM Adaption LayerBSP&&&&& Board Support PacketGWES&&&& Graphic,Windows Manager,Event Manager systemXIP&&&&& eXecute In PlaceDirectX& 一组基于COM的多媒体技术的总称.MDD&&&&& Model Device DriverPDD&&&&& Platform Dependent DriverDDSI&&&& Device Driver Service Provider InterfaceDDI&&&&& Device Driver Interface& CE操作系统采用分层组件模型,按功能将各块分成若干层,各层之间只能单向调用,操作系统本身必须要具备两个界面:面向应用开发,和面向系统.而要有另一层提供硬件与操作系统之间的隔离,如BSP层提供板级的硬件支持.如图所示.OEM层OAL层引导程序配置文件驱动硬件层核心NK.exe操作系统层Core DLL多媒体GWES设备管理器对象存储通信网络服务应用与服务开发Internet客户服务国际化用户接口WinCE应用程序客户应用程序应用层&&&&&&&&&&&&&&&图 2?1 windows CE操作系统模型&&& 注册表是一个系统数据库,存储应用程序、驱动程序和操作系统的配置配置信息。树型层次结构,为子树,键以及键值项(含键值名,数据类型,键值)所组成。应尽量使键和键值项占用较少空间。CE支持两种类型的注册表,即RAM-based registry和Hive-based registry,前者以系统数据对象方式(RAM)存储,掉电后会丢失,后者以文件形式存储,分两部分:系统Hive(含系统数据)和用户Hive(含用户特定数据),所谓hive是指一组键,子键和键值项,有一套支持文件,文件中有数据的备份。& HKEY_LOCAL_MACHINE\init\BootVars下的键值项SystemHive 中存储有系统Hive的文件路径信息,& HKEY_LOCAL_MACHINE\init\BootVars下的键值项ProfileDir存储所有用户目录的位置,命名为USER.hv的用户Hive存放在这些不同的用户目录中。还有一个Boot Hive,只用于系统启动时的系统设置(存在于rom中,系统hive启动后,会终止)。注:CE中有四个注册表根键:HKEY_LOCAL_MACHINE,HKEY_CURRENT_USER,HKEY_CLASSES_ROOT,HKEY_USERS图 2?2 进程虚拟地址空间分布0x400 0000(1G)Slot 0 (32MB)Slot 1 (32MB)Share memory所有应用程序共享0x0x01ff ffff0x03ff ffff&&0x7fff ffff静态映射所有512MB物理内存(cached),仅供内核访问0x9fff ffff0xVirtual Address重复定义(uncached)0xBfff ffff0xA000 0000系统保留0xc1ff ffff内核程序nk.exe使用0xc3ff ffff用户静态虚拟地址空间0xdfff ffff0xffff ffff内核使用虚拟地址空间&Code 代码正文Readonly data只读数据Readwrite data读写数据ResourceHeap堆,保留空间Stack栈,保留空间Free virtual spaceRAM-based DLL(非XIP)XIP DLL space其余XIP DLLsCore dll 0x& 由于嵌入式系统的特定要求,CE必须比桌面系统更有效的使用和节省物理内存,采用有ROM文件系统与RAM文件系统。可以在ROM中存放压缩的与非压缩的文件,前者中的可执行文件(dll,exe)必须解压到RAM才可使用,后者如果在支持线性访问的介质(如NOR flash)中则可以XIP。非XIP的DLL在加载时,会在调用dll的进程的slot0空间中按需申请物理内存。RAM文件系统专用于对象存储,NK(config.bib中定义,用于存放从flash中的内核镜像解压出来的所有文件)以外的RAM分为对象存储区域(采用flash进行对象存储后,可以减少)和应用程序内存区域(默认各一半)。2.2.1&&&&&&&&&& &&4GB的虚拟地址空间主要分为两部分,0x以上部分由内核使用,以下部分为应用程序使用。启动过程中会把所有物理空间映射到0x以上供内核以后使用(CE最多支持512MB的物理内存)。当一个应用程序启动时,内核为这个进程选择一个空闲的slot,为分配所有的代码,资源分配足够的地址空间,然后分配堆和栈,加载非XIP DLLs,一旦进程得到使用权,整个地址将会映射到slot0,slot0的最底64kB为保留区域)。如果dll已经被载过,则会在使用该dll的进程所在slot中预留出该dll的空间。&& 当一个应用程序启动时,内核为进程在进程本身的地址空间中分配一个192KB(虚拟地址空间)的默认堆,如果是需要几MB的堆,内核会在全局地址空间0x至0x7fff ffff中分配所需的空间。栈也是一段连续的虚拟地址空间(一般为64KB,并且保留顶部的2kB防溢出),主要为函数使用。&& 可以用堆函数,内存映射文件,或VirtualAlloc/VirtualFree来申请/释放大的连续的虚拟地址空间。①&&&&& 堆& 多次创建堆,释放堆,可能能造成内存碎块(因而桌面windows系统中,频繁移动分散的,已分配的内存块使它们聚在一起),相关的接口:HeapCreate、HeapAlloc、HeapReAlloc、HeapSize、HeapFree、HeapDestroy等。②&&&&& 内存映射文件& 内存映射文件可以保留一个虚拟地址空间(在全局地址空间0x到0x7fff ffff)和保留一个RAM读缓冲区,并提交物理存储器(RAM物理内存或flash), 不必在访问文件前申请大的数据缓冲区(具体的读操作由操作系统来完成),这适合于加载大的exe或dll文件,减少加载时间,也用于进程间通信(也可以用对象存储区)。创建有名或无名的内存映射文件相关的接口:CreateFileForMapping&CreatFileMapping&MapViewOfFile&UnmapViewOfFile,这里的view称为文件视图,可以是全部文件或部分文件.③&&&&& VirtualAlloc/VirtualFree这实际上是new操作的底层分配虚拟地址的函数,在调用进程的地址空间或全局地址空间内分配符合条件的地址空间,并用0自动初始化提交的物理内存。(地址空间中的每个分配的块有三种状态:可用,保留,提交。),但提交大量物理内存时,使用内存映射文件的成功概率要大得多。&FileSys.exeROM文件系统对象存储RAM系统注册表RAM文件系统属性数据库存储管理器文件系统筛选器文件系统驱动分区驱动程序存储驱动程序存储介质图 2?2 windows CE文件系统结构& 文件系统和所有与文件相关的API都是通过文件管理器FileSys.exe进程来管理的。所有的文件系统统一到根&\&下的单一命名空间中。Windows CE的文件系统结构如图:&&& 其中与存储管理器相关的配置配置信息在HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\xxx下(xxx可能是Hard disk等),这里的Profiles键值项中保存了所有设备的默认的配置项。存储管理器(针对外围存储器,如硬盘)中加载驱动程序的过程如下:设备管理器负责为块设备装载存储驱动程序(在设备管理器中创建相关的数据结构以记录与该设备相关的各种信息)&告知存储管理器该设备相关的信息(如设备名,GUID)&存储管理器根据注册表中的配置信息加载分区驱动程序&枚举分区,标识分区上的文件系统,并加载相关文件系统驱动程序&挂接入统一的根。& windows CE的设备管理主要分为四个部分:I/O管理,PnP管理器,电源管理,及管理和支撑例程。设备管理器集中为Device.exe文件,这是用户级别的程序,与内核,注册表,流接口驱动程序有密切关联。通过注册信息HKEY_LOCAL_MACHINE\init\&Launch20&=&Device.exe&在启动时加载,并始终运行。设备管理器的任务是:& 在系统启动时或外围设备添加时初始化驱动程序的加载;向内核注册特定的文件名;从外围设备获得即插即用标识符,或激活一个检查子程序查找合适的驱动程序;通过读写注册值跟踪驱动程序;不再需要设备时,卸载驱动程序。& & 进程是正在运行的程序的实例,由两部分组成:进程的内核对象和进程拥有的地址空间,一个进程可以由一个或多个线程组成。内核调度系统中有一个当前所有进程中的线程的优先级表,并按优先级进行调度。Windows CE最多支持32个进程同时运行。当前运行进程的地址空间在slot0和slot1之间,总的进程空间为0x到0x之间。相关的接口函数是:CreateProcess、OpenProcess、ExitProcess、TerminateProcess等。& 线程是进程中真正的执行单元,能访问所在进程的所有资源,并且拥有自已的栈(默认为64KB),线程有5种状态:运行running,挂起suspended,睡眠sleeping,阻塞blocked,终止terminated。相关的接口有:CreateThread,ExitThread,TerminateThread,ResumeThread,SuspendThread等。CE把进程分为256个优先级,0级优先级最高。0-96 为高于驱动程序的程序,97-152驱动程序,153-247低于驱动程序的程序,248-255普通和应用程序,以此垫定实时性,但还需要解决类似优先级反转的死锁(如正在运行的高优先级进程需要等待访问处于临界区状态的低优先级的资源时)。除了线程外,线程内部可以有调度系统调度纤程。线程之间的通信要加以同步,一般应优行先采用在用户模式下的同步方法,如:互锁函数Interlocked(属原子访问),临界区Critical Section(保证临界区内的资源不被其它线程访问),还存在其它几种内核模式下的同步:事件对象Event(线程睡眠,而内核执行等待),互斥对象Mutex(类似于临界区,但相对较慢),信标对象Semaphore(用于限制资源访问数量),消息队列MsgQueue(利用很小的内存传递消息)等。如下列出一些相关的函数:& 【互锁函数】原子访问,执行速度快InterlockedIncrement、InterlockedDecrement&&&&& InterlockedExchangeAdd、InterlockedExchangeInterlockedExchangePointer、InterlockedCompareExchange、InterlockedCompareExchangePointer【临界区】当前线程执行完临界区代码后才允许其它线程访问临界区资源InitializeCriticalSection、 EnterCriticalSection、LeaveCriticalSection、DeleteCriticalSectionTryEnterCriticalSection 、CcriticalSection(MFC)【事件对象】需要与等待函数配合,含一个计数器,与两BOOL量(一个指示状态,另一个指示自动重置还是手动重置)。CreateEvent、SetEvent、PulseEvent、ResetEvent、OpenEvent& 【互斥对象】与临界区相比是其有内核的全局性,可以使不同进程的线程访问共享资源。CreateMutex、ReleaseMutex& 【信标对象】用于限制资源访问数量,无信号状态时可用资源数为0CreateSemaphore、ReleaseSemaphore& 【消息队列】线程间传递数据,小内存,一般只用于点对点通信。CreateMsgQueue、CloseMsgQueue、GetMsgQueueInfo、OpenMsgQueue、ReadMsgQueue、WriteMsgQueue。& 还有四个等待函数,事件对象配合WaitForSingleObject、WaitForMultipleObjectsMsgWaitForMultipleObjects、MsgWaitForMultipleObjectsEx& GWES是用户,应用程序和操作系统之间的接口,模块为Gwes.exe,支持部分驱动程序(交互界面相关,电源管理等)的加载工作,可以定制为三种推荐的配置方案:最小配置,中等配置,完全配置。界面部分(对应桌面windows的User32)包括用户输入系统,事件管理器,窗口管理器三个组件,GWES还添加有存储空间不足时的提示与解决方案。(由于与桌面windows很相似,略)& CE中比较重要的组件集合包括BSP,Core OS Services,对象存储和注册表,多媒体技术,通信服务与网络,国际化支持等。& BSP即主板支持包,包括启动程序,OEM适配层(OAL),标准开发板(SDB)和相关硬件设备的驱动程序。其中OAL层可以初始化并管理硬件,设备驱动和启动程序,及相关配置文件,以此连接到系统核心。& Core OS services包括内核特性,及CE平台操作系统通用特性,NK.exe为内核的代表,操作系统的许多功能通过它来实现,这些功能就包括进程和线程管理、内存管理、调度、实时能力等,进程的系统调用通过在Coredll.dll中定义的陷入函数进入。Coredll应用程序WIN32API转换程序本地进程服务堆Nk.exe虚拟内存进程/线程异常处理调度,启动同步等中断处理硬件抽象内存映射,中断等Hal.libHk.lib中断处理进程切换文件系统GWES.exe 设备驱动Severice.exe硬件中断进程接口动态链接库接口陷入函数调用图 3?1 内核与各层模块& 在多媒体方面,支持视频技术(二组API:Direct3D提供基本的3D图形表现,DirectDraw为2D图形提供加速支持,在硬件不支持时可用软件模拟),音频技术(三组API:DirectSound快速访问硬件,DirectMusic从软件上支持MIDI音乐格式,Waveform Audio)。& 通信服务和网络方面,services.exe为Device.exe进行补充,提供增强的安全性的支持,网络通信模型采用分层结构设计,支持无线和有线网络(802.11,GPRS,CDMA,Ethernet,bluetooth等)与相关的各种协议(RAS,TCP/IP,OBEX,IrDA等)。3.2& &&& 特性目录集合(.cec)文件是文本文件,允许Platform Build显示该特性集,并把它加到操作系统镜像中去。(PB&tools菜单-&CEC Editor,用Insert菜单-&Feature Group创建特性组,Feature项添加特性,Build Method建立新的构造方法,BIB Information菜单项部署该特性到操作系统镜像,最后用Catalog菜单的Add to Catalog加到PB的IDE环境)。含有如下单元:CECInfo,ComponentType,Implementation,BuildMethod,BibInfo等。& BIB(Binary Image Build),二进制格式映像的构造文件,定义模块如何加入os,主要功能是分配内存,定义要放在操作系统中的其他文件。含如下域:MEMORY,CONFIG,MODULES,FILES。& 注册表文件。在系统执行时,Makeimg.exe用它来为操作系统建立注册表项,Filesys.exe用它来建立一个默认的注册表。(Platform.reg定义目标设备硬件注册表,Project.reg定义.exe文件的注册表设置,Common.reg定义BSP的注册表设置)& DAT文件指定系统冷启动时文件系统应如何初始化RAM文件系统;DB文件为对象存储定义默认的,基于RAM的属性数据库。& 基于CE的操作系统镜像的生成过程主要分为4个阶段:CESYSGEN 搜集以后在生成过程中,所要用的所有头文件,用于生成DLL的DEF文件。筛选出的BSP数据将放在BSP的cesysgen(如WINCE400\cesysgen)的平台配置文件夹中.BSP阶段(build.exe)将编译和链接图形,窗口和事件子系统(GWES),内核,OAL及设备驱动程序。BUILDREL阶段,从多个位置取得文件,数据,配置和可执行文件模块,并把它复制到后阶段MAKEIMG时用到的发布目录(%_FLATRELEASEDIR%)MAKEIMG阶段,结合BSP的Files目录中的配置文件和上一阶段复制过来的各种文件,执行链接,把所有的内容组合成一个二进制文件NK.BIN(放在%_WINCEROOT%)。另外,可以在PB的菜单Configure SDK里启动SDK配置向导,建立当前平台的SDK。&& 一般BootLoader用于启动硬件和下载nk.bin(网络TFTP,串口kermit,xmodem等协议)到目标板上,并有一定的监控作用, 存放于目标平台的非易失存储介质中。如下是DOC(DiskOnChip)中的引导过程:图 4?1 在doc上启动WinCE操作系统另外,BootLoader都会设计成支持命令输入的方式,通过串口来接收用户的命令。这些命令涉及到平台调试的各个方面,像内存检测、Flash操作、文件下载等。借助于这些命令,不仅可以完成硬件平台的部分测试, CE的BootLoader程序最为重要的一个功能是下载CE映像,然后才是跳到CE映像所在的RAM地址去去运行CE内核。& 驱动程序用以把操作系统与设备连接口驱动程序连接起来,使操作系统能够识别设备并为应用程序提供设备服务。目前CE提供两种模型,即本机设备驱动程序(适于集成到内核的设备)和流接口驱动程序(一般类型的设备)。驱动程序可以是monolithic(单片)或layer(分层)的。流接口驱动程序几乎支持任何类型的可以连接到CE平台的外设,表现为用户一级的动态链接库DLLs。如图所示,分层驱动程序由模型设备驱动MDD和平台依赖的驱动PDD两层组成,PDD向MDD提供设备驱动程序服务提供器接口DDSI,MDD 层向上层提供设备驱动程序接口。流接口驱动程序也会调用到本机设备驱动的DDSI。函数描述XXX_init【设备管理器】ActivateDeviceEx初始化设备时调用XXX_IOControl【上层软件】DeviceIoControl时调用XXX_Open【应用程序】CreateFile时调用XXX_Read【应用程序】ReadFile时调用XXX_Write【应用程序】WriteFile时调用XXX_Seek【应用程序】SetFilePointer时调用XXX_PowerUp系统重启或唤醒时调用XXX_PowerDown系统挂起或省电模式前调用XXX_Close【应用程序】CloseHandle时调用XXX_Deinit【设备管理器】卸载驱动程序时调用GWESDDI函数设备驱动程序单片设备驱动程序MDD层PDD层DDSI函数硬件&&&&&&&&&&&&&&&图 5?1本机设备驱动程序的monolithic和layer类型&表 5-1流接口驱动程序接口函数集&&&& CE的设备管理器程序是一个用户级别的程序,它与内核,注册表和流接口驱动互动,使用注册表中的键HKEY_LOCAL_MACHINE\Drivers及其子键(Active\,BuiltIn\,PCMCIA\,Resource\等)来管理设备驱动程序。& CE下的设备被表示成一个设备文件,常在\windows下,文件名由前缀(为三个大写的字母,如COM),一位数字序号,和冒号组成(例如COM1)。通过注册键里用Index指定序号。流接口驱动程序都用同一组接口并调同一组标准函数集,以此完成标准的文件IO操作和电源管理,见表5-1。当设备需要驱动程序为其服务时,CE平台使用中断机制通知操作系统(CE支持中断嵌套和抢占),中断处理分成两部分:中断服务程序ISR(常驻OAL层,可直接访问注册表)和中断服务线程IST(PDD层,执行大多数的中断处理)。IST使用一个事件,并用WaitForSingleObject等待事件变为有信号(中断irq号与事件在InterruptInitialize时向内核注册),然后线程醒来并继续中断处理。驱动程序在编写时可选用PB或EVC,结合MFC可编写出相关DLL代码,但要集成到内核,还需编写配置文件.cec,.bib,再把添加的feature加入catalog,并import到相关Platform,最后重新编译内核nk.bin即可进入调试阶段。流接口驱动程序的加载有三种方法:在系统启动时,从注册表HKEY_LOCAL_MACHINE\Drivers\RootKey下找到键值Drivers\BuiltIn,并根据该值读取HKEY_LOCAL_MACHINE\Drivers\BuiltIn键的内容,并加载列出的流接口驱动程序。第二种加载在设备管理程序自动检测外围设备与CE平台连接时进行,需要把找到的即插即用标识符与注册表进行比对,以确定执行注册表列出的驱动程序或自动探测。第三种情况是在不能自动探测或加载驱动时,用ActivateDeviceEx函数来加载驱动。
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
Copyright &
All Rights Reserved}

我要回帖

更多关于 dll文件丢失怎么办 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信