7 #define SERVICES_ACTIVE_DATABASEA "ServicesActive"
8 #define SERVICES_ACTIVE_DATABASEW L"ServicesActive"
9 #define SERVICES_FAILED_DATABASEA "ServicesFailed"
10 #define SERVICES_FAILED_DATABASEW L"ServicesFailed"
11 #define SC_GROUP_IDENTIFIERA '+'
12 #define SC_GROUP_IDENTIFIERW L'+'
13 #define SC_MANAGER_ALL_ACCESS 0xf003f
14 #define SC_MANAGER_CONNECT 1
15 #define SC_MANAGER_CREATE_SERVICE 2
16 #define SC_MANAGER_ENUMERATE_SERVICE 4
17 #define SC_MANAGER_LOCK 8
18 #define SC_MANAGER_QUERY_LOCK_STATUS 16
19 #define SC_MANAGER_MODIFY_BOOT_CONFIG 32
20 #define SERVICE_NO_CHANGE 0xffffffff
21 #define SERVICE_STOPPED 1
22 #define SERVICE_START_PENDING 2
23 #define SERVICE_STOP_PENDING 3
24 #define SERVICE_RUNNING 4
25 #define SERVICE_CONTINUE_PENDING 5
26 #define SERVICE_PAUSE_PENDING 6
27 #define SERVICE_PAUSED 7
28 #define SERVICE_ACCEPT_STOP 1
29 #define SERVICE_ACCEPT_PAUSE_CONTINUE 2
30 #define SERVICE_ACCEPT_SHUTDOWN 4
31 #define SERVICE_ACCEPT_PARAMCHANGE 8
32 #define SERVICE_ACCEPT_NETBINDCHANGE 16
33 #define SERVICE_ACCEPT_HARDWAREPROFILECHANGE 32
34 #define SERVICE_ACCEPT_POWEREVENT 64
35 #define SERVICE_ACCEPT_SESSIONCHANGE 128
36 #define SERVICE_CONTROL_STOP 1
37 #define SERVICE_CONTROL_PAUSE 2
38 #define SERVICE_CONTROL_CONTINUE 3
39 #define SERVICE_CONTROL_INTERROGATE 4
40 #define SERVICE_CONTROL_SHUTDOWN 5
41 #define SERVICE_CONTROL_PARAMCHANGE 6
42 #define SERVICE_CONTROL_NETBINDADD 7
43 #define SERVICE_CONTROL_NETBINDREMOVE 8
44 #define SERVICE_CONTROL_NETBINDENABLE 9
45 #define SERVICE_CONTROL_NETBINDDISABLE 10
46 #define SERVICE_CONTROL_DEVICEEVENT 11
47 #define SERVICE_CONTROL_HARDWAREPROFILECHANGE 12
48 #define SERVICE_CONTROL_POWEREVENT 13
49 #define SERVICE_CONTROL_SESSIONCHANGE 14
50 #define SERVICE_ACTIVE 1
51 #define SERVICE_INACTIVE 2
52 #define SERVICE_STATE_ALL 3
53 #define SERVICE_QUERY_CONFIG 1
54 #define SERVICE_CHANGE_CONFIG 2
55 #define SERVICE_QUERY_STATUS 4
56 #define SERVICE_ENUMERATE_DEPENDENTS 8
57 #define SERVICE_START 16
58 #define SERVICE_STOP 32
59 #define SERVICE_PAUSE_CONTINUE 64
60 #define SERVICE_INTERROGATE 128
61 #define SERVICE_USER_DEFINED_CONTROL 256
62 #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)
63 #define SERVICE_RUNS_IN_SYSTEM_PROCESS 1
65 #define SERVICE_CONFIG_DESCRIPTION 1
66 #define SERVICE_CONFIG_FAILURE_ACTIONS 2
67 #define SERVICE_CONFIG_DELAYED_AUTO_START_INFO 3
68 #define SERVICE_CONFIG_FAILURE_ACTIONS_FLAG 4
69 #define SERVICE_CONFIG_SERVICE_SID_INFO 5
70 #define SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO 6
71 #define SERVICE_CONFIG_PRESHUTDOWN_INFO 7
72 #define SERVICE_CONFIG_TRIGGER_INFO 8
73 #define SERVICE_CONFIG_PREFERRED_NODE 9
74 #define SERVICE_CONFIG_RUNLEVEL_INFO 10
76 #ifndef _SERVICE_PRESHUTDOWN_INFO_DEFINED_
77 #define _SERVICE_PRESHUTDOWN_INFO_DEFINED_
78 typedef struct _SERVICE_PRESHUTDOWN_INFO
{
79 DWORD dwPreshutdownTimeout
;
80 } SERVICE_PRESHUTDOWN_INFO
, *LPSERVICE_PRESHUTDOWN_INFO
;
83 typedef struct _SERVICE_STATUS
{
86 DWORD dwControlsAccepted
;
87 DWORD dwWin32ExitCode
;
88 DWORD dwServiceSpecificExitCode
;
91 } SERVICE_STATUS
,*LPSERVICE_STATUS
;
92 typedef struct _SERVICE_STATUS_PROCESS
{
95 DWORD dwControlsAccepted
;
96 DWORD dwWin32ExitCode
;
97 DWORD dwServiceSpecificExitCode
;
101 DWORD dwServiceFlags
;
102 } SERVICE_STATUS_PROCESS
, *LPSERVICE_STATUS_PROCESS
;
103 typedef enum _SC_STATUS_TYPE
{
104 SC_STATUS_PROCESS_INFO
= 0
106 typedef enum _SC_ENUM_TYPE
{
107 SC_ENUM_PROCESS_INFO
= 0
109 typedef struct _ENUM_SERVICE_STATUSA
{
112 SERVICE_STATUS ServiceStatus
;
113 } ENUM_SERVICE_STATUSA
,*LPENUM_SERVICE_STATUSA
;
114 typedef struct _ENUM_SERVICE_STATUSW
{
115 LPWSTR lpServiceName
;
116 LPWSTR lpDisplayName
;
117 SERVICE_STATUS ServiceStatus
;
118 } ENUM_SERVICE_STATUSW
,*LPENUM_SERVICE_STATUSW
;
119 typedef struct _ENUM_SERVICE_STATUS_PROCESSA
{
122 SERVICE_STATUS_PROCESS ServiceStatusProcess
;
123 } ENUM_SERVICE_STATUS_PROCESSA
,*LPENUM_SERVICE_STATUS_PROCESSA
;
124 typedef struct _ENUM_SERVICE_STATUS_PROCESSW
{
125 LPWSTR lpServiceName
;
126 LPWSTR lpDisplayName
;
127 SERVICE_STATUS_PROCESS ServiceStatusProcess
;
128 } ENUM_SERVICE_STATUS_PROCESSW
,*LPENUM_SERVICE_STATUS_PROCESSW
;
129 typedef struct _QUERY_SERVICE_CONFIGA
{
132 DWORD dwErrorControl
;
133 LPSTR lpBinaryPathName
;
134 LPSTR lpLoadOrderGroup
;
136 LPSTR lpDependencies
;
137 LPSTR lpServiceStartName
;
139 } QUERY_SERVICE_CONFIGA
,*LPQUERY_SERVICE_CONFIGA
;
140 typedef struct _QUERY_SERVICE_CONFIGW
{
143 DWORD dwErrorControl
;
144 LPWSTR lpBinaryPathName
;
145 LPWSTR lpLoadOrderGroup
;
147 LPWSTR lpDependencies
;
148 LPWSTR lpServiceStartName
;
149 LPWSTR lpDisplayName
;
150 } QUERY_SERVICE_CONFIGW
,*LPQUERY_SERVICE_CONFIGW
;
151 typedef struct _QUERY_SERVICE_LOCK_STATUSA
{
154 DWORD dwLockDuration
;
155 } QUERY_SERVICE_LOCK_STATUSA
,*LPQUERY_SERVICE_LOCK_STATUSA
;
156 typedef struct _QUERY_SERVICE_LOCK_STATUSW
{
159 DWORD dwLockDuration
;
160 } QUERY_SERVICE_LOCK_STATUSW
,*LPQUERY_SERVICE_LOCK_STATUSW
;
161 typedef void (WINAPI
*LPSERVICE_MAIN_FUNCTIONA
)(DWORD
,LPSTR
*);
162 typedef void (WINAPI
*LPSERVICE_MAIN_FUNCTIONW
)(DWORD
,LPWSTR
*);
163 typedef struct _SERVICE_TABLE_ENTRYA
{
165 LPSERVICE_MAIN_FUNCTIONA lpServiceProc
;
166 } SERVICE_TABLE_ENTRYA
,*LPSERVICE_TABLE_ENTRYA
;
167 typedef struct _SERVICE_TABLE_ENTRYW
{
168 LPWSTR lpServiceName
;
169 LPSERVICE_MAIN_FUNCTIONW lpServiceProc
;
170 } SERVICE_TABLE_ENTRYW
,*LPSERVICE_TABLE_ENTRYW
;
171 DECLARE_HANDLE(SC_HANDLE
);
172 typedef SC_HANDLE
*LPSC_HANDLE
;
173 typedef PVOID SC_LOCK
;
174 DECLARE_HANDLE(SERVICE_STATUS_HANDLE
);
175 typedef VOID(WINAPI
*LPHANDLER_FUNCTION
)(DWORD
);
176 typedef DWORD (WINAPI
*LPHANDLER_FUNCTION_EX
)(DWORD
,DWORD
,LPVOID
,LPVOID
);
177 typedef struct _SERVICE_DESCRIPTIONA
{
179 } SERVICE_DESCRIPTIONA
,*LPSERVICE_DESCRIPTIONA
;
180 typedef struct _SERVICE_DESCRIPTIONW
{
181 LPWSTR lpDescription
;
182 } SERVICE_DESCRIPTIONW
,*LPSERVICE_DESCRIPTIONW
;
183 typedef enum _SC_ACTION_TYPE
{
185 SC_ACTION_RESTART
= 1,
186 SC_ACTION_REBOOT
= 2,
187 SC_ACTION_RUN_COMMAND
= 3
189 typedef struct _SC_ACTION
{
192 } SC_ACTION
,*LPSC_ACTION
;
193 typedef struct _SERVICE_FAILURE_ACTIONSA
{
198 SC_ACTION
* lpsaActions
;
199 } SERVICE_FAILURE_ACTIONSA
,*LPSERVICE_FAILURE_ACTIONSA
;
200 typedef struct _SERVICE_FAILURE_ACTIONSW
{
205 SC_ACTION
* lpsaActions
;
206 } SERVICE_FAILURE_ACTIONSW
,*LPSERVICE_FAILURE_ACTIONSW
;
208 typedef struct _SERVICE_REQUIRED_PRIVILEGES_INFOA
{
209 LPSTR pmszRequiredPrivileges
;
210 } SERVICE_REQUIRED_PRIVILEGES_INFOA
, *LPSERVICE_REQUIRED_PRIVILEGES_INFOA
;
212 typedef struct _SERVICE_REQUIRED_PRIVILEGES_INFOW
{
213 LPWSTR pmszRequiredPrivileges
;
214 } SERVICE_REQUIRED_PRIVILEGES_INFOW
, *LPSERVICE_REQUIRED_PRIVILEGES_INFOW
;
216 BOOL WINAPI
ChangeServiceConfigA(_In_ SC_HANDLE
, _In_ DWORD
, _In_ DWORD
, _In_ DWORD
, _In_opt_ LPCSTR
, _In_opt_ LPCSTR
, _Out_opt_ LPDWORD
, _In_opt_ LPCSTR
, _In_opt_ LPCSTR
, _In_opt_ LPCSTR
, _In_opt_ LPCSTR
);
217 BOOL WINAPI
ChangeServiceConfigW(_In_ SC_HANDLE
, _In_ DWORD
, _In_ DWORD
, _In_ DWORD
, _In_opt_ LPCWSTR
, _In_opt_ LPCWSTR
, _Out_opt_ LPDWORD
, _In_opt_ LPCWSTR
, _In_opt_ LPCWSTR
, _In_opt_ LPCWSTR
, _In_opt_ LPCWSTR
);
218 BOOL WINAPI
ChangeServiceConfig2A(_In_ SC_HANDLE
, _In_ DWORD
, _In_opt_ LPVOID
);
219 BOOL WINAPI
ChangeServiceConfig2W(_In_ SC_HANDLE
, _In_ DWORD
, _In_opt_ LPVOID
);
220 BOOL WINAPI
CloseServiceHandle(_In_ SC_HANDLE
);
221 BOOL WINAPI
ControlService(_In_ SC_HANDLE
, _In_ DWORD
, _Out_ LPSERVICE_STATUS
);
222 _Must_inspect_result_ SC_HANDLE WINAPI
CreateServiceA(_In_ SC_HANDLE
, _In_ LPCSTR
, _In_opt_ LPCSTR
, _In_ DWORD
, _In_ DWORD
, _In_ DWORD
, _In_ DWORD
, _In_opt_ LPCSTR
, _In_opt_ LPCSTR
, _Out_opt_ PDWORD
, _In_opt_ LPCSTR
, _In_opt_ LPCSTR
, _In_opt_ LPCSTR
);
223 _Must_inspect_result_ SC_HANDLE WINAPI
CreateServiceW(_In_ SC_HANDLE
, _In_ LPCWSTR
, _In_opt_ LPCWSTR
, _In_ DWORD
, _In_ DWORD
, _In_ DWORD
, _In_ DWORD
, _In_opt_ LPCWSTR
, _In_opt_ LPCWSTR
, _Out_opt_ PDWORD
, _In_opt_ LPCWSTR
, _In_opt_ LPCWSTR
, _In_opt_ LPCWSTR
);
224 BOOL WINAPI
DeleteService(_In_ SC_HANDLE
);
226 _Must_inspect_result_
229 EnumDependentServicesA(
230 _In_ SC_HANDLE hService
,
231 _In_ DWORD dwServiceState
,
232 _Out_writes_bytes_opt_(cbBufSize
) LPENUM_SERVICE_STATUSA lpServices
,
233 _In_ DWORD cbBufSize
,
234 _Out_ LPDWORD pcbBytesNeeded
,
235 _Out_ LPDWORD lpServicesReturned
);
237 _Must_inspect_result_
240 EnumDependentServicesW(
241 _In_ SC_HANDLE hService
,
242 _In_ DWORD dwServiceState
,
243 _Out_writes_bytes_opt_(cbBufSize
) LPENUM_SERVICE_STATUSW lpServices
,
244 _In_ DWORD cbBufSize
,
245 _Out_ LPDWORD pcbBytesNeeded
,
246 _Out_ LPDWORD lpServicesReturned
);
248 _Must_inspect_result_
252 _In_ SC_HANDLE hSCManager
,
253 _In_ DWORD dwServiceType
,
254 _In_ DWORD dwServiceState
,
255 _Out_writes_bytes_opt_(cbBufSize
) LPENUM_SERVICE_STATUSA lpServices
,
256 _In_ DWORD cbBufSize
,
257 _Out_ LPDWORD pcbBytesNeeded
,
258 _Out_ LPDWORD lpServicesReturned
,
259 _Inout_opt_ LPDWORD lpResumeHandle
);
261 _Must_inspect_result_
265 _In_ SC_HANDLE hSCManager
,
266 _In_ DWORD dwServiceType
,
267 _In_ DWORD dwServiceState
,
268 _Out_writes_bytes_opt_(cbBufSize
) LPENUM_SERVICE_STATUSW lpServices
,
269 _In_ DWORD cbBufSize
,
270 _Out_ LPDWORD pcbBytesNeeded
,
271 _Out_ LPDWORD lpServicesReturned
,
272 _Inout_opt_ LPDWORD lpResumeHandle
);
274 _Must_inspect_result_
277 EnumServicesStatusExA(
278 _In_ SC_HANDLE hSCManager
,
279 _In_ SC_ENUM_TYPE InfoLevel
,
280 _In_ DWORD dwServiceType
,
281 _In_ DWORD dwServiceState
,
282 _Out_writes_bytes_opt_(cbBufSize
) LPBYTE lpServices
,
283 _In_ DWORD cbBufSize
,
284 _Out_ LPDWORD pcbBytesNeeded
,
285 _Out_ LPDWORD lpServicesReturned
,
286 _Inout_opt_ LPDWORD lpResumeHandle
,
287 _In_opt_ LPCSTR pszGroupName
);
289 _Must_inspect_result_
292 EnumServicesStatusExW(
293 _In_ SC_HANDLE hSCManager
,
294 _In_ SC_ENUM_TYPE InfoLevel
,
295 _In_ DWORD dwServiceType
,
296 _In_ DWORD dwServiceState
,
297 _Out_writes_bytes_opt_(cbBufSize
) LPBYTE lpServices
,
298 _In_ DWORD cbBufSize
,
299 _Out_ LPDWORD pcbBytesNeeded
,
300 _Out_ LPDWORD lpServicesReturned
,
301 _Inout_opt_ LPDWORD lpResumeHandle
,
302 _In_opt_ LPCWSTR pszGroupName
);
304 _Must_inspect_result_
307 GetServiceDisplayNameA(
308 _In_ SC_HANDLE hSCManager
,
309 _In_ LPCSTR lpServiceName
,
310 _Out_writes_opt_(*lpcchBuffer
) LPSTR lpDisplayName
,
311 _Inout_ LPDWORD lpcchBuffer
);
313 _Must_inspect_result_
316 GetServiceDisplayNameW(
317 _In_ SC_HANDLE hSCManager
,
318 _In_ LPCWSTR lpServiceName
,
319 _Out_writes_opt_(*lpcchBuffer
) LPWSTR lpDisplayName
,
320 _Inout_ LPDWORD lpcchBuffer
);
322 _Must_inspect_result_
326 _In_ SC_HANDLE hSCManager
,
327 _In_ LPCSTR lpDisplayName
,
328 _Out_writes_opt_(*lpcchBuffer
) LPSTR lpServiceName
,
329 _Inout_ LPDWORD lpcchBuffer
);
331 _Must_inspect_result_
335 _In_ SC_HANDLE hSCManager
,
336 _In_ LPCWSTR lpDisplayName
,
337 _Out_writes_opt_(*lpcchBuffer
) LPWSTR lpServiceName
,
338 _Inout_ LPDWORD lpcchBuffer
);
340 SC_LOCK WINAPI
LockServiceDatabase(_In_ SC_HANDLE
);
341 BOOL WINAPI
NotifyBootConfigStatus(_In_ BOOL
);
342 _Must_inspect_result_ SC_HANDLE WINAPI
OpenSCManagerA(_In_opt_ LPCSTR
, _In_opt_ LPCSTR
, _In_ DWORD
);
343 _Must_inspect_result_ SC_HANDLE WINAPI
OpenSCManagerW(_In_opt_ LPCWSTR
, _In_opt_ LPCWSTR
, _In_ DWORD
);
344 _Must_inspect_result_ SC_HANDLE WINAPI
OpenServiceA(_In_ SC_HANDLE
, _In_ LPCSTR
, _In_ DWORD
);
345 _Must_inspect_result_ SC_HANDLE WINAPI
OpenServiceW(_In_ SC_HANDLE
, _In_ LPCWSTR
, _In_ DWORD
);
347 _Must_inspect_result_
351 _In_ SC_HANDLE hService
,
352 _Out_writes_bytes_opt_(cbBufSize
) LPQUERY_SERVICE_CONFIGA lpServiceConfig
,
353 _In_ DWORD cbBufSize
,
354 _Out_ LPDWORD pcbBytesNeeded
);
356 _Must_inspect_result_
360 _In_ SC_HANDLE hService
,
361 _Out_writes_bytes_opt_(cbBufSize
) LPQUERY_SERVICE_CONFIGW lpServiceConfig
,
362 _In_ DWORD cbBufSize
,
363 _Out_ LPDWORD pcbBytesNeeded
);
365 _When_(dwInfoLevel
== SERVICE_CONFIG_DESCRIPTION
, _At_(cbBufSize
, _In_range_(>=, sizeof(LPSERVICE_DESCRIPTIONA
))))
366 _When_(dwInfoLevel
== SERVICE_CONFIG_FAILURE_ACTIONS
, _At_(cbBufSize
, _In_range_(>=, sizeof(LPSERVICE_FAILURE_ACTIONSA
))))
367 _When_(dwInfoLevel
== SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO
, _At_(cbBufSize
, _In_range_(>=, sizeof(LPSERVICE_REQUIRED_PRIVILEGES_INFOA
))))
368 _Must_inspect_result_
371 QueryServiceConfig2A(
372 _In_ SC_HANDLE hService
,
373 _In_ DWORD dwInfoLevel
,
374 _Out_writes_bytes_opt_(cbBufSize
) LPBYTE lpBuffer
,
375 _In_ DWORD cbBufSize
,
376 _Out_ LPDWORD pcbBytesNeeded
);
378 _When_(dwInfoLevel
== SERVICE_CONFIG_DESCRIPTION
, _At_(cbBufSize
, _In_range_(>=, sizeof(LPSERVICE_DESCRIPTIONW
))))
379 _When_(dwInfoLevel
== SERVICE_CONFIG_FAILURE_ACTIONS
, _At_(cbBufSize
, _In_range_(>=, sizeof(LPSERVICE_FAILURE_ACTIONSW
))))
380 _When_(dwInfoLevel
== SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO
, _At_(cbBufSize
, _In_range_(>=, sizeof(LPSERVICE_REQUIRED_PRIVILEGES_INFOW
))))
381 _Must_inspect_result_
384 QueryServiceConfig2W(
385 _In_ SC_HANDLE hService
,
386 _In_ DWORD dwInfoLevel
,
387 _Out_writes_bytes_opt_(cbBufSize
) LPBYTE lpBuffer
,
388 _In_ DWORD cbBufSize
,
389 _Out_ LPDWORD pcbBytesNeeded
);
391 _Must_inspect_result_
394 QueryServiceLockStatusA(
395 _In_ SC_HANDLE hSCManager
,
396 _Out_writes_bytes_opt_(cbBufSize
) LPQUERY_SERVICE_LOCK_STATUSA lpLockStatus
,
397 _In_ DWORD cbBufSize
,
398 _Out_ LPDWORD pcbBytesNeeded
);
400 _Must_inspect_result_
403 QueryServiceLockStatusW(
404 _In_ SC_HANDLE hSCManager
,
405 _Out_writes_bytes_opt_(cbBufSize
) LPQUERY_SERVICE_LOCK_STATUSW lpLockStatus
,
406 _In_ DWORD cbBufSize
,
407 _Out_ LPDWORD pcbBytesNeeded
);
409 _Must_inspect_result_
412 QueryServiceObjectSecurity(
413 _In_ SC_HANDLE hService
,
414 _In_ SECURITY_INFORMATION dwSecurityInformation
,
415 _Out_writes_bytes_opt_(cbBufSize
) PSECURITY_DESCRIPTOR lpSecurityDescriptor
,
416 _In_ DWORD cbBufSize
,
417 _Out_ LPDWORD pcbBytesNeeded
);
419 _Must_inspect_result_ BOOL WINAPI
QueryServiceStatus(_In_ SC_HANDLE
, _Out_ LPSERVICE_STATUS
);
421 _Must_inspect_result_
424 QueryServiceStatusEx(
425 _In_ SC_HANDLE hService
,
426 _In_ SC_STATUS_TYPE InfoLevel
,
427 _Out_writes_bytes_opt_(cbBufSize
) LPBYTE lpBuffer
,
428 _In_ DWORD cbBufSize
,
429 _Out_ LPDWORD pcbBytesNeeded
);
431 _Must_inspect_result_ SERVICE_STATUS_HANDLE WINAPI
RegisterServiceCtrlHandlerA(_In_ LPCSTR
, _In_ LPHANDLER_FUNCTION
);
432 _Must_inspect_result_ SERVICE_STATUS_HANDLE WINAPI
RegisterServiceCtrlHandlerW(_In_ LPCWSTR
, _In_ LPHANDLER_FUNCTION
);
433 _Must_inspect_result_ SERVICE_STATUS_HANDLE WINAPI
RegisterServiceCtrlHandlerExA(_In_ LPCSTR
, _In_ LPHANDLER_FUNCTION_EX
, _In_opt_ LPVOID
);
434 _Must_inspect_result_ SERVICE_STATUS_HANDLE WINAPI
RegisterServiceCtrlHandlerExW(_In_ LPCWSTR
, _In_ LPHANDLER_FUNCTION_EX
, _In_opt_ LPVOID
);
435 BOOL WINAPI
SetServiceObjectSecurity(_In_ SC_HANDLE
, _In_ SECURITY_INFORMATION
, _In_ PSECURITY_DESCRIPTOR
);
436 BOOL WINAPI
SetServiceStatus(_In_ SERVICE_STATUS_HANDLE
, _In_ LPSERVICE_STATUS
);
441 _In_ SC_HANDLE hService
,
442 _In_ DWORD dwNumServiceArgs
,
443 _In_reads_opt_(dwNumServiceArgs
) LPCSTR
*lpServiceArgVectors
);
448 _In_ SC_HANDLE hService
,
449 _In_ DWORD dwNumServiceArgs
,
450 _In_reads_opt_(dwNumServiceArgs
) LPCWSTR
*lpServiceArgVectors
);
452 BOOL WINAPI
StartServiceCtrlDispatcherA(_In_
const SERVICE_TABLE_ENTRYA
*);
453 BOOL WINAPI
StartServiceCtrlDispatcherW(_In_
const SERVICE_TABLE_ENTRYW
*);
454 BOOL WINAPI
UnlockServiceDatabase(_In_ SC_LOCK
);
457 typedef ENUM_SERVICE_STATUSW ENUM_SERVICE_STATUS
,*LPENUM_SERVICE_STATUS
;
458 typedef ENUM_SERVICE_STATUS_PROCESSW ENUM_SERVICE_STATUS_PROCESS
;
459 typedef LPENUM_SERVICE_STATUS_PROCESSW LPENUM_SERVICE_STATUS_PROCESS
;
460 typedef QUERY_SERVICE_CONFIGW QUERY_SERVICE_CONFIG
,*LPQUERY_SERVICE_CONFIG
;
461 typedef QUERY_SERVICE_LOCK_STATUSW QUERY_SERVICE_LOCK_STATUS
,*LPQUERY_SERVICE_LOCK_STATUS
;
462 typedef SERVICE_TABLE_ENTRYW SERVICE_TABLE_ENTRY
,*LPSERVICE_TABLE_ENTRY
;
463 typedef LPSERVICE_MAIN_FUNCTIONW LPSERVICE_MAIN_FUNCTION
;
464 typedef SERVICE_DESCRIPTIONW SERVICE_DESCRIPTION
;
465 typedef LPSERVICE_DESCRIPTIONW LPSERVICE_DESCRIPTION
;
466 typedef SERVICE_FAILURE_ACTIONSW SERVICE_FAILURE_ACTIONS
;
467 typedef LPSERVICE_FAILURE_ACTIONSW LPSERVICE_FAILURE_ACTIONS
;
468 typedef SERVICE_REQUIRED_PRIVILEGES_INFOW SERVICE_REQUIRED_PRIVILEGES_INFO
;
469 typedef LPSERVICE_REQUIRED_PRIVILEGES_INFOW LPSERVICE_REQUIRED_PRIVILEGES_INFO
;
470 #define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEW
471 #define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEW
472 #define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERW
473 #define ChangeServiceConfig ChangeServiceConfigW
474 #define ChangeServiceConfig2 ChangeServiceConfig2W
475 #define CreateService CreateServiceW
476 #define EnumDependentServices EnumDependentServicesW
477 #define EnumServicesStatus EnumServicesStatusW
478 #define EnumServicesStatusEx EnumServicesStatusExW
479 #define GetServiceDisplayName GetServiceDisplayNameW
480 #define GetServiceKeyName GetServiceKeyNameW
481 #define OpenSCManager OpenSCManagerW
482 #define OpenService OpenServiceW
483 #define QueryServiceConfig QueryServiceConfigW
484 #define QueryServiceConfig2 QueryServiceConfig2W
485 #define QueryServiceLockStatus QueryServiceLockStatusW
486 #define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerW
487 #define RegisterServiceCtrlHandlerEx RegisterServiceCtrlHandlerExW
488 #define StartService StartServiceW
489 #define StartServiceCtrlDispatcher StartServiceCtrlDispatcherW
491 typedef ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS
,*LPENUM_SERVICE_STATUS
;
492 typedef ENUM_SERVICE_STATUS_PROCESSA ENUM_SERVICE_STATUS_PROCESS
;
493 typedef LPENUM_SERVICE_STATUS_PROCESSA LPENUM_SERVICE_STATUS_PROCESS
;
494 typedef QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG
,*LPQUERY_SERVICE_CONFIG
;
495 typedef QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS
,*LPQUERY_SERVICE_LOCK_STATUS
;
496 typedef SERVICE_TABLE_ENTRYA SERVICE_TABLE_ENTRY
,*LPSERVICE_TABLE_ENTRY
;
497 typedef LPSERVICE_MAIN_FUNCTIONA LPSERVICE_MAIN_FUNCTION
;
498 typedef SERVICE_DESCRIPTIONA SERVICE_DESCRIPTION
;
499 typedef LPSERVICE_DESCRIPTIONA LPSERVICE_DESCRIPTION
;
500 typedef SERVICE_FAILURE_ACTIONSA SERVICE_FAILURE_ACTIONS
;
501 typedef LPSERVICE_FAILURE_ACTIONSA LPSERVICE_FAILURE_ACTIONS
;
502 typedef SERVICE_REQUIRED_PRIVILEGES_INFOA SERVICE_REQUIRED_PRIVILEGES_INFO
;
503 typedef LPSERVICE_REQUIRED_PRIVILEGES_INFOA LPSERVICE_REQUIRED_PRIVILEGES_INFO
;
504 #define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEA
505 #define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEA
506 #define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERA
507 #define ChangeServiceConfig ChangeServiceConfigA
508 #define ChangeServiceConfig2 ChangeServiceConfig2A
509 #define CreateService CreateServiceA
510 #define EnumDependentServices EnumDependentServicesA
511 #define EnumServicesStatus EnumServicesStatusA
512 #define EnumServicesStatusEx EnumServicesStatusExA
513 #define GetServiceDisplayName GetServiceDisplayNameA
514 #define GetServiceKeyName GetServiceKeyNameA
515 #define OpenSCManager OpenSCManagerA
516 #define OpenService OpenServiceA
517 #define QueryServiceConfig QueryServiceConfigA
518 #define QueryServiceConfig2 QueryServiceConfig2A
519 #define QueryServiceLockStatus QueryServiceLockStatusA
520 #define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerA
521 #define RegisterServiceCtrlHandlerEx RegisterServiceCtrlHandlerExA
522 #define StartService StartServiceA
523 #define StartServiceCtrlDispatcher StartServiceCtrlDispatcherA
528 #endif /* _WINSVC_H */