Click here to Skip to main content
13,346,480 members (64,545 online)
Click here to Skip to main content
Add your own
alternative version


55 bookmarked
Posted 11 Jun 2001

Writing Windows Services - Made easy

, 11 Jun 2001
Rate this:
Please Sign up or sign in to vote.
A framework for developing Windows services.


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.


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.


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!!


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

No Biography provided

You may also be interested in...

Comments and Discussions

GeneralMy vote of 5 Pin
Ashish Tyagi 4028-Jan-11 6:11
memberAshish Tyagi 4028-Jan-11 6:11 
GeneralLicensing Question Pin
Member 163325027-Jul-10 7:39
memberMember 163325027-Jul-10 7:39 
GeneralRe: Licensing Question Pin
Ganesh Ramaswamy28-Jul-10 0:40
memberGanesh Ramaswamy28-Jul-10 0:40 
GeneralRe: Licensing Question Pin
Member 163325029-Jul-10 7:59
memberMember 163325029-Jul-10 7:59 
Thanks so much for the quick response.

Much obliged,
GeneralRe: Licensing Question Pin
Member 163325029-Jul-10 8:27
memberMember 163325029-Jul-10 8:27 
GeneralRe: Licensing Question Pin
Ganesh Ramaswamy29-Jul-10 9:09
memberGanesh Ramaswamy29-Jul-10 9:09 
GeneralRe: Licensing Question Pin
Member 163325029-Jul-10 12:29
memberMember 163325029-Jul-10 12:29 
QuestionRun external application using windows service Pin
laith_omar7-Feb-07 4:03
memberlaith_omar7-Feb-07 4:03 
Generalimplementation of windows services Pin
kalaleela6-Dec-06 20:45
memberkalaleela6-Dec-06 20:45 
GeneralDon't use this code... Pin
Grimoire20-Jul-06 15:25
memberGrimoire20-Jul-06 15:25 
GeneralAccess Denied Error Pin
Sreekanth Muralidharan4-Dec-05 19:34
memberSreekanth Muralidharan4-Dec-05 19:34 
GeneralNeeds more support Pin
Sreekanth Muralidharan3-Dec-05 1:30
memberSreekanth Muralidharan3-Dec-05 1:30 
GeneralSupport System.Windows.Forms Pin
praetorion19-Jul-05 0:12
memberpraetorion19-Jul-05 0:12 
GeneralService crashes in winxp Pin
sjacob23-Mar-05 0:07
membersjacob23-Mar-05 0:07 
GeneralNice Idea but needs debugging... Pin
fuzzy2logic18-May-04 20:51
memberfuzzy2logic18-May-04 20:51 
GeneralService failure on Win 2k Server os Pin
Deepak Bhatia6-Apr-04 21:34
sussDeepak Bhatia6-Apr-04 21:34 
GeneralRe: Service failure on Win 2k Server os Pin
verinder_bindra17-Sep-04 19:36
memberverinder_bindra17-Sep-04 19:36 
GeneralArticle needs a demo project Pin
Dan Clark17-Dec-03 6:43
memberDan Clark17-Dec-03 6:43 
GeneralInterprocess communications with NT Services Pin
mstraub18-Nov-03 8:45
membermstraub18-Nov-03 8:45 
GeneralGood idea Pin
vc199417-Dec-02 17:27
membervc199417-Dec-02 17:27 
GeneralNice article Pin
Kumar Rangarajan16-Sep-02 9:03
memberKumar Rangarajan16-Sep-02 9:03 
GeneralNT Service Pin
Muneet Bakshi26-Oct-01 4:09
memberMuneet Bakshi26-Oct-01 4:09 
GeneralRe: NT Service Pin
Carlos Antollini26-Oct-01 4:49
memberCarlos Antollini26-Oct-01 4:49 
QuestionMFC Service App that includea a task icon? Pin
Anonymous11-Aug-01 7:55
memberAnonymous11-Aug-01 7:55 
AnswerRe: MFC Service App that includea a task icon? Pin
Sardaukar11-Jul-02 20:45
memberSardaukar11-Jul-02 20:45 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.180111.1 | Last Updated 12 Jun 2001
Article Copyright 2001 by Ganesh Ramaswamy
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid