I/O 目标简介
本节中的主题介绍 Windows 驱动程序框架 (WDF) 驱动程序如何转发 I/O 请求或创建新请求并将其发送到另一个驱动程序(称为 I/O 目标)。
当 函数驱动程序、筛选器驱动程序或 微型端口驱动程序 收到 I/O 请求时,驱动程序可能能够单独处理请求,或者可能需要其他驱动程序的帮助。 如果驱动程序需要帮助,它可以将请求转发给另一个驱动程序,也可以创建一个或多个新请求并将其发送到另一个驱动程序。
在 Kernel-Mode Driver Framework 中, I/O 目标 表示作为 I/O 请求目标的设备对象。 函数、筛选器或微型端口驱动程序可以使用 I/O 目标将 I/O 请求发送到另一个驱动程序。 这些驱动程序通常会将其 I/O 请求发送到驱动程序堆栈中下一个较低的驱动程序。 因此,每个基于框架的函数、筛选器和微型端口驱动程序都有每个设备的 本地 I/O 目标 ,这是设备的下一个较低驱动程序。
有时,驱动程序必须将 I/O 请求发送到另一个目标,即不同驱动程序堆栈的顶部,或者发送驱动程序堆栈中的某些其他驱动程序。 因此,该框架还提供 远程 I/O 目标,这些目标由除本地 I/O 目标以外的所有 I/O 目标组成。
每个 I/O 目标由一个 I/O 目标对象表示。 每个 I/O 目标对象主要是一个队列,用于控制何时将请求传递到目标设备对象。 当驱动程序向 I/O 目标发送请求时,框架会将请求存储在队列中,直到它可以将请求传递到目标设备对象。
框架支持常规 I/O 目标和专用 I/O 目标:
常规 I/O 目标 可由所有函数、筛选器和微型端口驱动程序使用,但它们不支持任何特定于设备的特殊数据格式。
专用 I/O 目标使函数、筛选器和微型端口驱动程序能够轻松发送需要特定于目标的特殊数据格式的 I/O 请求。 目前,该框架支持以下专用 I/O 目标:
如果框架提供支持设备数据格式的专用 I/O 目标,则驱动程序应使用专用 I/O 目标。 否则,驱动程序应使用常规 I/O 目标。