A função CAtlServiceModuleT::Run
Executar contém chamadas para PreMessageLoop, RunMessageLoop, e PostMessageLoop. Depois que está sendo chamado, PreMessageLoop primeiro armazena o identificador do segmento. do serviço O serviço usará essa ID para fechar propriamente dito, enviando um WM_QUIT mensagem usando a função de API do Win32, PostThreadMessage.
PreMessageLoop em seguida, chama InitializeSecurity. Por padrão, InitializeSecurity chamadas CoInitializeSecurity com o descritor de segurança definido como nulo, o que significa que qualquer usuário tem acesso ao seu objeto.
Se não desejar que o serviço para especificar sua própria segurança, substituir PreMessageLoop e não telefonar InitializeSecurity, e COM, em seguida, determinará as configurações de segurança do registro. Uma maneira conveniente definir configurações do registro é com o DCOMCNFG utilitário discutido posteriormente nesta seção.
Uma vez que segurança é especificada, o objeto foi registrado com para que novos clientes possam se conectar ao programa.Finalmente, o programa informa o Gerenciador de controle de serviços (SCM) que ele está sendo executado e o programa insere um loop de mensagem.O programa permanece em execução até que ele posta uma mensagem sair depois de desligado o serviço.