警告
UMDF 2 是 UMDF 的最新版本,取代了 UMDF 1。 所有新的 UMDF 驱动程序都应使用 UMDF 2 编写。 没有将新功能添加到 UMDF 1,并且对较新版本的 Windows 10 上的 UMDF 1 的支持有限。 通用 Windows 驱动程序必须使用 UMDF 2。
存档的 UMDF 1 示例可在 Windows 11 版本 22H2 - 2022年5月驱动程序示例更新中找到。
有关详细信息,请参阅 UMDF入门。
一般 I/O 目标(可以是 本地 或 远程目标)是不支持特殊、特定于设备的数据格式(如 USB 请求块)的 I/O 目标。 在驱动程序将数据发送到常规 I/O 目标之前,它们必须以 I/O 目标和设备可以解释的格式将数据放入写入缓冲区中。 同样,当驱动程序从常规 I/O 目标读取数据时,驱动程序必须能够解释从目标接收的数据缓冲区的内容。
本地 I/O 目标
驱动程序通常会将 I/O 请求发送到驱动程序堆栈中的下一个较低驱动程序。 因此,每个基于 UMDF 的驱动程序对于每个设备都有一个默认的 I/O 目标,而这个目标是设备的下一个较低层驱动程序。 最低级别基于 UMDF 的驱动程序的默认 I/O 目标是内核模式 反射器。
有时,基于 UMDF 的驱动程序必须将 I/O 请求发送到基于文件句柄的 I/O 目标,例如文件或网络套接字。 因此,框架还提供基于文件句柄的 I/O 目标对象。
默认 I/O 目标和基于文件的 I/O 目标都称为 本地 I/O 目标,因为基于 UMDF 的驱动程序使用这些目标将 I/O 请求发送到驱动程序堆栈支持的设备。
远程 I/O 目标
有时,驱动程序必须将 I/O 请求发送到其他驱动程序堆栈。 因此,该框架还提供 远程 I/O 目标,这些目标包括除本地 I/O 目标之外的所有 I/O 目标。
远程 I/O 目标可能是驱动程序堆栈不支持的设备、该设备上的文件或该设备 的设备接口 。
以下部分介绍如何初始化和使用常规 I/O 目标: