Поделиться через


Регистрация для уведомлений

Чтобы отфильтровать вызовы реестра, драйвер фильтрации реестра в режиме ядра должен сначала вызвать CmRegisterCallback или CmRegisterCallbackEx, чтобы зарегистрировать подпрограмму RegistryCallback. (Для windows Vista и более поздних версий операционной системы драйверы должны использовать CmRegisterCallbackEx вместо CmRegisterCallback.)

После того как драйвер зарегистрировал подпрограмму RegistryCallback, диспетчер конфигурации вызывает подпрограмму каждый раз, когда поток пытается выполнить операцию реестра. Потоки, выполняющие операции реестра, могут быть из приложений пользовательского режима, которые вызывают подпрограммы реестра в пользовательском режиме (RegCreateKeyEx, RegOpenKeyExи т. д.), а также от драйверов, которые вызывают подпрограммы реестра в режиме ядра (ZwCreateKey, ZwOpenKeyи т. д.).

Для большинства операций драйвер может получать уведомления до того, как диспетчер конфигурации обрабатывает операцию реестра (предварительное уведомление) или сразу после завершения операции (но до возвращения диспетчера конфигурации вызывающей системе — после уведомления). Список типов уведомлений, которые может получать драйвер, см. в REG_NOTIFY_CLASS.

После вызова драйвером CmRegisterCallback или CmRegisterCallbackEx, драйвер будет получать уведомления, пока не вызовет CmUnRegisterCallback или не будет выгружен.