diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2004-08-02 00:24:04 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:57:44 -0500 |
commit | 0c55b8d8c245ae4e418cb3d4341b4b5233828cad (patch) | |
tree | d6621196a5b89b6e529fcbface64c24adb61519e /source4/librpc | |
parent | 2768216e62ae0ca666afaca312b323e9ee2b2f08 (diff) | |
download | samba-0c55b8d8c245ae4e418cb3d4341b4b5233828cad.tar.gz samba-0c55b8d8c245ae4e418cb3d4341b4b5233828cad.tar.bz2 samba-0c55b8d8c245ae4e418cb3d4341b4b5233828cad.zip |
r1617: Start working on the svcctl pipe
(This used to be commit 518ff5f505446fee623365fd5bdfc75c0cb93d2a)
Diffstat (limited to 'source4/librpc')
-rw-r--r-- | source4/librpc/config.m4 | 1 | ||||
-rw-r--r-- | source4/librpc/idl/svcctl.idl | 161 |
2 files changed, 162 insertions, 0 deletions
diff --git a/source4/librpc/config.m4 b/source4/librpc/config.m4 index 4577d79b16..ba46cac36c 100644 --- a/source4/librpc/config.m4 +++ b/source4/librpc/config.m4 @@ -17,6 +17,7 @@ SMB_SUBSYSTEM(LIBNDR_RAW,[], librpc/gen_ndr/ndr_spoolss.o librpc/gen_ndr/ndr_wkssvc.o librpc/gen_ndr/ndr_srvsvc.o + librpc/gen_ndr/ndr_svcctl.o librpc/gen_ndr/ndr_atsvc.o librpc/gen_ndr/ndr_eventlog.o librpc/gen_ndr/ndr_epmapper.o diff --git a/source4/librpc/idl/svcctl.idl b/source4/librpc/idl/svcctl.idl new file mode 100644 index 0000000000..07e38deee6 --- /dev/null +++ b/source4/librpc/idl/svcctl.idl @@ -0,0 +1,161 @@ +#include "idl_types.h" + +/* + svcctl interface definitions +*/ + +[ uuid(367abb81-9844-35f1-ad32-98f038001003), + version(2.0), + pointer_default(unique) +] interface svcctl +{ + typedef struct { + uint32 is_locked; + unistr *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 { + unistr *service_name; + unistr *display_name; + SERVICE_STATUS status; + } ENUM_SERVICE_STATUS; + + typedef enum { + SERVICE_TYPE_KERNEL_DRIVER=0x01, + SERVICE_TYPE_FS_DRIVER=0x02, + SERVICE_TYPE_ADAPTER=0x04, + SERVICE_TYPE_RECOGNIZER_DRIVER=0x08, + SERVICE_TYPE_DRIVER=SERVICE_TYPE_KERNEL_DRIVER|SERVICE_TYPE_FS_DRIVER|SERVICE_TYPE_RECOGNIZER_DRIVER, + SERVICE_TYPE_WIN32_OWN_PROCESS=0x10, + SERVICE_TYPE_WIN32_SHARE_PROCESS=0x20, + SERVICE_TYPE_WIN32=SERVICE_TYPE_WIN32_OWN_PROCESS|SERVICE_TYPE_WIN32_SHARE_PROCESS + } ServiceType; + + typedef enum { + SERVICE_STATE_ACTIVE=0x01, + SERVICE_STATE_INACTIVE=0x02, + SERVICE_STATE_ALL=0x03 + } ServiceState; + + /*****************/ + /* Function 0x00 */ + uint32 svcctl_CloseServiceHandle( + [in,out,ref] policy_handle *handle + ); + + /*****************/ + /* Function 0x01 */ + + WERROR svcctl_ControlService(); + + /*****************/ + /* Function 0x02 */ + WERROR svcctl_DeleteService(); + + /*****************/ + /* 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_SCSetServiceBits(); + + /*****************/ + /* Function 0x0b */ + WERROR svcctl_ChangeServiceConfig(); + + /*****************/ + /* Function 0x0c */ + WERROR svcctl_CreateService(); + + /*****************/ + /* Function 0x0d */ + WERROR svcctl_EnumDependentServices(); + + /*****************/ + /* Function 0x0e */ + WERROR svcctl_EnumServicesStatus( + [in,ref] policy_handle *handle, + [in] uint32 type, + [in] uint32 state, + [out,size_is(buf_size)] ENUM_SERVICE_STATUS *service, + [in] uint32 buf_size, + [out] uint32 bytes_needed, + [out] uint32 services_returned, + [in,out] uint32 *resume_handle + ); + /*****************/ + /* Function 0x0f */ + WERROR svcctl_OpenSCManager( + [in] unistr *MachineName, + [in] unistr *DatabaseName, + [in] uint32 access_mask, + [out,ref] policy_handle *handle); + + /*****************/ + /* Function 0x10 */ + WERROR svcctl_OpenService(); + + /*****************/ + /* Function 0x11 */ + WERROR svcctl_QueryServiceConfig(); + + /*****************/ + /* Function 0x12 */ + WERROR svcctl_QueryServiceLockStatus( + [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_StartService( + [in,ref] policy_handle *handle, + [in] uint32 NumArgs, + [in,length_of(NumArgs)] unistr *Arguments); +} |