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) ParamChange = Cmd(windows.SERVICE_CONTROL_PARAMCHANGE) NetBindAdd = Cmd(windows.SERVICE_CONTROL_NETBINDADD) NetBindRemove = Cmd(windows.SERVICE_CONTROL_NETBINDREMOVE) NetBindEnable = Cmd(windows.SERVICE_CONTROL_NETBINDENABLE) NetBindDisable = Cmd(windows.SERVICE_CONTROL_NETBINDDISABLE) DeviceEvent = Cmd(windows.SERVICE_CONTROL_DEVICEEVENT) HardwareProfileChange = Cmd(windows.SERVICE_CONTROL_HARDWAREPROFILECHANGE) PowerEvent = Cmd(windows.SERVICE_CONTROL_POWEREVENT) SessionChange = Cmd(windows.SERVICE_CONTROL_SESSIONCHANGE) PreShutdown = Cmd(windows.SERVICE_CONTROL_PRESHUTDOWN) )
const ( AcceptStop = Accepted(windows.SERVICE_ACCEPT_STOP) AcceptShutdown = Accepted(windows.SERVICE_ACCEPT_SHUTDOWN) AcceptPauseAndContinue = Accepted(windows.SERVICE_ACCEPT_PAUSE_CONTINUE) AcceptParamChange = Accepted(windows.SERVICE_ACCEPT_PARAMCHANGE) AcceptNetBindChange = Accepted(windows.SERVICE_ACCEPT_NETBINDCHANGE) AcceptHardwareProfileChange = Accepted(windows.SERVICE_ACCEPT_HARDWAREPROFILECHANGE) AcceptPowerEvent = Accepted(windows.SERVICE_ACCEPT_POWEREVENT) AcceptSessionChange = Accepted(windows.SERVICE_ACCEPT_SESSIONCHANGE) AcceptPreShutdown = Accepted(windows.SERVICE_ACCEPT_PRESHUTDOWN) )
const ( Active = ActivityStatus(windows.SERVICE_ACTIVE) Inactive = ActivityStatus(windows.SERVICE_INACTIVE) AnyActivity = ActivityStatus(windows.SERVICE_STATE_ALL) )
const ( StartReasonDemand = StartReason(windows.SERVICE_START_REASON_DEMAND) StartReasonAuto = StartReason(windows.SERVICE_START_REASON_AUTO) StartReasonTrigger = StartReason(windows.SERVICE_START_REASON_TRIGGER) StartReasonRestartOnFailure = StartReason(windows.SERVICE_START_REASON_RESTART_ON_FAILURE) StartReasonDelayedAuto = StartReason(windows.SERVICE_START_REASON_DELAYEDAUTO) )
Variables ¶
This section is empty.
Functions ¶
func IsAnInteractiveSession
deprecated
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
Deprecated: Use IsWindowsService instead.
func IsWindowsService ¶
IsWindowsService reports whether the process is currently executing as a Windows service.
func StatusHandle ¶
StatusHandle returns service status handle. It is safe to call this function from inside the Handler.Execute because then it is guaranteed to be set.
Types ¶
type Accepted ¶
type Accepted uint32
Accepted is used to describe commands accepted by the service. Note that Interrogate is always accepted.
type ActivityStatus ¶ added in v0.8.0
type ActivityStatus uint32
ActivityStatus allows for services to be selected based on active and inactive categories of service state.
type ChangeRequest ¶
type ChangeRequest struct { Cmd Cmd EventType uint32 EventData uintptr CurrentStatus Status Context uintptr }
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 StartReason ¶
type StartReason uint32
StartReason is the reason that the service was started.
func DynamicStartReason ¶
func DynamicStartReason() (StartReason, error)
DynamicStartReason returns the reason why the service was started. It is safe to call this function from inside the Handler.Execute because then it is guaranteed to be set.
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 ProcessId uint32 // if the service is running, the process identifier of it, and otherwise zero Win32ExitCode uint32 // set if the service has exited with a win32 exit code ServiceSpecificExitCode uint32 // set if the service has exited with a service-specific exit code }
Status combines State and Accepted commands to fully describe running service.
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. |