Programas de Serviço
Um programa de serviço contém código executável para um ou mais serviços. Um programa de serviço criado com o tipo SERVICE_WIN32_OWN_PROCESS contém o código para apenas um serviço. Um programa de serviço criado com o tipo SERVICE_WIN32_SHARE_PROCESS contém código para mais de um serviço, permitindo que eles compartilhem código. Um exemplo de um programa de serviço que faz isso é o processo de host de serviço genérico, Svchost.exe, que hospeda serviços internos do Windows. Observe que Svchost.exe é reservado para uso pelo sistema operacional e não deve ser usado por serviços não Windows. Em vez disso, os desenvolvedores devem implementar seus próprios programas de hospedagem de serviço.
Um programa de serviço pode ser configurado para ser executado no contexto de uma conta de usuário do domínio interno (local), primário ou confiável. Ele também pode ser configurado para ser executado em uma conta de usuário de serviço especial.
Os tópicos a seguir descrevem os requisitos de interface do SCM ( gerenciador de controle de serviço ) que um programa de serviço deve incluir:
- Ponto de Entrada de Serviço
- Função ServiceMain do Serviço
- Função do manipulador do controle de serviço
Esses tópicos não se aplicam aos serviços de driver. Para obter os requisitos de interface dos serviços de driver, consulte o WDK (Kit de Driver do Windows).
Um serviço é executado como um processo em segundo plano que pode afetar o desempenho do sistema, a capacidade de resposta, a eficiência energética e a segurança. Para obter diretrizes de otimização de serviço, consulte Desenvolvendo processos em segundo plano eficientes para Windows. Os tópicos a seguir descrevem considerações adicionais de programação:
- Transições de estado do serviço
- Recebendo eventos em um serviço
- Serviços multithread
- Serviços e o Registro
- Serviços e unidades redirecionadas
- Eventos de gatilho de serviço
Observe que, se o programa de serviço funcionar como um servidor RPC, ele deverá usar pontos de extremidade dinâmicos e autenticação mútua.