Esempio di servizio completo
Gli argomenti in questa sezione costituiscono un esempio completo di servizio:
- Sample.mc (contiene messaggi di errore)
- Svc.cpp (contiene il codice del servizio)
- SvcConfig.cpp (contiene il codice di configurazione del servizio)
- SvcControl.cpp (contiene il codice di controllo del servizio)
Costruzione del servizio
La procedura seguente descrive come compilare il servizio e registrare la DLL del messaggio di evento.
Per sviluppare il servizio e registrare la DLL del messaggio di evento
Compilare la DLL del messaggio da Sample.mc seguendo questa procedura:
- mc -U sample.mc
- rc -r sample.rc
- collegamento -dll -noentry -out:sample.dll sample.res
Compilare rispettivamente Svc.exe, SvcConfig.exee SvcControl.exe da Svc.cpp, SvcConfig.cpp e SvcControl.cpp.
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 Digitare Descrizione EventMessageFile = dll_path REG_SZ Percorso della DLL contenente solamente risorse 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.
Verifica del servizio
La procedura seguente descrive come testare il servizio.
Per testare il servizio
Nel Pannello di controllo avviare l'applicazione Services. Nei passaggi seguenti usare il tasto F5 per aggiornare la visualizzazione dopo l'esecuzione di un comando che modifica le informazioni nell'applicazione Services.
Eseguire il comando seguente per installare il servizio:
installazione svc
Il servizio scrive "Service installed successfully" 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 Services. Si noti che Nome è impostato su "SvcName", Descrizione e Stato sono vuoti e tipo di avvio è impostato su "Manuale".
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, stato è impostato su "Avviato". Il codice nella funzione ServiceMain viene eseguito dallo 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.
Eseguire il comando seguente per aggiornare la descrizione del servizio:
svcconfig descrivere 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 "Questa è una descrizione di prova".
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.
Eseguire il comando seguente per modificare la DACL del servizio.
svccontrol dacl SvcName
Il programma di configurazione del servizio scrive "DACL del servizio aggiornato correttamente" nella console se l'operazione riesce oppure un messaggio di errore in caso contrario.
Eseguire il comando seguente per disabilitare il servizio:
svcconfig disabilitare 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, tipo di avvio è impostato su "Disabilitato".
Eseguire il comando seguente per abilitare il servizio:
svcconfig abilitare 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, tipo di avvio è impostato su "Manuale".
Eseguire il comando seguente per arrestare il servizio:
svccontrol stop SvcName
Se l'operazione ha esito positivo, il programma di controllo del servizio scrive "Arresto del servizio in sospeso..." ("Service stop pending...") e quindi "Servizio arrestato correttamente" ("Service stopped successfully") nella console. In caso contrario, il programma scrive un messaggio di errore nella console.
Se il servizio viene arrestato correttamente, 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.
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 Services. Si noti che se si tenta di eliminare un servizio che non è stato arrestato, l'operazione avrà comunque esito positivo, ma Tipo di avvio sarà impostato su "Disabilitato" e l'elemento del servizio verrà eliminato al riavvio del sistema o quando il servizio viene terminato tramite Gestione attività.
Argomenti correlati