Blame vendor/golang.org/x/sys/windows/service.go

Packit 63bb0d
// Copyright 2012 The Go Authors. All rights reserved.
Packit 63bb0d
// Use of this source code is governed by a BSD-style
Packit 63bb0d
// license that can be found in the LICENSE file.
Packit 63bb0d
Packit 63bb0d
// +build windows
Packit 63bb0d
Packit 63bb0d
package windows
Packit 63bb0d
Packit 63bb0d
const (
Packit 63bb0d
	SC_MANAGER_CONNECT            = 1
Packit 63bb0d
	SC_MANAGER_CREATE_SERVICE     = 2
Packit 63bb0d
	SC_MANAGER_ENUMERATE_SERVICE  = 4
Packit 63bb0d
	SC_MANAGER_LOCK               = 8
Packit 63bb0d
	SC_MANAGER_QUERY_LOCK_STATUS  = 16
Packit 63bb0d
	SC_MANAGER_MODIFY_BOOT_CONFIG = 32
Packit 63bb0d
	SC_MANAGER_ALL_ACCESS         = 0xf003f
Packit 63bb0d
)
Packit 63bb0d
Packit 63bb0d
//sys	OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenSCManagerW
Packit 63bb0d
Packit 63bb0d
const (
Packit 63bb0d
	SERVICE_KERNEL_DRIVER       = 1
Packit 63bb0d
	SERVICE_FILE_SYSTEM_DRIVER  = 2
Packit 63bb0d
	SERVICE_ADAPTER             = 4
Packit 63bb0d
	SERVICE_RECOGNIZER_DRIVER   = 8
Packit 63bb0d
	SERVICE_WIN32_OWN_PROCESS   = 16
Packit 63bb0d
	SERVICE_WIN32_SHARE_PROCESS = 32
Packit 63bb0d
	SERVICE_WIN32               = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS
Packit 63bb0d
	SERVICE_INTERACTIVE_PROCESS = 256
Packit 63bb0d
	SERVICE_DRIVER              = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER
Packit 63bb0d
	SERVICE_TYPE_ALL            = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS
Packit 63bb0d
Packit 63bb0d
	SERVICE_BOOT_START   = 0
Packit 63bb0d
	SERVICE_SYSTEM_START = 1
Packit 63bb0d
	SERVICE_AUTO_START   = 2
Packit 63bb0d
	SERVICE_DEMAND_START = 3
Packit 63bb0d
	SERVICE_DISABLED     = 4
Packit 63bb0d
Packit 63bb0d
	SERVICE_ERROR_IGNORE   = 0
Packit 63bb0d
	SERVICE_ERROR_NORMAL   = 1
Packit 63bb0d
	SERVICE_ERROR_SEVERE   = 2
Packit 63bb0d
	SERVICE_ERROR_CRITICAL = 3
Packit 63bb0d
Packit 63bb0d
	SC_STATUS_PROCESS_INFO = 0
Packit 63bb0d
Packit 63bb0d
	SC_ACTION_NONE        = 0
Packit 63bb0d
	SC_ACTION_RESTART     = 1
Packit 63bb0d
	SC_ACTION_REBOOT      = 2
Packit 63bb0d
	SC_ACTION_RUN_COMMAND = 3
Packit 63bb0d
Packit 63bb0d
	SERVICE_STOPPED          = 1
Packit 63bb0d
	SERVICE_START_PENDING    = 2
Packit 63bb0d
	SERVICE_STOP_PENDING     = 3
Packit 63bb0d
	SERVICE_RUNNING          = 4
Packit 63bb0d
	SERVICE_CONTINUE_PENDING = 5
Packit 63bb0d
	SERVICE_PAUSE_PENDING    = 6
Packit 63bb0d
	SERVICE_PAUSED           = 7
Packit 63bb0d
	SERVICE_NO_CHANGE        = 0xffffffff
Packit 63bb0d
Packit 63bb0d
	SERVICE_ACCEPT_STOP                  = 1
Packit 63bb0d
	SERVICE_ACCEPT_PAUSE_CONTINUE        = 2
Packit 63bb0d
	SERVICE_ACCEPT_SHUTDOWN              = 4
Packit 63bb0d
	SERVICE_ACCEPT_PARAMCHANGE           = 8
Packit 63bb0d
	SERVICE_ACCEPT_NETBINDCHANGE         = 16
Packit 63bb0d
	SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32
Packit 63bb0d
	SERVICE_ACCEPT_POWEREVENT            = 64
Packit 63bb0d
	SERVICE_ACCEPT_SESSIONCHANGE         = 128
Packit 63bb0d
Packit 63bb0d
	SERVICE_CONTROL_STOP                  = 1
Packit 63bb0d
	SERVICE_CONTROL_PAUSE                 = 2
Packit 63bb0d
	SERVICE_CONTROL_CONTINUE              = 3
Packit 63bb0d
	SERVICE_CONTROL_INTERROGATE           = 4
Packit 63bb0d
	SERVICE_CONTROL_SHUTDOWN              = 5
Packit 63bb0d
	SERVICE_CONTROL_PARAMCHANGE           = 6
Packit 63bb0d
	SERVICE_CONTROL_NETBINDADD            = 7
Packit 63bb0d
	SERVICE_CONTROL_NETBINDREMOVE         = 8
Packit 63bb0d
	SERVICE_CONTROL_NETBINDENABLE         = 9
Packit 63bb0d
	SERVICE_CONTROL_NETBINDDISABLE        = 10
Packit 63bb0d
	SERVICE_CONTROL_DEVICEEVENT           = 11
Packit 63bb0d
	SERVICE_CONTROL_HARDWAREPROFILECHANGE = 12
Packit 63bb0d
	SERVICE_CONTROL_POWEREVENT            = 13
Packit 63bb0d
	SERVICE_CONTROL_SESSIONCHANGE         = 14
Packit 63bb0d
Packit 63bb0d
	SERVICE_ACTIVE    = 1
Packit 63bb0d
	SERVICE_INACTIVE  = 2
Packit 63bb0d
	SERVICE_STATE_ALL = 3
Packit 63bb0d
Packit 63bb0d
	SERVICE_QUERY_CONFIG         = 1
Packit 63bb0d
	SERVICE_CHANGE_CONFIG        = 2
Packit 63bb0d
	SERVICE_QUERY_STATUS         = 4
Packit 63bb0d
	SERVICE_ENUMERATE_DEPENDENTS = 8
Packit 63bb0d
	SERVICE_START                = 16
Packit 63bb0d
	SERVICE_STOP                 = 32
Packit 63bb0d
	SERVICE_PAUSE_CONTINUE       = 64
Packit 63bb0d
	SERVICE_INTERROGATE          = 128
Packit 63bb0d
	SERVICE_USER_DEFINED_CONTROL = 256
Packit 63bb0d
	SERVICE_ALL_ACCESS           = STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL
Packit 63bb0d
Packit 63bb0d
	SERVICE_RUNS_IN_SYSTEM_PROCESS = 1
Packit 63bb0d
Packit 63bb0d
	SERVICE_CONFIG_DESCRIPTION              = 1
Packit 63bb0d
	SERVICE_CONFIG_FAILURE_ACTIONS          = 2
Packit 63bb0d
	SERVICE_CONFIG_DELAYED_AUTO_START_INFO  = 3
Packit 63bb0d
	SERVICE_CONFIG_FAILURE_ACTIONS_FLAG     = 4
Packit 63bb0d
	SERVICE_CONFIG_SERVICE_SID_INFO         = 5
Packit 63bb0d
	SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO = 6
Packit 63bb0d
	SERVICE_CONFIG_PRESHUTDOWN_INFO         = 7
Packit 63bb0d
	SERVICE_CONFIG_TRIGGER_INFO             = 8
Packit 63bb0d
	SERVICE_CONFIG_PREFERRED_NODE           = 9
Packit 63bb0d
	SERVICE_CONFIG_LAUNCH_PROTECTED         = 12
Packit 63bb0d
Packit 63bb0d
	SERVICE_SID_TYPE_NONE         = 0
Packit 63bb0d
	SERVICE_SID_TYPE_UNRESTRICTED = 1
Packit 63bb0d
	SERVICE_SID_TYPE_RESTRICTED   = 2 | SERVICE_SID_TYPE_UNRESTRICTED
Packit 63bb0d
Packit 63bb0d
	SC_ENUM_PROCESS_INFO = 0
Packit 63bb0d
Packit 63bb0d
	SERVICE_NOTIFY_STATUS_CHANGE    = 2
Packit 63bb0d
	SERVICE_NOTIFY_STOPPED          = 0x00000001
Packit 63bb0d
	SERVICE_NOTIFY_START_PENDING    = 0x00000002
Packit 63bb0d
	SERVICE_NOTIFY_STOP_PENDING     = 0x00000004
Packit 63bb0d
	SERVICE_NOTIFY_RUNNING          = 0x00000008
Packit 63bb0d
	SERVICE_NOTIFY_CONTINUE_PENDING = 0x00000010
Packit 63bb0d
	SERVICE_NOTIFY_PAUSE_PENDING    = 0x00000020
Packit 63bb0d
	SERVICE_NOTIFY_PAUSED           = 0x00000040
Packit 63bb0d
	SERVICE_NOTIFY_CREATED          = 0x00000080
Packit 63bb0d
	SERVICE_NOTIFY_DELETED          = 0x00000100
Packit 63bb0d
	SERVICE_NOTIFY_DELETE_PENDING   = 0x00000200
Packit 63bb0d
)
Packit 63bb0d
Packit 63bb0d
type SERVICE_STATUS struct {
Packit 63bb0d
	ServiceType             uint32
Packit 63bb0d
	CurrentState            uint32
Packit 63bb0d
	ControlsAccepted        uint32
Packit 63bb0d
	Win32ExitCode           uint32
Packit 63bb0d
	ServiceSpecificExitCode uint32
Packit 63bb0d
	CheckPoint              uint32
Packit 63bb0d
	WaitHint                uint32
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
type SERVICE_TABLE_ENTRY struct {
Packit 63bb0d
	ServiceName *uint16
Packit 63bb0d
	ServiceProc uintptr
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
type QUERY_SERVICE_CONFIG struct {
Packit 63bb0d
	ServiceType      uint32
Packit 63bb0d
	StartType        uint32
Packit 63bb0d
	ErrorControl     uint32
Packit 63bb0d
	BinaryPathName   *uint16
Packit 63bb0d
	LoadOrderGroup   *uint16
Packit 63bb0d
	TagId            uint32
Packit 63bb0d
	Dependencies     *uint16
Packit 63bb0d
	ServiceStartName *uint16
Packit 63bb0d
	DisplayName      *uint16
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
type SERVICE_DESCRIPTION struct {
Packit 63bb0d
	Description *uint16
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
type SERVICE_DELAYED_AUTO_START_INFO struct {
Packit 63bb0d
	IsDelayedAutoStartUp uint32
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
type SERVICE_STATUS_PROCESS struct {
Packit 63bb0d
	ServiceType             uint32
Packit 63bb0d
	CurrentState            uint32
Packit 63bb0d
	ControlsAccepted        uint32
Packit 63bb0d
	Win32ExitCode           uint32
Packit 63bb0d
	ServiceSpecificExitCode uint32
Packit 63bb0d
	CheckPoint              uint32
Packit 63bb0d
	WaitHint                uint32
Packit 63bb0d
	ProcessId               uint32
Packit 63bb0d
	ServiceFlags            uint32
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
type ENUM_SERVICE_STATUS_PROCESS struct {
Packit 63bb0d
	ServiceName          *uint16
Packit 63bb0d
	DisplayName          *uint16
Packit 63bb0d
	ServiceStatusProcess SERVICE_STATUS_PROCESS
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
type SERVICE_NOTIFY struct {
Packit 63bb0d
	Version               uint32
Packit 63bb0d
	NotifyCallback        uintptr
Packit 63bb0d
	Context               uintptr
Packit 63bb0d
	NotificationStatus    uint32
Packit 63bb0d
	ServiceStatus         SERVICE_STATUS_PROCESS
Packit 63bb0d
	NotificationTriggered uint32
Packit 63bb0d
	ServiceNames          *uint16
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
type SERVICE_FAILURE_ACTIONS struct {
Packit 63bb0d
	ResetPeriod  uint32
Packit 63bb0d
	RebootMsg    *uint16
Packit 63bb0d
	Command      *uint16
Packit 63bb0d
	ActionsCount uint32
Packit 63bb0d
	Actions      *SC_ACTION
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
type SC_ACTION struct {
Packit 63bb0d
	Type  uint32
Packit 63bb0d
	Delay uint32
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
type QUERY_SERVICE_LOCK_STATUS struct {
Packit 63bb0d
	IsLocked     uint32
Packit 63bb0d
	LockOwner    *uint16
Packit 63bb0d
	LockDuration uint32
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
//sys	CloseServiceHandle(handle Handle) (err error) = advapi32.CloseServiceHandle
Packit 63bb0d
//sys	CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) [failretval==0] = advapi32.CreateServiceW
Packit 63bb0d
//sys	OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenServiceW
Packit 63bb0d
//sys	DeleteService(service Handle) (err error) = advapi32.DeleteService
Packit 63bb0d
//sys	StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) = advapi32.StartServiceW
Packit 63bb0d
//sys	QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) = advapi32.QueryServiceStatus
Packit 63bb0d
//sys	QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceLockStatusW
Packit 63bb0d
//sys	ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) = advapi32.ControlService
Packit 63bb0d
//sys	StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) = advapi32.StartServiceCtrlDispatcherW
Packit 63bb0d
//sys	SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) = advapi32.SetServiceStatus
Packit 63bb0d
//sys	ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) = advapi32.ChangeServiceConfigW
Packit 63bb0d
//sys	QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfigW
Packit 63bb0d
//sys	ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) = advapi32.ChangeServiceConfig2W
Packit 63bb0d
//sys	QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfig2W
Packit 63bb0d
//sys	EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) = advapi32.EnumServicesStatusExW
Packit 63bb0d
//sys	QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceStatusEx
Packit 63bb0d
//sys	NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) = advapi32.NotifyServiceStatusChangeW