source: branches/samba-3.3.x/source/librpc/idl/svcctl.idl

Last change on this file was 206, checked in by Herwig Bauernfeind, 16 years ago

Import Samba 3.3 branch at 3.0.0 level (psmedley's port)

File size: 14.8 KB
Line 
1#include "idl_types.h"
2
3/*
4 svcctl interface definitions
5*/
6
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
13{
14 typedef struct {
15 uint32 is_locked;
16 [string,charset(UTF16)] uint16 *lock_owner;
17 uint32 lock_duration;
18 } SERVICE_LOCK_STATUS;
19
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;
29
30 typedef struct {
31 [relative] astring *service_name;
32 [relative] astring *display_name;
33 SERVICE_STATUS status;
34 } ENUM_SERVICE_STATUS;
35
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;
44
45 const int SERVICE_STATE_ACTIVE = 0x01;
46 const int SERVICE_STATE_INACTIVE = 0x02;
47 const int SERVICE_STATE_ALL = 0x03;
48
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,
58
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;
79
80 const uint32 SV_TYPE_ALL = 0xFFFFFFFF;
81
82 /*****************/
83 /* Function 0x00 */
84 WERROR svcctl_CloseServiceHandle(
85 [in,out,ref] policy_handle *handle
86 );
87
88 /*****************/
89 /* Function 0x01 */
90
91 typedef enum {
92 FIXME=1
93 } SERVICE_CONTROL;
94
95 WERROR svcctl_ControlService(
96 [in,ref] policy_handle *handle,
97 [in] uint32 control,
98 [out,ref] SERVICE_STATUS *service_status
99 );
100
101 /*****************/
102 /* Function 0x02 */
103 WERROR svcctl_DeleteService(
104 [in,ref] policy_handle *handle
105 );
106
107 /*****************/
108 /* Function 0x03 */
109
110 WERROR svcctl_LockServiceDatabase(
111 [in,ref] policy_handle *handle,
112 [out,ref] policy_handle *lock
113 );
114
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
123 );
124
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
132 );
133
134 /*****************/
135 /* Function 0x06 */
136 WERROR svcctl_QueryServiceStatus(
137 [in,ref] policy_handle *handle,
138 [out,ref] SERVICE_STATUS *service_status
139 );
140
141 /*****************/
142 /* Function 0x07 */
143 WERROR svcctl_SetServiceStatus(
144 );
145
146 /*****************/
147 /* Function 0x08 */
148 WERROR svcctl_UnlockServiceDatabase(
149 [in,out,ref] policy_handle *lock
150 );
151
152 /*****************/
153 /* Function 0x09 */
154 WERROR svcctl_NotifyBootConfigStatus(
155 );
156
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
164 );
165
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
180 );
181
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
201 );
202
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
212 );
213
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
225 );
226
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;
237
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
243 );
244
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;
258
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
264 );
265
266 /*****************/
267 /* Function 0x11 */
268
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;
280
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
286 );
287
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
295 );
296
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
303 );
304
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
312 );
313
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
321 );
322
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
330 );
331
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
346 );
347
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
364 );
365
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
375 );
376
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
388 );
389
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
397 );
398
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
405 );
406
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
414 );
415
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
423 );
424
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
431 );
432
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
440 );
441
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
449 );
450
451 /*****************/
452 /* Function 0x22 */
453 WERROR svcctl_GetCurrentGroupeStateW(
454 );
455
456 /*****************/
457 /* Function 0x23 */
458 WERROR svcctl_EnumServiceGroupW(
459 );
460
461 /*****************/
462 /* Function 0x24 */
463 WERROR svcctl_ChangeServiceConfig2A(
464 [in,ref] policy_handle *handle,
465 [in] uint32 info_level,
466 [in,unique] uint8 *info
467 );
468
469 /*****************/
470 /* Function 0x25 */
471 WERROR svcctl_ChangeServiceConfig2W(
472 [in,ref] policy_handle *handle,
473 [in] uint32 info_level,
474 [in,unique] uint8 *info
475 );
476
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
485 );
486
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
495 );
496
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
505 );
506
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
520 );
521
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
535 );
536
537 /*****************/
538 /* Function 0x2b */
539 WERROR svcctl_SCSendTSMessage(
540 );
541}
Note: See TracBrowser for help on using the repository browser.