Service Control Requests

To send control requests to a running service, a service control program uses the ControlService function. This function specifies a control value that is passed to the Handler function of the specified service. This control value can be a user-defined code, or it can be one of the standard codes that enable the calling program to perform the following actions:

·Stop a service (SERVICE_CONTROL_STOP).

·Pause a service (SERVICE_CONTROL_PAUSE).

·Resume executing a paused service (SERVICE_CONTROL_CONTINUE).

·Retrieve updated status information from a service (SERVICE_CONTROL_INTERROGATE).

For more information, see Sending Control Requests to a Service.

Each service specifies the control values that it will accept and process. To determine which of the standard control values are accepted by a service, use the QueryServiceStatus function or specify the SERVICE_CONTROL_INTERROGATE control value in a call to the ControlService function. The dwControlsAccepted member of the SERVICE_STATUS structure returned by these functions indicates whether the service can be stopped, paused, or resumed. All services accept the SERVICE_CONTROL_INTERROGATE control value.

Note The QueryServiceStatus function reports the most recent status for a specified service, but does not get an updated status from the service itself. Using the SERVICE_CONTROL_INTERROGATE control value in a call to ControlService ensures that the status information returned is current.