netlogon: add 8bit varients of netr_SamDatabaseID8Bit and netr_DeltaEnum.
[Samba.git] / source / librpc / idl / svcctl.idl
blob8ddf3a70975da971b47b998338a37410e92df6b7
1 #include "idl_types.h"
3 /*
4 svcctl interface definitions
5 */
7 [ uuid("367abb81-9844-35f1-ad32-98f038001003"),
8 version(2.0),
9 pointer_default(unique),
10 endpoint("ncacn_np:[\\pipe\\svcctl]", "ncalrpc:"),
11 helpstring("Service Control")
12 ] interface svcctl
14 typedef struct {
15 uint32 is_locked;
16 [string,charset(UTF16)] uint16 *lock_owner;
17 uint32 lock_duration;
18 } SERVICE_LOCK_STATUS;
20 typedef struct {
21 uint32 type;
22 uint32 state;
23 uint32 controls_accepted;
24 WERROR win32_exit_code;
25 uint32 service_exit_code;
26 uint32 check_point;
27 uint32 wait_hint;
28 } SERVICE_STATUS;
30 typedef struct {
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
78 } svcctl_ServerType;
80 const uint32 SV_TYPE_ALL = 0xFFFFFFFF;
82 /*****************/
83 /* Function 0x00 */
84 WERROR svcctl_CloseServiceHandle(
85 [in,out,ref] policy_handle *handle
88 /*****************/
89 /* Function 0x01 */
91 typedef enum {
92 FIXME=1
93 } SERVICE_CONTROL;
95 WERROR svcctl_ControlService(
96 [in,ref] policy_handle *handle,
97 [in] uint32 control,
98 [out,ref] SERVICE_STATUS *service_status
101 /*****************/
102 /* Function 0x02 */
103 WERROR svcctl_DeleteService(
104 [in,ref] policy_handle *handle
107 /*****************/
108 /* Function 0x03 */
110 WERROR svcctl_LockServiceDatabase(
111 [in,ref] policy_handle *handle,
112 [out,ref] policy_handle *lock
115 /*****************/
116 /* Function 0x04 */
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
125 /*****************/
126 /* Function 0x05 */
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
134 /*****************/
135 /* Function 0x06 */
136 WERROR svcctl_QueryServiceStatus(
137 [in,ref] policy_handle *handle,
138 [out,ref] SERVICE_STATUS *service_status
141 /*****************/
142 /* Function 0x07 */
143 WERROR svcctl_SetServiceStatus(
146 /*****************/
147 /* Function 0x08 */
148 WERROR svcctl_UnlockServiceDatabase(
149 [in,out,ref] policy_handle *lock
152 /*****************/
153 /* Function 0x09 */
154 WERROR svcctl_NotifyBootConfigStatus(
157 /*****************/
158 /* Function 0x0a */
159 WERROR svcctl_SCSetServiceBitsW(
160 [in,ref] policy_handle *handle,
161 [in] uint32 bits,
162 [in] boolean32 bitson,
163 [in] boolean32 immediate
166 /*****************/
167 /* Function 0x0b */
168 WERROR svcctl_ChangeServiceConfigW(
169 [in,ref] policy_handle *handle,
170 [in] uint32 type,
171 [in] uint32 start,
172 [in] uint32 error,
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
182 /*****************/
183 /* Function 0x0c */
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,
189 [in] uint32 type,
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
203 /*****************/
204 /* Function 0x0d */
205 WERROR svcctl_EnumDependentServicesW(
206 [in,ref] policy_handle *service,
207 [in] uint32 state,
208 [out,ref,size_is(buf_size)] uint8 *service_status,
209 [in,range(0,0x40000)] uint32 buf_size,
210 [out,ref,range(0,0x40000)] uint32 *bytes_needed,
211 [out,ref,range(0,0x40000)] uint32 *services_returned
214 /*****************/
215 /* Function 0x0e */
216 WERROR svcctl_EnumServicesStatusW(
217 [in,ref] policy_handle *handle,
218 [in] uint32 type,
219 [in] uint32 state,
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
227 /*****************/
228 /* Function 0x0f */
229 typedef [bitmap32bit] bitmap {
230 SC_RIGHT_MGR_CONNECT = 0x0001,
231 SC_RIGHT_MGR_CREATE_SERVICE = 0x0002,
232 SC_RIGHT_MGR_ENUMERATE_SERVICE = 0x0004,
233 SC_RIGHT_MGR_LOCK = 0x0008,
234 SC_RIGHT_MGR_QUERY_LOCK_STATUS = 0x0010,
235 SC_RIGHT_MGR_MODIFY_BOOT_CONFIG = 0x0020
236 } svcctl_MgrAccessMask;
238 WERROR svcctl_OpenSCManagerW(
239 [in,unique] [string,charset(UTF16)] uint16 *MachineName,
240 [in,unique] [string,charset(UTF16)] uint16 *DatabaseName,
241 [in] svcctl_MgrAccessMask access_mask,
242 [out,ref] policy_handle *handle
245 /*****************/
246 /* Function 0x10 */
247 typedef [bitmap32bit] bitmap {
248 SC_RIGHT_SVC_QUERY_CONFIG = 0x0001,
249 SC_RIGHT_SVC_CHANGE_CONFIG = 0x0002,
250 SC_RIGHT_SVC_QUERY_STATUS = 0x0004,
251 SC_RIGHT_SVC_ENUMERATE_DEPENDENTS = 0x0008,
252 SC_RIGHT_SVC_START = 0x0010,
253 SC_RIGHT_SVC_STOP = 0x0020,
254 SC_RIGHT_SVC_PAUSE_CONTINUE = 0x0040,
255 SC_RIGHT_SVC_INTERROGATE = 0x0080,
256 SC_RIGHT_SVC_USER_DEFINED_CONTROL = 0x0100
257 } svcctl_ServiceAccessMask;
259 WERROR svcctl_OpenServiceW(
260 [in,ref] policy_handle *scmanager_handle,
261 [in] [string,charset(UTF16)] uint16 ServiceName[],
262 [in] svcctl_ServiceAccessMask access_mask,
263 [out,ref] policy_handle *handle
266 /*****************/
267 /* Function 0x11 */
269 typedef [public,gensize] struct {
270 uint32 service_type;
271 uint32 start_type;
272 uint32 error_control;
273 [string,charset(UTF16)] [range(0,8192)] uint16 *executablepath;
274 [string,charset(UTF16)] [range(0,8192)] uint16 *loadordergroup;
275 uint32 tag_id;
276 [string,charset(UTF16)] [range(0,8192)] uint16 *dependencies;
277 [string,charset(UTF16)] [range(0,8192)] uint16 *startname;
278 [string,charset(UTF16)] [range(0,8192)] uint16 *displayname;
279 } QUERY_SERVICE_CONFIG;
281 WERROR svcctl_QueryServiceConfigW(
282 [in,ref] policy_handle *handle,
283 [out] QUERY_SERVICE_CONFIG *query,
284 [in] [range(0,8192)] uint32 buf_size,
285 [out,ref] [range(0,8192)] uint32 *bytes_needed
288 /*****************/
289 /* Function 0x12 */
290 WERROR svcctl_QueryServiceLockStatusW(
291 [in,ref] policy_handle *handle,
292 [in] uint32 buf_size,
293 [out,ref] SERVICE_LOCK_STATUS *lock_status,
294 [out,ref] uint32 *required_buf_size
297 /*****************/
298 /* Function 0x13 */
299 WERROR svcctl_StartServiceW(
300 [in,ref] policy_handle *handle,
301 [in] uint32 NumArgs,
302 [in,unique/*FIXME:,length_is(NumArgs)*/] [string,charset(UTF16)] uint16 *Arguments
305 /*****************/
306 /* Function 0x14 */
307 WERROR svcctl_GetServiceDisplayNameW(
308 [in,ref] policy_handle *handle,
309 [in,unique] [string,charset(UTF16)] uint16 *service_name,
310 [out,ref] [string,charset(UTF16)] uint16 **display_name,
311 [in,out,unique] uint32 *display_name_length
314 /*****************/
315 /* Function 0x15 */
316 WERROR svcctl_GetServiceKeyNameW(
317 [in,ref] policy_handle *handle,
318 [in,unique] [string,charset(UTF16)] uint16 *service_name,
319 [out,ref] [string,charset(UTF16)] uint16 **key_name,
320 [in,out,unique] uint32 *display_name_length
323 /*****************/
324 /* Function 0x16 */
325 WERROR svcctl_SCSetServiceBitsA(
326 [in,ref] policy_handle *handle,
327 [in] uint32 bits,
328 [in] boolean32 bitson,
329 [in] boolean32 immediate
332 /*****************/
333 /* Function 0x17 */
334 WERROR svcctl_ChangeServiceConfigA(
335 [in,ref] policy_handle *handle,
336 [in] uint32 type,
337 [in] uint32 start,
338 [in] uint32 error,
339 [in,unique] [string,charset(UTF16)] uint16 *binary_path,
340 [in,unique] [string,charset(UTF16)] uint16 *load_order_group,
341 [out,ref] uint32 *tag_id,
342 [in,unique] [string,charset(UTF16)] uint16 *dependencies,
343 [in,unique] [string,charset(UTF16)] uint16 *service_start_name,
344 [in,unique] [string,charset(UTF16)] uint16 *password,
345 [in,unique] [string,charset(UTF16)] uint16 *display_name
348 /*****************/
349 /* Function 0x18 */
350 WERROR svcctl_CreateServiceA(
351 [in,ref] policy_handle *handle,
352 [in,unique] [string,charset(UTF16)] uint16 *ServiceName,
353 [in,unique] [string,charset(UTF16)] uint16 *DisplayName,
354 [in] uint32 desired_access,
355 [in] uint32 type,
356 [in] uint32 start_type,
357 [in] uint32 error_control,
358 [in,unique] [string,charset(UTF16)] uint16 *binary_path,
359 [in,unique] [string,charset(UTF16)] uint16 *LoadOrderGroupKey,
360 [out,unique] uint32 *TagId,
361 [in,unique] [string,charset(UTF16)] uint16 *dependencies,
362 [in,unique] [string,charset(UTF16)] uint16 *service_start_name,
363 [in,unique] [string,charset(UTF16)] uint16 *password
366 /*****************/
367 /* Function 0x19 */
368 WERROR svcctl_EnumDependentServicesA(
369 [in,ref] policy_handle *service,
370 [in] uint32 state,
371 [out,unique] ENUM_SERVICE_STATUS *service_status,
372 [in] uint32 buf_size,
373 [out,ref] uint32 *bytes_needed,
374 [out,ref] uint32 *services_returned
377 /*****************/
378 /* Function 0x1a */
379 WERROR svcctl_EnumServicesStatusA(
380 [in,ref] policy_handle *handle,
381 [in] uint32 type,
382 [in] uint32 state,
383 [in] uint32 buf_size,
384 [out,size_is(buf_size)] uint8 service[*],
385 [out,ref] uint32 *bytes_needed,
386 [out,ref] uint32 *services_returned,
387 [in,out,unique] uint32 *resume_handle
390 /*****************/
391 /* Function 0x1b */
392 WERROR svcctl_OpenSCManagerA(
393 [in,unique] [string,charset(UTF16)] uint16 *MachineName,
394 [in,unique] [string,charset(UTF16)] uint16 *DatabaseName,
395 [in] uint32 access_mask,
396 [out,ref] policy_handle *handle
399 /*****************/
400 /* Function 0x1c */
401 WERROR svcctl_OpenServiceA(
402 [in,ref] policy_handle *scmanager_handle,
403 [in,unique] [string,charset(UTF16)] uint16 *ServiceName,
404 [in] uint32 access_mask
407 /*****************/
408 /* Function 0x1d */
409 WERROR svcctl_QueryServiceConfigA(
410 [in,ref] policy_handle *handle,
411 [out] uint8 query[buf_size], /*QUERYU_SERVICE_CONFIG */
412 [in] uint32 buf_size,
413 [out,ref] uint32 *bytes_needed
416 /*****************/
417 /* Function 0x1e */
418 WERROR svcctl_QueryServiceLockStatusA(
419 [in,ref] policy_handle *handle,
420 [in] uint32 buf_size,
421 [out,ref] SERVICE_LOCK_STATUS *lock_status,
422 [out,ref] uint32 *required_buf_size
425 /*****************/
426 /* Function 0x1f */
427 WERROR svcctl_StartServiceA(
428 [in,ref] policy_handle *handle,
429 [in] uint32 NumArgs,
430 [in,unique/*FIXME:,length_is(NumArgs)*/] [string,charset(UTF16)] uint16 *Arguments
433 /*****************/
434 /* Function 0x20 */
435 WERROR svcctl_GetServiceDisplayNameA(
436 [in,ref] policy_handle *handle,
437 [in,unique] [string,charset(UTF16)] uint16 *service_name,
438 [out,ref] [string,charset(UTF16)] uint16 **display_name,
439 [in,out,unique] uint32 *display_name_length
442 /*****************/
443 /* Function 0x21 */
444 WERROR svcctl_GetServiceKeyNameA(
445 [in,ref] policy_handle *handle,
446 [in,unique] [string,charset(UTF16)] uint16 *service_name,
447 [out,ref] [string,charset(UTF16)] uint16 **key_name,
448 [in,out,unique] uint32 *display_name_length
451 /*****************/
452 /* Function 0x22 */
453 WERROR svcctl_GetCurrentGroupeStateW(
456 /*****************/
457 /* Function 0x23 */
458 WERROR svcctl_EnumServiceGroupW(
461 /*****************/
462 /* Function 0x24 */
463 WERROR svcctl_ChangeServiceConfig2A(
464 [in,ref] policy_handle *handle,
465 [in] uint32 info_level,
466 [in,unique] uint8 *info
469 /*****************/
470 /* Function 0x25 */
471 WERROR svcctl_ChangeServiceConfig2W(
472 [in,ref] policy_handle *handle,
473 [in] uint32 info_level,
474 [in,unique] uint8 *info
477 /*****************/
478 /* Function 0x26 */
479 WERROR svcctl_QueryServiceConfig2A(
480 [in,ref] policy_handle *handle,
481 [in] uint32 info_level,
482 [out] uint8 buffer[buf_size],
483 [in] uint32 buf_size,
484 [out,ref] uint32 *bytes_needed
487 /*****************/
488 /* Function 0x27 */
489 WERROR svcctl_QueryServiceConfig2W(
490 [in,ref] policy_handle *handle,
491 [in] uint32 info_level,
492 [out] uint8 buffer[buf_size],
493 [in] uint32 buf_size,
494 [out,ref] uint32 *bytes_needed
497 /*****************/
498 /* Function 0x28 */
499 WERROR svcctl_QueryServiceStatusEx(
500 [in,ref] policy_handle *handle,
501 [in] uint32 info_level,
502 [out] uint8 buffer[buf_size],
503 [in] uint32 buf_size,
504 [out,ref] uint32 *bytes_needed
507 /*****************/
508 /* Function 0x29 */
509 WERROR EnumServicesStatusExA(
510 [in,ref] policy_handle *scmanager,
511 [in] uint32 info_level,
512 [in] uint32 type,
513 [in] uint32 state,
514 [out] uint8 services[buf_size],
515 [in] uint32 buf_size,
516 [out,ref] uint32 *bytes_needed,
517 [out,ref] uint32 *service_returned,
518 [in,out,unique] uint32 *resume_handle,
519 [out,ref] [string,charset(UTF16)] uint16 **group_name
522 /*****************/
523 /* Function 0x2a */
524 WERROR EnumServicesStatusExW(
525 [in,ref] policy_handle *scmanager,
526 [in] uint32 info_level,
527 [in] uint32 type,
528 [in] uint32 state,
529 [out] uint8 services[buf_size],
530 [in] uint32 buf_size,
531 [out,ref] uint32 *bytes_needed,
532 [out,ref] uint32 *service_returned,
533 [in,out,unique] uint32 *resume_handle,
534 [out,ref] [string,charset(UTF16)] uint16 **group_name
537 /*****************/
538 /* Function 0x2b */
539 WERROR svcctl_SCSendTSMessage(