Example #1
0
 public void _Setup()
 {
     hSvcMgr = OpenSCManager(null, null, ScManagerAccessTypes.SC_MANAGER_ALL_ACCESS);
     Assert.That(hSvcMgr, ResultIs.ValidHandle);
     hSvc = OpenService(hSvcMgr, svcName, ServiceAccessTypes.SERVICE_ALL_ACCESS);
     Assert.That(hSvc, ResultIs.ValidHandle);
 }
Example #2
0
 public void _Setup()
 {
     hSvcMgr = OpenSCManager(null, null, ScManagerAccessTypes.SC_MANAGER_ALL_ACCESS);
     AssertHandleIsValid(hSvcMgr);
     hSvc = OpenService(hSvcMgr, svcName, ServiceAccessTypes.SERVICE_ALL_ACCESS);
     AssertHandleIsValid(hSvc);
 }
Example #3
0
        private static void AssertHandleIsValid(SafeSC_HANDLE handle)
        {
            if (handle.IsInvalid)
            {
                Win32Error.ThrowLastError();
            }

            Assert.That(handle.IsNull, Is.False);
            Assert.That(handle.IsClosed, Is.False);
            Assert.That(handle.IsInvalid, Is.False);
        }
Example #4
0
        private static void WaitForServiceStatus(SafeSC_HANDLE service, ServiceState status)
        {
            //query service status again to check that it changed
            var tests = 0;

            while (tests < 40)
            {
                if (GetState(service) == status)
                {
                    break;
                }

                Thread.Sleep(500);
                tests++;
            }

            if (tests >= 40)
            {
                throw new TimeoutException($"Timed-out waiting for service status {status}");
            }
        }
Example #5
0
        private static void WaitForServiceStatus(SafeSC_HANDLE service, ServiceState status)
        {
            //query service status again to check that it changed
            var tests = 0;

            while (tests < 40)
            {
                var status2 = AdvApi32.QueryServiceStatusEx <SERVICE_STATUS_PROCESS>(service, SC_STATUS_TYPE.SC_STATUS_PROCESS_INFO);
                if (status2.dwCurrentState == status)
                {
                    break;
                }

                Thread.Sleep(500);
                tests++;
            }

            if (tests >= 40)
            {
                throw new TimeoutException($"Timed-out waiting for service status {status}");
            }
        }