Partilhar via


O exemplo de serviço completo

Os tópicos desta seção formam um exemplo de serviço completo:

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

  1. Crie a mensagem DLL a partir de Sample.mc usando as seguintes etapas:

    1. mc -U sample.mc
    2. rc -r sample.rc
    3. link -dll -noentry -out:sample.dll amostra.res
  2. Construa as versões Svc.exe, SvcConfig.exee SvcControl.exe a partir dos arquivos Svc.cpp, SvcConfig.cpp e SvcControl.cpp, respetivamente.

  3. 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

  1. 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.)

  2. 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".

  3. 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.

  4. 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".

  5. 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.

  6. 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.

  7. 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".

  8. 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".

  9. 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.

  10. 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.)

Usando os Serviços