编写预操作和后操作回调例程

在其 DriverEntry 例程中,微筛选器驱动程序最多可以为需要筛选的每种 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 操作的用户缓冲区