Поддержка драйверов фильтрации многоуровневого реестра

Версии операционной системы Windows Vista и более поздних версий поддерживают многоуровневый стек драйверов фильтрации реестра. Каждый драйвер в стеке может участвовать в фильтрации операций реестра, зарегистрируя подпрограмму RegistryCallback . Каждому драйверу фильтрации реестра назначена высота, и водители могут зарегистрировать только одну подпрограмму RegistryCallback для каждой высоты. Когда драйвер вызывает CmRegisterCallbackEx, драйвер указывает свою высоту. Дополнительные сведения о высотах см. в разделе «Группы порядка загрузки и высоты для драйверов минифильтра».

Когда поток вызывает вызов реестра, диспетчер конфигурации вызывает каждую подпрограмму RegistryCallback в порядке от наибольшей высоты до самой низкой, пока все драйверы не были вызваны или подпрограмма RegistryCallback возвращает значение состояния, для которого NT_SUCCESS(состояние) равно FALSE. Таким образом, если драйвер более высокого уровня блокирует или изменяет операцию реестра, драйверы нижнего уровня не вызываются. (Если драйвер изменяет операцию путем вызова другой функции реестра, диспетчер конфигурации не перезапускается в верхней части стека фильтров.)

Драйверы фильтрации реестра, написанные до Windows Vista и поэтому не имеют назначения высоты, вставляются в верхней части стека фильтров Windows Vista в том порядке, в который они вызывают CmRegisterCallback.