Manipuladores de notificação administrativa
O snap-in MMC Usuários e Computadores do Microsoft Active Directory fornece um mecanismo para permitir que os componentes recebam notificações quando o usuário excluir, renomear, mover ou alterar as propriedades de um objeto usando o snap-in. O componente que recebe as notificações é conhecido como um "manipulador de notificações".
Isso é útil quando vários objetos estão vinculados entre si e devem existir dentro do mesmo contêiner. Se um dos objetos vinculados for movido, uma notificação será fornecida ao manipulador de notificação e o manipulador de notificação poderá mover os outros objetos vinculados para a mesma pasta.
Quando uma das operações é executada e um ou mais manipuladores de notificação são instalados, o snap-in Usuários e Computadores exibirá uma caixa de diálogo de confirmação que lista os manipuladores de notificação e uma caixa de seleção para cada manipulador. Se a caixa de seleção de um manipulador estiver marcada, o manipulador será notificado. Se a caixa de seleção não estiver marcada, o manipulador não será notificado.
Implementando um manipulador de notificação
Um manipulador de notificação é um objeto COM implementado como um servidor in-proc. O manipulador de notificação deve implementar a interface IDsAdminNotifyHandler.
Quando ocorre um evento que causará uma notificação, o snap-in Usuários e Computadores enumera os manipuladores de notificação registrados e cria cada um usando o CLSID para o manipulador. Depois que o manipulador é criado, o snap-in chama o método IDsAdminNotifyHandler::Initialize . O método Initialize fornece ao snap-in os eventos que o manipulador deve receber.
Se o evento for um que deve ser enviado ao manipulador de notificação, o snap-in chamará o método IDsAdminNotifyHandler::Begin . O método Begin fornece ao manipulador o evento ocorrendo, dados sobre o objeto no qual o evento está ocorrendo e, dependendo do evento, dados sobre o que o objeto se tornará. O método Begin também fornece o snap-in com o texto que deve ser exibido para o manipulador na caixa de diálogo de confirmação.
Quando o método Begin para cada manipulador tiver sido chamado, o snap-in exibirá a caixa de diálogo de confirmação. A caixa de diálogo de confirmação solicita que o usuário selecione quais manipuladores receberão a notificação. Se o usuário pressionar o botão Sem na caixa de diálogo de confirmação, nenhum dos manipuladores será notificado. Se o usuário pressionar o botão Sim , cada um dos manipuladores selecionados na caixa de diálogo de confirmação receberá a notificação. O snap-in envia a notificação ao manipulador chamando o método IDsAdminNotifyHandler::Notify .
Depois que todos os manipuladores tiverem sido notificados, o snap-in chamará o método IDsAdminNotifyHandler::end . O método End é sempre chamado, mesmo se o método Notify não for chamado.
Registrando um manipulador de notificação no Registro do Windows
Como todos os servidores COM, um manipulador de notificação deve ser registrado no registro do Windows. O manipulador é registrado sob a seguinte chave:
HKEY_CLASSES_ROOT - CLSID - <CLSID>
<CLSID é a representação de cadeia de caracteres do CLSID como produzido pela função StringFromCLSID>. Sob a <chave CLSID> , há uma chave InProcServer32 que identifica o objeto como um servidor in-proc de 32 bits. Na chave InProcServer32, o local da DLL é especificado no valor padrão e o modelo de threading é especificado no valor ThreadingModel. Todos os manipuladores de notificação devem usar o modelo de threading Apartment.
Registrando um manipulador de notificação com um servidor do Active Directory
Nos Serviços de Domínio Active Directory, o registro do manipulador de notificações é específico para uma localidade. Se o manipulador de notificação se aplicar a todas as localidades, ele deverá ser registrado no objeto displaySpecifier em todos os subcontêineres de localidade no contêiner DisplaySpecifiers. Se o manipulador de notificação estiver localizado para uma determinada localidade, ele será registrado no objeto displaySpecifier no subcontêiner dessa localidade. Para obter mais informações sobre o contêiner DisplaySpecifiers e localidades, consulte Display Specifiers e DisplaySpecifiers Container.
Os manipuladores de notificação são registrados sob o atributo dsUIAdminNotification no contêiner DS-UI-Default-Settings . Este é um valor de cadeia de caracteres Unicode de vários valores em que cada valor requer o seguinte formato:
<order number>,<CLSID>
O "número do pedido"< é um número> não assinado que representa a posição do manipulador na caixa de diálogo de confirmação. Quando a caixa de diálogo de confirmação é exibida, os valores são classificados usando uma comparação do "<número> do pedido" de cada valor. Se mais de um valor tiver o mesmo "<número> do pedido", esses manipuladores serão exibidos na ordem em que são lidos a partir do servidor do Active Directory. Um inexistente, ou seja, um não usado por outros valores na propriedade, "número> do pedido"< deve ser usado se possível. Não há uma posição inicial prescrita, e lacunas podem aparecer na sequência "<número> de ordem".
O "CLSID"< é a representação de cadeia de caracteres do CLSID como produzido pela função StringFromCLSID.>