文件系统筛选器驱动程序与设备驱动程序的差异在哪里

Microsoft Windows 操作系统中的文件系统筛选器驱动程序和设备驱动程序在以下方面有所不同:

  • 无电源管理

    由于文件系统筛选器驱动程序不是设备驱动程序,因此不直接控制硬件设备,因此它们不会接收 IRP_MJ_POWER 请求。 相反,电源 IRP 直接发送到存储设备堆栈。 但是,在极少数情况下,文件系统筛选器驱动程序可能会干扰电源管理。 因此,文件系统筛选器驱动程序不应在 DriverEntry 例程中注册IRP_MJ_POWER的调度例程,并且不应调用 PoXxx 例程。

  • 无 WDM

    文件系统筛选器驱动程序不能是 Windows 驱动程序模型 (WDM) 驱动程序。 Microsoft Windows 驱动程序模型 仅适用于设备驱动程序。

  • 无 AddDevice 或 StartIo

    由于文件系统筛选器驱动程序不是设备驱动程序,因此不直接控制硬件设备,因此它们不应具有 AddDeviceStartIo 例程。

  • 创建的不同设备对象

    尽管文件系统筛选器驱动程序和设备驱动程序都创建设备对象,但它们创建的设备对象的数量和类型不同。

    设备驱动程序创建物理和功能设备对象来表示设备。 即插即用 (PnP) 管理器生成和维护一个全局设备树,其中包含由设备驱动程序创建的所有设备对象。 文件系统筛选器驱动程序创建的设备对象不包含在此设备树中。

    文件系统筛选器驱动程序不会创建物理或功能设备对象。 而是创建控制设备对象并筛选设备对象。 控制设备对象表示系统和用户模式应用程序的筛选器驱动程序。 筛选器设备对象执行筛选特定文件系统或卷的实际工作。 文件系统筛选器驱动程序通常创建一个控制设备对象和一个或多个筛选器设备对象。

  • 其他差异

    • 由于文件系统筛选器驱动程序不是设备驱动程序,因此它们不会 (DMA) 执行直接内存访问

    • 与可附加到目标设备功能驱动程序上方或下方的设备筛选器驱动程序不同,文件系统筛选器驱动程序只能附加到目标文件系统驱动程序的上方。 因此,在设备驱动程序术语中,文件系统筛选器驱动程序只能是上层筛选器,而不能是低级筛选器。