4 svcctl interface definitions
7 [ uuid("367abb81-9844-35f1-ad32-98f038001003"),
9 pointer_default(unique),
10 endpoint("ncacn_np:[\\pipe\\svcctl]", "ncalrpc:"),
11 helpstring("Service Control")
16 [string,charset
(UTF16
)] uint16
*lock_owner
;
18 } SERVICE_LOCK_STATUS
;
23 uint32 controls_accepted
;
24 WERROR win32_exit_code
;
25 uint32 service_exit_code
;
31 [relative
] astring
*service_name
;
32 [relative
] astring
*display_name
;
33 SERVICE_STATUS status
;
34 } ENUM_SERVICE_STATUS
;
36 const int SERVICE_TYPE_KERNEL_DRIVER
= 0x01;
37 const int SERVICE_TYPE_FS_DRIVER
= 0x02;
38 const int SERVICE_TYPE_ADAPTER
= 0x04;
39 const int SERVICE_TYPE_RECOGNIZER_DRIVER
= 0x08;
40 const int SERVICE_TYPE_DRIVER
=SERVICE_TYPE_KERNEL_DRIVER|SERVICE_TYPE_FS_DRIVER|SERVICE_TYPE_RECOGNIZER_DRIVER
;
41 const int SERVICE_TYPE_WIN32_OWN_PROCESS
= 0x10;
42 const int SERVICE_TYPE_WIN32_SHARE_PROCESS
= 0x20;
43 const int SERVICE_TYPE_WIN32
=SERVICE_TYPE_WIN32_OWN_PROCESS|SERVICE_TYPE_WIN32_SHARE_PROCESS
;
45 const int SERVICE_STATE_ACTIVE
= 0x01;
46 const int SERVICE_STATE_INACTIVE
= 0x02;
47 const int SERVICE_STATE_ALL
= 0x03;
49 typedef [public,bitmap32bit
] bitmap
{
50 SV_TYPE_WORKSTATION
= 0x00000001,
51 SV_TYPE_SERVER
= 0x00000002,
52 SV_TYPE_SQLSERVER
= 0x00000004,
53 SV_TYPE_DOMAIN_CTRL
= 0x00000008,
54 SV_TYPE_DOMAIN_BAKCTRL
= 0x00000010,
55 SV_TYPE_TIME_SOURCE
= 0x00000020,
56 SV_TYPE_AFP
= 0x00000040,
57 SV_TYPE_NOVELL
= 0x00000080,
59 SV_TYPE_DOMAIN_MEMBER
= 0x00000100,
60 SV_TYPE_PRINTQ_SERVER
= 0x00000200,
61 SV_TYPE_DIALIN_SERVER
= 0x00000400,
62 SV_TYPE_SERVER_UNIX
= 0x00000800,
63 SV_TYPE_NT
= 0x00001000,
64 SV_TYPE_WFW
= 0x00002000,
65 SV_TYPE_SERVER_MFPN
= 0x00004000,
66 SV_TYPE_SERVER_NT
= 0x00008000,
67 SV_TYPE_POTENTIAL_BROWSER
= 0x00010000,
68 SV_TYPE_BACKUP_BROWSER
= 0x00020000,
69 SV_TYPE_MASTER_BROWSER
= 0x00040000,
70 SV_TYPE_DOMAIN_MASTER
= 0x00080000,
71 SV_TYPE_SERVER_OSF
= 0x00100000,
72 SV_TYPE_SERVER_VMS
= 0x00200000,
73 SV_TYPE_WIN95_PLUS
= 0x00400000,
74 SV_TYPE_DFS_SERVER
= 0x00800000,
75 SV_TYPE_ALTERNATE_XPORT
= 0x20000000,
76 SV_TYPE_LOCAL_LIST_ONLY
= 0x40000000,
77 SV_TYPE_DOMAIN_ENUM
= 0x80000000
80 const uint32 SV_TYPE_ALL
= 0xFFFFFFFF;
84 WERROR svcctl_CloseServiceHandle
(
85 [in,out,ref] policy_handle
*handle
95 WERROR svcctl_ControlService
(
96 [in,ref] policy_handle
*handle,
98 [out,ref] SERVICE_STATUS
*service_status
103 WERROR svcctl_DeleteService
(
104 [in,ref] policy_handle
*handle
110 WERROR svcctl_LockServiceDatabase
(
111 [in,ref] policy_handle
*handle,
112 [out,ref] policy_handle
*lock
117 WERROR svcctl_QueryServiceObjectSecurity
(
118 [in] policy_handle
*handle,
119 [in] uint32 security_flags
,
120 [out,ref,size_is(buffer_size
)] uint8
*buffer
,
121 [in,range(0,0x40000)] uint32 buffer_size
,
122 [out,ref,range(0,0x40000)] uint32
*needed
127 WERROR svcctl_SetServiceObjectSecurity
(
128 [in] policy_handle
*handle,
129 [in] uint32 security_flags
,
130 [in,ref,size_is(buffer_size
)] uint8
*buffer
,
131 [in] uint32 buffer_size
136 WERROR svcctl_QueryServiceStatus
(
137 [in,ref] policy_handle
*handle,
138 [out,ref] SERVICE_STATUS
*service_status
143 WERROR svcctl_SetServiceStatus
(
148 WERROR svcctl_UnlockServiceDatabase
(
149 [in,out,ref] policy_handle
*lock
154 WERROR svcctl_NotifyBootConfigStatus
(
159 WERROR svcctl_SCSetServiceBitsW
(
160 [in,ref] policy_handle
*handle,
162 [in] boolean32 bitson
,
163 [in] boolean32 immediate
168 WERROR svcctl_ChangeServiceConfigW
(
169 [in,ref] policy_handle
*handle,
173 [in,unique] [string,charset
(UTF16
)] uint16
*binary_path
,
174 [in,unique] [string,charset
(UTF16
)] uint16
*load_order_group
,
175 [out,ref] uint32
*tag_id
,
176 [in,unique] [string,charset
(UTF16
)] uint16
*dependencies
,
177 [in,unique] [string,charset
(UTF16
)] uint16
*service_start_name
,
178 [in,unique] [string,charset
(UTF16
)] uint16
*password
,
179 [in,unique] [string,charset
(UTF16
)] uint16
*display_name
184 WERROR svcctl_CreateServiceW
(
185 [in,ref] policy_handle
*scmanager_handle
,
186 [in] [string,charset
(UTF16
)] uint16 ServiceName
[],
187 [in,unique] [string,charset
(UTF16
)] uint16
*DisplayName
,
188 [in] uint32 desired_access
,
190 [in] uint32 start_type
,
191 [in] uint32 error_control
,
192 [in] [string,charset
(UTF16
)] uint16 binary_path
[],
193 [in,unique] [string,charset
(UTF16
)] uint16
*LoadOrderGroupKey
,
194 [in,out,unique] uint32
*TagId
,
195 [in,unique,size_is(dependencies_size
)] uint8
*dependencies
,
196 [in] uint32 dependencies_size
,
197 [in,unique] [string,charset
(UTF16
)] uint16
*service_start_name
,
198 [in,unique,size_is(password_size
)] uint8
*password
,
199 [in] uint32 password_size
,
200 [out,ref] policy_handle
*handle
205 WERROR svcctl_EnumDependentServicesW
(
206 [in,ref] policy_handle
*service
,
208 [out,unique] ENUM_SERVICE_STATUS
*service_status
,
209 [in] uint32 buf_size
,
210 [out,ref] uint32
*bytes_needed
,
211 [out,ref] uint32
*services_returned
216 WERROR svcctl_EnumServicesStatusW
(
217 [in,ref] policy_handle
*handle,
220 [in] uint32 buf_size
,
221 [out,size_is(buf_size
)] uint8 service
[*],
222 [out,ref] uint32
*bytes_needed
,
223 [out,ref] uint32
*services_returned
,
224 [in,out,unique] uint32
*resume_handle
229 WERROR svcctl_OpenSCManagerW
(
230 [in,unique] [string,charset
(UTF16
)] uint16
*MachineName
,
231 [in,unique] [string,charset
(UTF16
)] uint16
*DatabaseName
,
232 [in] uint32 access_mask
,
233 [out,ref] policy_handle
*handle
238 WERROR svcctl_OpenServiceW
(
239 [in,ref] policy_handle
*scmanager_handle
,
240 [in] [string,charset
(UTF16
)] uint16 ServiceName
[],
241 [in] uint32 access_mask
,
242 [out,ref] policy_handle
*handle
247 WERROR svcctl_QueryServiceConfigW
(
248 [in,ref] policy_handle
*handle,
249 [out] uint8 query
[buf_size
], /*QUERY_SERVICE_CONFIG */
250 [in] uint32 buf_size
,
251 [out,ref] uint32
*bytes_needed
256 WERROR svcctl_QueryServiceLockStatusW
(
257 [in,ref] policy_handle
*handle,
258 [in] uint32 buf_size
,
259 [out,ref] SERVICE_LOCK_STATUS
*lock_status
,
260 [out,ref] uint32
*required_buf_size
265 WERROR svcctl_StartServiceW
(
266 [in,ref] policy_handle
*handle,
268 [in,unique/*FIXME:,length_is(NumArgs)*/] [string,charset
(UTF16
)] uint16
*Arguments
273 WERROR svcctl_GetServiceDisplayNameW
(
274 [in,ref] policy_handle
*handle,
275 [in,unique] [string,charset
(UTF16
)] uint16
*service_name
,
276 [out,ref] [string,charset
(UTF16
)] uint16
**display_name
,
277 [in,out,unique] uint32
*display_name_length
282 WERROR svcctl_GetServiceKeyNameW
(
283 [in,ref] policy_handle
*handle,
284 [in,unique] [string,charset
(UTF16
)] uint16
*service_name
,
285 [out,ref] [string,charset
(UTF16
)] uint16
**key_name
,
286 [in,out,unique] uint32
*display_name_length
291 WERROR svcctl_SCSetServiceBitsA
(
292 [in,ref] policy_handle
*handle,
294 [in] boolean32 bitson
,
295 [in] boolean32 immediate
300 WERROR svcctl_ChangeServiceConfigA
(
301 [in,ref] policy_handle
*handle,
305 [in,unique] [string,charset
(UTF16
)] uint16
*binary_path
,
306 [in,unique] [string,charset
(UTF16
)] uint16
*load_order_group
,
307 [out,ref] uint32
*tag_id
,
308 [in,unique] [string,charset
(UTF16
)] uint16
*dependencies
,
309 [in,unique] [string,charset
(UTF16
)] uint16
*service_start_name
,
310 [in,unique] [string,charset
(UTF16
)] uint16
*password
,
311 [in,unique] [string,charset
(UTF16
)] uint16
*display_name
316 WERROR svcctl_CreateServiceA
(
317 [in,ref] policy_handle
*handle,
318 [in,unique] [string,charset
(UTF16
)] uint16
*ServiceName
,
319 [in,unique] [string,charset
(UTF16
)] uint16
*DisplayName
,
320 [in] uint32 desired_access
,
322 [in] uint32 start_type
,
323 [in] uint32 error_control
,
324 [in,unique] [string,charset
(UTF16
)] uint16
*binary_path
,
325 [in,unique] [string,charset
(UTF16
)] uint16
*LoadOrderGroupKey
,
326 [out,unique] uint32
*TagId
,
327 [in,unique] [string,charset
(UTF16
)] uint16
*dependencies
,
328 [in,unique] [string,charset
(UTF16
)] uint16
*service_start_name
,
329 [in,unique] [string,charset
(UTF16
)] uint16
*password
334 WERROR svcctl_EnumDependentServicesA
(
335 [in,ref] policy_handle
*service
,
337 [out,unique] ENUM_SERVICE_STATUS
*service_status
,
338 [in] uint32 buf_size
,
339 [out,ref] uint32
*bytes_needed
,
340 [out,ref] uint32
*services_returned
345 WERROR svcctl_EnumServicesStatusA
(
346 [in,ref] policy_handle
*handle,
349 [in] uint32 buf_size
,
350 [out,size_is(buf_size
)] uint8 service
[*],
351 [out,ref] uint32
*bytes_needed
,
352 [out,ref] uint32
*services_returned
,
353 [in,out,unique] uint32
*resume_handle
358 WERROR svcctl_OpenSCManagerA
(
359 [in,unique] [string,charset
(UTF16
)] uint16
*MachineName
,
360 [in,unique] [string,charset
(UTF16
)] uint16
*DatabaseName
,
361 [in] uint32 access_mask
,
362 [out,ref] policy_handle
*handle
367 WERROR svcctl_OpenServiceA
(
368 [in,ref] policy_handle
*scmanager_handle
,
369 [in,unique] [string,charset
(UTF16
)] uint16
*ServiceName
,
370 [in] uint32 access_mask
375 WERROR svcctl_QueryServiceConfigA
(
376 [in,ref] policy_handle
*handle,
377 [out] uint8 query
[buf_size
], /*QUERYU_SERVICE_CONFIG */
378 [in] uint32 buf_size
,
379 [out,ref] uint32
*bytes_needed
384 WERROR svcctl_QueryServiceLockStatusA
(
385 [in,ref] policy_handle
*handle,
386 [in] uint32 buf_size
,
387 [out,ref] SERVICE_LOCK_STATUS
*lock_status
,
388 [out,ref] uint32
*required_buf_size
393 WERROR svcctl_StartServiceA
(
394 [in,ref] policy_handle
*handle,
396 [in,unique/*FIXME:,length_is(NumArgs)*/] [string,charset
(UTF16
)] uint16
*Arguments
401 WERROR svcctl_GetServiceDisplayNameA
(
402 [in,ref] policy_handle
*handle,
403 [in,unique] [string,charset
(UTF16
)] uint16
*service_name
,
404 [out,ref] [string,charset
(UTF16
)] uint16
**display_name
,
405 [in,out,unique] uint32
*display_name_length
410 WERROR svcctl_GetServiceKeyNameA
(
411 [in,ref] policy_handle
*handle,
412 [in,unique] [string,charset
(UTF16
)] uint16
*service_name
,
413 [out,ref] [string,charset
(UTF16
)] uint16
**key_name
,
414 [in,out,unique] uint32
*display_name_length
419 WERROR svcctl_GetCurrentGroupeStateW
(
424 WERROR svcctl_EnumServiceGroupW
(
429 WERROR svcctl_ChangeServiceConfig2A
(
430 [in,ref] policy_handle
*handle,
431 [in] uint32 info_level
,
432 [in,unique] uint8
*info
437 WERROR svcctl_ChangeServiceConfig2W
(
438 [in,ref] policy_handle
*handle,
439 [in] uint32 info_level
,
440 [in,unique] uint8
*info
445 WERROR svcctl_QueryServiceConfig2A
(
446 [in,ref] policy_handle
*handle,
447 [in] uint32 info_level
,
448 [out] uint8 buffer
[buf_size
],
449 [in] uint32 buf_size
,
450 [out,ref] uint32
*bytes_needed
455 WERROR svcctl_QueryServiceConfig2W
(
456 [in,ref] policy_handle
*handle,
457 [in] uint32 info_level
,
458 [out] uint8 buffer
[buf_size
],
459 [in] uint32 buf_size
,
460 [out,ref] uint32
*bytes_needed
465 WERROR svcctl_QueryServiceStatusEx
(
466 [in,ref] policy_handle
*handle,
467 [in] uint32 info_level
,
468 [out] uint8 buffer
[buf_size
],
469 [in] uint32 buf_size
,
470 [out,ref] uint32
*bytes_needed
475 WERROR EnumServicesStatusExA
(
476 [in,ref] policy_handle
*scmanager
,
477 [in] uint32 info_level
,
480 [out] uint8 services
[buf_size
],
481 [in] uint32 buf_size
,
482 [out,ref] uint32
*bytes_needed
,
483 [out,ref] uint32
*service_returned
,
484 [in,out,unique] uint32
*resume_handle
,
485 [out,ref] [string,charset
(UTF16
)] uint16
**group_name
490 WERROR EnumServicesStatusExW
(
491 [in,ref] policy_handle
*scmanager
,
492 [in] uint32 info_level
,
495 [out] uint8 services
[buf_size
],
496 [in] uint32 buf_size
,
497 [out,ref] uint32
*bytes_needed
,
498 [out,ref] uint32
*service_returned
,
499 [in,out,unique] uint32
*resume_handle
,
500 [out,ref] [string,charset
(UTF16
)] uint16
**group_name
505 WERROR svcctl_SCSendTSMessage
(