若要筛选注册表调用,内核模式注册表筛选驱动程序必须首先调用 CmRegisterCallback 或 CmRegisterCallbackEx 来注册 RegistryCallback 例程。 (对于 Windows Vista 及更高版本的操作系统,驱动程序应使用 CmRegisterCallbackEx 而不是 CmRegisterCallback.)
驱动程序注册 RegistryCallback 例程后,每次线程尝试执行注册表操作时,配置管理器都会调用该例程。 执行注册表操作的线程可以来自调用用户模式注册表例程 (RegCreateKeyEx、 RegOpenKeyEx 等的用户模式应用程序) ,也可以来自调用内核模式注册表例程的驱动程序 (ZwCreateKey、 ZwOpenKey 等) 。
对于大多数操作,驱动程序可以在配置管理器处理注册表操作之前收到通知, (预先通知) ,或者在操作完成 (之后,但在配置管理器返回到调用方之前( 通知后) )。 有关驱动程序可以接收的通知类型的列表,请参阅 REG_NOTIFY_CLASS。
驱动程序调用 CmRegisterCallback 或 CmRegisterCallbackEx 后,驱动程序将收到通知,直到调用 CmUnRegisterCallback 或卸载。