请求高手解答一下硬件抽象层和驱动程序的关系

在WINDOWS XP操作系统中,在内核模式下有驱动程序(这是不是我们平常装显卡驱动时所说的驱动),
然后驱动程序下是硬件抽象层(这个层是不是就是一个DLL文件),硬件抽象层下是硬件?

我在一些资料上又看到有什么虚拟驱动的概念,他们是这样说的,在内核模式下是虚拟驱动,虚拟驱动
下是硬件抽象层,而硬件抽象层下才是硬件驱动程序,硬件驱动程序下才是硬件?那么我们平常装的显
卡驱动程序是哪个呢,虚拟驱动程序还是硬件驱动程序?我们所进行的驱动开发又是只哪个呢?
硬件抽象层所谓的与硬件无关体现在哪里?我查了一天的网了,而且看了整个PE文件结构以及许多的内
核资料,但是对于WINDOWS这样的内核讲解却很含糊。希望高手们不舍赐教。谢谢!
我在网上查了很久,上驱动论坛提问,至今无人能答复,你们也不要从百度百科里直接拉下那些含糊的解释,我看了不下10遍了。不知道是不是国人无法解答,是不是需要到国外论坛寻求答案.
如果您回答不上来可以告诉我到哪里可以寻求答案,如果方法有效,我一定给分。
我再将分数提高一些。我还在另一处发了同样的问题,分数全部给你。
"黄孟先生",像操作系统设计完成后,也就是硬件抽象层这些文件基本已经定下来了,做成系统安装盘销售。
那么假如有一个新的品牌的磁盘或者硬件产生在后,那么您说的硬件抽象层能覆盖到吗?那么这时怎么办?
是不是硬件抽象层负责一些基本的硬件操作,如果这个硬件特殊的话,那么需要设计的驱动就不再通过硬件抽象层这些文件来操作硬件,而是绕过这一层直接操作呢?

一点浅显理解,我毕竟不是搞内核的,所以可能一些东西说的不专业或不对。
我们知道,要通过驱动程序才能和硬件打交道,比如视频驱动程序等;但不同品牌的硬件,操作会有不同,比如同样是写数据操作,对于不同的磁盘硬件,调用的指令可能都会有差别。
这怎么办呢?难道针对每个硬件品牌,都需要专门编写单独的驱动么?这个投入就很大,而且对于编程人员来说,也需要投入很多。
所以微软提出硬件抽象层的概念,这个层放在驱动和硬件之间。比如驱动程序要写一个数据,驱动就把这个请求给硬件抽象层,硬件抽象层在根据不同硬件,来执行相应的硬件能够执行的指令。
你在系统安装时候,安装程序会探测本机的硬件配置,并选择合适的硬件抽象层文件。
比如你在安装系统之后,cpu由1核换成双核的,则系统可能就不能启动,而需要重新安装,因为以前的硬件抽象层文件已经不能适合现有配置。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-05-02
1)驱动程序,简单地可以分为底层驱动和抽象层驱动。
2)底层驱动直接操作寄存器,开发者必须了解芯片的寄存器功能才能够编写和使用底层驱动,其特点是专一性、运行高效性;抽象层驱动是为了完成一个特定的任务,便于抽象层开发人员使用而封装、包含了一系列寄存器操作的函数,即使不了解芯片的寄存器功能也可以使用,而且同一套抽象层驱动经过简单修改可以用于同架构相似的芯片,其特点是相对通用性、开发高效性。
3)一个驱动函数是底层驱动还是抽象层驱动,可以从它的功能来分析,举个例子:
①向XXX寄存器写入00001111<-------这个是底层驱动
②请求GPU在屏幕中央绘一个圆<------这个是抽象层驱动
相似回答