Esempio n. 1
0
static bool test_StartServiceW(struct torture_context *tctx,
			       struct dcerpc_pipe *p)
{
	struct svcctl_StartServiceW r;
	struct policy_handle h, s;
	struct dcerpc_binding_handle *b = p->binding_handle;

	if (!test_OpenSCManager(b, tctx, &h))
		return false;

	if (!test_OpenService(b, tctx, &h, TORTURE_DEFAULT_SERVICE, &s))
		return false;

	r.in.handle = &s;
	r.in.NumArgs = 0;
	r.in.Arguments = NULL;

	torture_assert_ntstatus_ok(tctx,
		dcerpc_svcctl_StartServiceW_r(b, tctx, &r),
		"StartServiceW failed!");
	torture_assert_werr_equal(tctx, r.out.result,
		WERR_SERVICE_ALREADY_RUNNING,
		"StartServiceW failed!");

	if (!test_CloseServiceHandle(b, tctx, &s))
		return false;

	if (!test_CloseServiceHandle(b, tctx, &h))
		return false;

	return true;
}
Esempio n. 2
0
static NTSTATUS svc_StartService(struct dcerpc_binding_handle *binding_handle,
			  struct policy_handle * psvc_handle)
{
	NTSTATUS status;
	struct svcctl_StartServiceW r;

	r.in.handle = psvc_handle;
	r.in.NumArgs = 0;
	r.in.Arguments = NULL;
	status = dcerpc_svcctl_StartServiceW_r(binding_handle, NULL, &r);
	return NT_RES(status, r.out.result);
}