00001 /* header auto-generated by pidl */ 00002 00003 #ifndef _HEADER_svcctl 00004 #define _HEADER_svcctl 00005 00006 #define SERVICE_TYPE_KERNEL_DRIVER ( 0x01 ) 00007 #define SERVICE_TYPE_FS_DRIVER ( 0x02 ) 00008 #define SERVICE_TYPE_ADAPTER ( 0x04 ) 00009 #define SERVICE_TYPE_RECOGNIZER_DRIVER ( 0x08 ) 00010 #define SERVICE_TYPE_DRIVER ( SERVICE_TYPE_KERNEL_DRIVER|SERVICE_TYPE_FS_DRIVER|SERVICE_TYPE_RECOGNIZER_DRIVER ) 00011 #define SERVICE_TYPE_WIN32_OWN_PROCESS ( 0x10 ) 00012 #define SERVICE_TYPE_WIN32_SHARE_PROCESS ( 0x20 ) 00013 #define SERVICE_TYPE_WIN32 ( SERVICE_TYPE_WIN32_OWN_PROCESS|SERVICE_TYPE_WIN32_SHARE_PROCESS ) 00014 #define SERVICE_STATE_ACTIVE ( 0x01 ) 00015 #define SERVICE_STATE_INACTIVE ( 0x02 ) 00016 #define SERVICE_STATE_ALL ( 0x03 ) 00017 #define SV_TYPE_ALL ( 0xFFFFFFFF ) 00018 struct SERVICE_LOCK_STATUS { 00019 uint32_t is_locked; 00020 const char *lock_owner;/* [unique,charset(UTF16)] */ 00021 uint32_t lock_duration; 00022 }; 00023 00024 struct SERVICE_STATUS { 00025 uint32_t type; 00026 uint32_t state; 00027 uint32_t controls_accepted; 00028 uint32_t win32_exit_code; 00029 uint32_t service_exit_code; 00030 uint32_t check_point; 00031 uint32_t wait_hint; 00032 }; 00033 00034 struct ENUM_SERVICE_STATUS { 00035 const char * service_name;/* [relative,flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */ 00036 const char * display_name;/* [relative,flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */ 00037 struct SERVICE_STATUS status; 00038 }; 00039 00040 /* bitmap svcctl_ServerType */ 00041 #define SV_TYPE_WORKSTATION ( 0x00000001 ) 00042 #define SV_TYPE_SERVER ( 0x00000002 ) 00043 #define SV_TYPE_SQLSERVER ( 0x00000004 ) 00044 #define SV_TYPE_DOMAIN_CTRL ( 0x00000008 ) 00045 #define SV_TYPE_DOMAIN_BAKCTRL ( 0x00000010 ) 00046 #define SV_TYPE_TIME_SOURCE ( 0x00000020 ) 00047 #define SV_TYPE_AFP ( 0x00000040 ) 00048 #define SV_TYPE_NOVELL ( 0x00000080 ) 00049 #define SV_TYPE_DOMAIN_MEMBER ( 0x00000100 ) 00050 #define SV_TYPE_PRINTQ_SERVER ( 0x00000200 ) 00051 #define SV_TYPE_DIALIN_SERVER ( 0x00000400 ) 00052 #define SV_TYPE_SERVER_UNIX ( 0x00000800 ) 00053 #define SV_TYPE_NT ( 0x00001000 ) 00054 #define SV_TYPE_WFW ( 0x00002000 ) 00055 #define SV_TYPE_SERVER_MFPN ( 0x00004000 ) 00056 #define SV_TYPE_SERVER_NT ( 0x00008000 ) 00057 #define SV_TYPE_POTENTIAL_BROWSER ( 0x00010000 ) 00058 #define SV_TYPE_BACKUP_BROWSER ( 0x00020000 ) 00059 #define SV_TYPE_MASTER_BROWSER ( 0x00040000 ) 00060 #define SV_TYPE_DOMAIN_MASTER ( 0x00080000 ) 00061 #define SV_TYPE_SERVER_OSF ( 0x00100000 ) 00062 #define SV_TYPE_SERVER_VMS ( 0x00200000 ) 00063 #define SV_TYPE_WIN95_PLUS ( 0x00400000 ) 00064 #define SV_TYPE_DFS_SERVER ( 0x00800000 ) 00065 #define SV_TYPE_ALTERNATE_XPORT ( 0x20000000 ) 00066 #define SV_TYPE_LOCAL_LIST_ONLY ( 0x40000000 ) 00067 #define SV_TYPE_DOMAIN_ENUM ( 0x80000000 ) 00068 00069 enum SERVICE_CONTROL { 00070 FIXME=1 00071 }; 00072 00073 00074 struct svcctl_CloseServiceHandle { 00075 struct { 00076 struct policy_handle *handle;/* [ref] */ 00077 } in; 00078 00079 struct { 00080 struct policy_handle *handle;/* [ref] */ 00081 WERROR result; 00082 } out; 00083 00084 }; 00085 00086 00087 struct svcctl_ControlService { 00088 struct { 00089 struct policy_handle *handle;/* [ref] */ 00090 uint32_t control; 00091 } in; 00092 00093 struct { 00094 struct SERVICE_STATUS *status;/* [ref] */ 00095 WERROR result; 00096 } out; 00097 00098 }; 00099 00100 00101 struct svcctl_DeleteService { 00102 struct { 00103 struct policy_handle *handle;/* [ref] */ 00104 } in; 00105 00106 struct { 00107 WERROR result; 00108 } out; 00109 00110 }; 00111 00112 00113 struct svcctl_LockServiceDatabase { 00114 struct { 00115 struct policy_handle *handle;/* [ref] */ 00116 } in; 00117 00118 struct { 00119 struct policy_handle *lock;/* [ref] */ 00120 WERROR result; 00121 } out; 00122 00123 }; 00124 00125 00126 struct svcctl_QueryServiceObjectSecurity { 00127 struct { 00128 WERROR result; 00129 } out; 00130 00131 }; 00132 00133 00134 struct svcctl_SetServiceObjectSecurity { 00135 struct { 00136 WERROR result; 00137 } out; 00138 00139 }; 00140 00141 00142 struct svcctl_QueryServiceStatus { 00143 struct { 00144 struct policy_handle *handle;/* [ref] */ 00145 } in; 00146 00147 struct { 00148 struct SERVICE_STATUS *status;/* [ref] */ 00149 WERROR result; 00150 } out; 00151 00152 }; 00153 00154 00155 struct svcctl_SetServiceStatus { 00156 struct { 00157 WERROR result; 00158 } out; 00159 00160 }; 00161 00162 00163 struct svcctl_UnlockServiceDatabase { 00164 struct { 00165 struct policy_handle *lock;/* [ref] */ 00166 } in; 00167 00168 struct { 00169 struct policy_handle *lock;/* [ref] */ 00170 WERROR result; 00171 } out; 00172 00173 }; 00174 00175 00176 struct svcctl_NotifyBootConfigStatus { 00177 struct { 00178 WERROR result; 00179 } out; 00180 00181 }; 00182 00183 00184 struct svcctl_SCSetServiceBitsW { 00185 struct { 00186 struct policy_handle *handle;/* [ref] */ 00187 uint32_t bits; 00188 uint32_t bitson; 00189 uint32_t immediate; 00190 } in; 00191 00192 struct { 00193 WERROR result; 00194 } out; 00195 00196 }; 00197 00198 00199 struct svcctl_ChangeServiceConfigW { 00200 struct { 00201 struct policy_handle *handle;/* [ref] */ 00202 uint32_t type; 00203 uint32_t start; 00204 uint32_t error; 00205 const char *binary_path;/* [unique,charset(UTF16)] */ 00206 const char *load_order_group;/* [unique,charset(UTF16)] */ 00207 const char *dependencies;/* [unique,charset(UTF16)] */ 00208 const char *service_start_name;/* [unique,charset(UTF16)] */ 00209 const char *password;/* [unique,charset(UTF16)] */ 00210 const char *display_name;/* [unique,charset(UTF16)] */ 00211 } in; 00212 00213 struct { 00214 uint32_t *tag_id;/* [ref] */ 00215 WERROR result; 00216 } out; 00217 00218 }; 00219 00220 00221 struct svcctl_CreateServiceW { 00222 struct { 00223 struct policy_handle *scmanager_handle;/* [ref] */ 00224 const char *ServiceName;/* [charset(UTF16)] */ 00225 const char *DisplayName;/* [unique,charset(UTF16)] */ 00226 uint32_t desired_access; 00227 uint32_t type; 00228 uint32_t start_type; 00229 uint32_t error_control; 00230 const char *binary_path;/* [charset(UTF16)] */ 00231 const char *LoadOrderGroupKey;/* [unique,charset(UTF16)] */ 00232 uint32_t *TagId;/* [unique] */ 00233 uint8_t *dependencies;/* [unique,size_is(dependencies_size)] */ 00234 uint32_t dependencies_size; 00235 const char *service_start_name;/* [unique,charset(UTF16)] */ 00236 uint8_t *password;/* [unique,size_is(password_size)] */ 00237 uint32_t password_size; 00238 } in; 00239 00240 struct { 00241 uint32_t *TagId;/* [unique] */ 00242 struct policy_handle *handle;/* [ref] */ 00243 WERROR result; 00244 } out; 00245 00246 }; 00247 00248 00249 struct svcctl_EnumDependentServicesW { 00250 struct { 00251 struct policy_handle *service;/* [ref] */ 00252 uint32_t state; 00253 uint32_t buf_size; 00254 } in; 00255 00256 struct { 00257 struct ENUM_SERVICE_STATUS *status;/* [unique] */ 00258 uint32_t *bytes_needed;/* [ref] */ 00259 uint32_t *services_returned;/* [ref] */ 00260 WERROR result; 00261 } out; 00262 00263 }; 00264 00265 00266 struct svcctl_EnumServicesStatusW { 00267 struct { 00268 struct policy_handle *handle;/* [ref] */ 00269 uint32_t type; 00270 uint32_t state; 00271 uint32_t buf_size; 00272 uint32_t *resume_handle;/* [unique] */ 00273 } in; 00274 00275 struct { 00276 uint8_t *service;/* [size_is(buf_size)] */ 00277 uint32_t *bytes_needed;/* [ref] */ 00278 uint32_t *services_returned;/* [ref] */ 00279 uint32_t *resume_handle;/* [unique] */ 00280 WERROR result; 00281 } out; 00282 00283 }; 00284 00285 00286 struct svcctl_OpenSCManagerW { 00287 struct { 00288 const char *MachineName;/* [unique,charset(UTF16)] */ 00289 const char *DatabaseName;/* [unique,charset(UTF16)] */ 00290 uint32_t access_mask; 00291 } in; 00292 00293 struct { 00294 struct policy_handle *handle;/* [ref] */ 00295 WERROR result; 00296 } out; 00297 00298 }; 00299 00300 00301 struct svcctl_OpenServiceW { 00302 struct { 00303 struct policy_handle *scmanager_handle;/* [ref] */ 00304 const char *ServiceName;/* [charset(UTF16)] */ 00305 uint32_t access_mask; 00306 } in; 00307 00308 struct { 00309 struct policy_handle *handle;/* [ref] */ 00310 WERROR result; 00311 } out; 00312 00313 }; 00314 00315 00316 struct svcctl_QueryServiceConfigW { 00317 struct { 00318 struct policy_handle *handle;/* [ref] */ 00319 uint32_t buf_size; 00320 } in; 00321 00322 struct { 00323 uint8_t *query; 00324 uint32_t *bytes_needed;/* [ref] */ 00325 WERROR result; 00326 } out; 00327 00328 }; 00329 00330 00331 struct svcctl_QueryServiceLockStatusW { 00332 struct { 00333 struct policy_handle *handle;/* [ref] */ 00334 uint32_t buf_size; 00335 } in; 00336 00337 struct { 00338 struct SERVICE_LOCK_STATUS *status;/* [ref] */ 00339 uint32_t *required_buf_size;/* [ref] */ 00340 WERROR result; 00341 } out; 00342 00343 }; 00344 00345 00346 struct svcctl_StartServiceW { 00347 struct { 00348 struct policy_handle *handle;/* [ref] */ 00349 uint32_t NumArgs; 00350 const char *Arguments;/* [unique,charset(UTF16),length_is(NumArgs)] */ 00351 } in; 00352 00353 struct { 00354 WERROR result; 00355 } out; 00356 00357 }; 00358 00359 00360 struct svcctl_GetServiceDisplayNameW { 00361 struct { 00362 struct policy_handle *handle;/* [ref] */ 00363 const char *service_name;/* [unique,charset(UTF16)] */ 00364 uint32_t *display_name_length;/* [unique] */ 00365 } in; 00366 00367 struct { 00368 const char **display_name;/* [ref,charset(UTF16)] */ 00369 uint32_t *display_name_length;/* [unique] */ 00370 WERROR result; 00371 } out; 00372 00373 }; 00374 00375 00376 struct svcctl_GetServiceKeyNameW { 00377 struct { 00378 struct policy_handle *handle;/* [ref] */ 00379 const char *service_name;/* [unique,charset(UTF16)] */ 00380 uint32_t *display_name_length;/* [unique] */ 00381 } in; 00382 00383 struct { 00384 const char **key_name;/* [ref,charset(UTF16)] */ 00385 uint32_t *display_name_length;/* [unique] */ 00386 WERROR result; 00387 } out; 00388 00389 }; 00390 00391 00392 struct svcctl_SCSetServiceBitsA { 00393 struct { 00394 struct policy_handle *handle;/* [ref] */ 00395 uint32_t bits; 00396 uint32_t bitson; 00397 uint32_t immediate; 00398 } in; 00399 00400 struct { 00401 WERROR result; 00402 } out; 00403 00404 }; 00405 00406 00407 struct svcctl_ChangeServiceConfigA { 00408 struct { 00409 struct policy_handle *handle;/* [ref] */ 00410 uint32_t type; 00411 uint32_t start; 00412 uint32_t error; 00413 const char *binary_path;/* [unique,charset(UTF16)] */ 00414 const char *load_order_group;/* [unique,charset(UTF16)] */ 00415 const char *dependencies;/* [unique,charset(UTF16)] */ 00416 const char *service_start_name;/* [unique,charset(UTF16)] */ 00417 const char *password;/* [unique,charset(UTF16)] */ 00418 const char *display_name;/* [unique,charset(UTF16)] */ 00419 } in; 00420 00421 struct { 00422 uint32_t *tag_id;/* [ref] */ 00423 WERROR result; 00424 } out; 00425 00426 }; 00427 00428 00429 struct svcctl_CreateServiceA { 00430 struct { 00431 struct policy_handle *handle;/* [ref] */ 00432 const char *ServiceName;/* [unique,charset(UTF16)] */ 00433 const char *DisplayName;/* [unique,charset(UTF16)] */ 00434 uint32_t desired_access; 00435 uint32_t type; 00436 uint32_t start_type; 00437 uint32_t error_control; 00438 const char *binary_path;/* [unique,charset(UTF16)] */ 00439 const char *LoadOrderGroupKey;/* [unique,charset(UTF16)] */ 00440 const char *dependencies;/* [unique,charset(UTF16)] */ 00441 const char *service_start_name;/* [unique,charset(UTF16)] */ 00442 const char *password;/* [unique,charset(UTF16)] */ 00443 } in; 00444 00445 struct { 00446 uint32_t *TagId;/* [unique] */ 00447 WERROR result; 00448 } out; 00449 00450 }; 00451 00452 00453 struct svcctl_EnumDependentServicesA { 00454 struct { 00455 struct policy_handle *service;/* [ref] */ 00456 uint32_t state; 00457 uint32_t buf_size; 00458 } in; 00459 00460 struct { 00461 struct ENUM_SERVICE_STATUS *status;/* [unique] */ 00462 uint32_t *bytes_needed;/* [ref] */ 00463 uint32_t *services_returned;/* [ref] */ 00464 WERROR result; 00465 } out; 00466 00467 }; 00468 00469 00470 struct svcctl_EnumServicesStatusA { 00471 struct { 00472 struct policy_handle *handle;/* [ref] */ 00473 uint32_t type; 00474 uint32_t state; 00475 uint32_t buf_size; 00476 uint32_t *resume_handle;/* [unique] */ 00477 } in; 00478 00479 struct { 00480 uint8_t *service;/* [size_is(buf_size)] */ 00481 uint32_t *bytes_needed;/* [ref] */ 00482 uint32_t *services_returned;/* [ref] */ 00483 uint32_t *resume_handle;/* [unique] */ 00484 WERROR result; 00485 } out; 00486 00487 }; 00488 00489 00490 struct svcctl_OpenSCManagerA { 00491 struct { 00492 const char *MachineName;/* [unique,charset(UTF16)] */ 00493 const char *DatabaseName;/* [unique,charset(UTF16)] */ 00494 uint32_t access_mask; 00495 } in; 00496 00497 struct { 00498 struct policy_handle *handle;/* [ref] */ 00499 WERROR result; 00500 } out; 00501 00502 }; 00503 00504 00505 struct svcctl_OpenServiceA { 00506 struct { 00507 struct policy_handle *scmanager_handle;/* [ref] */ 00508 const char *ServiceName;/* [unique,charset(UTF16)] */ 00509 uint32_t access_mask; 00510 } in; 00511 00512 struct { 00513 WERROR result; 00514 } out; 00515 00516 }; 00517 00518 00519 struct svcctl_QueryServiceConfigA { 00520 struct { 00521 struct policy_handle *handle;/* [ref] */ 00522 uint32_t buf_size; 00523 } in; 00524 00525 struct { 00526 uint8_t *query; 00527 uint32_t *bytes_needed;/* [ref] */ 00528 WERROR result; 00529 } out; 00530 00531 }; 00532 00533 00534 struct svcctl_QueryServiceLockStatusA { 00535 struct { 00536 struct policy_handle *handle;/* [ref] */ 00537 uint32_t buf_size; 00538 } in; 00539 00540 struct { 00541 struct SERVICE_LOCK_STATUS *status;/* [ref] */ 00542 uint32_t *required_buf_size;/* [ref] */ 00543 WERROR result; 00544 } out; 00545 00546 }; 00547 00548 00549 struct svcctl_StartServiceA { 00550 struct { 00551 struct policy_handle *handle;/* [ref] */ 00552 uint32_t NumArgs; 00553 const char *Arguments;/* [unique,charset(UTF16),length_is(NumArgs)] */ 00554 } in; 00555 00556 struct { 00557 WERROR result; 00558 } out; 00559 00560 }; 00561 00562 00563 struct svcctl_GetServiceDisplayNameA { 00564 struct { 00565 struct policy_handle *handle;/* [ref] */ 00566 const char *service_name;/* [unique,charset(UTF16)] */ 00567 uint32_t *display_name_length;/* [unique] */ 00568 } in; 00569 00570 struct { 00571 const char **display_name;/* [ref,charset(UTF16)] */ 00572 uint32_t *display_name_length;/* [unique] */ 00573 WERROR result; 00574 } out; 00575 00576 }; 00577 00578 00579 struct svcctl_GetServiceKeyNameA { 00580 struct { 00581 struct policy_handle *handle;/* [ref] */ 00582 const char *service_name;/* [unique,charset(UTF16)] */ 00583 uint32_t *display_name_length;/* [unique] */ 00584 } in; 00585 00586 struct { 00587 const char **key_name;/* [ref,charset(UTF16)] */ 00588 uint32_t *display_name_length;/* [unique] */ 00589 WERROR result; 00590 } out; 00591 00592 }; 00593 00594 00595 struct svcctl_GetCurrentGroupeStateW { 00596 struct { 00597 WERROR result; 00598 } out; 00599 00600 }; 00601 00602 00603 struct svcctl_EnumServiceGroupW { 00604 struct { 00605 WERROR result; 00606 } out; 00607 00608 }; 00609 00610 00611 struct svcctl_ChangeServiceConfig2A { 00612 struct { 00613 struct policy_handle *handle;/* [ref] */ 00614 uint32_t info_level; 00615 uint8_t *info;/* [unique] */ 00616 } in; 00617 00618 struct { 00619 WERROR result; 00620 } out; 00621 00622 }; 00623 00624 00625 struct svcctl_ChangeServiceConfig2W { 00626 struct { 00627 struct policy_handle *handle;/* [ref] */ 00628 uint32_t info_level; 00629 uint8_t *info;/* [unique] */ 00630 } in; 00631 00632 struct { 00633 WERROR result; 00634 } out; 00635 00636 }; 00637 00638 00639 struct svcctl_QueryServiceConfig2A { 00640 struct { 00641 struct policy_handle *handle;/* [ref] */ 00642 uint32_t info_level; 00643 uint32_t buf_size; 00644 } in; 00645 00646 struct { 00647 uint8_t *buffer; 00648 uint32_t *bytes_needed;/* [ref] */ 00649 WERROR result; 00650 } out; 00651 00652 }; 00653 00654 00655 struct svcctl_QueryServiceConfig2W { 00656 struct { 00657 struct policy_handle *handle;/* [ref] */ 00658 uint32_t info_level; 00659 uint32_t buf_size; 00660 } in; 00661 00662 struct { 00663 uint8_t *buffer; 00664 uint32_t *bytes_needed;/* [ref] */ 00665 WERROR result; 00666 } out; 00667 00668 }; 00669 00670 00671 struct svcctl_QueryServiceStatusEx { 00672 struct { 00673 struct policy_handle *handle;/* [ref] */ 00674 uint32_t info_level; 00675 uint32_t buf_size; 00676 } in; 00677 00678 struct { 00679 uint8_t *buffer; 00680 uint32_t *bytes_needed;/* [ref] */ 00681 WERROR result; 00682 } out; 00683 00684 }; 00685 00686 00687 struct EnumServicesStatusExA { 00688 struct { 00689 struct policy_handle *scmanager;/* [ref] */ 00690 uint32_t info_level; 00691 uint32_t type; 00692 uint32_t state; 00693 uint32_t buf_size; 00694 uint32_t *resume_handle;/* [unique] */ 00695 } in; 00696 00697 struct { 00698 uint8_t *services; 00699 uint32_t *bytes_needed;/* [ref] */ 00700 uint32_t *service_returned;/* [ref] */ 00701 uint32_t *resume_handle;/* [unique] */ 00702 const char **group_name;/* [ref,charset(UTF16)] */ 00703 WERROR result; 00704 } out; 00705 00706 }; 00707 00708 00709 struct EnumServicesStatusExW { 00710 struct { 00711 struct policy_handle *scmanager;/* [ref] */ 00712 uint32_t info_level; 00713 uint32_t type; 00714 uint32_t state; 00715 uint32_t buf_size; 00716 uint32_t *resume_handle;/* [unique] */ 00717 } in; 00718 00719 struct { 00720 uint8_t *services; 00721 uint32_t *bytes_needed;/* [ref] */ 00722 uint32_t *service_returned;/* [ref] */ 00723 uint32_t *resume_handle;/* [unique] */ 00724 const char **group_name;/* [ref,charset(UTF16)] */ 00725 WERROR result; 00726 } out; 00727 00728 }; 00729 00730 00731 struct svcctl_SCSendTSMessage { 00732 struct { 00733 WERROR result; 00734 } out; 00735 00736 }; 00737 00738 #endif /* _HEADER_svcctl */