Especificando informações de contexto
O gerenciador de configurações fornece várias maneiras de os drivers de filtragem do Registro atribuirem informações de contexto a operações do Registro. Um driver de filtragem de registro pode:
Atribua informações de contexto à rotina RegistryCallback .
Quando o driver chama CmRegisterCallback ou CmRegisterCallbackEx para se registrar para notificação de uma operação de registro, o driver pode especificar um valor de contexto definido pelo driver. O gerenciador de configurações passa esse valor de contexto para a rotina RegistryCallback do driver sempre que o gerenciador de configurações chama a rotina.
Essas informações de contexto têm suporte a partir do Windows XP.
Atribuir informações de contexto a uma operação do Registro.
Os drivers podem armazenar informações de contexto específicas da operação no membro CallContext de cada estrutura REG_XXX_KEY_INFORMATION que a rotina RegistryCallback do driver recebe. Se o driver receber uma pré-notificação e uma pós-notificação para uma operação de registro, a estrutura REG_POST_OPERATION_INFORMATION conterá um ponteiro para a estrutura de pré-notificação apropriada. Quando uma rotina RegistryCallback recebe uma estrutura REG_POST_OPERATION_INFORMATION , o membro CallContext dessa estrutura corresponde ao membro CallContext da estrutura de pré-notificação.
O membro CallContext dessas estruturas está disponível a partir do Windows Vista.
Atribua informações de contexto a um objeto de chave do Registro.
Uma rotina RegistryCallback pode atribuir informações de contexto a um objeto de chave do Registro específico. Se a rotina RegistryCallback chamar CmSetCallbackObjectContext para atribuir informações de contexto a um objeto de chave, as pré-notificações subsequentes e as pós-notificações para todas as operações no objeto incluirão o valor de contexto no membro ObjectContext de cada estrutura REG_XXX_KEY_INFORMATION . Se um driver fornecer várias rotinas RegistryCallback , o driver poderá atribuir informações de contexto diferentes para cada rotina para um único objeto de chave do Registro.
Se um driver tiver chamado CmSetCallbackObjectContext, a rotina RegistryCallback do driver receberá uma notificação RegNtCallbackObjectContextCleanup depois que o identificador do objeto de chave for fechado. Em resposta a essa notificação, a rotina deve liberar todos os recursos alocados para o contexto do objeto. Quando o parâmetro Argument1 para a rotina RegistryCallback é RegNtCallbackObjectContextCleanup, o parâmetro Argument2 é um ponteiro para uma estrutura REG_CALLBACK_CONTEXT_CLEANUP_INFORMATION que contém um ponteiro para o contexto.
A rotina CmSetCallbackObjectContext e a notificação RegNtCallbackObjectContextCleanup estão disponíveis a partir do Windows Vista.