From 7135fb0a2c869169996206a9c1cf5ac1112b9f0a Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Tue, 8 Dec 1998 23:29:37 +0000 Subject: adding "Service Control Manager" commands to rpcclient. (This used to be commit e5ee965f8d8452ab694bc5d88e474c4b91dce5b0) --- source3/include/proto.h | 31 +++++++++++++++++---- source3/include/rpc_svcctl.h | 64 +++++++++++++++++++++++++++++++++++++------- 2 files changed, 81 insertions(+), 14 deletions(-) (limited to 'source3/include') diff --git a/source3/include/proto.h b/source3/include/proto.h index 0c4b25a21f..de2d6f476c 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -1769,6 +1769,18 @@ BOOL do_srv_net_srv_file_enum(struct cli_state *cli, uint16 fnum, BOOL do_srv_net_srv_get_info(struct cli_state *cli, uint16 fnum, char *server_name, uint32 switch_value, SRV_INFO_CTR *ctr); +/*The following definitions come from rpc_client/cli_svcctl.c */ + +BOOL do_svc_open_sc_man(struct cli_state *cli, uint16 fnum, + char *srv_name, char *db_name, + uint32 des_access, + POLICY_HND *hnd); +BOOL do_svc_enum_svcs(struct cli_state *cli, uint16 fnum, + POLICY_HND *hnd, + uint32 services_type, uint32 services_state, + uint32 buf_size, uint32 *resume_hnd); +BOOL do_svc_close(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd); + /*The following definitions come from rpc_client/cli_wkssvc.c */ BOOL do_wks_query_info(struct cli_state *cli, uint16 fnum, @@ -2482,12 +2494,17 @@ void srv_io_r_net_remote_tod(char *desc, SRV_R_NET_REMOTE_TOD *r_n, prs_struct * /*The following definitions come from rpc_parse/parse_svc.c */ -void make_svc_q_open_policy(SVC_Q_OPEN_POLICY *q_u, - char *server, uint16 unknown) ; -void svc_io_q_open_policy(char *desc, SVC_Q_OPEN_POLICY *q_u, prs_struct *ps, int depth); -void make_svc_r_open_policy(SVC_R_OPEN_POLICY *r_u, POLICY_HND *hnd, +void make_svc_q_open_sc_man(SVC_Q_OPEN_SC_MAN *q_u, + char *server, char *database, + uint32 des_access) ; +void svc_io_q_open_sc_man(char *desc, SVC_Q_OPEN_SC_MAN *q_u, prs_struct *ps, int depth); +void make_svc_r_open_sc_man(SVC_R_OPEN_SC_MAN *r_u, POLICY_HND *hnd, uint32 status) ; -void svc_io_r_open_policy(char *desc, SVC_R_OPEN_POLICY *r_u, prs_struct *ps, int depth); +void svc_io_r_open_sc_man(char *desc, SVC_R_OPEN_SC_MAN *r_u, prs_struct *ps, int depth); +void make_svc_q_enum_svcs_status(SVC_Q_ENUM_SVCS_STATUS *q_c, POLICY_HND *hnd, + uint32 service_type, uint32 service_state, + uint32 buf_size, uint32 enum_hnd ); +void svc_io_q_enum_svcs_status(char *desc, SVC_Q_ENUM_SVCS_STATUS *q_u, prs_struct *ps, int depth); void make_svc_q_close(SVC_Q_CLOSE *q_c, POLICY_HND *hnd); void svc_io_q_close(char *desc, SVC_Q_CLOSE *q_u, prs_struct *ps, int depth); void svc_io_r_close(char *desc, SVC_R_CLOSE *r_u, prs_struct *ps, int depth); @@ -2637,6 +2654,10 @@ void cmd_srv_enum_shares(struct client_info *info); void cmd_srv_enum_sess(struct client_info *info); void cmd_srv_enum_files(struct client_info *info); +/*The following definitions come from rpcclient/cmd_svcctl.c */ + +void cmd_svc_enum(struct client_info *info); + /*The following definitions come from rpcclient/cmd_wkssvc.c */ void cmd_wks_query_info(struct client_info *info); diff --git a/source3/include/rpc_svcctl.h b/source3/include/rpc_svcctl.h index 0a98496c79..4241928218 100644 --- a/source3/include/rpc_svcctl.h +++ b/source3/include/rpc_svcctl.h @@ -26,27 +26,73 @@ /* svcctl pipe */ -#define SVC_OPEN_POLICY 0x0f -#define SVC_CLOSE 0x00 +#define SVC_OPEN_SC_MAN 0x0f +#define SVC_ENUM_SVCS_STATUS 0x0e +#define SVC_CLOSE 0x00 -/* SVC_Q_OPEN_POLICY */ -typedef struct q_svc_open_pol_info +/* SVC_Q_OPEN_SC_MAN */ +typedef struct q_svc_open_sc_man_info { uint32 ptr_srv_name; /* pointer (to server name?) */ UNISTR2 uni_srv_name; /* unicode server name starting with '\\' */ - uint32 unknown; /* unknown */ + uint32 ptr_db_name; /* pointer (to database name?) */ + UNISTR2 uni_db_name; /* unicode database name */ -} SVC_Q_OPEN_POLICY; + uint32 des_access; /* 0x80000004 - SC_MANAGER_xxxx */ -/* SVC_R_OPEN_POLICY */ -typedef struct r_svc_open_pol_info +} SVC_Q_OPEN_SC_MAN; + +/* SVC_R_OPEN_SC_MAN */ +typedef struct r_svc_open_sc_man_info { POLICY_HND pol; uint32 status; /* return status */ -} SVC_R_OPEN_POLICY; +} SVC_R_OPEN_SC_MAN; + +/* SVC_STATUS */ +typedef struct svc_status_info +{ + uint32 svc_type; + uint32 current_state; + uint32 controls_accepted; + uint32 win32_exit_code; + uint32 svc_specific_exit_code; + uint32 check_point; + uint32 wait_hint; + +} SVC_STATUS; + +/* ENUM_SVC_STATUS */ +typedef struct enum_svc_status_info +{ + UNISTR uni_srvc_name; + UNISTR uni_disp_name; + SVC_STATUS status; + +} ENUM_SVC_STATUS; + +/* SVC_Q_ENUM_SVCS_STATUS */ +typedef struct q_svc_enum_svcs_status_info +{ + POLICY_HND pol; + uint32 service_type; /* 0x00000030 - win32 | 0x0000000b - driver */ + uint32 service_state; /* 0x00000003 - state_all */ + uint32 buf_size; /* max service buffer size */ + ENUM_HND resume_hnd; /* resume handle */ + +} SVC_Q_ENUM_SVCS_STATUS; + +/* SVC_R_ENUM_SVCS_STATUS */ +typedef struct r_svc_enum_svcs_status_info +{ + uint32 buf_size; /* service buffer size */ + ENUM_SVC_STATUS *svcs; + uint32 status; /* return status */ + +} SVC_R_ENUM_SVCS_STATUS; /* SVC_Q_CLOSE */ -- cgit