github.com/cellofellow/gopkg@v0.0.0-20140722061823-eec0544a62ad/osext/winsvc/winapi/service.go (about) 1 // Copyright 2012 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package winapi 6 7 const ( 8 SC_MANAGER_CONNECT = 1 << iota 9 SC_MANAGER_CREATE_SERVICE 10 SC_MANAGER_ENUMERATE_SERVICE 11 SC_MANAGER_LOCK 12 SC_MANAGER_QUERY_LOCK_STATUS 13 SC_MANAGER_MODIFY_BOOT_CONFIG 14 SC_MANAGER_ALL_ACCESS = 0xf003f 15 ) 16 17 //sys OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle syscall.Handle, err error) [failretval==0] = advapi32.OpenSCManagerW 18 19 const ( 20 SERVICE_KERNEL_DRIVER = 1 << iota 21 SERVICE_FILE_SYSTEM_DRIVER 22 SERVICE_ADAPTER 23 SERVICE_RECOGNIZER_DRIVER 24 SERVICE_WIN32_OWN_PROCESS 25 SERVICE_WIN32_SHARE_PROCESS 26 SERVICE_WIN32 = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS 27 SERVICE_INTERACTIVE_PROCESS = 256 28 SERVICE_DRIVER = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER 29 SERVICE_TYPE_ALL = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS 30 ) 31 32 const ( 33 SERVICE_BOOT_START = iota 34 SERVICE_SYSTEM_START 35 SERVICE_AUTO_START 36 SERVICE_DEMAND_START 37 SERVICE_DISABLED 38 ) 39 40 const ( 41 SERVICE_ERROR_IGNORE = iota 42 SERVICE_ERROR_NORMAL 43 SERVICE_ERROR_SEVERE 44 SERVICE_ERROR_CRITICAL 45 ) 46 47 const ( 48 SC_STATUS_PROCESS_INFO = 0 49 ) 50 51 const ( 52 SERVICE_STOPPED = 1 + iota 53 SERVICE_START_PENDING 54 SERVICE_STOP_PENDING 55 SERVICE_RUNNING 56 SERVICE_CONTINUE_PENDING 57 SERVICE_PAUSE_PENDING 58 SERVICE_PAUSED 59 SERVICE_NO_CHANGE = 0xffffffff 60 ) 61 62 const ( 63 SERVICE_ACCEPT_STOP = 1 << iota 64 SERVICE_ACCEPT_PAUSE_CONTINUE 65 SERVICE_ACCEPT_SHUTDOWN 66 SERVICE_ACCEPT_PARAMCHANGE 67 SERVICE_ACCEPT_NETBINDCHANGE 68 SERVICE_ACCEPT_HARDWAREPROFILECHANGE 69 SERVICE_ACCEPT_POWEREVENT 70 SERVICE_ACCEPT_SESSIONCHANGE 71 ) 72 73 const ( 74 SERVICE_CONTROL_STOP = 1 + iota 75 SERVICE_CONTROL_PAUSE 76 SERVICE_CONTROL_CONTINUE 77 SERVICE_CONTROL_INTERROGATE 78 SERVICE_CONTROL_SHUTDOWN 79 SERVICE_CONTROL_PARAMCHANGE 80 SERVICE_CONTROL_NETBINDADD 81 SERVICE_CONTROL_NETBINDREMOVE 82 SERVICE_CONTROL_NETBINDENABLE 83 SERVICE_CONTROL_NETBINDDISABLE 84 SERVICE_CONTROL_DEVICEEVENT 85 SERVICE_CONTROL_HARDWAREPROFILECHANGE 86 SERVICE_CONTROL_POWEREVENT 87 SERVICE_CONTROL_SESSIONCHANGE 88 ) 89 90 const ( 91 SERVICE_ACTIVE = 1 + iota 92 SERVICE_INACTIVE 93 SERVICE_STATE_ALL 94 ) 95 96 const ( 97 SERVICE_QUERY_CONFIG = 1 << iota 98 SERVICE_CHANGE_CONFIG 99 SERVICE_QUERY_STATUS 100 SERVICE_ENUMERATE_DEPENDENTS 101 SERVICE_START 102 SERVICE_STOP 103 SERVICE_PAUSE_CONTINUE 104 SERVICE_INTERROGATE 105 SERVICE_USER_DEFINED_CONTROL 106 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 107 SERVICE_RUNS_IN_SYSTEM_PROCESS = 1 108 SERVICE_CONFIG_DESCRIPTION = 1 109 SERVICE_CONFIG_FAILURE_ACTIONS = 2 110 ) 111 112 const ( 113 NO_ERROR = 0 114 ) 115 116 type SERVICE_STATUS struct { 117 ServiceType uint32 118 CurrentState uint32 119 ControlsAccepted uint32 120 Win32ExitCode uint32 121 ServiceSpecificExitCode uint32 122 CheckPoint uint32 123 WaitHint uint32 124 } 125 126 type SERVICE_TABLE_ENTRY struct { 127 ServiceName *uint16 128 ServiceProc uintptr 129 } 130 131 type QUERY_SERVICE_CONFIG struct { 132 ServiceType uint32 133 StartType uint32 134 ErrorControl uint32 135 BinaryPathName *uint16 136 LoadOrderGroup *uint16 137 TagId uint32 138 Dependencies *uint16 139 ServiceStartName *uint16 140 DisplayName *uint16 141 } 142 143 type SERVICE_DESCRIPTION struct { 144 Description *uint16 145 } 146 147 //sys CloseServiceHandle(handle syscall.Handle) (err error) = advapi32.CloseServiceHandle 148 //sys CreateService(mgr syscall.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 syscall.Handle, err error) [failretval==0] = advapi32.CreateServiceW 149 //sys OpenService(mgr syscall.Handle, serviceName *uint16, access uint32) (handle syscall.Handle, err error) [failretval==0] = advapi32.OpenServiceW 150 //sys DeleteService(service syscall.Handle) (err error) = advapi32.DeleteService 151 //sys StartService(service syscall.Handle, numArgs uint32, argVectors **uint16) (err error) = advapi32.StartServiceW 152 //sys QueryServiceStatus(service syscall.Handle, status *SERVICE_STATUS) (err error) = advapi32.QueryServiceStatus 153 //sys ControlService(service syscall.Handle, control uint32, status *SERVICE_STATUS) (err error) = advapi32.ControlService 154 //sys StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) = advapi32.StartServiceCtrlDispatcherW 155 //sys SetServiceStatus(service syscall.Handle, serviceStatus *SERVICE_STATUS) (err error) = advapi32.SetServiceStatus 156 //sys ChangeServiceConfig(service syscall.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 157 //sys QueryServiceConfig(service syscall.Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfigW 158 //sys ChangeServiceConfig2(service syscall.Handle, infoLevel uint32, info *byte) (err error) = advapi32.ChangeServiceConfig2W 159 //sys QueryServiceConfig2(service syscall.Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfig2W