设备驱动程序与驱动程序堆栈

6

设备驱动程序和驱动程序栈有什么区别?我一直听人们谈论“驱动程序栈”,但我之前从未听说过这个词。

2个回答

7

一个驱动程序就是...嗯...一个驱动程序。

驱动堆栈是指驱动程序相互插入,每个驱动程序都向链中添加一些内容。比如说,OpenGL或DirectX驱动程序使用您的显卡驱动程序,而显卡驱动程序则使用PCI Express或AGP等驱动程序来设置资源并推送像素等。或者您的USB设备驱动程序当然也必须使用USB驱动程序才能进行通信。

从技术上讲,可能会有由一个驱动程序组成的“堆栈”,但是当人们说“堆栈”时,他们几乎总是指多于一个驱动程序。或者他们只是想表现得自己很懂。


0

驱动程序堆栈是指一条理论上的垂直驱动程序链,每个驱动程序在从硬件到用户代码或从用户代码到硬件的排列中执行特定的工作。

在Windows操作系统中,向硬件发送带有数据的消息被建模为IRP(IO请求包),它们通过这条线从一侧到另一侧,并在其路上每个驱动程序处理它们并执行其操作。

一个易于理解的例子是Windows中的主驱动程序称为“功能驱动程序”,如果您想要在其上方放置一个“过滤驱动程序”来执行一些次要工作,例如在到达主驱动程序之前从用户模式修改一些数据,则可以使用此方法。如果您已经拥有一个可用的驱动程序,但不想或无法修改它,则可能需要这样做。

请参阅有关Windows驱动程序堆栈的以下文章: https://learn.microsoft.com/en-us/windows-hardware/drivers/gettingstarted/driver-stacks


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接