5,696,576 members and growing! (19,175 online)
Email Password   helpLost your password?
General Reading » Hardware & System » Services     Intermediate

Writing Windows Services - Made easy

By Ganesh Ramaswamy

A framework for developing Windows services.
VC6, C++Windows, NT4, Win2K, Visual Studio, Dev

Posted: 11 Jun 2001
Updated: 11 Jun 2001
Views: 130,216
Bookmarked: 44 times
Announcements
Loading...



Search    
Advanced Search
Sitemap
33 votes for this Article.
Popularity: 3.44 Rating: 2.27 out of 5
11 votes, 37.9%
1
5 votes, 17.2%
2
3 votes, 10.3%
3
7 votes, 24.1%
4
3 votes, 10.3%
5

Introduction

A Windows Service program is one that gets registered to the service manager and starts as soon as the system boots and remains running as long as the system is up. These are special kind of programs that has to do some task for them to be treated as Services.

Presented here is a couple of classes that eases the process of creating a Windows Service and controlling them.

Description

The CXService class

This class is the one that actually helps in creating the service program. This class takes care of all the internals needed viz., registering a service, handling the control events, service main, setting the service status etc.,

It has a set of macros - something like MFC message map, called as service maps, that are used for handling and processing the events of the service. It also has got a pure virtual initialization function, called during the service initialization process.

The main advantage of using this class for creating a service program is that it uses MFC like message-map functionality and so its easy to use. Moreover, because of the service maps, it has only 2 virtual functions and so the overhead is also very less.

The CXServiceManager class

This is a service control class. This provides all the functionality that is needed for creating and working with a service program or services that exists. The class methods are pretty straight forward and self-explanatory.

Usage

For creating a new Windows service program

Derive a class from CXService and implement the pure virtual function - service initialization function. Then declare the service maps and implement the necessary maps for handling the events, providing handler functions for them.

In the main() - create an object for the derived class with the service name and then call the base class initialization function. After this, make a call to the base class dispatcher function. That's it. U have created a Windows service program. Add your functionality where ever needed.

Please make sure that the dispatcher function is called as early as possible or else the program will fail. If you have lots of initialization code, then handle them in a separate thread, so that dispatcher is called ASAP.

Making the service program to service and running it

After the service program is completed you can use the CXServiceManager class to create a service and start the service. This can be done in a separate program called as the service control program. Please refer the class documentation, because its simple and straight-forward.

This is the first version of the program and Unicode support is not added. Please refer the source for further documentation. Please read the ReadMe.txt in the downloads for file description.

That's it!!

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Ganesh Ramaswamy



Location: India India

Other popular Hardware & System articles:

Article Top
Sign Up to vote for this article
You must Sign In to use this message board.
FAQ FAQ Noise ToleranceSearch Search Messages 
 Layout  Per page   
 Msgs 1 to 25 of 26 (Total in Forum: 26) (Refresh)FirstPrevNext
QuestionRun external application using windows servicememberlaith_omar4:03 7 Feb '07  
Generalimplementation of windows servicesmemberkalaleela20:45 6 Dec '06  
GeneralDon't use this code...memberGrimoire15:25 20 Jul '06  
GeneralAccess Denied ErrormemberSreekanth Muralidharan19:34 4 Dec '05  
GeneralNeeds more supportmemberSreekanth Muralidharan1:30 3 Dec '05  
GeneralSupport System.Windows.Formsmemberpraetorion0:12 19 Jul '05  
GeneralService crashes in winxpmembersjacob0:07 23 Mar '05  
GeneralNice Idea but needs debugging...memberfuzzy2logic20:51 18 May '04  
GeneralService failure on Win 2k Server ossussDeepak Bhatia21:34 6 Apr '04  
GeneralRe: Service failure on Win 2k Server osmemberverinder_bindra19:36 17 Sep '04  
GeneralArticle needs a demo projectmemberDan Clark6:43 17 Dec '03  
GeneralInterprocess communications with NT Servicesmembermstraub8:45 18 Nov '03  
GeneralGood ideamembervc199417:27 17 Dec '02  
GeneralNice articlememberKumar Rangarajan9:03 16 Sep '02  
GeneralNT ServicememberMuneet Bakshi4:09 26 Oct '01  
GeneralRe: NT ServicememberCarlos Antollini4:49 26 Oct '01  
GeneralMFC Service App that includea a task icon?memberAnonymous7:55 11 Aug '01  
GeneralRe: MFC Service App that includea a task icon?memberSardaukar20:45 11 Jul '02  
GeneralRe: MFC Service App that includea a task icon?sussHarry Hv10:57 30 Oct '02  
GeneralRe: MFC Service App that includea a task icon?memberSardaukar20:29 30 Oct '02  
GeneralRe: MFC Service App that includea a task icon?memberMinh Hoa18:04 1 May '03  
GeneralLockDatabasememberRainerS2:27 22 Jun '01  
GeneralRe: LockDatabasememberGanesh Ramaswamy5:37 22 Jun '01  
GeneralWindows 9x/ME supportmemberMichael McGarrah10:00 20 Jun '01  
GeneralRe: Windows 9x/ME supportmemberGanesh Ramaswamy5:43 21 Jun '01  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

PermaLink | Privacy | Terms of Use
Last Updated: 11 Jun 2001
Editor: Smitha Vijayan
Copyright 2001 by Ganesh Ramaswamy
Everything else Copyright © CodeProject, 1999-2008
Web11 | Advertise on the Code Project