rpc_server/srv_svcctl.c

ソースコードを見る。

関数

static BOOL api_svcctl_close_service (pipes_struct *p)
static BOOL api_svcctl_open_scmanager (pipes_struct *p)
static BOOL api_svcctl_open_service (pipes_struct *p)
static BOOL api_svcctl_get_display_name (pipes_struct *p)
static BOOL api_svcctl_query_status (pipes_struct *p)
static BOOL api_svcctl_enum_services_status (pipes_struct *p)
static BOOL api_svcctl_query_service_status_ex (pipes_struct *p)
static BOOL api_svcctl_enum_dependent_services (pipes_struct *p)
static BOOL api_svcctl_start_service (pipes_struct *p)
static BOOL api_svcctl_control_service (pipes_struct *p)
static BOOL api_svcctl_query_service_config (pipes_struct *p)
static BOOL api_svcctl_query_service_config2 (pipes_struct *p)
static BOOL api_svcctl_lock_service_db (pipes_struct *p)
static BOOL api_svcctl_unlock_service_db (pipes_struct *p)
static BOOL api_svcctl_query_security_sec (pipes_struct *p)
static BOOL api_svcctl_set_security_sec (pipes_struct *p)
void svcctl_get_pipe_fns (struct api_struct **fns, int *n_fns)
NTSTATUS rpc_svcctl_init (void)

変数

static struct api_struct api_svcctl_cmds []


関数

static BOOL api_svcctl_close_service ( pipes_struct p  )  [static]

srv_svcctl.c29 行で定義されています。

参照先 _svcctl_close_service()_input_data::datapipes_struct::in_datapipes_struct::out_data_output_data::rdataSVCCTL_R_CLOSE_SERVICE::statussvcctl_io_q_close_service()svcctl_io_r_close_service().

00030 {
00031         SVCCTL_Q_CLOSE_SERVICE q_u;
00032         SVCCTL_R_CLOSE_SERVICE r_u;
00033         prs_struct *data = &p->in_data.data;
00034         prs_struct *rdata = &p->out_data.rdata;
00035 
00036         ZERO_STRUCT(q_u);
00037         ZERO_STRUCT(r_u);
00038 
00039         if(!svcctl_io_q_close_service("", &q_u, data, 0))
00040                 return False;
00041 
00042         r_u.status = _svcctl_close_service(p, &q_u, &r_u);
00043 
00044         if(!svcctl_io_r_close_service("", &r_u, rdata, 0))
00045                 return False;
00046 
00047         return True;
00048 }

static BOOL api_svcctl_open_scmanager ( pipes_struct p  )  [static]

srv_svcctl.c53 行で定義されています。

参照先 _svcctl_open_scmanager()_input_data::datapipes_struct::in_datapipes_struct::out_data_output_data::rdataSVCCTL_R_OPEN_SCMANAGER::statussvcctl_io_q_open_scmanager()svcctl_io_r_open_scmanager().

00054 {
00055         SVCCTL_Q_OPEN_SCMANAGER q_u;
00056         SVCCTL_R_OPEN_SCMANAGER r_u;
00057         prs_struct *data = &p->in_data.data;
00058         prs_struct *rdata = &p->out_data.rdata;
00059 
00060         ZERO_STRUCT(q_u);
00061         ZERO_STRUCT(r_u);
00062 
00063         if(!svcctl_io_q_open_scmanager("", &q_u, data, 0))
00064                 return False;
00065 
00066         r_u.status = _svcctl_open_scmanager(p, &q_u, &r_u);
00067 
00068         if(!svcctl_io_r_open_scmanager("", &r_u, rdata, 0))
00069                 return False;
00070 
00071         return True;
00072 }

static BOOL api_svcctl_open_service ( pipes_struct p  )  [static]

srv_svcctl.c77 行で定義されています。

参照先 _svcctl_open_service()_input_data::datapipes_struct::in_datapipes_struct::out_data_output_data::rdataSVCCTL_R_OPEN_SERVICE::statussvcctl_io_q_open_service()svcctl_io_r_open_service().

00078 {
00079         SVCCTL_Q_OPEN_SERVICE q_u;
00080         SVCCTL_R_OPEN_SERVICE r_u;
00081         prs_struct *data = &p->in_data.data;
00082         prs_struct *rdata = &p->out_data.rdata;
00083 
00084         ZERO_STRUCT(q_u);
00085         ZERO_STRUCT(r_u);
00086 
00087         if(!svcctl_io_q_open_service("", &q_u, data, 0))
00088                 return False;
00089 
00090         r_u.status = _svcctl_open_service(p, &q_u, &r_u);
00091 
00092         if(!svcctl_io_r_open_service("", &r_u, rdata, 0))
00093                 return False;
00094 
00095         return True;
00096 }

static BOOL api_svcctl_get_display_name ( pipes_struct p  )  [static]

srv_svcctl.c101 行で定義されています。

参照先 _svcctl_get_display_name()_input_data::datapipes_struct::in_datapipes_struct::out_data_output_data::rdataSVCCTL_R_GET_DISPLAY_NAME::statussvcctl_io_q_get_display_name()svcctl_io_r_get_display_name().

00102 {
00103         SVCCTL_Q_GET_DISPLAY_NAME q_u;
00104         SVCCTL_R_GET_DISPLAY_NAME r_u;
00105         prs_struct *data = &p->in_data.data;
00106         prs_struct *rdata = &p->out_data.rdata;
00107 
00108         ZERO_STRUCT(q_u);
00109         ZERO_STRUCT(r_u);
00110 
00111         if(!svcctl_io_q_get_display_name("", &q_u, data, 0))
00112                 return False;
00113 
00114         r_u.status = _svcctl_get_display_name(p, &q_u, &r_u);
00115 
00116         if(!svcctl_io_r_get_display_name("", &r_u, rdata, 0))
00117                 return False;
00118 
00119         return True;
00120 }

static BOOL api_svcctl_query_status ( pipes_struct p  )  [static]

srv_svcctl.c125 行で定義されています。

参照先 _svcctl_query_status()_input_data::datapipes_struct::in_datapipes_struct::out_data_output_data::rdataSVCCTL_R_QUERY_STATUS::statussvcctl_io_q_query_status()svcctl_io_r_query_status().

00126 {
00127         SVCCTL_Q_QUERY_STATUS q_u;
00128         SVCCTL_R_QUERY_STATUS r_u;
00129         prs_struct *data = &p->in_data.data;
00130         prs_struct *rdata = &p->out_data.rdata;
00131 
00132         ZERO_STRUCT(q_u);
00133         ZERO_STRUCT(r_u);
00134 
00135         if(!svcctl_io_q_query_status("", &q_u, data, 0))
00136                 return False;
00137 
00138         r_u.status = _svcctl_query_status(p, &q_u, &r_u);
00139 
00140         if(!svcctl_io_r_query_status("", &r_u, rdata, 0))
00141                 return False;
00142 
00143         return True;
00144 }

static BOOL api_svcctl_enum_services_status ( pipes_struct p  )  [static]

srv_svcctl.c149 行で定義されています。

参照先 _svcctl_enum_services_status()_input_data::datapipes_struct::in_datapipes_struct::out_data_output_data::rdataSVCCTL_R_ENUM_SERVICES_STATUS::statussvcctl_io_q_enum_services_status()svcctl_io_r_enum_services_status().

00150 {
00151         SVCCTL_Q_ENUM_SERVICES_STATUS q_u;
00152         SVCCTL_R_ENUM_SERVICES_STATUS r_u;
00153         prs_struct *data = &p->in_data.data;
00154         prs_struct *rdata = &p->out_data.rdata;
00155 
00156         ZERO_STRUCT(q_u);
00157         ZERO_STRUCT(r_u);
00158 
00159         if(!svcctl_io_q_enum_services_status("", &q_u, data, 0))
00160                 return False;
00161 
00162         r_u.status = _svcctl_enum_services_status(p, &q_u, &r_u);
00163 
00164         if(!svcctl_io_r_enum_services_status("", &r_u, rdata, 0))
00165                 return False;
00166 
00167         return True;
00168 }

static BOOL api_svcctl_query_service_status_ex ( pipes_struct p  )  [static]

srv_svcctl.c172 行で定義されています。

参照先 _svcctl_query_service_status_ex()_input_data::datapipes_struct::in_datapipes_struct::out_data_output_data::rdataSVCCTL_R_QUERY_SERVICE_STATUSEX::statussvcctl_io_q_query_service_status_ex()svcctl_io_r_query_service_status_ex().

00173 {
00174         SVCCTL_Q_QUERY_SERVICE_STATUSEX q_u;
00175         SVCCTL_R_QUERY_SERVICE_STATUSEX r_u;
00176         prs_struct *data = &p->in_data.data;
00177         prs_struct *rdata = &p->out_data.rdata;
00178 
00179         ZERO_STRUCT(q_u);
00180         ZERO_STRUCT(r_u);
00181 
00182         if(!svcctl_io_q_query_service_status_ex("", &q_u, data, 0))
00183                 return False;
00184 
00185         r_u.status = _svcctl_query_service_status_ex(p, &q_u, &r_u);
00186 
00187         if(!svcctl_io_r_query_service_status_ex("", &r_u, rdata, 0))
00188                 return False;
00189 
00190         return True;
00191 }

static BOOL api_svcctl_enum_dependent_services ( pipes_struct p  )  [static]

srv_svcctl.c195 行で定義されています。

参照先 _svcctl_enum_dependent_services()_input_data::datapipes_struct::in_datapipes_struct::out_data_output_data::rdataSVCCTL_R_ENUM_DEPENDENT_SERVICES::statussvcctl_io_q_enum_dependent_services()svcctl_io_r_enum_dependent_services().

00196 {
00197         SVCCTL_Q_ENUM_DEPENDENT_SERVICES q_u;
00198         SVCCTL_R_ENUM_DEPENDENT_SERVICES r_u;
00199         prs_struct *data = &p->in_data.data;
00200         prs_struct *rdata = &p->out_data.rdata;
00201 
00202         ZERO_STRUCT(q_u);
00203         ZERO_STRUCT(r_u);
00204 
00205         if(!svcctl_io_q_enum_dependent_services("", &q_u, data, 0))
00206                 return False;
00207 
00208         r_u.status = _svcctl_enum_dependent_services(p, &q_u, &r_u);
00209 
00210         if(!svcctl_io_r_enum_dependent_services("", &r_u, rdata, 0))
00211                 return False;
00212 
00213         return True;
00214 }

static BOOL api_svcctl_start_service ( pipes_struct p  )  [static]

srv_svcctl.c219 行で定義されています。

参照先 _svcctl_start_service()_input_data::datapipes_struct::in_datapipes_struct::out_data_output_data::rdataSVCCTL_R_START_SERVICE::statussvcctl_io_q_start_service()svcctl_io_r_start_service().

00220 {
00221         SVCCTL_Q_START_SERVICE q_u;
00222         SVCCTL_R_START_SERVICE r_u;
00223         prs_struct *data = &p->in_data.data;
00224         prs_struct *rdata = &p->out_data.rdata;
00225 
00226         ZERO_STRUCT(q_u);
00227         ZERO_STRUCT(r_u);
00228 
00229         if(!svcctl_io_q_start_service("", &q_u, data, 0))
00230                 return False;
00231 
00232         r_u.status = _svcctl_start_service(p, &q_u, &r_u);
00233 
00234         if(!svcctl_io_r_start_service("", &r_u, rdata, 0))
00235                 return False;
00236 
00237         return True;
00238 }

static BOOL api_svcctl_control_service ( pipes_struct p  )  [static]

srv_svcctl.c243 行で定義されています。

参照先 _svcctl_control_service()_input_data::datapipes_struct::in_datapipes_struct::out_data_output_data::rdataSVCCTL_R_CONTROL_SERVICE::statussvcctl_io_q_control_service()svcctl_io_r_control_service().

00244 {
00245         SVCCTL_Q_CONTROL_SERVICE q_u;
00246         SVCCTL_R_CONTROL_SERVICE r_u;
00247         prs_struct *data = &p->in_data.data;
00248         prs_struct *rdata = &p->out_data.rdata;
00249 
00250         ZERO_STRUCT(q_u);
00251         ZERO_STRUCT(r_u);
00252 
00253         if(!svcctl_io_q_control_service("", &q_u, data, 0))
00254                 return False;
00255 
00256         r_u.status = _svcctl_control_service(p, &q_u, &r_u);
00257 
00258         if(!svcctl_io_r_control_service("", &r_u, rdata, 0))
00259                 return False;
00260 
00261         return True;
00262 }

static BOOL api_svcctl_query_service_config ( pipes_struct p  )  [static]

srv_svcctl.c267 行で定義されています。

参照先 _svcctl_query_service_config()_input_data::datapipes_struct::in_datapipes_struct::out_data_output_data::rdataSVCCTL_R_QUERY_SERVICE_CONFIG::statussvcctl_io_q_query_service_config()svcctl_io_r_query_service_config().

00268 {
00269         SVCCTL_Q_QUERY_SERVICE_CONFIG q_u;
00270         SVCCTL_R_QUERY_SERVICE_CONFIG r_u;
00271         prs_struct *data = &p->in_data.data;
00272         prs_struct *rdata = &p->out_data.rdata;
00273 
00274         ZERO_STRUCT(q_u);
00275         ZERO_STRUCT(r_u);
00276 
00277         if(!svcctl_io_q_query_service_config("", &q_u, data, 0))
00278                 return False;
00279 
00280         r_u.status = _svcctl_query_service_config(p, &q_u, &r_u);
00281 
00282         if(!svcctl_io_r_query_service_config("", &r_u, rdata, 0))
00283                 return False;
00284 
00285         return True;
00286 }

static BOOL api_svcctl_query_service_config2 ( pipes_struct p  )  [static]

srv_svcctl.c291 行で定義されています。

参照先 _svcctl_query_service_config2()_input_data::datapipes_struct::in_datapipes_struct::out_data_output_data::rdataSVCCTL_R_QUERY_SERVICE_CONFIG2::statussvcctl_io_q_query_service_config2()svcctl_io_r_query_service_config2().

00292 {
00293         SVCCTL_Q_QUERY_SERVICE_CONFIG2 q_u;
00294         SVCCTL_R_QUERY_SERVICE_CONFIG2 r_u;
00295         prs_struct *data = &p->in_data.data;
00296         prs_struct *rdata = &p->out_data.rdata;
00297 
00298         ZERO_STRUCT(q_u);
00299         ZERO_STRUCT(r_u);
00300 
00301         if(!svcctl_io_q_query_service_config2("", &q_u, data, 0))
00302                 return False;
00303 
00304         r_u.status = _svcctl_query_service_config2(p, &q_u, &r_u);
00305 
00306         if(!svcctl_io_r_query_service_config2("", &r_u, rdata, 0))
00307                 return False;
00308 
00309         return True;
00310 }

static BOOL api_svcctl_lock_service_db ( pipes_struct p  )  [static]

srv_svcctl.c315 行で定義されています。

参照先 _svcctl_lock_service_db()_input_data::datapipes_struct::in_datapipes_struct::out_data_output_data::rdataSVCCTL_R_LOCK_SERVICE_DB::statussvcctl_io_q_lock_service_db()svcctl_io_r_lock_service_db().

00316 {
00317         SVCCTL_Q_LOCK_SERVICE_DB q_u;
00318         SVCCTL_R_LOCK_SERVICE_DB r_u;
00319         prs_struct *data = &p->in_data.data;
00320         prs_struct *rdata = &p->out_data.rdata;
00321 
00322         ZERO_STRUCT(q_u);
00323         ZERO_STRUCT(r_u);
00324 
00325         if(!svcctl_io_q_lock_service_db("", &q_u, data, 0))
00326                 return False;
00327 
00328         r_u.status = _svcctl_lock_service_db(p, &q_u, &r_u);
00329 
00330         if(!svcctl_io_r_lock_service_db("", &r_u, rdata, 0))
00331                 return False;
00332 
00333         return True;
00334 }

static BOOL api_svcctl_unlock_service_db ( pipes_struct p  )  [static]

srv_svcctl.c340 行で定義されています。

参照先 _svcctl_unlock_service_db()_input_data::datapipes_struct::in_datapipes_struct::out_data_output_data::rdataSVCCTL_R_UNLOCK_SERVICE_DB::statussvcctl_io_q_unlock_service_db()svcctl_io_r_unlock_service_db().

00341 {
00342         SVCCTL_Q_UNLOCK_SERVICE_DB q_u;
00343         SVCCTL_R_UNLOCK_SERVICE_DB r_u;
00344         prs_struct *data = &p->in_data.data;
00345         prs_struct *rdata = &p->out_data.rdata;
00346 
00347         ZERO_STRUCT(q_u);
00348         ZERO_STRUCT(r_u);
00349 
00350         if(!svcctl_io_q_unlock_service_db("", &q_u, data, 0))
00351                 return False;
00352 
00353         r_u.status = _svcctl_unlock_service_db(p, &q_u, &r_u);
00354 
00355         if(!svcctl_io_r_unlock_service_db("", &r_u, rdata, 0))
00356                 return False;
00357 
00358         return True;
00359 }

static BOOL api_svcctl_query_security_sec ( pipes_struct p  )  [static]

srv_svcctl.c364 行で定義されています。

参照先 _svcctl_query_service_sec()_input_data::datapipes_struct::in_datapipes_struct::out_data_output_data::rdataSVCCTL_R_QUERY_SERVICE_SEC::statussvcctl_io_q_query_service_sec()svcctl_io_r_query_service_sec().

00365 {
00366         SVCCTL_Q_QUERY_SERVICE_SEC q_u;
00367         SVCCTL_R_QUERY_SERVICE_SEC r_u;
00368         prs_struct *data = &p->in_data.data;
00369         prs_struct *rdata = &p->out_data.rdata;
00370 
00371         ZERO_STRUCT(q_u);
00372         ZERO_STRUCT(r_u);
00373 
00374         if(!svcctl_io_q_query_service_sec("", &q_u, data, 0))
00375                 return False;
00376 
00377         r_u.status = _svcctl_query_service_sec(p, &q_u, &r_u);
00378 
00379         if(!svcctl_io_r_query_service_sec("", &r_u, rdata, 0))
00380                 return False;
00381 
00382         return True;
00383 }

static BOOL api_svcctl_set_security_sec ( pipes_struct p  )  [static]

srv_svcctl.c388 行で定義されています。

参照先 _svcctl_set_service_sec()_input_data::datapipes_struct::in_datapipes_struct::out_data_output_data::rdataSVCCTL_R_SET_SERVICE_SEC::statussvcctl_io_q_set_service_sec()svcctl_io_r_set_service_sec().

00389 {
00390         SVCCTL_Q_SET_SERVICE_SEC q_u;
00391         SVCCTL_R_SET_SERVICE_SEC r_u;
00392         prs_struct *data = &p->in_data.data;
00393         prs_struct *rdata = &p->out_data.rdata;
00394 
00395         ZERO_STRUCT(q_u);
00396         ZERO_STRUCT(r_u);
00397 
00398         if(!svcctl_io_q_set_service_sec("", &q_u, data, 0))
00399                 return False;
00400 
00401         r_u.status = _svcctl_set_service_sec(p, &q_u, &r_u);
00402 
00403         if(!svcctl_io_r_set_service_sec("", &r_u, rdata, 0))
00404                 return False;
00405 
00406         return True;
00407 }

void svcctl_get_pipe_fns ( struct api_struct **  fns,
int *  n_fns 
)

srv_svcctl.c435 行で定義されています。

参照先 api_svcctl_cmds.

参照元 get_pipe_fns().

00436 {
00437         *fns = api_svcctl_cmds;
00438         *n_fns = sizeof(api_svcctl_cmds) / sizeof(struct api_struct);
00439 }

NTSTATUS rpc_svcctl_init ( void   ) 

srv_svcctl.c441 行で定義されています。

参照先 api_svcctl_cmdsrpc_pipe_register_commands().

00442 {
00443   return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "svcctl", "ntsvcs", api_svcctl_cmds,
00444                                     sizeof(api_svcctl_cmds) / sizeof(struct api_struct));
00445 }


変数

struct api_struct api_svcctl_cmds[] [static]

初期値:

{
      { "SVCCTL_CLOSE_SERVICE"              , SVCCTL_CLOSE_SERVICE              , api_svcctl_close_service },
      { "SVCCTL_OPEN_SCMANAGER_W"           , SVCCTL_OPEN_SCMANAGER_W           , api_svcctl_open_scmanager },
      { "SVCCTL_OPEN_SERVICE_W"             , SVCCTL_OPEN_SERVICE_W             , api_svcctl_open_service },
      { "SVCCTL_GET_DISPLAY_NAME"           , SVCCTL_GET_DISPLAY_NAME           , api_svcctl_get_display_name },
      { "SVCCTL_QUERY_STATUS"               , SVCCTL_QUERY_STATUS               , api_svcctl_query_status },
      { "SVCCTL_QUERY_SERVICE_CONFIG_W"     , SVCCTL_QUERY_SERVICE_CONFIG_W     , api_svcctl_query_service_config },
      { "SVCCTL_QUERY_SERVICE_CONFIG2_W"    , SVCCTL_QUERY_SERVICE_CONFIG2_W    , api_svcctl_query_service_config2 },
      { "SVCCTL_ENUM_SERVICES_STATUS_W"     , SVCCTL_ENUM_SERVICES_STATUS_W     , api_svcctl_enum_services_status },
      { "SVCCTL_ENUM_DEPENDENT_SERVICES_W"  , SVCCTL_ENUM_DEPENDENT_SERVICES_W  , api_svcctl_enum_dependent_services },
      { "SVCCTL_START_SERVICE_W"            , SVCCTL_START_SERVICE_W            , api_svcctl_start_service },
      { "SVCCTL_CONTROL_SERVICE"            , SVCCTL_CONTROL_SERVICE            , api_svcctl_control_service },
      { "SVCCTL_QUERY_SERVICE_STATUSEX_W"   , SVCCTL_QUERY_SERVICE_STATUSEX_W   , api_svcctl_query_service_status_ex },
      { "SVCCTL_LOCK_SERVICE_DB"            , SVCCTL_LOCK_SERVICE_DB            , api_svcctl_lock_service_db },
      { "SVCCTL_UNLOCK_SERVICE_DB"          , SVCCTL_UNLOCK_SERVICE_DB          , api_svcctl_unlock_service_db },
      { "SVCCTL_QUERY_SERVICE_SEC"          , SVCCTL_QUERY_SERVICE_SEC          , api_svcctl_query_security_sec },
      { "SVCCTL_SET_SERVICE_SEC"            , SVCCTL_SET_SERVICE_SEC            , api_svcctl_set_security_sec }
}

srv_svcctl.c414 行で定義されています。

参照元 rpc_svcctl_init()svcctl_get_pipe_fns().


Sambaに対してSat Aug 29 21:24:23 2009に生成されました。  doxygen 1.4.7