- Put output from MSVC into the relevant output-i386 / obj-i386 files
[reactos.git] / reactos / w32api / include / winsvc.h
1 #ifndef _WINSVC_H
2 #define _WINSVC_H
3 #if __GNUC__ >=3
4 #pragma GCC system_header
5 #endif
6
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 #define SERVICES_ACTIVE_DATABASEA "ServicesActive"
11 #define SERVICES_ACTIVE_DATABASEW L"ServicesActive"
12 #define SERVICES_FAILED_DATABASEA "ServicesFailed"
13 #define SERVICES_FAILED_DATABASEW L"ServicesFailed"
14 #define SC_GROUP_IDENTIFIERA '+'
15 #define SC_GROUP_IDENTIFIERW L'+'
16 #define SC_MANAGER_ALL_ACCESS 0xf003f
17 #define SC_MANAGER_CONNECT 1
18 #define SC_MANAGER_CREATE_SERVICE 2
19 #define SC_MANAGER_ENUMERATE_SERVICE 4
20 #define SC_MANAGER_LOCK 8
21 #define SC_MANAGER_QUERY_LOCK_STATUS 16
22 #define SC_MANAGER_MODIFY_BOOT_CONFIG 32
23 #define SERVICE_NO_CHANGE 0xffffffff
24 #define SERVICE_STOPPED 1
25 #define SERVICE_START_PENDING 2
26 #define SERVICE_STOP_PENDING 3
27 #define SERVICE_RUNNING 4
28 #define SERVICE_CONTINUE_PENDING 5
29 #define SERVICE_PAUSE_PENDING 6
30 #define SERVICE_PAUSED 7
31 #define SERVICE_ACCEPT_STOP 1
32 #define SERVICE_ACCEPT_PAUSE_CONTINUE 2
33 #define SERVICE_ACCEPT_SHUTDOWN 4
34 #define SERVICE_ACCEPT_PARAMCHANGE 8
35 #define SERVICE_ACCEPT_NETBINDCHANGE 16
36 #define SERVICE_ACCEPT_HARDWAREPROFILECHANGE 32
37 #define SERVICE_ACCEPT_POWEREVENT 64
38 #define SERVICE_ACCEPT_SESSIONCHANGE 128
39 #define SERVICE_CONTROL_STOP 1
40 #define SERVICE_CONTROL_PAUSE 2
41 #define SERVICE_CONTROL_CONTINUE 3
42 #define SERVICE_CONTROL_INTERROGATE 4
43 #define SERVICE_CONTROL_SHUTDOWN 5
44 #define SERVICE_CONTROL_PARAMCHANGE 6
45 #define SERVICE_CONTROL_NETBINDADD 7
46 #define SERVICE_CONTROL_NETBINDREMOVE 8
47 #define SERVICE_CONTROL_NETBINDENABLE 9
48 #define SERVICE_CONTROL_NETBINDDISABLE 10
49 #define SERVICE_CONTROL_DEVICEEVENT 11
50 #define SERVICE_CONTROL_HARDWAREPROFILECHANGE 12
51 #define SERVICE_CONTROL_POWEREVENT 13
52 #define SERVICE_CONTROL_SESSIONCHANGE 14
53 #define SERVICE_ACTIVE 1
54 #define SERVICE_INACTIVE 2
55 #define SERVICE_STATE_ALL 3
56 #define SERVICE_QUERY_CONFIG 1
57 #define SERVICE_CHANGE_CONFIG 2
58 #define SERVICE_QUERY_STATUS 4
59 #define SERVICE_ENUMERATE_DEPENDENTS 8
60 #define SERVICE_START 16
61 #define SERVICE_STOP 32
62 #define SERVICE_PAUSE_CONTINUE 64
63 #define SERVICE_INTERROGATE 128
64 #define SERVICE_USER_DEFINED_CONTROL 256
65 #define 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)
66 #define SERVICE_RUNS_IN_SYSTEM_PROCESS 1
67 #define SERVICE_CONFIG_DESCRIPTION 1
68 #define SERVICE_CONFIG_FAILURE_ACTIONS 2
69
70 typedef struct _SERVICE_STATUS {
71 DWORD dwServiceType;
72 DWORD dwCurrentState;
73 DWORD dwControlsAccepted;
74 DWORD dwWin32ExitCode;
75 DWORD dwServiceSpecificExitCode;
76 DWORD dwCheckPoint;
77 DWORD dwWaitHint;
78 } SERVICE_STATUS,*LPSERVICE_STATUS;
79 typedef struct _SERVICE_STATUS_PROCESS {
80 DWORD dwServiceType;
81 DWORD dwCurrentState;
82 DWORD dwControlsAccepted;
83 DWORD dwWin32ExitCode;
84 DWORD dwServiceSpecificExitCode;
85 DWORD dwCheckPoint;
86 DWORD dwWaitHint;
87 DWORD dwProcessId;
88 DWORD dwServiceFlags;
89 } SERVICE_STATUS_PROCESS, *LPSERVICE_STATUS_PROCESS;
90 typedef enum _SC_STATUS_TYPE {
91 SC_STATUS_PROCESS_INFO = 0
92 } SC_STATUS_TYPE;
93 typedef enum _SC_ENUM_TYPE {
94 SC_ENUM_PROCESS_INFO = 0
95 } SC_ENUM_TYPE;
96 typedef struct _ENUM_SERVICE_STATUSA {
97 LPSTR lpServiceName;
98 LPSTR lpDisplayName;
99 SERVICE_STATUS ServiceStatus;
100 } ENUM_SERVICE_STATUSA,*LPENUM_SERVICE_STATUSA;
101 typedef struct _ENUM_SERVICE_STATUSW {
102 LPWSTR lpServiceName;
103 LPWSTR lpDisplayName;
104 SERVICE_STATUS ServiceStatus;
105 } ENUM_SERVICE_STATUSW,*LPENUM_SERVICE_STATUSW;
106 typedef struct _ENUM_SERVICE_STATUS_PROCESSA {
107 LPSTR lpServiceName;
108 LPSTR lpDisplayName;
109 SERVICE_STATUS_PROCESS ServiceStatusProcess;
110 } ENUM_SERVICE_STATUS_PROCESSA,*LPENUM_SERVICE_STATUS_PROCESSA;
111 typedef struct _ENUM_SERVICE_STATUS_PROCESSW {
112 LPWSTR lpServiceName;
113 LPWSTR lpDisplayName;
114 SERVICE_STATUS_PROCESS ServiceStatusProcess;
115 } ENUM_SERVICE_STATUS_PROCESSW,*LPENUM_SERVICE_STATUS_PROCESSW;
116 typedef struct _QUERY_SERVICE_CONFIGA {
117 DWORD dwServiceType;
118 DWORD dwStartType;
119 DWORD dwErrorControl;
120 LPSTR lpBinaryPathName;
121 LPSTR lpLoadOrderGroup;
122 DWORD dwTagId;
123 LPSTR lpDependencies;
124 LPSTR lpServiceStartName;
125 LPSTR lpDisplayName;
126 } QUERY_SERVICE_CONFIGA,*LPQUERY_SERVICE_CONFIGA;
127 typedef struct _QUERY_SERVICE_CONFIGW {
128 DWORD dwServiceType;
129 DWORD dwStartType;
130 DWORD dwErrorControl;
131 LPWSTR lpBinaryPathName;
132 LPWSTR lpLoadOrderGroup;
133 DWORD dwTagId;
134 LPWSTR lpDependencies;
135 LPWSTR lpServiceStartName;
136 LPWSTR lpDisplayName;
137 } QUERY_SERVICE_CONFIGW,*LPQUERY_SERVICE_CONFIGW;
138 typedef struct _QUERY_SERVICE_LOCK_STATUSA {
139 DWORD fIsLocked;
140 LPSTR lpLockOwner;
141 DWORD dwLockDuration;
142 } QUERY_SERVICE_LOCK_STATUSA,*LPQUERY_SERVICE_LOCK_STATUSA;
143 typedef struct _QUERY_SERVICE_LOCK_STATUSW {
144 DWORD fIsLocked;
145 LPWSTR lpLockOwner;
146 DWORD dwLockDuration;
147 } QUERY_SERVICE_LOCK_STATUSW,*LPQUERY_SERVICE_LOCK_STATUSW;
148 typedef void (WINAPI *LPSERVICE_MAIN_FUNCTIONA)(DWORD,LPSTR*);
149 typedef void (WINAPI *LPSERVICE_MAIN_FUNCTIONW)(DWORD,LPWSTR*);
150 typedef struct _SERVICE_TABLE_ENTRYA {
151 LPSTR lpServiceName;
152 LPSERVICE_MAIN_FUNCTIONA lpServiceProc;
153 } SERVICE_TABLE_ENTRYA,*LPSERVICE_TABLE_ENTRYA;
154 typedef struct _SERVICE_TABLE_ENTRYW {
155 LPWSTR lpServiceName;
156 LPSERVICE_MAIN_FUNCTIONW lpServiceProc;
157 } SERVICE_TABLE_ENTRYW,*LPSERVICE_TABLE_ENTRYW;
158 DECLARE_HANDLE(SC_HANDLE);
159 typedef SC_HANDLE *LPSC_HANDLE;
160 typedef PVOID SC_LOCK;
161 typedef DWORD SERVICE_STATUS_HANDLE;
162 typedef VOID(WINAPI *LPHANDLER_FUNCTION)(DWORD);
163 typedef DWORD (WINAPI *LPHANDLER_FUNCTION_EX)(DWORD,DWORD,LPVOID,LPVOID);
164 typedef struct _SERVICE_DESCRIPTIONA {
165 LPSTR lpDescription;
166 } SERVICE_DESCRIPTIONA,*LPSERVICE_DESCRIPTIONA;
167 typedef struct _SERVICE_DESCRIPTIONW {
168 LPWSTR lpDescription;
169 } SERVICE_DESCRIPTIONW,*LPSERVICE_DESCRIPTIONW;
170 typedef enum _SC_ACTION_TYPE {
171 SC_ACTION_NONE = 0,
172 SC_ACTION_RESTART = 1,
173 SC_ACTION_REBOOT = 2,
174 SC_ACTION_RUN_COMMAND = 3
175 } SC_ACTION_TYPE;
176 typedef struct _SC_ACTION {
177 SC_ACTION_TYPE Type;
178 DWORD Delay;
179 } SC_ACTION,*LPSC_ACTION;
180 typedef struct _SERVICE_FAILURE_ACTIONSA {
181 DWORD dwResetPeriod;
182 LPSTR lpRebootMsg;
183 LPSTR lpCommand;
184 DWORD cActions;
185 SC_ACTION * lpsaActions;
186 } SERVICE_FAILURE_ACTIONSA,*LPSERVICE_FAILURE_ACTIONSA;
187 typedef struct _SERVICE_FAILURE_ACTIONSW {
188 DWORD dwResetPeriod;
189 LPWSTR lpRebootMsg;
190 LPWSTR lpCommand;
191 DWORD cActions;
192 SC_ACTION * lpsaActions;
193 } SERVICE_FAILURE_ACTIONSW,*LPSERVICE_FAILURE_ACTIONSW;
194
195 BOOL WINAPI ChangeServiceConfigA(SC_HANDLE,DWORD,DWORD,DWORD,LPCSTR,LPCSTR,LPDWORD,LPCSTR,LPCSTR,LPCSTR,LPCSTR);
196 BOOL WINAPI ChangeServiceConfigW(SC_HANDLE,DWORD,DWORD,DWORD,LPCWSTR,LPCWSTR,LPDWORD,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
197 BOOL WINAPI ChangeServiceConfig2A(SC_HANDLE,DWORD,LPVOID);
198 BOOL WINAPI ChangeServiceConfig2W(SC_HANDLE,DWORD,LPVOID);
199 BOOL WINAPI CloseServiceHandle(SC_HANDLE);
200 BOOL WINAPI ControlService(SC_HANDLE,DWORD,LPSERVICE_STATUS);
201 SC_HANDLE WINAPI CreateServiceA(SC_HANDLE,LPCSTR,LPCSTR,DWORD,DWORD,DWORD,DWORD,LPCSTR,LPCSTR,PDWORD,LPCSTR,LPCSTR,LPCSTR);
202 SC_HANDLE WINAPI CreateServiceW(SC_HANDLE,LPCWSTR,LPCWSTR,DWORD,DWORD,DWORD,DWORD,LPCWSTR,LPCWSTR,PDWORD,LPCWSTR,LPCWSTR,LPCWSTR);
203 BOOL WINAPI DeleteService(SC_HANDLE);
204 BOOL WINAPI EnumDependentServicesA(SC_HANDLE,DWORD,LPENUM_SERVICE_STATUSA,DWORD,PDWORD,PDWORD);
205 BOOL WINAPI EnumDependentServicesW(SC_HANDLE,DWORD,LPENUM_SERVICE_STATUSW,DWORD,PDWORD,PDWORD);
206 BOOL WINAPI EnumServicesStatusA(SC_HANDLE,DWORD,DWORD,LPENUM_SERVICE_STATUSA,DWORD,PDWORD,PDWORD,PDWORD);
207 BOOL WINAPI EnumServicesStatusW(SC_HANDLE,DWORD,DWORD,LPENUM_SERVICE_STATUSW,DWORD,PDWORD,PDWORD,PDWORD);
208 BOOL WINAPI EnumServicesStatusExA(SC_HANDLE,SC_ENUM_TYPE,DWORD,DWORD,LPBYTE,DWORD,LPDWORD,LPDWORD,LPDWORD,LPCSTR);
209 BOOL WINAPI EnumServicesStatusExW(SC_HANDLE,SC_ENUM_TYPE,DWORD,DWORD,LPBYTE,DWORD,LPDWORD,LPDWORD,LPDWORD,LPCWSTR);
210 BOOL WINAPI GetServiceDisplayNameA(SC_HANDLE,LPCSTR,LPSTR,PDWORD);
211 BOOL WINAPI GetServiceDisplayNameW(SC_HANDLE,LPCWSTR,LPWSTR,PDWORD);
212 BOOL WINAPI GetServiceKeyNameA(SC_HANDLE,LPCSTR,LPSTR,PDWORD);
213 BOOL WINAPI GetServiceKeyNameW(SC_HANDLE,LPCWSTR,LPWSTR,PDWORD);
214 SC_LOCK WINAPI LockServiceDatabase(SC_HANDLE);
215 BOOL WINAPI NotifyBootConfigStatus(BOOL);
216 SC_HANDLE WINAPI OpenSCManagerA(LPCSTR,LPCSTR,DWORD);
217 SC_HANDLE WINAPI OpenSCManagerW(LPCWSTR,LPCWSTR,DWORD);
218 SC_HANDLE WINAPI OpenServiceA(SC_HANDLE,LPCSTR,DWORD);
219 SC_HANDLE WINAPI OpenServiceW(SC_HANDLE,LPCWSTR,DWORD);
220 BOOL WINAPI QueryServiceConfigA(SC_HANDLE,LPQUERY_SERVICE_CONFIGA,DWORD,PDWORD);
221 BOOL WINAPI QueryServiceConfigW(SC_HANDLE,LPQUERY_SERVICE_CONFIGW,DWORD,PDWORD);
222 BOOL WINAPI QueryServiceConfig2A(SC_HANDLE,DWORD,LPBYTE,DWORD,LPDWORD);
223 BOOL WINAPI QueryServiceConfig2W(SC_HANDLE,DWORD,LPBYTE,DWORD,LPDWORD);
224 BOOL WINAPI QueryServiceLockStatusA(SC_HANDLE,LPQUERY_SERVICE_LOCK_STATUSA,DWORD,PDWORD);
225 BOOL WINAPI QueryServiceLockStatusW(SC_HANDLE,LPQUERY_SERVICE_LOCK_STATUSW,DWORD,PDWORD);
226 BOOL WINAPI QueryServiceObjectSecurity(SC_HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,LPDWORD);
227 BOOL WINAPI QueryServiceStatus(SC_HANDLE,LPSERVICE_STATUS);
228 BOOL WINAPI QueryServiceStatusEx(SC_HANDLE,SC_STATUS_TYPE,LPBYTE,DWORD,LPDWORD);
229 SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerA(LPCSTR,LPHANDLER_FUNCTION);
230 SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerW(LPCWSTR,LPHANDLER_FUNCTION);
231 SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExA(LPCSTR,LPHANDLER_FUNCTION_EX,LPVOID);
232 SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExW(LPCWSTR,LPHANDLER_FUNCTION_EX,LPVOID);
233 BOOL WINAPI SetServiceObjectSecurity(SC_HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
234 BOOL WINAPI SetServiceStatus(SERVICE_STATUS_HANDLE,LPSERVICE_STATUS);
235 BOOL WINAPI StartServiceA(SC_HANDLE,DWORD,LPCSTR*);
236 BOOL WINAPI StartServiceCtrlDispatcherA(LPSERVICE_TABLE_ENTRYA);
237 BOOL WINAPI StartServiceCtrlDispatcherW(LPSERVICE_TABLE_ENTRYW);
238 BOOL WINAPI StartServiceW(SC_HANDLE,DWORD,LPCWSTR*);
239 BOOL WINAPI UnlockServiceDatabase(SC_LOCK);
240
241 #ifdef UNICODE
242 typedef ENUM_SERVICE_STATUSW ENUM_SERVICE_STATUS,*LPENUM_SERVICE_STATUS;
243 typedef ENUM_SERVICE_STATUS_PROCESSW ENUM_SERVICE_STATUS_PROCESS;
244 typedef LPENUM_SERVICE_STATUS_PROCESSW LPENUM_SERVICE_STATUS_PROCESS;
245 typedef QUERY_SERVICE_CONFIGW QUERY_SERVICE_CONFIG,*LPQUERY_SERVICE_CONFIG;
246 typedef QUERY_SERVICE_LOCK_STATUSW QUERY_SERVICE_LOCK_STATUS,*LPQUERY_SERVICE_LOCK_STATUS;
247 typedef SERVICE_TABLE_ENTRYW SERVICE_TABLE_ENTRY,*LPSERVICE_TABLE_ENTRY;
248 typedef LPSERVICE_MAIN_FUNCTIONW LPSERVICE_MAIN_FUNCTION;
249 typedef SERVICE_DESCRIPTIONW SERVICE_DESCRIPTION;
250 typedef LPSERVICE_DESCRIPTIONW LPSERVICE_DESCRIPTION;
251 typedef SERVICE_FAILURE_ACTIONSW SERVICE_FAILURE_ACTIONS;
252 typedef LPSERVICE_FAILURE_ACTIONSW LPSERVICE_FAILURE_ACTIONS;
253 #define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEW
254 #define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEW
255 #define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERW
256 #define ChangeServiceConfig ChangeServiceConfigW
257 #define ChangeServiceConfig2 ChangeServiceConfig2W
258 #define CreateService CreateServiceW
259 #define EnumDependentServices EnumDependentServicesW
260 #define EnumServicesStatus EnumServicesStatusW
261 #define EnumServicesStatusEx EnumServicesStatusExW
262 #define GetServiceDisplayName GetServiceDisplayNameW
263 #define GetServiceKeyName GetServiceKeyNameW
264 #define OpenSCManager OpenSCManagerW
265 #define OpenService OpenServiceW
266 #define QueryServiceConfig QueryServiceConfigW
267 #define QueryServiceConfig2 QueryServiceConfig2W
268 #define QueryServiceLockStatus QueryServiceLockStatusW
269 #define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerW
270 #define RegisterServiceCtrlHandlerEx RegisterServiceCtrlHandlerExW
271 #define StartService StartServiceW
272 #define StartServiceCtrlDispatcher StartServiceCtrlDispatcherW
273 #else
274 typedef ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS,*LPENUM_SERVICE_STATUS;
275 typedef ENUM_SERVICE_STATUS_PROCESSA ENUM_SERVICE_STATUS_PROCESS;
276 typedef LPENUM_SERVICE_STATUS_PROCESSA LPENUM_SERVICE_STATUS_PROCESS;
277 typedef QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG,*LPQUERY_SERVICE_CONFIG;
278 typedef QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS,*LPQUERY_SERVICE_LOCK_STATUS;
279 typedef SERVICE_TABLE_ENTRYA SERVICE_TABLE_ENTRY,*LPSERVICE_TABLE_ENTRY;
280 typedef LPSERVICE_MAIN_FUNCTIONA LPSERVICE_MAIN_FUNCTION;
281 typedef SERVICE_DESCRIPTIONA SERVICE_DESCRIPTION;
282 typedef LPSERVICE_DESCRIPTIONA LPSERVICE_DESCRIPTION;
283 typedef SERVICE_FAILURE_ACTIONSA SERVICE_FAILURE_ACTIONS;
284 typedef LPSERVICE_FAILURE_ACTIONSA LPSERVICE_FAILURE_ACTIONS;
285 #define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEA
286 #define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEA
287 #define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERA
288 #define ChangeServiceConfig ChangeServiceConfigA
289 #define ChangeServiceConfig2 ChangeServiceConfig2A
290 #define CreateService CreateServiceA
291 #define EnumDependentServices EnumDependentServicesA
292 #define EnumServicesStatus EnumServicesStatusA
293 #define EnumServicesStatusEx EnumServicesStatusExA
294 #define GetServiceDisplayName GetServiceDisplayNameA
295 #define GetServiceKeyName GetServiceKeyNameA
296 #define OpenSCManager OpenSCManagerA
297 #define OpenService OpenServiceA
298 #define QueryServiceConfig QueryServiceConfigA
299 #define QueryServiceConfig2 QueryServiceConfig2A
300 #define QueryServiceLockStatus QueryServiceLockStatusA
301 #define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerA
302 #define RegisterServiceCtrlHandlerEx RegisterServiceCtrlHandlerExA
303 #define StartService StartServiceA
304 #define StartServiceCtrlDispatcher StartServiceCtrlDispatcherA
305 #endif
306 #ifdef __cplusplus
307 }
308 #endif
309 #endif /* _WINSVC_H */