Control de notificaciones

La rutina RegistryCallback recibe un puntero a una estructura REG_XXX_KEY_INFORMATION que contiene información sobre la operación del Registro que se está produciendo.

La rutina RegistryCallback puede supervisar, bloquear o modificar una operación del Registro.

Supervisión de llamadas del Registro

Si un controlador de filtrado del registro supervisa las operaciones del Registro, su rutina RegistryCallback puede actualizar contadores o realizar otras operaciones de contabilidad y, a continuación, devolver STATUS_SUCCESS. Cada vez que una rutina RegistryCallback devuelve STATUS_SUCCESS, el administrador de configuración sigue realizando la operación del Registro.

La supervisión de llamadas del Registro se admite en Windows XP y versiones posteriores de Windows.

Bloqueo de llamadas al Registro

Un controlador de filtrado del registro puede bloquear las operaciones del Registro si su rutina RegistryCallback devuelve un valor de estado para el que NT_SUCCESS(status) es igual a FALSE (es decir, un valor NTSTATUS no correcto). Cuando el administrador de configuración recibe un valor devuelto no correcto, vuelve inmediatamente al subproceso que realiza la llamada con el valor de estado especificado por el controlador. Por lo tanto, un controlador de filtrado del Registro puede usar notificaciones previas para evitar que se procesen las operaciones del Registro.

Si una rutina RegistryCallback devuelve un valor de estado para el que NT_SUCCESS(status) es igual a FALSE para una notificación previa, no se produce la devolución de llamada posterior a la notificación de la operación.

El bloqueo de llamadas del Registro se admite en Windows XP y versiones posteriores de Windows. Para Windows Vista y versiones posteriores, el controlador puede modificar los valores que la operación del Registro devuelve al subproceso que realiza la llamada. Estos valores se encuentran en las estructuras REG_XXX_KEY_INFORMATION para Windows Vista y versiones posteriores.

Modificación de llamadas del Registro

Un controlador de filtrado del Registro puede modificar los parámetros de salida de una operación del Registro o el valor devuelto. Además, el controlador puede procesar completamente una operación del Registro en lugar de permitir que el registro controle la operación.

Cuando una rutina RegistryCallback del controlador de filtrado del registro recibe una notificación posterior, puede:

  • Modifique los parámetros de salida que contiene su estructura REG_XXX_KEY_INFORMATION y, a continuación, devuelva STATUS_SUCCESS. El administrador de configuración devuelve los parámetros de salida modificados al subproceso que realiza la llamada.

    La modificación de parámetros de salida se admite en Windows Vista y versiones posteriores.

  • Modifique el valor devuelto de la operación del Registro proporcionando un valor de estado para el miembro ReturnStatus de la estructura REG_POST_OPERATION_INFORMATION y, a continuación, devuelva STATUS_CALLBACK_BYPASS. El administrador de configuración devuelve el valor devuelto especificado al subproceso que realiza la llamada.

    Nota Si el controlador cambia un código de estado de correcto a error, es posible que tenga que desasignar los objetos asignados por el administrador de configuración. Como alternativa, si el controlador cambia un código de estado de error a correcto, es posible que tenga que proporcionar los parámetros de salida adecuados.

La modificación de los valores devueltos se admite en Windows Vista y versiones posteriores.

Cuando la rutina RegistryCallback de un controlador de filtrado del registro recibe una notificación previa, la rutina puede controlar la propia operación del Registro y, a continuación, devolver STATUS_CALLBACK_BYPASS. Cuando el registro recibe STATUS_CALLBACK_BYPASS del controlador, simplemente devuelve STATUS_SUCCESS al subproceso que realiza la llamada y no procesa la operación. El controlador adelanta la operación del Registro y debe controlarla completamente, y el controlador debe tener cuidado de devolver valores de salida válidos en la estructura REG_XXX_KEY_INFORMATION .

Los controladores pueden reemplazar las operaciones del Registro en Windows Vista y versiones posteriores.

Si una rutina RegistryCallback devuelve STATUS_CALLBACK_BYPASS para una notificación previa, no se produce la devolución de llamada posterior a la notificación de la operación.

Nota No se documentan varias llamadas del sistema del registro porque rara vez se usan y, cuando se usan, normalmente es lograr algún resultado poco convencional en el registro. La modificación de las operaciones realizadas por estas llamadas es difícil y propensa a errores. No se recomienda que los desarrolladores de controladores intenten modificar las siguientes llamadas del sistema del Registro:

  • NtRestoreKey
  • NtSaveKey
  • NtSaveKeyEx
  • NtLoadKeyEx
  • NtUnloadKey2
  • NtUnloadKeyEx
  • NtReplaceKey
  • NtRenameKey
  • NtSetInformationKey