Beispiel #1
0
 public void ControlEx(SERVICE_CONTROL control, ref SERVICE_CONTROL_STATUS_REASON_PARAMS reason)
 {
     if (!NativeMethods.ControlServiceEx(handle, control, SERVICE_CONTROL_STATUS_REASON_INFO, ref reason))
     {
         throw new Win32Exception();
     }
 }
Beispiel #2
0
        public void ControlServiceExTest()
        {
            var reason = new SERVICE_CONTROL_STATUS_REASON_PARAMS();

            Assert.That(ControlServiceEx(hSvc, ServiceControl.SERVICE_CONTROL_PAUSE, ServiceInfoLevels.SERVICE_CONTROL_STATUS_REASON_INFO, ref reason), ResultIs.Successful);
            Thread.Sleep((int)reason.serviceStatus.dwWaitHint);
            Assert.That(GetState(hSvc), Is.EqualTo(ServiceState.SERVICE_PAUSED).Or.EqualTo(ServiceState.SERVICE_PAUSE_PENDING));
            Assert.That(ControlServiceEx(hSvc, ServiceControl.SERVICE_CONTROL_CONTINUE, ServiceInfoLevels.SERVICE_CONTROL_STATUS_REASON_INFO, ref reason), ResultIs.Successful);
            Thread.Sleep((int)reason.serviceStatus.dwWaitHint);
            Assert.That(GetState(hSvc), Is.EqualTo(ServiceState.SERVICE_RUNNING));
        }
Beispiel #3
0
        public void ControlEx()
        {
            using (var scm = ServiceControlManager.OpenServiceControlManager(null, SCM_ACCESS.SC_MANAGER_CREATE_SERVICE))
                using (var service = ServiceControlManagerTests.CreateDummyService(scm))
                {
                    service.Start();
                    service.WaitForServiceToStart();

                    var parameters = new SERVICE_CONTROL_STATUS_REASON_PARAMS();
                    service.ControlEx(SERVICE_CONTROL.SERVICE_CONTROL_PAUSE, ref parameters);
                    Assert.That(parameters.serviceStatus.currentState, Is.Not.EqualTo(SERVICE_STATE.SERVICE_RUNNING));
                    service.WaitForServiceStatus(SERVICE_STATE.SERVICE_PAUSED);

                    service.ControlEx(SERVICE_CONTROL.SERVICE_CONTROL_CONTINUE, ref parameters);
                    service.WaitForServiceStatus(SERVICE_STATE.SERVICE_RUNNING);


                    service.StopServiceAndWait();
                }
        }
Beispiel #4
0
 internal static extern bool ControlServiceEx(
     IntPtr serviceHandle,
     SERVICE_CONTROL control,
     UInt32 infoLevel,
     ref SERVICE_CONTROL_STATUS_REASON_PARAMS controlParams
     );