Exemple de service complet
Les rubriques de cette section forment un exemple complet de service :
- Sample.MC (contient des messages d’erreur)
- SVC. cpp (contient le code de service)
- SvcConfig. cpp (contient le code de configuration du service)
- SvcControl. cpp (contient le code de contrôle du service)
Génération du service
La procédure suivante décrit la génération du service et l’inscription de la DLL de message d’événement.
Pour générer le service et inscrire la DLL de message d’événement
Générez la DLL de message à partir de Sample.mc en procédant comme suit :
- sample.mc MC-U
- RC-r exemple. RC
- Link-dll-NOENTRY-out:sample.dll Sample. res
Générez Svc.exe, SvcConfig.exe et SvcControl.exe à partir de svc. cpp, SvcConfig. cpp et SvcControl. cpp, respectivement.
Créez la clé de Registre HKEY _ local _ machine \ System System \ CurrentControlSet \ services \ EventLog \ application \ SvcName et ajoutez les valeurs de Registre suivantes à cette clé.
Valeur Type Description EventMessageFile = _ chemin de la dll SZ de REG _ Chemin d’accès à la DLL de ressources uniquement qui contient des chaînes que le service peut écrire dans le journal des événements. TypesSupported = 0x00000007 _valeur DWORD reg Masque de bits qui spécifie les types d’événements pris en charge. La valeur 0x000000007 indique que tous les types sont pris en charge.
Test du service
La procédure suivante décrit comment tester le service.
Pour tester le service
Dans le panneau de configuration, démarrez l’application services . (Dans les étapes suivantes, utilisez la touche F5 pour actualiser l’affichage après l’exécution d’une commande qui modifie les informations de l’application services .)
Exécutez la commande suivante pour installer le service :
installation SVC
Le service écrit « service correctement installé » sur la console si l’opération réussit ou un message d’erreur dans le cas contraire.
Si l’installation du service a échoué, le service s’affiche dans l’application services . Notez que le nom est défini sur « SvcName », que la Description et l' État sont vides, et que type de démarrage est défini sur « manuel ».
Exécutez la commande suivante pour démarrer le service :
svccontrol démarrer SvcName
Si l’opération a échoué, le programme de contrôle des services écrit « démarrage du service en attente... » puis « service démarré correctement » sur la console. Dans le cas contraire, le programme écrit un message d’erreur dans la console.
Si le service démarre correctement, l' État est défini sur « démarré ». Le code de la fonction ServiceMain est exécuté par le SCM. Si une erreur se produit, le service écrit un message d’erreur dans le journal des événements. Ce message comprend le nom de la fonction qui a échoué et le code d’erreur qui a été retourné en cas d’échec.
Exécutez la commande suivante pour mettre à jour la description du service :
svcconfig décrire SvcName
Le programme de configuration de service écrit la description de service correctement mise à jour sur la console si l’opération réussit ou un message d’erreur dans le cas contraire.
Si la mise à jour se déroule correctement, la Description est définie sur « il s’agit d’une description de test ».
Exécutez la commande suivante pour interroger la configuration du service :
svcconfig requête SvcName
Le programme de configuration de service écrit les informations de configuration de service dans la console si l’opération a échoué ou un message d’erreur dans le cas contraire.
Exécutez la commande suivante pour modifier la DACL de service :
svccontrol DACL SvcName
Le programme de configuration de service écrit « la liste DACL du service a été mise à jour correctement » sur la console si l’opération réussit ou un message d’erreur.
Exécutez la commande suivante pour désactiver le service :
svcconfig désactiver SvcName
Le programme de configuration de service écrit « service correctement désactivé » sur la console si l’opération réussit ou un message d’erreur.
Si le service est désactivé avec succès, le type de démarrage est défini sur « désactivé ».
Exécutez la commande suivante pour activer le service :
svcconfig activer SvcName
Le programme de configuration de service écrit « service activé avec succès » sur la console si l’opération réussit ou un message d’erreur.
Si le service est activé avec succès, le type de démarrage est défini sur « manuel ».
Exécutez la commande suivante pour arrêter le service :
svccontrol Stop SvcName
Si l’opération échoue, le programme de contrôle des services écrit « arrêt du service en attente... » puis « Service arrêté correctement » sur la console. Dans le cas contraire, le programme écrit un message d’erreur dans la console.
Si le service s’arrête correctement, l' État est vide.
En cas d’échec de l’arrêt du service, le programme de contrôle des services écrit un message d’erreur dans le journal des événements qui comprend le nom de la fonction qui a échoué et le code d’erreur qui a été retourné en cas d’échec.
Exécutez la commande suivante pour supprimer le service :
svcconfig supprimer SvcName
Le programme de configuration de service écrit « Service supprimé avec succès » sur la console si l’opération réussit ou un message d’erreur dans le cas contraire.
Si le service est correctement supprimé, il n’est plus affiché dans l’application services . (Notez que si vous tentez de supprimer un service qui n’est pas arrêté, l’opération se déroule correctement, mais le type de démarrage est défini sur « désactivé » et l’entrée de service est supprimée lors du redémarrage du système ou lorsque le service est arrêté à l’aide du gestionnaire des tâches.)