我是靠谱客的博主 自信大门,最近开发中收集的这篇文章主要介绍Windows内核HAL相关学习,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1 硬件抽象层HAL

硬件抽象层是系统可移植的关键。HAL是一个可加载的,内模式模块提供了windows当前运行平台的低层接口。它隐藏了与
硬件相关的细节,如I/O接口,中断控制器,以及多处理器通信机制等,体系结构或者机器相关的功能。

windows内部组件以及用户编写的设备驱动并不直接访问硬件,当它们需要获得与平台相关的信息时,它们可以通过调用
HAL例程来保存可移植性。DDK中能找到很多有关HAL在驱动中的用法。(DDK,驱动开发包)

虽然windows带了几个HAL,但是安装时只能有一个被选中,并且copy到系统磁盘,其文件名为hal.dll。

2 Win7系统提示“hal.dll损坏或丢失”导致windows无法启动的解决

    win7系统电脑经常弹出提示“hal.dll损坏或丢失”导致windows无法启动。
    导致win7 64位系统提示“hal.dll损坏或丢失”的原因有很多种。

  故障原因:
  a GHOST系统引起,GHOST原封装的系统文件与品牌主机分区类型不一起引起(品牌电脑大多数有隐藏分区);
  b 偶然的系统非正常关机后,开机就无法启动,使用系统修复盘修复提示system32\hal.dll这个文件损坏或丢失;
  c 超频也可能导致系统文件损坏,提示system32\hal.dll损坏或丢失;
    d 是内存的故障,把内存条拔下来擦下金手指上的污垢,检查下是否插紧再试试,或者找一条确保正常的内存条安装
上先测试下,排除到底是不是内存条的问题;

  解决方法:
  a 无法启动提示hal.dll损坏或丢失,实际上可能该文件并不一定说在系统中不存在,而按照系统提示要求,拷个一个
hal.dll文件到system32里,根本是不可以解决的;
    b 出现这个错误的原因关键是boot.ini文件出错,导致引导不了电脑从指定的路径启动,那样系统会搜索其他的路径,
而其他路径不存在或根本就没有hal.dll文件,所以就会提示这个错误;
    c 举例说明,系统一盘都安装到C盘,如果C盘根目录下的boot.ini文件格式不完整非法,系统默认从C:Windows启动
,但又由于boot.ini文件格式不完整非法,系统会判定你的Windows XP没有安装在C盘,所以系统提示找不到HAL.DLL文件
。导致启动失败。解决方法是重新编辑Boot.ini文件;
    d 使用DOS启动盘启动,进入DOS界面,使用DOS工具EDIT.EXE命令编辑这个文件。启动EDIT.EXE以后,打开Boot.ini,
以正确的格式编辑Boot.ini文件的内容,再保存为Boot.ini文件即可;
    e 使用故障恢复控制台里面的bootcfg命令。使用WINDOWS故障恢复控制台,用fixboot命令修复boot.ini,若失败就用
bootcfg /add 来重建boot.ini ;
    f 如果对DOS命令界面不感冒,还可以在别的电脑上创建好正确的boot.ini以后,再拷贝到故障电脑的C盘根目录上覆
盖源文件即可。
    g 怎么COPY呢?还是会用到DOS。你不可能将故障电脑的硬盘拆下来,挂在另外一台电脑时行COPY吧,最好的方法是从
别的电脑中编辑好boot.ini,用个u盘boot.ini拷贝,再拷一个 hal.dll文件。
    h 然后插在故障电脑上,使用启动盘并加载U盘驱动支持,进入DOS界面。进入U盘目录看到hal.dll与boot.ini文件了
吧,然后使用DOS命令
      copy hal.dll c:windowssystem32hal.dll
      copy boot.ini c:

注册
    打开开始--运行 注册一下   regsvr32   hal.dll

3 Windows 内核模式 HAL 库

    Windows 在个人计算机的许多不同配置上运行。 每个配置都需要一个在硬件和其余操作系统之间进行交互的软件层。
由于此层抽象 (隐藏了驱动程序和操作系统) 低级别硬件详细信息,因此它被称为硬件抽象层 (HAL) 。
不鼓励开发人员编写自己的 HAL。 如果需要对硬件进行访问,HAL 库将提供可用于此目的的例程。 与 HAL 直接交互的例
程以字母 "HAL" 作为前缀;有关 HAL 例程的列表,

函数        描述
HalAllocateCommonBuffer    
HalAssignSlotResources    
HalFreeCommonBuffer    
HalGetAdapter    
HalGetBusData    
HalGetBusDataByOffset    
HalGetDmaAlignmentRequirement    
HalGetInterruptVector    
HalReadDmaCounter    
HalSetBusData    
HalSetBusDataByOffset    
HalTranslateBusAddress

最后

以上就是自信大门为你收集整理的Windows内核HAL相关学习的全部内容,希望文章能够帮你解决Windows内核HAL相关学习所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部