Esempio di servizio completo

Gli argomenti di questa sezione costituiscono un esempio di servizio completo:

Compilazione del servizio

La procedura seguente descrive come compilare il servizio e registrare la DLL del messaggio di evento.

Per compilare il servizio e registrare la DLL del messaggio di evento

  1. Compilare la DLL del messaggio da Sample.mc seguendo questa procedura:

    1. mc -U sample.mc
    2. rc -r sample.rc
    3. link -dll -noentry -out:sample.dll sample.res
  2. Compilare Svc.exe, SvcConfig.exe e SvcControl.exe rispettivamente da Svc.cpp, SvcConfig.cpp e SvcControl.cpp.

  3. Creare la chiave del Registro di sistema HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\SvcName e aggiungere i valori del Registro di sistema seguenti a questa chiave.

    Valore Tipo Descrizione
    EventMessageFile = dll_path REG_SZ Percorso della DLL di sola risorsa che contiene stringhe che il servizio può scrivere nel registro eventi.
    TypesSupported = 0x00000007 REG_DWORD Maschera di bit che specifica i tipi di evento supportati. Il valore 0x000000007 indica che tutti i tipi sono supportati.

     

Test del servizio

La procedura seguente descrive come testare il servizio.

Per eseguire il test del servizio

  1. In Pannello di controllo avviare l'applicazione Servizi. Nei passaggi seguenti usare il tasto F5 per aggiornare la visualizzazione dopo l'esecuzione di un comando che modifica le informazioni nell'applicazione Servizi .

  2. Eseguire il comando seguente per installare il servizio:

    Installazione di svc

    Il servizio scrive "Servizio installato correttamente" nella console se l'operazione ha esito positivo o un messaggio di errore in caso contrario.

    Se l'installazione del servizio ha esito positivo, il servizio viene visualizzato nell'applicazione Servizi . Si noti che Name è impostato su "SvcName", Description e Status sono vuoti e Il tipo di avvio è impostato su "Manual".

  3. Eseguire il comando seguente per avviare il servizio:

    svccontrol start SvcName

    Se l'operazione ha esito positivo, il programma di controllo del servizio scrive "Avvio del servizio in sospeso..." e quindi "Servizio avviato correttamente" nella console. In caso contrario, il programma scrive un messaggio di errore nella console.

    Se il servizio viene avviato correttamente, status è impostato su "Started". Il codice nella funzione ServiceMain viene eseguito da SCM. Se si verifica un errore, il servizio scriverà un messaggio di errore nel registro eventi. Questo messaggio include il nome della funzione non riuscita e il codice di errore restituito in caso di errore.

  4. Eseguire il comando seguente per aggiornare la descrizione del servizio:

    svcconfig describe SvcName

    Il programma di configurazione del servizio scrive "Descrizione del servizio aggiornata correttamente" nella console se l'operazione ha esito positivo o un messaggio di errore in caso contrario.

    Se l'aggiornamento ha esito positivo, description è impostato su "This is a test description".

  5. Eseguire il comando seguente per eseguire una query sulla configurazione del servizio:

    svcconfig query SvcName

    Il programma di configurazione del servizio scrive le informazioni di configurazione del servizio nella console se l'operazione ha esito positivo o un messaggio di errore in caso contrario.

  6. Eseguire il comando seguente per modificare l'elenco DACL del servizio:

    svccontrol dacl SvcName

    Il programma di configurazione del servizio scrive "DaCL del servizio aggiornato correttamente" nella console se l'operazione ha esito positivo o un messaggio di errore in caso contrario.

  7. Eseguire il comando seguente per disabilitare il servizio:

    svcconfig disable SvcName

    Il programma di configurazione del servizio scrive "Servizio disabilitato correttamente" nella console se l'operazione ha esito positivo o un messaggio di errore in caso contrario.

    Se il servizio è disabilitato correttamente, il tipo di avvio è impostato su "Disabilitato".

  8. Eseguire il comando seguente per abilitare il servizio:

    svcconfig enable SvcName

    Il programma di configurazione del servizio scrive "Servizio abilitato correttamente" nella console se l'operazione ha esito positivo o un messaggio di errore in caso contrario.

    Se il servizio è abilitato correttamente, il tipo di avvio è impostato su "Manuale".

  9. Eseguire il comando seguente per arrestare il servizio:

    svccontrol stop SvcName

    Se l'operazione ha esito positivo, il programma di controllo del servizio scrive "Service stop pending..." e quindi "Servizio arrestato correttamente" nella console. In caso contrario, il programma scrive un messaggio di errore nella console.

    Se il servizio viene arrestato correttamente, lo stato è vuoto.

    Se il servizio non viene arrestato, il programma di controllo del servizio scrive un messaggio di errore nel registro eventi che include il nome della funzione non riuscita e il codice di errore restituito in caso di errore.

  10. Eseguire il comando seguente per eliminare il servizio:

    svcconfig delete SvcName

    Il programma di configurazione del servizio scrive "Servizio eliminato correttamente" nella console se l'operazione ha esito positivo o un messaggio di errore in caso contrario.

    Se il servizio viene eliminato correttamente, non viene più visualizzato nell'applicazione Servizi . Si noti che se si tenta di eliminare un servizio non arrestato, l'operazione ha esito positivo, ma il tipo di avvio è impostato su "Disabilitato" e la voce del servizio verrà eliminata al riavvio del sistema o quando il servizio viene terminato tramite Gestione attività.

Uso dei servizi