Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Os tópicos desta seção formam um exemplo de serviço completo:
- Sample.mc (contém mensagens de erro)
- Svc.cpp (contém o código de serviço)
- SvcConfig.cpp (contém código de configuração de serviço)
- SvcControl.cpp (contém código de controle de serviço)
Construindo o Serviço
O procedimento a seguir descreve como criar o serviço e registrar a mensagem de evento DLL.
Para criar o serviço e registrar a mensagem de evento DLL
Crie a mensagem DLL a partir de Sample.mc usando as seguintes etapas:
- mc -U sample.mc
- rc -r sample.rc
- link -dll -noentry -out:sample.dll amostra.res
Construa as versões Svc.exe, SvcConfig.exee SvcControl.exe a partir dos arquivos Svc.cpp, SvcConfig.cpp e SvcControl.cpp, respetivamente.
Crie a chave do Registro HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\SvcName e adicione os seguintes valores do Registro a essa chave.
Valor Tipo Descrição EventMessageFile = dll_path REG_SZ O caminho para a DLL de apenas recursos que contém strings que o serviço pode gravar no log de eventos. TypesSupported = 0x00000007 REG_DWORD Uma máscara de bits que especifica os tipos de evento suportados. O valor 0x000000007 indica que todos os tipos são suportados.
Testando o serviço
O procedimento a seguir descreve como testar o serviço.
Para testar o serviço
No Painel de Controlo, inicie o aplicativo Services. (Nas etapas a seguir, use a tecla F5 para atualizar a exibição depois de executar um comando que modifica as informações no aplicativo Services.)
Execute o seguinte comando para instalar o serviço:
svc instalar
O serviço escreve "Serviço instalado com êxito" no console se a operação for bem-sucedida ou uma mensagem de erro caso contrário.
Se a instalação do serviço for bem-sucedida, o serviço será exibido na aplicação Services. Observe que Nome está definido como "SvcName", Descrição e Status estão em branco, e Tipo de Inicialização está definido como "Manual".
Execute o seguinte comando para iniciar o serviço:
svccontrol iniciar SvcName
Se a operação for bem-sucedida, o programa de controle de serviço escreve "Início do serviço pendente..." e, em seguida, "Serviço iniciado com êxito" no console. Caso contrário, o programa grava uma mensagem de erro no console.
Se o serviço for iniciado com êxito, Status será definido como "Iniciado". O código na função ServiceMaindo serviçoé executado pelo SCM. Se ocorrer um erro, o serviço gravará uma mensagem de erro no log de eventos. Esta mensagem inclui o nome da função que falhou e o código de erro que foi retornado na falha.
Execute o seguinte comando para atualizar a descrição do serviço:
svcconfig descrever SvcName
O programa de configuração de serviço escreve "Descrição do serviço atualizada com êxito" no console se a operação for bem-sucedida ou uma mensagem de erro caso contrário.
Se a atualização for bem-sucedida, Descrição será definida como "Esta é uma descrição de teste".
Execute o seguinte comando para consultar a configuração do serviço:
svcconfig consulta SvcName
O programa de configuração de serviço grava as informações de configuração de serviço no console se a operação for bem-sucedida ou uma mensagem de erro caso contrário.
Execute o seguinte comando para alterar a DACL do serviço:
svccontrol dacl SvcName
O programa de configuração de serviço grava "DACL de serviço atualizada com êxito" no console se a operação for bem-sucedida ou uma mensagem de erro, caso contrário.
Execute o seguinte comando para desativar o serviço:
svcconfig desativar SvcName
O programa de configuração de serviço escreve "Serviço desativado com êxito" no console se a operação for bem-sucedida, ou uma mensagem de erro caso contrário.
Se o serviço for desativado com êxito, Tipo de Inicialização será definido como "Desativado".
Execute o seguinte comando para habilitar o serviço:
svcconfig ativar SvcName
O programa de configuração de serviço grava "Serviço ativado com êxito" no console se a operação for bem-sucedida ou uma mensagem de erro caso contrário.
Se o serviço for ativado com êxito, Tipo de Inicialização será definido como "Manual".
Execute o seguinte comando para parar o serviço:
svccontrol parar SvcName
Se a operação for bem-sucedida, o programa de controlo de serviço escreve "Serviço de paragem pendente..." e, em seguida, "Serviço interrompido com êxito" no console. Caso contrário, o programa grava uma mensagem de erro no console.
Se o serviço parar com êxito, o Status estará em branco.
Se o serviço falhar ao parar, o programa de controle de serviço grava uma mensagem de erro no log de eventos que inclui o nome da função que falhou e o código de erro que foi retornado na falha.
Execute o seguinte comando para excluir o serviço:
svcconfig excluir SvcName
O programa de configuração de serviço escreve "Serviço eliminado com sucesso" no console se a operação for bem-sucedida, ou uma mensagem de erro caso contrário.
Se o serviço for excluído com êxito, ele não será mais exibido no aplicativo Services. (Observe que, se você tentar excluir um serviço que não é interrompido, a operação será bem-sucedida, mas Tipo de Inicialização será definida como "Desabilitado" e a entrada de serviço será excluída na reinicialização do sistema ou quando o serviço for encerrado usando o Gerenciador de Tarefas.)
Tópicos relacionados