L’exemple de service complet

Les rubriques de cette section forment un exemple de service complet :

Génération du service

La procédure suivante décrit comment générer le service et inscrire la DLL du message d’événement.

Pour générer le service et inscrire la DLL du message d’événement

  1. Générez la DLL de message à partir de Sample.mc en procédant comme suit :

    1. mc -U sample.mc
    2. rc -r sample.rc
    3. link -dll -noentry -out:sample.dll sample.res
  2. Générez Svc.exe, SvcConfig.exe et SvcControl.exe à partir de Svc.cpp, SvcConfig.cpp et SvcControl.cpp, respectivement.

  3. Créez la clé de RegistreHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\SvcName et ajoutez les valeurs de Registre suivantes à cette clé.

    Valeur Type Description
    EventMessageFile = dll_path REG_SZ Chemin d’accès à la DLL de ressource uniquement qui contient des chaînes que le service peut écrire dans le journal des événements.
    TypesSupported = 0x00000007 REG_DWORD 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

  1. Dans 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 dans l’application Services .)

  2. Exécutez la commande suivante pour installer le service :

    installation de svc

    Le service écrit « Service installé avec succès » dans la console si l’opération réussit ou un message d’erreur dans le cas contraire.

    Si l’installation du service réussit, le service s’affiche dans l’application Services . Notez que Name est défini sur « SvcName », que Description et Status sont vides, et que Type de démarrage est défini sur « Manuel ».

  3. Exécutez la commande suivante pour démarrer le service :

    svccontrol start SvcName

    Si l’opération réussit, le programme de contrôle de service écrit « Démarrage du service en attente... » puis « Le service a démarré correctement » dans la console. Sinon, le programme écrit un message d’erreur dans la console.

    Si le service démarre correctement, Status est défini sur « Démarré ». Le code dans 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 inclut le nom de la fonction qui a échoué et le code d’erreur retourné en cas d’échec.

  4. Exécutez la commande suivante pour mettre à jour la description du service :

    svcconfig describe SvcName

    Le programme de configuration du service écrit « Description du service mise à jour avec succès » dans la console si l’opération réussit ou si un message d’erreur s’affiche dans le cas contraire.

    Si la mise à jour réussit, Description est définie sur « Il s’agit d’une description de test ».

  5. Exécutez la commande suivante pour interroger la configuration du service :

    Svcconfig requête SvcName

    Le programme de configuration du service écrit les informations de configuration du service dans la console si l’opération réussit ou si un message d’erreur s’affiche dans le cas contraire.

  6. Exécutez la commande suivante pour modifier la liste DACL du service :

    svccontrol dacl SvcName

    Le programme de configuration du service écrit « Service DACL mis à jour avec succès » dans la console si l’opération réussit ou si un message d’erreur s’affiche dans le cas contraire.

  7. Exécutez la commande suivante pour désactiver le service :

    svcconfig disable SvcName

    Le programme de configuration du service écrit « Service désactivé correctement » dans la console si l’opération réussit ou si un message d’erreur s’affiche dans le cas contraire.

    Si le service est correctement désactivé, type de démarrage est défini sur « Désactivé ».

  8. Exécutez la commande suivante pour activer le service :

    svcconfig activer SvcName

    Le programme de configuration du service écrit « Service activé avec succès » dans la console si l’opération réussit ou si un message d’erreur s’affiche dans le cas contraire.

    Si le service est correctement activé, type de démarrage est défini sur « Manuel ».

  9. Exécutez la commande suivante pour arrêter le service :

    svccontrol stop SvcName

    Si l’opération réussit, le programme de contrôle de service écrit « Arrêt du service en attente... » puis « Service s’est arrêté avec succès » dans la console. Sinon, le programme écrit un message d’erreur dans la console.

    Si le service s’arrête correctement, l’état est vide.

    Si le service ne parvient pas à s’arrêter, le programme de contrôle de service écrit un message d’erreur dans le journal des événements qui inclut le nom de la fonction qui a échoué et le code d’erreur retourné en cas d’échec.

  10. Exécutez la commande suivante pour supprimer le service :

    svcconfig delete SvcName

    Le programme de configuration du service écrit « Service supprimé correctement » dans la console si l’opération réussit ou si un message d’erreur s’affiche dans le cas contraire.

    Si le service est supprimé avec succès, 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 réussit, mais le type de démarrage est défini sur « Désactivé » et l’entrée de service est supprimée au redémarrage du système ou lorsque le service est arrêté à l’aide du Gestionnaire des tâches.)

Utilisation des services