支持分层注册表筛选驱动程序

Windows Vista 及更高版本的操作系统支持注册表筛选驱动程序的分层堆栈。 堆栈中的每个驱动程序都可以通过注册 RegistryCallback 例程参与筛选注册表操作。 为每个注册表筛选驱动程序分配一个 高度,驱动程序只能为每个高度注册一个 RegistryCallback 例程。 当驱动程序调用 CmRegisterCallbackEx 时,驱动程序会指定其高度。 有关海拔高度的详细信息,请参阅 微筛选器驱动程序的加载顺序组和海拔高度

当线程进行注册表调用时,配置管理器按顺序从最高高度到最低高度调用每个 RegistryCallback 例程,直到调用所有驱动程序或 RegistryCallback 例程返回状态值, NT_SUCCESS (状态) 等于 FALSE。 因此,如果较高级别的驱动程序阻止或修改注册表操作,则不会调用较低级别的驱动程序。 (如果驱动程序通过调用其他注册表函数修改操作,则配置管理器不会在筛选器堆栈的顶部重启。)

在 Windows Vista 之前编写,因此没有高度分配的注册表筛选驱动程序将按照调用 CmRegisterCallback 的顺序插入到 Windows Vista 筛选器堆栈顶部附近。