diff options
Diffstat (limited to 'source3/librpc/idl/svcctl.idl')
-rw-r--r-- | source3/librpc/idl/svcctl.idl | 446 |
1 files changed, 446 insertions, 0 deletions
diff --git a/source3/librpc/idl/svcctl.idl b/source3/librpc/idl/svcctl.idl new file mode 100644 index 00000000000..97460217f5f --- /dev/null +++ b/source3/librpc/idl/svcctl.idl @@ -0,0 +1,446 @@ +#include "idl_types.h" + +/* + svcctl interface definitions +*/ + +[ uuid("367abb81-9844-35f1-ad32-98f038001003"), + version(2.0), + pointer_default(unique), + pointer_default_top(unique), + endpoint("ncacn_np:[\\pipe\\svcctl]", "ncalrpc:"), + helpstring("Service Control"), + keepref +] interface svcctl +{ + typedef struct { + uint32 is_locked; + [string,charset(UTF16)] uint16 *lock_owner; + uint32 lock_duration; + } SERVICE_LOCK_STATUS; + + typedef struct { + uint32 type; + uint32 state; + uint32 controls_accepted; + uint32 win32_exit_code; + uint32 service_exit_code; + uint32 check_point; + uint32 wait_hint; + } SERVICE_STATUS; + + typedef struct { + [relative] astring *service_name; + [relative] astring *display_name; + SERVICE_STATUS status; + } ENUM_SERVICE_STATUS; + + const int SERVICE_TYPE_KERNEL_DRIVER = 0x01; + const int SERVICE_TYPE_FS_DRIVER = 0x02; + const int SERVICE_TYPE_ADAPTER = 0x04; + const int SERVICE_TYPE_RECOGNIZER_DRIVER = 0x08; + const int SERVICE_TYPE_DRIVER=SERVICE_TYPE_KERNEL_DRIVER|SERVICE_TYPE_FS_DRIVER|SERVICE_TYPE_RECOGNIZER_DRIVER; + const int SERVICE_TYPE_WIN32_OWN_PROCESS = 0x10; + const int SERVICE_TYPE_WIN32_SHARE_PROCESS = 0x20; + const int SERVICE_TYPE_WIN32=SERVICE_TYPE_WIN32_OWN_PROCESS|SERVICE_TYPE_WIN32_SHARE_PROCESS; + + const int SERVICE_STATE_ACTIVE = 0x01; + const int SERVICE_STATE_INACTIVE = 0x02; + const int SERVICE_STATE_ALL = 0x03; + + typedef [public,bitmap32bit] bitmap { + SV_TYPE_WORKSTATION = 0x00000001, + SV_TYPE_SERVER = 0x00000002, + SV_TYPE_SQLSERVER = 0x00000004, + SV_TYPE_DOMAIN_CTRL = 0x00000008, + SV_TYPE_DOMAIN_BAKCTRL = 0x00000010, + SV_TYPE_TIME_SOURCE = 0x00000020, + SV_TYPE_AFP = 0x00000040, + SV_TYPE_NOVELL = 0x00000080, + + SV_TYPE_DOMAIN_MEMBER = 0x00000100, + SV_TYPE_PRINTQ_SERVER = 0x00000200, + SV_TYPE_DIALIN_SERVER = 0x00000400, + SV_TYPE_SERVER_UNIX = 0x00000800, + SV_TYPE_NT = 0x00001000, + SV_TYPE_WFW = 0x00002000, + SV_TYPE_SERVER_MFPN = 0x00004000, + SV_TYPE_SERVER_NT = 0x00008000, + SV_TYPE_POTENTIAL_BROWSER = 0x00010000, + SV_TYPE_BACKUP_BROWSER = 0x00020000, + SV_TYPE_MASTER_BROWSER = 0x00040000, + SV_TYPE_DOMAIN_MASTER = 0x00080000, + SV_TYPE_SERVER_OSF = 0x00100000, + SV_TYPE_SERVER_VMS = 0x00200000, + SV_TYPE_WIN95_PLUS = 0x00400000, + SV_TYPE_DFS_SERVER = 0x00800000, + SV_TYPE_ALTERNATE_XPORT = 0x20000000, + SV_TYPE_LOCAL_LIST_ONLY = 0x40000000, + SV_TYPE_DOMAIN_ENUM = 0x80000000 + } svcctl_ServerType; + + const uint32 SV_TYPE_ALL = 0xFFFFFFFF; + + /*****************/ + /* Function 0x00 */ + WERROR svcctl_CloseServiceHandle( + [in,out,ref] policy_handle *handle + ); + + /*****************/ + /* Function 0x01 */ + + typedef enum { + FIXME=1 + } SERVICE_CONTROL; + + WERROR svcctl_ControlService( + [in,ref] policy_handle *handle, + [in] uint32 control, + [out,ref] SERVICE_STATUS *status + ); + + /*****************/ + /* Function 0x02 */ + WERROR svcctl_DeleteService([in,ref] policy_handle *handle); + + /*****************/ + /* Function 0x03 */ + + WERROR svcctl_LockServiceDatabase( + [in,ref] policy_handle *handle, + [out] policy_handle lock + ); + + /*****************/ + /* Function 0x04 */ + WERROR svcctl_QueryServiceObjectSecurity(); + + /*****************/ + /* Function 0x05 */ + WERROR svcctl_SetServiceObjectSecurity(); + + /*****************/ + /* Function 0x06 */ + WERROR svcctl_QueryServiceStatus( + [in,ref] policy_handle *handle, + [out,ref] SERVICE_STATUS *status); + + /*****************/ + /* Function 0x07 */ + WERROR svcctl_SetServiceStatus(); + + /*****************/ + /* Function 0x08 */ + WERROR svcctl_UnlockServiceDatabase( + [in,out,ref] policy_handle *lock + ); + + /*****************/ + /* Function 0x09 */ + WERROR svcctl_NotifyBootConfigStatus(); + + /*****************/ + /* Function 0x0a */ + WERROR svcctl_SCSetServiceBitsW( + [in,ref] policy_handle *handle, + [in] uint32 bits, + [in] boolean32 bitson, + [in] boolean32 immediate); + + /*****************/ + /* Function 0x0b */ + WERROR svcctl_ChangeServiceConfigW([in,ref] policy_handle *handle, + [in] uint32 type, + [in] uint32 start, + [in] uint32 error, + [in] [string,charset(UTF16)] uint16 *binary_path, + [in] [string,charset(UTF16)] uint16 *load_order_group, + [out] uint32 tag_id, + [in] [string,charset(UTF16)] uint16 *dependencies, + [in] [string,charset(UTF16)] uint16 *service_start_name, + [in] [string,charset(UTF16)] uint16 *password, + [in] [string,charset(UTF16)] uint16 *display_name); + + /*****************/ + /* Function 0x0c */ + WERROR svcctl_CreateServiceW([in,ref] policy_handle *scmanager_handle, + [in] [string,charset(UTF16)] uint16 ServiceName[], + [in] [string,charset(UTF16)] uint16 *DisplayName, + [in] uint32 desired_access, + [in] uint32 type, + [in] uint32 start_type, + [in] uint32 error_control, + [in] [string,charset(UTF16)] uint16 binary_path[], + [in] [string,charset(UTF16)] uint16 *LoadOrderGroupKey, + [in,out] uint32 *TagId, + [in,size_is(dependencies_size)] uint8 *dependencies, + [in] uint32 dependencies_size, + [in] [string,charset(UTF16)] uint16 *service_start_name, + [in,size_is(password_size)] uint8 *password, + [in] uint32 password_size, + [out,ref] policy_handle *handle); + + /*****************/ + /* Function 0x0d */ + WERROR svcctl_EnumDependentServicesW([in,ref] policy_handle *service, + [in] uint32 state, + [out] ENUM_SERVICE_STATUS *status, + [in] uint32 buf_size, + [out] uint32 bytes_needed, + [out] uint32 services_returned); + + /*****************/ + /* Function 0x0e */ + WERROR svcctl_EnumServicesStatusW( + [in,ref] policy_handle *handle, + [in] uint32 type, + [in] uint32 state, + [in] uint32 buf_size, + [out,size_is(buf_size)] uint8 service[*], + [out] uint32 bytes_needed, + [out] uint32 services_returned, + [in,out] uint32 *resume_handle + ); + /*****************/ + /* Function 0x0f */ + WERROR svcctl_OpenSCManagerW( + [in] [string,charset(UTF16)] uint16 *MachineName, + [in] [string,charset(UTF16)] uint16 *DatabaseName, + [in] uint32 access_mask, + [out,ref] policy_handle *handle); + + /*****************/ + /* Function 0x10 */ + WERROR svcctl_OpenServiceW([in,ref] policy_handle *scmanager_handle, + [in] [string,charset(UTF16)] uint16 ServiceName[], + [in] uint32 access_mask, + [out,ref] policy_handle *handle); + + /*****************/ + /* Function 0x11 */ + WERROR svcctl_QueryServiceConfigW([in,ref] policy_handle *handle, + [out] uint8 query[buf_size], /*QUERY_SERVICE_CONFIG */ + [in] uint32 buf_size, + [out] uint32 bytes_needed + ); + + /*****************/ + /* Function 0x12 */ + WERROR svcctl_QueryServiceLockStatusW( + [in,ref] policy_handle *handle, + [in] uint32 buf_size, + [out,ref] SERVICE_LOCK_STATUS *status, + [out,ref] uint32 *required_buf_size + ); + + /*****************/ + /* Function 0x13 */ + WERROR svcctl_StartServiceW( + [in,ref] policy_handle *handle, + [in] uint32 NumArgs, + [in,length_is(NumArgs)] [string,charset(UTF16)] uint16 *Arguments); + + /*****************/ + /* Function 0x14 */ + WERROR svcctl_GetServiceDisplayNameW([in,ref] policy_handle *handle, + [in] [string,charset(UTF16)] uint16 *service_name, + [out] [string,charset(UTF16)] uint16 *display_name, + [in,out] uint32 *display_name_length); + /*****************/ + /* Function 0x15 */ + WERROR svcctl_GetServiceKeyNameW([in,ref] policy_handle *handle, + [in] [string,charset(UTF16)] uint16 *service_name, + [out] [string,charset(UTF16)] uint16 *key_name, + [in,out] uint32 *display_name_length); + /*****************/ + /* Function 0x16 */ + WERROR svcctl_SCSetServiceBitsA( + [in,ref] policy_handle *handle, + [in] uint32 bits, + [in] boolean32 bitson, + [in] boolean32 immediate); + + /*****************/ + /* Function 0x17 */ + WERROR svcctl_ChangeServiceConfigA([in,ref] policy_handle *handle, + [in] uint32 type, + [in] uint32 start, + [in] uint32 error, + [in] [string,charset(UTF16)] uint16 *binary_path, + [in] [string,charset(UTF16)] uint16 *load_order_group, + [out] uint32 tag_id, + [in] [string,charset(UTF16)] uint16 *dependencies, + [in] [string,charset(UTF16)] uint16 *service_start_name, + [in] [string,charset(UTF16)] uint16 *password, + [in] [string,charset(UTF16)] uint16 *display_name); + + /*****************/ + /* Function 0x18 */ + WERROR svcctl_CreateServiceA([in,ref] policy_handle *handle, + [in] [string,charset(UTF16)] uint16 *ServiceName, + [in] [string,charset(UTF16)] uint16 *DisplayName, + [in] uint32 desired_access, + [in] uint32 type, + [in] uint32 start_type, + [in] uint32 error_control, + [in] [string,charset(UTF16)] uint16 *binary_path, + [in] [string,charset(UTF16)] uint16 *LoadOrderGroupKey, + [out] uint32 *TagId, + [in] [string,charset(UTF16)] uint16 *dependencies, + [in] [string,charset(UTF16)] uint16 *service_start_name, + [in] [string,charset(UTF16)] uint16 *password); + + /*****************/ + /* Function 0x19 */ + WERROR svcctl_EnumDependentServicesA([in,ref] policy_handle *service, + [in] uint32 state, + [out] ENUM_SERVICE_STATUS *status, + [in] uint32 buf_size, + [out] uint32 bytes_needed, + [out] uint32 services_returned); + + /*****************/ + /* Function 0x1a */ + WERROR svcctl_EnumServicesStatusA( + [in,ref] policy_handle *handle, + [in] uint32 type, + [in] uint32 state, + [in] uint32 buf_size, + [out,size_is(buf_size)] uint8 service[*], + [out] uint32 bytes_needed, + [out] uint32 services_returned, + [in,out] uint32 *resume_handle + ); + + /*****************/ + /* Function 0x1b */ + WERROR svcctl_OpenSCManagerA( + [in] [string,charset(UTF16)] uint16 *MachineName, + [in] [string,charset(UTF16)] uint16 *DatabaseName, + [in] uint32 access_mask, + [out,ref] policy_handle *handle); + + /*****************/ + /* Function 0x1c */ + WERROR svcctl_OpenServiceA([in,ref] policy_handle *scmanager_handle, + [in] [string,charset(UTF16)] uint16 *ServiceName, + [in] uint32 access_mask); + + /*****************/ + /* Function 0x1d */ + WERROR svcctl_QueryServiceConfigA([in,ref] policy_handle *handle, + [out] uint8 query[buf_size], /*QUERYU_SERVICE_CONFIG */ + [in] uint32 buf_size, + [out] uint32 bytes_needed + ); + + /*****************/ + /* Function 0x1e */ + WERROR svcctl_QueryServiceLockStatusA( + [in,ref] policy_handle *handle, + [in] uint32 buf_size, + [out,ref] SERVICE_LOCK_STATUS *status, + [out,ref] uint32 *required_buf_size + ); + + /*****************/ + /* Function 0x1f */ + WERROR svcctl_StartServiceA( + [in,ref] policy_handle *handle, + [in] uint32 NumArgs, + [in,length_is(NumArgs)] [string,charset(UTF16)] uint16 *Arguments); + + /*****************/ + /* Function 0x20 */ + WERROR svcctl_GetServiceDisplayNameA([in,ref] policy_handle *handle, + [in] [string,charset(UTF16)] uint16 *service_name, + [out] [string,charset(UTF16)] uint16 *display_name, + [in,out] uint32 *display_name_length); + /*****************/ + /* Function 0x21 */ + WERROR svcctl_GetServiceKeyNameA([in,ref] policy_handle *handle, + [in] [string,charset(UTF16)] uint16 *service_name, + [out] [string,charset(UTF16)] uint16 *key_name, + [in,out] uint32 *display_name_length); + + /*****************/ + /* Function 0x22 */ + WERROR svcctl_GetCurrentGroupeStateW(); + + /*****************/ + /* Function 0x23 */ + WERROR svcctl_EnumServiceGroupW(); + + /*****************/ + /* Function 0x24 */ + WERROR svcctl_ChangeServiceConfig2A([in,ref] policy_handle *handle, + [in] uint32 info_level, + [in] uint8 *info + ); + + /*****************/ + /* Function 0x25 */ + WERROR svcctl_ChangeServiceConfig2W([in,ref] policy_handle *handle, + [in] uint32 info_level, + [in] uint8 *info); + + /*****************/ + /* Function 0x26 */ + WERROR svcctl_QueryServiceConfig2A( + [in,ref] policy_handle *handle, + [in] uint32 info_level, + [out] uint8 buffer[buf_size], + [in] uint32 buf_size, + [out] uint32 bytes_needed); + + /*****************/ + /* Function 0x27 */ + WERROR svcctl_QueryServiceConfig2W( + [in,ref] policy_handle *handle, + [in] uint32 info_level, + [out] uint8 buffer[buf_size], + [in] uint32 buf_size, + [out] uint32 bytes_needed); + + /*****************/ + /* Function 0x28 */ + WERROR svcctl_QueryServiceStatusEx( + [in,ref] policy_handle *handle, + [in] uint32 info_level, + [out] uint8 buffer[buf_size], + [in] uint32 buf_size, + [out] uint32 bytes_needed); + + /*****************/ + /* Function 0x29 */ + WERROR EnumServicesStatusExA( + [in,ref] policy_handle *scmanager, + [in] uint32 info_level, + [in] uint32 type, + [in] uint32 state, + [out] uint8 services[buf_size], + [in] uint32 buf_size, + [out] uint32 bytes_needed, + [out] uint32 service_returned, + [in,out] uint32 *resume_handle, + [out] [string,charset(UTF16)] uint16 *group_name); + + /*****************/ + /* Function 0x2a */ + WERROR EnumServicesStatusExW( + [in,ref] policy_handle *scmanager, + [in] uint32 info_level, + [in] uint32 type, + [in] uint32 state, + [out] uint8 services[buf_size], + [in] uint32 buf_size, + [out] uint32 bytes_needed, + [out] uint32 service_returned, + [in,out] uint32 *resume_handle, + [out] [string,charset(UTF16)] uint16 *group_name); + + /*****************/ + /* Function 0x2b */ + WERROR svcctl_SCSendTSMessage(); +} |