Você não pode carregar ou descarregar dinamicamente a DLL. Coloque a DLL no system32. Adicione o nome à lista de pacotes de notificação. Você precisa apenas do nome (não da parte .DLL). Você precisará reiniciar. Na inicialização, o SO lê o valor Pacotes de Notificação e carrega todas as DLLs lá. Quando você faz logon, execute winmsd ou msinfo32 para ter certeza de que sua DLL está carregada. Veja Configuração do Computador + Ambiente de Software + Módulos Carregados. A DLL é chamada apenas durante uma alteração pw e somente se o pw atender aos requisitos do Windows (min comprimento, sem problema de idade mínima, não no buffer de histórico). O LSA primeiro verifica os requisitos do Windows (em 2K3 e 2K8) e, em seguida, chama a função PasswordFilter () para cada DLL listada nos pacotes de notificação na ordem listada. Se sua DLL diz que o pw está OK e nenhum outro filtro o rejeita, o pw está comprometido com o AD / SAM e, em seguida, o LSA percorre todas as DLLs listadas lá novamente para chamar PasswordChangeNotify () para que uma DLL possa fazer sincronização pw (ou seja, sincronização está OK desde pw foi confirmado no AD, nunca tente sincronizar a chamada PasswordFilter (). Se você precisar modificar a atualização da DLL, remova a entrada dos Pacotes de Notificação, reinicie, copie a nova para system32, atualize os Pacotes de Notificação novamente e reinicie. Economize tempo, escreva um script e use 2 nomes de DLL assim quando você reinicializa isto você carrega o 2º e então troca atrás ao primeiro em próxima reinicialização, etc. Kernel debugging está lento / doloroso. Portanto, se você depurar, provavelmente será mais fácil gravá-lo em um arquivo.