Electronic Joint Business

Solution for E-Business

设备节点和设备栈

在 Windows 中,设备被表示为即插即用 (PnP) 设备树中的设备节点(device node)。通常当 I/O 请求被发送给设备时,多个驱动程序会帮助处理该请求。这些驱动程序中的每一个都与一个设备对象相关联,这些设备对象在栈中进行排列。设备对象的顺序与它们的关联驱动程序一起被称为设备栈(device stack)。每个设备节点都有自己的设备堆栈。1 设备节点和即插即用设备树 Windows 在称为“即插即用设备树”(或简称为“设备树”)的树结构中组织设备。 通常,设备树中的节点表示某个设备或者复合设备的某个独立功能。 不过节点也可以表示与物理设备无关软件组件。 设备树上的节点称为“设备节点”。设备树的根节点称为“根设备节点”。约定俗成地,根设备节点被绘制在设备树的底部,如下图所示。 设备树说明了 PnP 环境中固有的父/子关系。设备树中的一些节点用来表示连接有子设备的总线设备。例如,PCI 总线节点表示主板上的物理 PCI 总线。在启动过程中,PnP 管理器请求 PCI 总线驱动程序枚举连接到 PCI 总线的设备。这些设备被表示为 PCI 总线节点的子节点。在上图中,PCI 总线节点包含一些子节点,这些子节点用来表示连接到 PCI 总线的一些设备,其中包括 USB 主控制器、音频控制器以及 PCI Express 端口。 有些连接到 PCI 总线的设备也是总线。PnP 管理器请求这些总线中都枚举与之连接的设备。在上图中,我们可以看到音频控制器是连接有音频设备的总线,而 PCI Express 端口是连接有显示适配器的总线,该显示适配器则是连接有两个监视器的总线。 将节点视为设备还是总线取决于你的视角。例如,你可以将显示适配器视为能将帧显示在屏幕上的关键设备。你也可以将显示适配器视为总线,可以检测和枚举所连接的监视器。 设备对象和设备堆栈 “设备对象 — device object”是 DEVICE_OBJECT 结构的实例。PnP 设备树中的每个设备节点都有一个设备对象的有序列表,其中的每个设备对象都与一个驱动程序相关联。设备对象的有序列表与它们的关联驱动程序一起被称为该设备节点的“设备堆栈”。 你可以从多个角度来思考设备堆栈。大部分场合中,设备堆栈应视为“设备对象/驱动程序”对的有序列表。但是,在某些语境中,将设备堆栈视为设备对象的有序列表可能更有用。而在另一些语境中,将设备堆栈视为驱动程序的有序列表则会更有用。 通常来说,设备栈具有顶部和底部。在设备栈中第一个被创建的设备对象位于底部,最后被创建并附加到设备栈的设备对象位于顶部。 在下图中,设备节点 […]

, , , ,

Leave a Reply

Your email address will not be published. Required fields are marked *