Пример #1
0
static bool test_QueryServiceStatus(struct torture_context *tctx,
				    struct dcerpc_pipe *p)
{
	struct svcctl_QueryServiceStatus r;
	struct policy_handle h, s;
	struct SERVICE_STATUS service_status;
	NTSTATUS status;
	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.out.service_status = &service_status;

	status = dcerpc_svcctl_QueryServiceStatus_r(b, tctx, &r);
	torture_assert_ntstatus_ok(tctx, status, "QueryServiceStatus failed!");
	torture_assert_werr_ok(tctx, r.out.result, "QueryServiceStatus failed!");

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

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

	return true;
}
Пример #2
0
static NTSTATUS svc_QueryServiceStatus(struct dcerpc_binding_handle *binding_handle,
			    struct policy_handle * psvc_handle,
			    struct SERVICE_STATUS * sstatus)
{
	NTSTATUS status;
	struct svcctl_QueryServiceStatus r;

	r.in.handle = psvc_handle;
	r.out.service_status = sstatus;
	status = dcerpc_svcctl_QueryServiceStatus_r(binding_handle, NULL, &r);
	return NT_RES(status, r.out.result);
}