2

我是 Windows 的新手,在阅读 WDM 驱动程序时,我遇到了有关设备对象(PDO 和 FDO)的信息。我无法想象为什么我们需要 2 个不同的设备对象,因为在加载驱动程序后为什么我们再次在 ADDDevice 例程中创建 FDO。我们可以在那里使用 PDO,因为它代表相同的设备。

4

1 回答 1

3

PDO 和 FDO 必须是单独的对象,因为它们使用不同的设备驱动程序。例如,PCI NIC 设备将具有由设备驱动程序为 PCI 总线生成的 PDO,以及由设备驱动程序为 NIC 生成的 FDO。

有时,总线和设备共享相同的驱动程序,在这种情况下,您不需要 FDO。您可以使用原始 PDO,它将 PDO 和 FDO 组合在单个设备对象中。

有关图片,请参阅MSDN 中的示例 WDM 设备堆栈,有关简要说明,请参阅PDO,第 1 部分。

于 2013-10-17T01:00:17.467 回答