Simple Service SUMMARY ======= The SERVICE sample demonstrates how to create and install a service. In this particular sample, the service merely opens a named pipe (the name defaults to \\.\pipe\simple) and waits for read and write operations to the pipe. If the pipe receives input, it creates the string: Hello! [] and sends it back to the client through the pipe. The service can be started and stopped from the control panel Services applet, the net command, or by using the service controller utility (see MORE INFORMATION). The service also provides command-line parameters which install, remove, or run (debug) the service as a console application. MORE INFORMATION ================ To aid in writing and debugging services, the SDK contains a utility (MSTOOLS\BIN\SC.EXE) that can be used to control, configure, or obtain service status. SC displays complete status for any service in the service database, and allows any of the configuration parameters to be easily changed at the command line. For more information on SC.EXE, type SC at the command line. Usage: To install the service, first compile everything, and then type: simple -install Now, let's look at SC's command-line parameters: sc To start the service, use the "net start" command, the control panel Services applet, or the command: sc start simpleservice Verify that the service has entered the RUNNING state: sc query simpleservice Once the service has been started, you can use the CLIENT program to verify that it really is working, using the syntax: client which should return the response: Hello! [World] If, after playing with the sample, you wish to remove the service, simply say: simple -remove You may change the name of the pipe by specifying -pipe as a startup parameter for both CLIENT and SIMPLE. The string passed in by CLIENT can be changed by specifying -string . Notes: 1) The use of the SERVICE.H header file and the accompanying SERVICE.C file simplifies the process of writing a service. You as a developer simply need to follow the TODO's outlined in the header file, and implement the ServiceStart and ServiceStop functions for your service. There is no need to modify the code in SERVICE.C. Just add SERVICE.C to your project and link with the following libraries: libcmt.lib kernel32.lib advapi.lib shell32.lib 2) Install/Remove functionality should not be included in a production service. The functionality is included in this service for illustration purposes, and as a convenience to developers.