IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Vos contributions Discussion :

[Source] [C] Librairie d'encapsulation de Services Windows


Sujet :

Vos contributions

  1. #1
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut [Source] [C] Librairie d'encapsulation de Services Windows
    Bonjour,

    Cette librairie est une encapsulation complète de l'API de services Microsoft Windows NT (NT4, 2k, XP and Vista).

    Télechargement sur SourceForge.net : WinServices Library

    Sommaire
    1. Description
    2. Implémentation de service
    3. Contrôle et gestion des services
    4. Contact
    1. Description
    • Implémentation de service
      • Implémentation minimale : 1 SEULE fonction applicative à fournir
      • Encapsulation quasi complète de l'API windows de services
      • Full customization par une fonction unique de callback
      • Embeddable dans une Dll
      • Full logging support (via Windows events logs)
      • Convertit toute application C/C++ en service Windows NT
    • Contrôle de services
      • Installation, modification, suppression
      • Start, stop, pause, redémarrage de service
      • Vérification du status d'un service
      • Listage de services
      • Informations complètes sur un service
      • Gestion des dépendances
      • Gestions des services sur des machines distantes
    • Divers
      • Support ansi / unicode
      • version 1.5 en GPL
    2. Implémentation de service

    Pour implémenter un service, il suffit juste de fournir une seule fonction de traitement !

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #include <NTService.h>
    
    void WINAPI MyServiceMain()
    {
        while (!ServiceIsTerminated())
        {
            if (ServiceGetCurrentStatus() == SERVICE_RUNNING)
            {
                /* code application ... */    
            }
            ServiceSleep(1000);            
        }
    }
    
    int main(int argc, char** argv)
    {
        return ServiceRun("MyServiceName", MyServiceMain, 1000, SERVICE_ACCEPT_STOP);
    }
    Pour plus de contrôle et/ou information sur le service et ses évènements, il est possible de fournir une fonction callback.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    DWORD WINAPI MyServiceCallback(DWORD dwEvent, DWORD dwState)
    {
        switch (dwEvent)
        {
            case SE_INSTALL: 
                if (dwState == SS_SUCCESS)
                    ServiceLog(EVENTLOG_INFORMATION_TYPE, _T("Installation ok"));
                break;
            case SE_DELETE: 
                if (dwState == SS_SUCCESS)
                    ServiceLog(EVENTLOG_INFORMATION_TYPE, _T("Uninstallation ok"));
                break;
            case SE_START: 
                /*...*/
                break;
            case SE_STOP: 
                /*...*/
                break;
            case SE_PAUSE:
                /*...*/
                break;
            case SE_CONTINUE:
                /*...*/
                break;
            case SE_CUSTOM: 
                return ServiceLog(EVENTLOG_INFORMATION_TYPE,  _T("Event %s - Status %s"), dwEvent, dwState);
        }
    
        return SS_SUCCESS;
    }
    Pour utiliser le logging par défaut dans le journal système de windows, il faut inclure à votre projet les fichiers NTEventLog.xxx fournis.

    Sinon pour une gestion de logging personnalisée ou déja existante via des ressources stockées dans une DLL, il faut fournir sa propre dll et fournir les fichier de messages (*.mc, *.rc, *.h, ...). Cela est intéréssant uniquement quand il faut pouvoir gérer des messages en plusieurs langues.

    3. Contrôle et gestion des services

    La librarie fournie toute les fonctions nécessaires pour contrôler des services en local ou distants.

    Exemple pour lister les services en local :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    LPSERVICE_ITEM list = LocalServiceGetList(SERVICE_WIN32, SERVICE_STATE_ALL, &count);
    
    for (i = 0; i < count; i++) 
    {
        printf("%s\n", list[i].lpDisplayName);
        printf("%s\n", list[i].lpServiceName);
    
        LPSERVICE_INFO info = LocalServiceGetInfo(list[i].lpServiceName);
        
        if (info)
        {
            printf("%s\n", info->lpBinaryPathName);
            printf("%s\n", info->lpDescription);
            printf("%s\n", info->lpServiceStartName);
    
            ServiceFreePointer(info);
        }
    }
    Voir la librairie pour toute les fonctions disponibles

    4. Contact

    La librairie est livrée avec des projets de test (VC6++, VS2005).

    Pour toute remarque, commentaire, bug, contactez moi :

    Un message sur developpez.com ou sur sourceforge.net ou à vicenzo

    Have fun !!!
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  2. #2
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut
    Un grand projet je dirai même plus un grand projet !

    Bon, je viens de tomber sur ce thread donc je vais tester le code et envoyer mes commentaires après !!
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  3. #3
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    Randriano,

    L'archive n'était pas à jour..... J'ai édité le post et tu peux récupérer la bonne archive sur le lien du post (sur sourceforge.net) :

    Télechargement sur SourceForge.net : WinServices Library
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  4. #4
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut
    D'un premier coup d'oeil, c'est géant car moi je n'arriverai pas à faire pareil! Bravo !

    Permettez moi de lire ton code à présent pour apprendre plus, je reviendrai àprès sur ce thread !
    Have fun too !
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

Discussions similaires

  1. Librairie d'encapsulation de Services Windows
    Par Vincent Rogier dans le forum Télécharger
    Réponses: 0
    Dernier message: 30/11/2010, 18h44
  2. [Source C] Librairie ISO C90 d'accès à Oracle (Encapsulation OCI)
    Par Vincent Rogier dans le forum Mon programme
    Réponses: 4
    Dernier message: 26/11/2007, 21h58
  3. [C++][Source] Encapsuler l'API Windows
    Par Melem dans le forum Contribuez
    Réponses: 0
    Dernier message: 09/11/2007, 17h04
  4. [Source] [C] Librairie d'encapsulation de Services Windows
    Par Vincent Rogier dans le forum Windows
    Réponses: 1
    Dernier message: 21/10/2007, 15h39
  5. [C#] Icône, barre des tâches et Service Windows
    Par SErhio dans le forum Windows Forms
    Réponses: 17
    Dernier message: 03/09/2004, 13h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo