Accueil > > > WINDOWS NT SERVICES
WINDOWS NT SERVICES
Information sur la source
Description
ANSI C Windows NT Services API Encapsulation (WinServices Library v1.6.0) Cette librairie est une encapsulation complète de l'API de services Microsoft Windows NT (NT4, 2k, 2000 and Vista). Dorénavant disponible sur SourceForge.net : http://sourceforge.net/projects/ntwinserv
Source
- ==> SOMMAIRE *******************************************************************
-
- 1. DESCRIPTION
- 2. IMPLEMENTATION DE SERVICES
- 3. CONTROLE DE SERVICES
- 4. CONTACT
-
-
- ==> 1. DESCRIPTION ****************************************************************
-
- > IMPLEMENTATION DE SERVICES
-
- * Encapsulation quasi complète de l'API windows de services
- * full customization via callback
- * embeddable dans une Dll
- * full logging support (via Windows events logs)
- * convertit toute application C/C++ en service Windows NT
-
- > CONTROLE 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
-
- > MISC.
-
- * ansi / unicode support
-
- ==> 2. SERVICE IMPLEMENTATION *************************************************
-
- Pour implémenter un service, il suffit juste de fournir une fonction de traitement !
-
- Exemple :
-
-
- #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 :
-
- 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 les fichiers NTEventLog.xxx à votre projet
-
- ==> 3. IMPLEMENTATION DE SERVICES ********************************************************
-
- La librarie fournit toute les fonctions nécessaires pour contrôler des services en local ou distants.
-
- Exemple pour lister les services en local :
-
- LPSERVICE_ITEM list = LocalServiceGetList(SERVICE_WIN32, SERVICE_STATE_ALL, &count);
-
- for (i = 0; i < count; i++)
- {
- printf(list[i].lpDisplayName);
- printf(list[i].lpServiceName);
-
- LPSERVICE_INFO info = LocalServiceGetInfo();
-
- if (info)
- {
- printf(info->lpBinaryPathName);
- printf(info->lpDescription);
- printf(info->lpServiceStartName);
-
- ServiceFreePointer(info);
- }
- }
-
- ==> 4. CONTACT ****************************************************************
-
- Pour toute remarque, commentaire, bug, contactez moi :
-
- vince_rogier@yahoo.fr
-
-
- Have fun !!!
-
==> SOMMAIRE *******************************************************************
1. DESCRIPTION
2. IMPLEMENTATION DE SERVICES
3. CONTROLE DE SERVICES
4. CONTACT
==> 1. DESCRIPTION ****************************************************************
> IMPLEMENTATION DE SERVICES
* Encapsulation quasi complète de l'API windows de services
* full customization via callback
* embeddable dans une Dll
* full logging support (via Windows events logs)
* convertit toute application C/C++ en service Windows NT
> CONTROLE 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
> MISC.
* ansi / unicode support
==> 2. SERVICE IMPLEMENTATION *************************************************
Pour implémenter un service, il suffit juste de fournir une fonction de traitement !
Exemple :
#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 :
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 les fichiers NTEventLog.xxx à votre projet
==> 3. IMPLEMENTATION DE SERVICES ********************************************************
La librarie fournit toute les fonctions nécessaires pour contrôler des services en local ou distants.
Exemple pour lister les services en local :
LPSERVICE_ITEM list = LocalServiceGetList(SERVICE_WIN32, SERVICE_STATE_ALL, &count);
for (i = 0; i < count; i++)
{
printf(list[i].lpDisplayName);
printf(list[i].lpServiceName);
LPSERVICE_INFO info = LocalServiceGetInfo();
if (info)
{
printf(info->lpBinaryPathName);
printf(info->lpDescription);
printf(info->lpServiceStartName);
ServiceFreePointer(info);
}
}
==> 4. CONTACT ****************************************************************
Pour toute remarque, commentaire, bug, contactez moi :
vince_rogier@yahoo.fr
Have fun !!!
Conclusion
Des projets exemples VC++6 et VS2005 sont fournis... De plus, pour une fois c'est du bon vieux C et non des classes C++...
Historique
- 03 juin 2007 19:28:54 :
- Ajout code exemple en ligne
- 03 juin 2007 19:36:11 :
- .
- 03 juin 2007 19:42:27 :
- .
- 03 juin 2007 19:46:56 :
- .
- 03 juin 2007 19:47:44 :
- .
- 03 juin 2007 19:49:53 :
- .
- 03 juin 2007 20:15:30 :
- .
- 03 juin 2007 20:25:17 :
- .
- 03 juin 2007 20:26:42 :
- .
- 03 juin 2007 20:27:15 :
- .
- 03 juin 2007 20:39:09 :
- .
- 04 juin 2007 22:31:16 :
- Ajout fonction ServiceGetList : récupere la liste de tous les sercvice d'un machine
Ajour fonction ServiceGetInfo : met à jout la config d'un service
Remplacement ServiceModify par ServiceSetInfo : récupère la config d'un service
Ajout de un paramètre sur les fonctions ServiceStop et ServiceRestart
Correction gestion des dependances lors de l'arrêt d'un service
Mis à jour du projet de test avec quelques fonctions de test
...
- 04 juin 2007 22:34:52 :
- Désolé, les retours chariot ont sauté...
- 05 juin 2007 07:09:35 :
- Correction d'un appel de fonction
- 24 juillet 2007 19:10:36 :
- modification des mots clés
- 30 août 2007 22:26:53 :
- Important remodelage de la librairie !
2007/08/12 : v1.3 - added debug support, custom msg file, remove remote macros
2007/08/20 : v1.4 - added GPL license
2007/08/27 : v1.5 - API modifications
- 30 août 2007 22:33:59 :
- .
- 30 août 2007 22:36:20 :
- Désolé pour l'indentation du texte, ca marche pô !
2007/08/12 : v1.3 - added debug support, custom msg file, remove remote macros
2007/08/30 : v1.4 - added GPL license
2007/08/27 : v1.5 - API modifications
- 30 août 2007 22:43:29 :
- .
- 02 septembre 2007 10:09:20 :
- text indentation
- 07 septembre 2007 09:12:36 :
- v1.6 : correction de 3 bugs génants dans la gestion de l'EventLog (installation et logging) et dans la gestion des events du callback.
- 21 octobre 2007 18:11:17 :
- la librairie est dorénavant hébergée sur SourceForge.net.
URL : http://sourceforge.net/projects/ntwinserv
- 21 octobre 2007 18:14:42 :
- Cette librairie est dorénavant hébergée sur SourceForge.net
URL : http://sourceforge.net/projects/ntwinserv
Pour ceux qui codent en C et bossent avec Oracle, visitez aussi :
http://sourceforge.net/projects/orclib
- 01 novembre 2007 09:59:33 :
- mise à jour du lien + mise à jour zip
- 01 novembre 2007 10:00:47 :
- mise à jour lien + modif zip (aucune modif du code)
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Forcer le démarage d'un service Windows [ par Djpoops ]
Boujour,J'utilise un logiciel de monitoring réseau et il y a 2 modules distincts. Ceux-ci sont reconnus comme services Windows et sont en dé
c++ Manipuler les services windows [ par PriMe2302 ]
Bonjour, Je voudrais stopper et désactiver des services en c++ j'ai utiliser ce code : System::ServiceProcess::ServiceController^ serviceControll
Services windows [ par mohdaef ]
Bonjour J'ai écrit un premier petit service pour Windows afin de comprendre le fonctionnement. J'ai une attente de connexion de socket sur port, lor
Erreur StartService [ par Taron31 ]
Bonjour, je souhaiterais créer un service (Driver) ainsi que le lancer, voici mon code, l'erreur se situe au niveau de l'appel StartService avec le co
Message windows et les services [ par slfs ]
Bonjour,Je dois convertir une application windows en un service.J'ai des soucis pour trouver l'équivalent des messages windows (fonction postmessage,.
question sur service windows [ par deck_bsd ]
Bonjour/bonsoir à tous,Voila une petite question qui à mon avis n'en est pas une :DVoila en faite je crée un service et pour cela j'ai créer un projet
Information sur les services [ par deck_bsd ]
Bonjour / Bonsoir,Voila j'ai crée mon 1er service lol, mais j'ai deux question en suspen.- Qu'est ce que le SC manager ? Le gestionnaire de service?-
Problème screenshot via service NT [ par Valty ]
Bonjour, Après de (nombreux) tests, je n'ai pas réussi à réaliser une capture d'écran (screenshot) du desktop courant à partir d'un service NT. PS:
Récupérer les infos sur les services Windows [ par sen25000 ]
Bonjour. Comment afficher dans un fichier/tableau la liste des services Windows de façon à savoir quand ils ont démarré et quand ils se sont arrêtés.
|
Derniers Blogs
CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril
Forum
ARBRE BINAIREARBRE BINAIRE par pacotheking
Cliquez pour lire la suite par pacotheking
Logiciels
Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning Academy System (17.1.3.0)ACADEMY SYSTEM (17.1.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|