SetServiceStatus

myServiceStatus.currentState = (int)State.SERVICE_START_PENDING; myServiceStatus.checkPoint = 1; myServiceStatus.waitHint = 5000; SetServiceStatus(handle, ref myServiceStatus) myServiceStatus.currentState = (int)State.SERVICE_RUNNING; myServiceStatus.checkPoint = 0; myServiceStatus.waitHint = 0; SetServiceStatus(handle, ref myServiceStatus);

C# Definition:

[DllImport("advapi32.dll")]
   private static extern bool SetServiceStatus(IntPtr hServiceStatus, ref SERVICE_STATUS lpServiceStatus);

VB Definition:

ByVal hServiceStatus As IntPtr, 
    ByRef lpServiceStatus As SERVICE_STATUS) 
    As Integer

User-Defined Field Types:

public enum State
    {
    SERVICE_STOPPED = 0x00000001,
    SERVICE_START_PENDING = 0x00000002,
    SERVICE_STOP_PENDING = 0x00000003,
    SERVICE_RUNNING = 0x00000004,
    SERVICE_CONTINUE_PENDING = 0x00000005,
    SERVICE_PAUSE_PENDING = 0x00000006,
    SERVICE_PAUSED = 0x00000007,
    }

   [StructLayout(LayoutKind.Sequential)]
   public struct SERVICE_STATUS {
       public long serviceType;
       public State currentState;
       public long controlsAccepted;
       public long win32ExitCode;
       public long serviceSpecificExitCode;
       public long checkPoint;
       public long waitHint;
   };

Última actualización