ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/MSYS2/mingw32/i686-w64-mingw32/include/winsvc.h
Revision: 1166
Committed: Tue Oct 26 14:22:36 2021 UTC (4 years ago) by rossy
Content type: text/x-chdr
File size: 26832 byte(s)
Log Message:
Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File Contents

# Content
1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6 #ifndef _WINSVC_
7 #define _WINSVC_
8
9 #include <_mingw.h>
10 #include <_mingw_unicode.h>
11 #include <apisetcconv.h>
12
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16
17 #define SERVICES_ACTIVE_DATABASEW L"ServicesActive"
18 #define SERVICES_FAILED_DATABASEW L"ServicesFailed"
19
20 #define SERVICES_ACTIVE_DATABASEA "ServicesActive"
21 #define SERVICES_FAILED_DATABASEA "ServicesFailed"
22
23 #define SC_GROUP_IDENTIFIERW L'+'
24 #define SC_GROUP_IDENTIFIERA '+'
25
26 #define SERVICES_ACTIVE_DATABASE __MINGW_NAME_AW(SERVICES_ACTIVE_DATABASE)
27 #define SERVICES_FAILED_DATABASE __MINGW_NAME_AW(SERVICES_FAILED_DATABASE)
28
29 #define SC_GROUP_IDENTIFIER __MINGW_NAME_AW(SC_GROUP_IDENTIFIER)
30
31 #define SERVICE_NO_CHANGE 0xffffffff
32
33 #define SERVICE_ACTIVE 0x00000001
34 #define SERVICE_INACTIVE 0x00000002
35 #define SERVICE_STATE_ALL (SERVICE_ACTIVE | SERVICE_INACTIVE)
36
37 #define SERVICE_CONTROL_STOP 0x00000001
38 #define SERVICE_CONTROL_PAUSE 0x00000002
39 #define SERVICE_CONTROL_CONTINUE 0x00000003
40 #define SERVICE_CONTROL_INTERROGATE 0x00000004
41 #define SERVICE_CONTROL_SHUTDOWN 0x00000005
42 #define SERVICE_CONTROL_PARAMCHANGE 0x00000006
43 #define SERVICE_CONTROL_NETBINDADD 0x00000007
44 #define SERVICE_CONTROL_NETBINDREMOVE 0x00000008
45 #define SERVICE_CONTROL_NETBINDENABLE 0x00000009
46 #define SERVICE_CONTROL_NETBINDDISABLE 0x0000000A
47 #define SERVICE_CONTROL_DEVICEEVENT 0x0000000B
48 #define SERVICE_CONTROL_HARDWAREPROFILECHANGE 0x0000000C
49 #define SERVICE_CONTROL_POWEREVENT 0x0000000D
50 #define SERVICE_CONTROL_SESSIONCHANGE 0x0000000E
51 #define SERVICE_CONTROL_PRESHUTDOWN 0x0000000F
52 #define SERVICE_CONTROL_TIMECHANGE 0x00000010
53 #define SERVICE_CONTROL_USER_LOGOFF 0x00000011
54 #define SERVICE_CONTROL_TRIGGEREVENT 0x00000020
55 #define SERVICE_CONTROL_LOWRESOURCES 0x00000060
56 #define SERVICE_CONTROL_SYSTEMLOWRESOURCES 0x00000061
57
58 #define SERVICE_STOPPED 0x00000001
59 #define SERVICE_START_PENDING 0x00000002
60 #define SERVICE_STOP_PENDING 0x00000003
61 #define SERVICE_RUNNING 0x00000004
62 #define SERVICE_CONTINUE_PENDING 0x00000005
63 #define SERVICE_PAUSE_PENDING 0x00000006
64 #define SERVICE_PAUSED 0x00000007
65
66 #define SERVICE_ACCEPT_STOP 0x00000001
67 #define SERVICE_ACCEPT_PAUSE_CONTINUE 0x00000002
68 #define SERVICE_ACCEPT_SHUTDOWN 0x00000004
69 #define SERVICE_ACCEPT_PARAMCHANGE 0x00000008
70 #define SERVICE_ACCEPT_NETBINDCHANGE 0x00000010
71 #define SERVICE_ACCEPT_HARDWAREPROFILECHANGE 0x00000020
72 #define SERVICE_ACCEPT_POWEREVENT 0x00000040
73 #define SERVICE_ACCEPT_SESSIONCHANGE 0x00000080
74 #define SERVICE_ACCEPT_PRESHUTDOWN 0x00000100
75 #define SERVICE_ACCEPT_TIMECHANGE 0x00000200
76 #define SERVICE_ACCEPT_TRIGGEREVENT 0x00000400
77 #define SERVICE_ACCEPT_USER_LOGOFF 0x00000800
78 #define SERVICE_ACCEPT_LOWRESOURCES 0x00002000
79 #define SERVICE_ACCEPT_SYSTEMLOWRESOURCES 0x00004000
80
81 #define SC_MANAGER_CONNECT 0x0001
82 #define SC_MANAGER_CREATE_SERVICE 0x0002
83 #define SC_MANAGER_ENUMERATE_SERVICE 0x0004
84 #define SC_MANAGER_LOCK 0x0008
85 #define SC_MANAGER_QUERY_LOCK_STATUS 0x0010
86 #define SC_MANAGER_MODIFY_BOOT_CONFIG 0x0020
87
88 #define SC_MANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SC_MANAGER_CONNECT | SC_MANAGER_CREATE_SERVICE | SC_MANAGER_ENUMERATE_SERVICE | SC_MANAGER_LOCK | SC_MANAGER_QUERY_LOCK_STATUS | SC_MANAGER_MODIFY_BOOT_CONFIG)
89
90 #define SERVICE_QUERY_CONFIG 0x0001
91 #define SERVICE_CHANGE_CONFIG 0x0002
92 #define SERVICE_QUERY_STATUS 0x0004
93 #define SERVICE_ENUMERATE_DEPENDENTS 0x0008
94 #define SERVICE_START 0x0010
95 #define SERVICE_STOP 0x0020
96 #define SERVICE_PAUSE_CONTINUE 0x0040
97 #define SERVICE_INTERROGATE 0x0080
98 #define SERVICE_USER_DEFINED_CONTROL 0x0100
99
100 #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)
101
102 #define SERVICE_RUNS_IN_SYSTEM_PROCESS 0x00000001
103
104 #define SERVICE_CONFIG_DESCRIPTION 1
105 #define SERVICE_CONFIG_FAILURE_ACTIONS 2
106 #define SERVICE_CONFIG_DELAYED_AUTO_START_INFO 3
107 #define SERVICE_CONFIG_FAILURE_ACTIONS_FLAG 4
108 #define SERVICE_CONFIG_SERVICE_SID_INFO 5
109 #define SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO 6
110 #define SERVICE_CONFIG_PRESHUTDOWN_INFO 7
111 #define SERVICE_CONFIG_TRIGGER_INFO 8
112 #define SERVICE_CONFIG_PREFERRED_NODE 9
113 #define SERVICE_CONFIG_LAUNCH_PROTECTED 12
114
115 #define SERVICE_NOTIFY_STATUS_CHANGE_1 1
116 #define SERVICE_NOTIFY_STATUS_CHANGE_2 2
117
118 #define SERVICE_NOTIFY_STATUS_CHANGE SERVICE_NOTIFY_STATUS_CHANGE_2
119
120 #define SERVICE_NOTIFY_STOPPED 0x00000001
121 #define SERVICE_NOTIFY_START_PENDING 0x00000002
122 #define SERVICE_NOTIFY_STOP_PENDING 0x00000004
123 #define SERVICE_NOTIFY_RUNNING 0x00000008
124 #define SERVICE_NOTIFY_CONTINUE_PENDING 0x00000010
125 #define SERVICE_NOTIFY_PAUSE_PENDING 0x00000020
126 #define SERVICE_NOTIFY_PAUSED 0x00000040
127 #define SERVICE_NOTIFY_CREATED 0x00000080
128 #define SERVICE_NOTIFY_DELETED 0x00000100
129 #define SERVICE_NOTIFY_DELETE_PENDING 0x00000200
130
131 #define SERVICE_STOP_REASON_FLAG_MIN 0x00000000
132 #define SERVICE_STOP_REASON_FLAG_UNPLANNED 0x10000000
133 #define SERVICE_STOP_REASON_FLAG_CUSTOM 0x20000000
134 #define SERVICE_STOP_REASON_FLAG_PLANNED 0x40000000
135 #define SERVICE_STOP_REASON_FLAG_MAX 0x80000000
136
137 #define SERVICE_STOP_REASON_MAJOR_MIN 0x00000000
138 #define SERVICE_STOP_REASON_MAJOR_OTHER 0x00010000
139 #define SERVICE_STOP_REASON_MAJOR_HARDWARE 0x00020000
140 #define SERVICE_STOP_REASON_MAJOR_OPERATINGSYSTEM 0x00030000
141 #define SERVICE_STOP_REASON_MAJOR_SOFTWARE 0x00040000
142 #define SERVICE_STOP_REASON_MAJOR_APPLICATION 0x00050000
143 #define SERVICE_STOP_REASON_MAJOR_NONE 0x00060000
144 #define SERVICE_STOP_REASON_MAJOR_MAX 0x00070000
145 #define SERVICE_STOP_REASON_MAJOR_MIN_CUSTOM 0x00400000
146 #define SERVICE_STOP_REASON_MAJOR_MAX_CUSTOM 0x00ff0000
147
148 #define SERVICE_STOP_REASON_MINOR_MIN 0x00000000
149 #define SERVICE_STOP_REASON_MINOR_OTHER 0x00000001
150 #define SERVICE_STOP_REASON_MINOR_MAINTENANCE 0x00000002
151 #define SERVICE_STOP_REASON_MINOR_INSTALLATION 0x00000003
152 #define SERVICE_STOP_REASON_MINOR_UPGRADE 0x00000004
153 #define SERVICE_STOP_REASON_MINOR_RECONFIG 0x00000005
154 #define SERVICE_STOP_REASON_MINOR_HUNG 0x00000006
155 #define SERVICE_STOP_REASON_MINOR_UNSTABLE 0x00000007
156 #define SERVICE_STOP_REASON_MINOR_DISK 0x00000008
157 #define SERVICE_STOP_REASON_MINOR_NETWORKCARD 0x00000009
158 #define SERVICE_STOP_REASON_MINOR_ENVIRONMENT 0x0000000a
159 #define SERVICE_STOP_REASON_MINOR_HARDWARE_DRIVER 0x0000000b
160 #define SERVICE_STOP_REASON_MINOR_OTHERDRIVER 0x0000000c
161 #define SERVICE_STOP_REASON_MINOR_SERVICEPACK 0x0000000d
162 #define SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE 0x0000000e
163 #define SERVICE_STOP_REASON_MINOR_SECURITYFIX 0x0000000f
164 #define SERVICE_STOP_REASON_MINOR_SECURITY 0x00000010
165 #define SERVICE_STOP_REASON_MINOR_NETWORK_CONNECTIVITY 0x00000011
166 #define SERVICE_STOP_REASON_MINOR_WMI 0x00000012
167 #define SERVICE_STOP_REASON_MINOR_SERVICEPACK_UNINSTALL 0x00000013
168 #define SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE_UNINSTALL 0x00000014
169 #define SERVICE_STOP_REASON_MINOR_SECURITYFIX_UNINSTALL 0x00000015
170 #define SERVICE_STOP_REASON_MINOR_MMC 0x00000016
171 #define SERVICE_STOP_REASON_MINOR_NONE 0x00000017
172 #define SERVICE_STOP_REASON_MINOR_MEMOTYLIMIT 0x00000018
173 #define SERVICE_STOP_REASON_MINOR_MAX 0x00000019
174 #define SERVICE_STOP_REASON_MINOR_MIN_CUSTOM 0x00000100
175 #define SERVICE_STOP_REASON_MINOR_MAX_CUSTOM 0x0000FFFF
176
177 #define SERVICE_CONTROL_STATUS_REASON_INFO 1
178
179 #define SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL 1
180 #define SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY 2
181 #define SERVICE_TRIGGER_TYPE_DOMAIN_JOIN 3
182 #define SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT 4
183 #define SERVICE_TRIGGER_TYPE_GROUP_POLICY 5
184 #define SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT 6
185 #define SERVICE_TRIGGER_TYPE_CUSTOM_SYSTEM_STATE_CHANGE 7
186 #define SERVICE_TRIGGER_TYPE_CUSTOM 20
187 #define SERVICE_TRIGGER_TYPE_AGGREGATE 30
188
189 #define SERVICE_TRIGGER_DATA_TYPE_BINARY 1
190 #define SERVICE_TRIGGER_DATA_TYPE_STRING 2
191 #define SERVICE_TRIGGER_DATA_TYPE_LEVEL 3
192 #define SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ANY 4
193 #define SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ALL 5
194
195 #define SERVICE_START_REASON_DEMAND 0x00000001
196 #define SERVICE_START_REASON_AUTO 0x00000002
197 #define SERVICE_START_REASON_TRIGGER 0x00000004
198 #define SERVICE_START_REASON_RESTART_ON_FAILURE 0x00000008
199 #define SERVICE_START_REASON_DELAYEDAUTO 0x00000010
200
201 #define SERVICE_DYNAMIC_INFORMATION_LEVEL_START_REASON 1
202
203 #define SERVICE_LAUNCH_PROTECTED_NONE 0
204 #define SERVICE_LAUNCH_PROTECTED_WINDOWS 1
205 #define SERVICE_LAUNCH_PROTECTED_WINDOWS_LIGHT 2
206 #define SERVICE_LAUNCH_PROTECTED_ANTIMALWARE_LIGHT 3
207
208 typedef struct _SERVICE_DESCRIPTIONA {
209 LPSTR lpDescription;
210 } SERVICE_DESCRIPTIONA,*LPSERVICE_DESCRIPTIONA;
211
212 typedef struct _SERVICE_DESCRIPTIONW {
213 LPWSTR lpDescription;
214 } SERVICE_DESCRIPTIONW,*LPSERVICE_DESCRIPTIONW;
215
216 __MINGW_TYPEDEF_AW(SERVICE_DESCRIPTION)
217 __MINGW_TYPEDEF_AW(LPSERVICE_DESCRIPTION)
218
219 typedef enum _SC_ACTION_TYPE {
220 SC_ACTION_NONE = 0,SC_ACTION_RESTART = 1,SC_ACTION_REBOOT = 2,SC_ACTION_RUN_COMMAND = 3
221 } SC_ACTION_TYPE;
222
223 typedef struct _SC_ACTION {
224 SC_ACTION_TYPE Type;
225 DWORD Delay;
226 } SC_ACTION,*LPSC_ACTION;
227
228 typedef struct _SERVICE_FAILURE_ACTIONSA {
229 DWORD dwResetPeriod;
230 LPSTR lpRebootMsg;
231 LPSTR lpCommand;
232 DWORD cActions;
233 SC_ACTION *lpsaActions;
234 } SERVICE_FAILURE_ACTIONSA,*LPSERVICE_FAILURE_ACTIONSA;
235
236 typedef struct _SERVICE_FAILURE_ACTIONSW {
237 DWORD dwResetPeriod;
238 LPWSTR lpRebootMsg;
239 LPWSTR lpCommand;
240 DWORD cActions;
241 SC_ACTION *lpsaActions;
242 } SERVICE_FAILURE_ACTIONSW,*LPSERVICE_FAILURE_ACTIONSW;
243
244 __MINGW_TYPEDEF_AW(SERVICE_FAILURE_ACTIONS)
245 __MINGW_TYPEDEF_AW(LPSERVICE_FAILURE_ACTIONS)
246
247 DECLARE_HANDLE(SC_HANDLE);
248 typedef SC_HANDLE *LPSC_HANDLE;
249
250 DECLARE_HANDLE(SERVICE_STATUS_HANDLE);
251
252 typedef enum _SC_STATUS_TYPE {
253 SC_STATUS_PROCESS_INFO = 0
254 } SC_STATUS_TYPE;
255
256 typedef enum _SC_ENUM_TYPE {
257 SC_ENUM_PROCESS_INFO = 0
258 } SC_ENUM_TYPE;
259
260 typedef struct _SERVICE_STATUS {
261 DWORD dwServiceType;
262 DWORD dwCurrentState;
263 DWORD dwControlsAccepted;
264 DWORD dwWin32ExitCode;
265 DWORD dwServiceSpecificExitCode;
266 DWORD dwCheckPoint;
267 DWORD dwWaitHint;
268 } SERVICE_STATUS,*LPSERVICE_STATUS;
269
270 typedef struct _SERVICE_STATUS_PROCESS {
271 DWORD dwServiceType;
272 DWORD dwCurrentState;
273 DWORD dwControlsAccepted;
274 DWORD dwWin32ExitCode;
275 DWORD dwServiceSpecificExitCode;
276 DWORD dwCheckPoint;
277 DWORD dwWaitHint;
278 DWORD dwProcessId;
279 DWORD dwServiceFlags;
280 } SERVICE_STATUS_PROCESS,*LPSERVICE_STATUS_PROCESS;
281
282 typedef struct _ENUM_SERVICE_STATUSA {
283 LPSTR lpServiceName;
284 LPSTR lpDisplayName;
285 SERVICE_STATUS ServiceStatus;
286 } ENUM_SERVICE_STATUSA,*LPENUM_SERVICE_STATUSA;
287
288 typedef struct _ENUM_SERVICE_STATUSW {
289 LPWSTR lpServiceName;
290 LPWSTR lpDisplayName;
291 SERVICE_STATUS ServiceStatus;
292 } ENUM_SERVICE_STATUSW,*LPENUM_SERVICE_STATUSW;
293
294 __MINGW_TYPEDEF_AW(ENUM_SERVICE_STATUS)
295 __MINGW_TYPEDEF_AW(LPENUM_SERVICE_STATUS)
296
297 typedef struct _ENUM_SERVICE_STATUS_PROCESSA {
298 LPSTR lpServiceName;
299 LPSTR lpDisplayName;
300 SERVICE_STATUS_PROCESS ServiceStatusProcess;
301 } ENUM_SERVICE_STATUS_PROCESSA,*LPENUM_SERVICE_STATUS_PROCESSA;
302
303 typedef struct _ENUM_SERVICE_STATUS_PROCESSW {
304 LPWSTR lpServiceName;
305 LPWSTR lpDisplayName;
306 SERVICE_STATUS_PROCESS ServiceStatusProcess;
307 } ENUM_SERVICE_STATUS_PROCESSW,*LPENUM_SERVICE_STATUS_PROCESSW;
308
309 __MINGW_TYPEDEF_AW(ENUM_SERVICE_STATUS_PROCESS)
310 __MINGW_TYPEDEF_AW(LPENUM_SERVICE_STATUS_PROCESS)
311
312 typedef LPVOID SC_LOCK;
313
314 typedef struct _QUERY_SERVICE_LOCK_STATUSA {
315 DWORD fIsLocked;
316 LPSTR lpLockOwner;
317 DWORD dwLockDuration;
318 } QUERY_SERVICE_LOCK_STATUSA,*LPQUERY_SERVICE_LOCK_STATUSA;
319
320 typedef struct _QUERY_SERVICE_LOCK_STATUSW {
321 DWORD fIsLocked;
322 LPWSTR lpLockOwner;
323 DWORD dwLockDuration;
324 } QUERY_SERVICE_LOCK_STATUSW,*LPQUERY_SERVICE_LOCK_STATUSW;
325
326 __MINGW_TYPEDEF_AW(QUERY_SERVICE_LOCK_STATUS)
327 __MINGW_TYPEDEF_AW(LPQUERY_SERVICE_LOCK_STATUS)
328
329 typedef struct _QUERY_SERVICE_CONFIGA {
330 DWORD dwServiceType;
331 DWORD dwStartType;
332 DWORD dwErrorControl;
333 LPSTR lpBinaryPathName;
334 LPSTR lpLoadOrderGroup;
335 DWORD dwTagId;
336 LPSTR lpDependencies;
337 LPSTR lpServiceStartName;
338 LPSTR lpDisplayName;
339 } QUERY_SERVICE_CONFIGA,*LPQUERY_SERVICE_CONFIGA;
340
341 typedef struct _QUERY_SERVICE_CONFIGW {
342 DWORD dwServiceType;
343 DWORD dwStartType;
344 DWORD dwErrorControl;
345 LPWSTR lpBinaryPathName;
346 LPWSTR lpLoadOrderGroup;
347 DWORD dwTagId;
348 LPWSTR lpDependencies;
349 LPWSTR lpServiceStartName;
350 LPWSTR lpDisplayName;
351 } QUERY_SERVICE_CONFIGW,*LPQUERY_SERVICE_CONFIGW;
352
353 __MINGW_TYPEDEF_AW(QUERY_SERVICE_CONFIG)
354 __MINGW_TYPEDEF_AW(LPQUERY_SERVICE_CONFIG)
355
356 typedef VOID (WINAPI *LPSERVICE_MAIN_FUNCTIONW)(DWORD dwNumServicesArgs,LPWSTR *lpServiceArgVectors);
357 typedef VOID (WINAPI *LPSERVICE_MAIN_FUNCTIONA)(DWORD dwNumServicesArgs,LPSTR *lpServiceArgVectors);
358
359 #define LPSERVICE_MAIN_FUNCTION __MINGW_NAME_AW(LPSERVICE_MAIN_FUNCTION)
360
361 typedef struct _SERVICE_TABLE_ENTRYA {
362 LPSTR lpServiceName;
363 LPSERVICE_MAIN_FUNCTIONA lpServiceProc;
364 } SERVICE_TABLE_ENTRYA,*LPSERVICE_TABLE_ENTRYA;
365
366 typedef struct _SERVICE_TABLE_ENTRYW {
367 LPWSTR lpServiceName;
368 LPSERVICE_MAIN_FUNCTIONW lpServiceProc;
369 } SERVICE_TABLE_ENTRYW,*LPSERVICE_TABLE_ENTRYW;
370
371 __MINGW_TYPEDEF_AW(SERVICE_TABLE_ENTRY)
372 __MINGW_TYPEDEF_AW(LPSERVICE_TABLE_ENTRY)
373
374 typedef VOID (WINAPI *LPHANDLER_FUNCTION)(DWORD dwControl);
375 typedef DWORD (WINAPI *LPHANDLER_FUNCTION_EX)(DWORD dwControl,DWORD dwEventType,LPVOID lpEventData,LPVOID lpContext);
376
377 #define ChangeServiceConfig __MINGW_NAME_AW(ChangeServiceConfig)
378 #define ChangeServiceConfig2 __MINGW_NAME_AW(ChangeServiceConfig2)
379 #define CreateService __MINGW_NAME_AW(CreateService)
380 #define EnumDependentServices __MINGW_NAME_AW(EnumDependentServices)
381 #define EnumServicesStatus __MINGW_NAME_AW(EnumServicesStatus)
382 #define EnumServicesStatusEx __MINGW_NAME_AW(EnumServicesStatusEx)
383 #define GetServiceKeyName __MINGW_NAME_AW(GetServiceKeyName)
384 #define GetServiceDisplayName __MINGW_NAME_AW(GetServiceDisplayName)
385 #define OpenSCManager __MINGW_NAME_AW(OpenSCManager)
386 #define OpenService __MINGW_NAME_AW(OpenService)
387 #define QueryServiceConfig __MINGW_NAME_AW(QueryServiceConfig)
388 #define QueryServiceConfig2 __MINGW_NAME_AW(QueryServiceConfig2)
389 #define QueryServiceLockStatus __MINGW_NAME_AW(QueryServiceLockStatus)
390 #define RegisterServiceCtrlHandler __MINGW_NAME_AW(RegisterServiceCtrlHandler)
391 #define RegisterServiceCtrlHandlerEx __MINGW_NAME_AW(RegisterServiceCtrlHandlerEx)
392 #define StartServiceCtrlDispatcher __MINGW_NAME_AW(StartServiceCtrlDispatcher)
393 #define StartService __MINGW_NAME_AW(StartService)
394
395 WINADVAPI WINBOOL WINAPI ChangeServiceConfigA(SC_HANDLE hService,DWORD dwServiceType,DWORD dwStartType,DWORD dwErrorControl,LPCSTR lpBinaryPathName,LPCSTR lpLoadOrderGroup,LPDWORD lpdwTagId,LPCSTR lpDependencies,LPCSTR lpServiceStartName,LPCSTR lpPassword,LPCSTR lpDisplayName);
396 WINADVAPI WINBOOL WINAPI ChangeServiceConfigW(SC_HANDLE hService,DWORD dwServiceType,DWORD dwStartType,DWORD dwErrorControl,LPCWSTR lpBinaryPathName,LPCWSTR lpLoadOrderGroup,LPDWORD lpdwTagId,LPCWSTR lpDependencies,LPCWSTR lpServiceStartName,LPCWSTR lpPassword,LPCWSTR lpDisplayName);
397 WINADVAPI WINBOOL WINAPI ChangeServiceConfig2A(SC_HANDLE hService,DWORD dwInfoLevel,LPVOID lpInfo);
398 WINADVAPI WINBOOL WINAPI ChangeServiceConfig2W(SC_HANDLE hService,DWORD dwInfoLevel,LPVOID lpInfo);
399 WINADVAPI WINBOOL WINAPI CloseServiceHandle(SC_HANDLE hSCObject);
400 WINADVAPI WINBOOL WINAPI ControlService(SC_HANDLE hService,DWORD dwControl,LPSERVICE_STATUS lpServiceStatus);
401 WINADVAPI SC_HANDLE WINAPI CreateServiceA(SC_HANDLE hSCManager,LPCSTR lpServiceName,LPCSTR lpDisplayName,DWORD dwDesiredAccess,DWORD dwServiceType,DWORD dwStartType,DWORD dwErrorControl,LPCSTR lpBinaryPathName,LPCSTR lpLoadOrderGroup,LPDWORD lpdwTagId,LPCSTR lpDependencies,LPCSTR lpServiceStartName,LPCSTR lpPassword);
402 WINADVAPI SC_HANDLE WINAPI CreateServiceW(SC_HANDLE hSCManager,LPCWSTR lpServiceName,LPCWSTR lpDisplayName,DWORD dwDesiredAccess,DWORD dwServiceType,DWORD dwStartType,DWORD dwErrorControl,LPCWSTR lpBinaryPathName,LPCWSTR lpLoadOrderGroup,LPDWORD lpdwTagId,LPCWSTR lpDependencies,LPCWSTR lpServiceStartName,LPCWSTR lpPassword);
403 WINADVAPI WINBOOL WINAPI DeleteService(SC_HANDLE hService);
404 WINADVAPI WINBOOL WINAPI EnumDependentServicesA(SC_HANDLE hService,DWORD dwServiceState,LPENUM_SERVICE_STATUSA lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned);
405 WINADVAPI WINBOOL WINAPI EnumDependentServicesW(SC_HANDLE hService,DWORD dwServiceState,LPENUM_SERVICE_STATUSW lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned);
406 WINADVAPI WINBOOL WINAPI EnumServicesStatusA(SC_HANDLE hSCManager,DWORD dwServiceType,DWORD dwServiceState,LPENUM_SERVICE_STATUSA lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned,LPDWORD lpResumeHandle);
407 WINADVAPI WINBOOL WINAPI EnumServicesStatusW(SC_HANDLE hSCManager,DWORD dwServiceType,DWORD dwServiceState,LPENUM_SERVICE_STATUSW lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned,LPDWORD lpResumeHandle);
408 WINADVAPI WINBOOL WINAPI EnumServicesStatusExA(SC_HANDLE hSCManager,SC_ENUM_TYPE InfoLevel,DWORD dwServiceType,DWORD dwServiceState,LPBYTE lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned,LPDWORD lpResumeHandle,LPCSTR pszGroupName);
409 WINADVAPI WINBOOL WINAPI EnumServicesStatusExW(SC_HANDLE hSCManager,SC_ENUM_TYPE InfoLevel,DWORD dwServiceType,DWORD dwServiceState,LPBYTE lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned,LPDWORD lpResumeHandle,LPCWSTR pszGroupName);
410 WINADVAPI WINBOOL WINAPI GetServiceKeyNameA(SC_HANDLE hSCManager,LPCSTR lpDisplayName,LPSTR lpServiceName,LPDWORD lpcchBuffer);
411 WINADVAPI WINBOOL WINAPI GetServiceKeyNameW(SC_HANDLE hSCManager,LPCWSTR lpDisplayName,LPWSTR lpServiceName,LPDWORD lpcchBuffer);
412 WINADVAPI WINBOOL WINAPI GetServiceDisplayNameA(SC_HANDLE hSCManager,LPCSTR lpServiceName,LPSTR lpDisplayName,LPDWORD lpcchBuffer);
413 WINADVAPI WINBOOL WINAPI GetServiceDisplayNameW(SC_HANDLE hSCManager,LPCWSTR lpServiceName,LPWSTR lpDisplayName,LPDWORD lpcchBuffer);
414 WINADVAPI SC_LOCK WINAPI LockServiceDatabase(SC_HANDLE hSCManager);
415 WINADVAPI WINBOOL WINAPI NotifyBootConfigStatus(WINBOOL BootAcceptable);
416 WINADVAPI SC_HANDLE WINAPI OpenSCManagerA(LPCSTR lpMachineName,LPCSTR lpDatabaseName,DWORD dwDesiredAccess);
417 WINADVAPI SC_HANDLE WINAPI OpenSCManagerW(LPCWSTR lpMachineName,LPCWSTR lpDatabaseName,DWORD dwDesiredAccess);
418 WINADVAPI SC_HANDLE WINAPI OpenServiceA(SC_HANDLE hSCManager,LPCSTR lpServiceName,DWORD dwDesiredAccess);
419 WINADVAPI SC_HANDLE WINAPI OpenServiceW(SC_HANDLE hSCManager,LPCWSTR lpServiceName,DWORD dwDesiredAccess);
420 WINADVAPI WINBOOL WINAPI QueryServiceConfigA(SC_HANDLE hService,LPQUERY_SERVICE_CONFIGA lpServiceConfig,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
421 WINADVAPI WINBOOL WINAPI QueryServiceConfigW(SC_HANDLE hService,LPQUERY_SERVICE_CONFIGW lpServiceConfig,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
422 WINADVAPI WINBOOL WINAPI QueryServiceConfig2A(SC_HANDLE hService,DWORD dwInfoLevel,LPBYTE lpBuffer,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
423 WINADVAPI WINBOOL WINAPI QueryServiceConfig2W(SC_HANDLE hService,DWORD dwInfoLevel,LPBYTE lpBuffer,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
424 WINADVAPI WINBOOL WINAPI QueryServiceLockStatusA(SC_HANDLE hSCManager,LPQUERY_SERVICE_LOCK_STATUSA lpLockStatus,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
425 WINADVAPI WINBOOL WINAPI QueryServiceLockStatusW(SC_HANDLE hSCManager,LPQUERY_SERVICE_LOCK_STATUSW lpLockStatus,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
426 WINADVAPI WINBOOL WINAPI QueryServiceObjectSecurity(SC_HANDLE hService,SECURITY_INFORMATION dwSecurityInformation,PSECURITY_DESCRIPTOR lpSecurityDescriptor,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
427 WINADVAPI WINBOOL WINAPI QueryServiceStatus(SC_HANDLE hService,LPSERVICE_STATUS lpServiceStatus);
428 WINADVAPI WINBOOL WINAPI QueryServiceStatusEx(SC_HANDLE hService,SC_STATUS_TYPE InfoLevel,LPBYTE lpBuffer,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
429 WINADVAPI SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerA(LPCSTR lpServiceName,LPHANDLER_FUNCTION lpHandlerProc);
430 WINADVAPI SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerW(LPCWSTR lpServiceName,LPHANDLER_FUNCTION lpHandlerProc);
431 WINADVAPI SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExA(LPCSTR lpServiceName,LPHANDLER_FUNCTION_EX lpHandlerProc,LPVOID lpContext);
432 WINADVAPI SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExW(LPCWSTR lpServiceName,LPHANDLER_FUNCTION_EX lpHandlerProc,LPVOID lpContext);
433 WINADVAPI WINBOOL WINAPI SetServiceObjectSecurity(SC_HANDLE hService,SECURITY_INFORMATION dwSecurityInformation,PSECURITY_DESCRIPTOR lpSecurityDescriptor);
434 WINADVAPI WINBOOL WINAPI SetServiceStatus(SERVICE_STATUS_HANDLE hServiceStatus,LPSERVICE_STATUS lpServiceStatus);
435 WINADVAPI WINBOOL WINAPI StartServiceCtrlDispatcherA(CONST SERVICE_TABLE_ENTRYA *lpServiceStartTable);
436 WINADVAPI WINBOOL WINAPI StartServiceCtrlDispatcherW(CONST SERVICE_TABLE_ENTRYW *lpServiceStartTable);
437 WINADVAPI WINBOOL WINAPI StartServiceA(SC_HANDLE hService,DWORD dwNumServiceArgs,LPCSTR *lpServiceArgVectors);
438 WINADVAPI WINBOOL WINAPI StartServiceW(SC_HANDLE hService,DWORD dwNumServiceArgs,LPCWSTR *lpServiceArgVectors);
439 WINADVAPI WINBOOL WINAPI UnlockServiceDatabase(SC_LOCK ScLock);
440
441 #if (_WIN32_WINNT >= 0x0600)
442
443 typedef VOID( CALLBACK * PFN_SC_NOTIFY_CALLBACK ) (
444 PVOID pParameter
445 );
446
447 typedef struct _SERVICE_CONTROL_STATUS_REASON_PARAMSA {
448 DWORD dwReason;
449 LPSTR pszComment;
450 SERVICE_STATUS_PROCESS ServiceStatus;
451 } SERVICE_CONTROL_STATUS_REASON_PARAMSA, *PSERVICE_CONTROL_STATUS_REASON_PARAMSA;
452
453 typedef struct _SERVICE_CONTROL_STATUS_REASON_PARAMSW {
454 DWORD dwReason;
455 LPWSTR pszComment;
456 SERVICE_STATUS_PROCESS ServiceStatus;
457 } SERVICE_CONTROL_STATUS_REASON_PARAMSW, *PSERVICE_CONTROL_STATUS_REASON_PARAMSW;
458
459 __MINGW_TYPEDEF_AW(SERVICE_CONTROL_STATUS_REASON_PARAMS)
460 __MINGW_TYPEDEF_AW(PSERVICE_CONTROL_STATUS_REASON_PARAMS)
461
462 #define SERVICE_STOP_REASON_FLAG_CUSTOM 0x20000000
463 #define SERVICE_STOP_REASON_FLAG_PLANNED 0x40000000
464 #define SERVICE_STOP_REASON_FLAG_UNPLANNED 0x10000000
465
466 #define SERVICE_STOP_REASON_MAJOR_APPLICATION 0x00050000
467 #define SERVICE_STOP_REASON_MAJOR_HARDWARE 0x00020000
468 #define SERVICE_STOP_REASON_MAJOR_NONE 0x00060000
469 #define SERVICE_STOP_REASON_MAJOR_OPERATINGSYSTEM 0x00030000
470 #define SERVICE_STOP_REASON_MAJOR_OTHER 0x00010000
471 #define SERVICE_STOP_REASON_MAJOR_SOFTWARE 0x00040000
472
473 #define SERVICE_STOP_REASON_MINOR_DISK 0x00000008
474 #define SERVICE_STOP_REASON_MINOR_ENVIRONMENT 0x0000000a
475 #define SERVICE_STOP_REASON_MINOR_HARDWARE_DRIVER 0x0000000b
476 #define SERVICE_STOP_REASON_MINOR_HUNG 0x00000006
477 #define SERVICE_STOP_REASON_MINOR_INSTALLATION 0x00000003
478 #define SERVICE_STOP_REASON_MINOR_MAINTENANCE 0x00000002
479 #define SERVICE_STOP_REASON_MINOR_MMC 0x00000016
480 #define SERVICE_STOP_REASON_MINOR_NETWORK_CONNECTIVITY 0x00000011
481 #define SERVICE_STOP_REASON_MINOR_NETWORKCARD 0x00000009
482 #define SERVICE_STOP_REASON_MINOR_OTHER 0x00000001
483 #define SERVICE_STOP_REASON_MINOR_OTHERDRIVER 0x0000000c
484 #define SERVICE_STOP_REASON_MINOR_RECONFIG 0x00000005
485 #define SERVICE_STOP_REASON_MINOR_SECURITY 0x00000010
486 #define SERVICE_STOP_REASON_MINOR_SECURITYFIX 0x0000000f
487 #define SERVICE_STOP_REASON_MINOR_SECURITYFIX_UNINSTALL 0x00000015
488 #define SERVICE_STOP_REASON_MINOR_SERVICEPACK 0x0000000d
489 #define SERVICE_STOP_REASON_MINOR_SERVICEPACK_UNINSTALL 0x00000013
490 #define SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE 0x0000000e
491 #define SERVICE_STOP_REASON_MINOR_UNSTABLE 0x00000007
492 #define SERVICE_STOP_REASON_MINOR_UPGRADE 0x00000004
493 #define SERVICE_STOP_REASON_MINOR_WMI 0x00000012
494
495 typedef struct _SERVICE_NOTIFYA {
496 DWORD dwVersion;
497 PFN_SC_NOTIFY_CALLBACK pfnNotifyCallback;
498 PVOID pContext;
499 DWORD dwNotificationStatus;
500 SERVICE_STATUS_PROCESS ServiceStatus;
501 DWORD dwNotificationTriggered;
502 LPSTR pszServiceNames;
503 } SERVICE_NOTIFYA, *PSERVICE_NOTIFYA;
504
505 typedef struct _SERVICE_NOTIFYW {
506 DWORD dwVersion;
507 PFN_SC_NOTIFY_CALLBACK pfnNotifyCallback;
508 PVOID pContext;
509 DWORD dwNotificationStatus;
510 SERVICE_STATUS_PROCESS ServiceStatus;
511 DWORD dwNotificationTriggered;
512 LPWSTR pszServiceNames;
513 } SERVICE_NOTIFYW, *PSERVICE_NOTIFYW;
514
515 __MINGW_TYPEDEF_AW(SERVICE_NOTIFY)
516 __MINGW_TYPEDEF_AW(PSERVICE_NOTIFY)
517
518 #define SERVICE_CONFIG_DELAYED_AUTO_START_INFO 3
519 #define SERVICE_CONFIG_FAILURE_ACTIONS_FLAG 4
520 #define SERVICE_CONFIG_SERVICE_SID_INFO 5
521 #define SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO 6
522 #define SERVICE_CONFIG_PRESHUTDOWN_INFO 7
523
524 typedef struct _SERVICE_DELAYED_AUTO_START_INFO {
525 WINBOOL fDelayedAutostart;
526 } SERVICE_DELAYED_AUTO_START_INFO, *LPSERVICE_DELAYED_AUTO_START_INFO;
527
528 typedef struct _SERVICE_FAILURE_ACTIONS_FLAG {
529 WINBOOL fFailureActionsOnNonCrashFailures;
530 } SERVICE_FAILURE_ACTIONS_FLAG, *LPSERVICE_FAILURE_ACTIONS_FLAG;
531
532 typedef struct _SERVICE_PRESHUTDOWN_INFO {
533 DWORD dwPreshutdownTimeout;
534 } SERVICE_PRESHUTDOWN_INFO, *LPSERVICE_PRESHUTDOWN_INFO;
535
536 typedef struct _SERVICE_REQUIRED_PRIVILEGES_INFOA {
537 LPSTR pmszRequiredPrivileges;
538 } SERVICE_REQUIRED_PRIVILEGES_INFOA, *LPSERVICE_REQUIRED_PRIVILEGES_INFOA;
539
540 typedef struct _SERVICE_REQUIRED_PRIVILEGES_INFOW {
541 LPWSTR pmszRequiredPrivileges;
542 } SERVICE_REQUIRED_PRIVILEGES_INFOW, *LPSERVICE_REQUIRED_PRIVILEGES_INFOW;
543
544 __MINGW_TYPEDEF_AW(SERVICE_REQUIRED_PRIVILEGES_INFO)
545
546 #define SERVICE_SID_TYPE_NONE 0x00000000
547 #define SERVICE_SID_TYPE_RESTRICTED 0x00000003
548 #define SERVICE_SID_TYPE_UNRESTRICTED 0x00000001
549
550 typedef struct _SERVICE_SID_INFO {
551 DWORD dwServiceSidType;
552 } SERVICE_SID_INFO, *LPSERVICE_SID_INFO;
553
554 WINADVAPI WINBOOL WINAPI ControlServiceExA(
555 SC_HANDLE hService,
556 DWORD dwControl,
557 DWORD dwInfoLevel,
558 PVOID pControlParams
559 );
560
561 WINADVAPI WINBOOL WINAPI ControlServiceExW(
562 SC_HANDLE hService,
563 DWORD dwControl,
564 DWORD dwInfoLevel,
565 PVOID pControlParams
566 );
567
568 #define ControlServiceEx __MINGW_NAME_AW(ControlServiceEx)
569
570 #define NotifyServiceStatusChange __MINGW_NAME_AW(NotifyServiceStatusChange)
571
572 DWORD WINAPI NotifyServiceStatusChangeA(
573 SC_HANDLE hService,
574 DWORD dwNotifyMask,
575 PSERVICE_NOTIFYA pNotifyBuffer
576 );
577
578 DWORD WINAPI NotifyServiceStatusChangeW(
579 SC_HANDLE hService,
580 DWORD dwNotifyMask,
581 PSERVICE_NOTIFYW pNotifyBuffer
582 );
583
584 #endif /*(_WIN32_WINNT >= 0x0600)*/
585
586 #ifdef __cplusplus
587 }
588 #endif
589
590 #endif /* _WINSVC_ */