我在WDM 一个驱动中 ,有一个PDO,然后创建了多个设备对象FDO,那么这些FDO可以不用挂在PDO上面(IoAttachDeviceToDeviceStack)吗?单独形成一个自己FDO的设备栈,WDM驱动中可以这么做吗?这样会不会不满足驱动WDM 驱动设计规范, PDO必须要有FDO
2条回答 默认 最新
Rust Cohle 2023-08-02 12:03关注根据 Windows 驱动模型(WDM)设计规范,每个 PDO 都必须有至少一个 FDO 与之关联。这是因为 FDO 是用来处理底层硬件的操作的,而 PDO 代表了硬件设备。
可以通过调用 loAttachDeviceToDeviceStack 将 FDO 挂载到 PDO 的设备栈上。这样做的好处是可以利用 WDM 驱动框架提供的设备栈管理、I/O 管理和电源管理等功能。
如果你在驱动中创建了多个 FDO 对象,它们应该分别与不同的 PDO 关联。每个 FDO 都需要通过调用 loAttachDeviceToDeviceStack 将其挂载到相应的 PDO 的设备栈上。
但请注意,根据具体的驱动需求和设计,有时也可以有一些特殊情况下的例外。但是,一般来说,为了满足 WDM 驱动模型的设计规范,PDO 必须要有 FDO。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报