Gestione delle notifiche

La routine RegistryCallback riceve un puntatore a una struttura REG_XXX_KEY_INFORMATION contenente informazioni sull'operazione del Registro di sistema che si sta verificando.

La routine RegistryCallback può monitorare, bloccare o modificare un'operazione del Registro di sistema.

Monitoraggio delle chiamate del Registro di sistema

Se un driver di filtro del Registro di sistema sta monitorando le operazioni del Registro di sistema, la routine RegistryCallback può aggiornare i contatori o eseguire altre operazioni di registrazione e quindi restituire STATUS_SUCCESS. Ogni volta che una routine RegistryCallback restituisce STATUS_SUCCESS, gestione configurazione continua a eseguire l'operazione del Registro di sistema.

Il monitoraggio delle chiamate del Registro di sistema è supportato in Windows XP e nelle versioni successive di Windows.

Blocco delle chiamate del Registro di sistema

Un driver di filtro del Registro di sistema può bloccare le operazioni del Registro di sistema se la routine RegistryCallback restituisce un valore di stato per il quale NT_SUCCESS(stato) è FALSE (ovvero un valore NTSTATUS non riuscito). Quando configuration manager riceve un valore restituito non riuscito, restituisce immediatamente al thread chiamante con il valore di stato specificato dal driver. Di conseguenza, un driver di filtro del Registro di sistema può usare le pre-notifiche per impedire l'elaborazione delle operazioni del Registro di sistema.

Se una routine RegistryCallback restituisce un valore di stato per il quale NT_SUCCESS(stato) corrisponde a FALSE per una notifica preliminare, il callback post-notifica dell'operazione non si verifica.

Il blocco delle chiamate del Registro di sistema è supportato in Windows XP e nelle versioni successive di Windows. Per Windows Vista e versioni successive, il driver può modificare i valori restituiti dall'operazione del Registro di sistema al thread chiamante. Questi valori sono contenuti nelle strutture REG_XXX_KEY_INFORMATION per Windows Vista e versioni successive.

Modifica delle chiamate del Registro di sistema

Un driver di filtro del Registro di sistema può modificare i parametri di output di un'operazione del Registro di sistema o il valore restituito. Inoltre, il driver può elaborare completamente un'operazione del Registro di sistema anziché consentire al Registro di sistema di gestire l'operazione.

Quando una routine Registro di sistema di filtro del driverCallback riceve una notifica successiva, può:

  • Modificare i parametri di output contenuti nella struttura REG_XXX_KEY_INFORMATION e quindi restituire STATUS_SUCCESS. Gestione configurazione restituisce i parametri di output modificati al thread chiamante.

    La modifica dei parametri di output è supportata in Windows Vista e versioni successive.

  • Modificare il valore restituito dell'operazione del Registro di sistema specificando un valore di stato per il membro ReturnStatus della struttura REG_POST_OPERATION_INFORMATION e quindi restituire STATUS_CALLBACK_BYPASS. Gestione configurazione restituisce il valore restituito specificato al thread chiamante.

    Nota Se il driver modifica un codice di stato dall'esito positivo a un errore, potrebbe essere necessario deallocare gli oggetti allocati da Configuration Manager. In alternativa, se il driver modifica un codice di stato da un errore all'esito positivo, potrebbe essere necessario fornire parametri di output appropriati.

La modifica dei valori restituiti è supportata in Windows Vista e versioni successive.

Quando una routine Di filtro del registro di sistemaCallback riceve una pre-notifica, la routine può gestire l'operazione del Registro di sistema stessa e quindi restituire STATUS_CALLBACK_BYPASS. Quando il Registro di sistema riceve STATUS_CALLBACK_BYPASS dal driver, restituisce solo STATUS_SUCCESS al thread chiamante e non elabora l'operazione. Il driver impedisce l'operazione del Registro di sistema e deve gestirlo completamente e il driver deve essere attento a restituire valori di output validi nella struttura REG_XXX_KEY_INFORMATION.

I driver possono prevenire le operazioni del Registro di sistema in Windows Vista e versioni successive.

Se una routine RegistryCallback restituisce STATUS_CALLBACK_BYPASS per una pre-notifica, il callback post-notifica dell'operazione non si verifica.

Nota Diverse chiamate di sistema del Registro di sistema non sono documentate perché vengono usate raramente e, quando vengono usate, in genere è ottenere un risultato non convenzionale nel Registro di sistema. La modifica delle operazioni eseguite da queste chiamate è difficile e soggetta a errori. Gli sviluppatori di driver sono scoraggiati dal tentativo di modificare le chiamate di sistema del Registro di sistema seguenti:

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