驱动程序(设备驱动程序)和驱动程序堆栈有什么区别?我一直听到人们谈论“驱动程序堆栈”,但我以前从未真正听说过这个......谢谢!
2 回答
司机是……嗯……司机。
驱动程序堆栈是当驱动程序相互插入时,每个驱动程序都会向链中添加一点。比如说,OpenGL 或 DirectX 驱动程序使用您的视频卡驱动程序,而后者又使用 PCI Express 或 AGP 或任何驱动程序来设置资源并推送像素等。或者您的 USB 设备驱动程序当然必须使用 USB 驱动程序才能进行通信。
从技术上讲,有一个由一个驱动程序组成的“堆栈”是可能的,但是当人们说“堆栈”时,他们几乎总是意味着不止一个。或者他们只是想听起来好像他们知道他们在说什么。
驱动程序堆栈是指理论上的驱动程序垂直链,每个驱动程序在从硬件到用户代码或从用户代码到硬件的线路上执行特定工作。
在 Windows 操作系统中,发送到 HW 的消息(带有数据)以 IRP(IO 请求数据包)建模,IRP(IO 请求数据包)通过这条线路从一侧到另一侧,并在每个驱动程序处理它们并执行其操作的过程中。
一个易于理解的示例是 Windows 中称为“功能驱动程序”的主驱动程序,出于某种原因,您希望在其上方放置一个“过滤器驱动程序”以执行一些次要工作,例如在用户模式下修改某些数据之前到达你的主要驱动力。如果您已经有一个您不想要或无法修改的工作驱动程序,您可能需要这个。
在 Windows 驱动程序堆栈上查看此分析: https ://docs.microsoft.com/en-us/windows-hardware/drivers/gettingstarted/driver-stacks