NTSTATUS svc_OpenService(struct dcerpc_pipe * svc_pipe, struct policy_handle * pscm_handle, const char *ServiceName, struct policy_handle * psvc_handle) { NTSTATUS status; struct svcctl_OpenServiceW r; r.in.scmanager_handle = pscm_handle; r.in.ServiceName = ServiceName; r.in.access_mask = SERVICE_ALL_ACCESS; r.out.handle = psvc_handle; status = dcerpc_svcctl_OpenServiceW(svc_pipe, NULL, &r); return NT_RES(status, r.out.result); }
static bool test_OpenService(struct dcerpc_pipe *p, struct torture_context *tctx, struct policy_handle *h, const char *name, struct policy_handle *s) { struct svcctl_OpenServiceW r; r.in.scmanager_handle = h; r.in.ServiceName = name; r.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED; r.out.handle = s; torture_assert_ntstatus_ok(tctx, dcerpc_svcctl_OpenServiceW(p, tctx, &r), "OpenServiceW failed!"); torture_assert_werr_ok(tctx, r.out.result, "OpenServiceW failed!"); return true; }