关于存储驱动程序和设备对象

存储设备堆栈由处理系统上存储设备的 I/O 所涉及的驱动程序创建的设备对象的树组成。 此树的根是一个功能设备对象, (存储适配器或与存储堆栈集成的另一个驱动程序堆栈的 FDO) 。 此树的叶子是供文件系统和用户模式应用程序使用的设备对象。

与任何 PnP 驱动程序一样,存储类或存储筛选器驱动程序通过使用 IoCreateDevice 创建设备对象并将其附加到 IoAttachDeviceToDeviceStack 的设备堆栈,从而将自身添加到其 AddDevice 例程中的树中,方法是使用 PnP 管理器在初始化时传递给驱动程序的 AddDevice 例程的设备对象的指针。 IoAttachDeviceToDeviceStack 将新设备对象附加到设备堆栈的当前顶部。

创建设备对象并将其附加到设备堆栈不需要磁带微型类、中型更换器微型类或 SCSI 微型端口驱动程序。 相反,系统提供的磁带类、变更器类或 SCSI 端口驱动程序代表微型类/微型端口处理这些任务,并调用微型类/微型端口驱动程序例程来收集创建设备对象所需的数据。

存储端口驱动程序 (PDO) 创建FILE_DEVICE_MASS_STORAGE类型的物理设备对象。 磁盘类、CD-ROM 类、磁带类和更换器类驱动程序分别创建FILE_DEVICE_DISK、FILE_DEVICE_CD_ROM、FILE_DEVICE_TAPE 和 FILE_DEVICE_CHANGER 类型的 FDO。

有关设计 PnP 驱动程序的信息,请参阅 PnP 驱动程序设计指南。 有关与 PnP 相关的 IoXxx 例程的信息,请参阅 即插即用 例程