 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
      Overview ¶
Package svc provides everything required to build Windows service.
Index ¶
Constants ¶
const ( Stopped = State(windows.SERVICE_STOPPED) StartPending = State(windows.SERVICE_START_PENDING) StopPending = State(windows.SERVICE_STOP_PENDING) Running = State(windows.SERVICE_RUNNING) ContinuePending = State(windows.SERVICE_CONTINUE_PENDING) PausePending = State(windows.SERVICE_PAUSE_PENDING) Paused = State(windows.SERVICE_PAUSED) )
const ( Stop = Cmd(windows.SERVICE_CONTROL_STOP) Pause = Cmd(windows.SERVICE_CONTROL_PAUSE) Continue = Cmd(windows.SERVICE_CONTROL_CONTINUE) Interrogate = Cmd(windows.SERVICE_CONTROL_INTERROGATE) Shutdown = Cmd(windows.SERVICE_CONTROL_SHUTDOWN) )
const ( AcceptStop = Accepted(windows.SERVICE_ACCEPT_STOP) AcceptShutdown = Accepted(windows.SERVICE_ACCEPT_SHUTDOWN) AcceptPauseAndContinue = Accepted(windows.SERVICE_ACCEPT_PAUSE_CONTINUE) )
Variables ¶
This section is empty.
Functions ¶
func IsAnInteractiveSession ¶
IsAnInteractiveSession determines if calling process is running interactively. It queries the process token for membership in the Interactive group. http://stackoverflow.com/questions/2668851/how-do-i-detect-that-my-application-is-running-as-service-or-in-an-interactive-s
Types ¶
type Accepted ¶
type Accepted uint32
Accepted is used to describe commands accepted by the service. Note that Interrogate is always accepted.
type ChangeRequest ¶
ChangeRequest is sent to the service Handler to request service status change.
type Cmd ¶
type Cmd uint32
Cmd represents service state change request. It is sent to a service by the service manager, and should be actioned upon by the service.
type Handler ¶
type Handler interface {
	// Execute will be called by the package code at the start of
	// the service, and the service will exit once Execute completes.
	// Inside Execute you must read service change requests from r and
	// act accordingly. You must keep service control manager up to date
	// about state of your service by writing into s as required.
	// args contains service name followed by argument strings passed
	// to the service.
	// You can provide service exit code in exitCode return parameter,
	// with 0 being "no error". You can also indicate if exit code,
	// if any, is service specific or not by using svcSpecificEC
	// parameter.
	Execute(args []string, r <-chan ChangeRequest, s chan<- Status) (svcSpecificEC bool, exitCode uint32)
}
    Handler is the interface that must be implemented to build Windows service.
type State ¶
type State uint32
State describes service execution state (Stopped, Running and so on).
type Status ¶
type Status struct {
	State      State
	Accepts    Accepted
	CheckPoint uint32 // used to report progress during a lengthy operation
	WaitHint   uint32 // estimated time required for a pending operation, in milliseconds
}
    Status combines State and Accepted commands to fully describe running service.
Notes ¶
Bugs ¶
- There is no mechanism to run multiple services inside one single executable. Perhaps, it can be overcome by using RegisterServiceCtrlHandlerEx Windows api. 
       Directories
      ¶
      Directories
      ¶
    
    | Path | Synopsis | 
|---|---|
| Package debug provides facilities to execute svc.Handler on console. | Package debug provides facilities to execute svc.Handler on console. | 
| Package eventlog implements access to Windows event log. | Package eventlog implements access to Windows event log. | 
| Example service program that beeps. | Example service program that beeps. | 
| Package mgr can be used to manage Windows service programs. | Package mgr can be used to manage Windows service programs. |