# InitiateSystemShutdownEx

### C# Signature:

```cs
[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=true)]
public static extern bool InitiateSystemShutdownEx(
    string lpMachineName,
    string lpMessage,
    uint dwTimeout,
    bool bForceAppsClosed,
    bool bRebootAfterShutdown,
    ShutdownReason dwReason);

  [Flags]
  public enum ShutdownReason : uint
  {
    // Microsoft major reasons.
    SHTDN_REASON_MAJOR_OTHER        = 0x00000000,
    SHTDN_REASON_MAJOR_NONE         = 0x00000000,
    SHTDN_REASON_MAJOR_HARDWARE         = 0x00010000,
    SHTDN_REASON_MAJOR_OPERATINGSYSTEM      = 0x00020000,
    SHTDN_REASON_MAJOR_SOFTWARE         = 0x00030000,
    SHTDN_REASON_MAJOR_APPLICATION      = 0x00040000,
    SHTDN_REASON_MAJOR_SYSTEM           = 0x00050000,
    SHTDN_REASON_MAJOR_POWER        = 0x00060000,
    SHTDN_REASON_MAJOR_LEGACY_API       = 0x00070000,

    // Microsoft minor reasons.
    SHTDN_REASON_MINOR_OTHER        = 0x00000000,
    SHTDN_REASON_MINOR_NONE         = 0x000000ff,
    SHTDN_REASON_MINOR_MAINTENANCE      = 0x00000001,
    SHTDN_REASON_MINOR_INSTALLATION     = 0x00000002,
    SHTDN_REASON_MINOR_UPGRADE          = 0x00000003,
    SHTDN_REASON_MINOR_RECONFIG         = 0x00000004,
    SHTDN_REASON_MINOR_HUNG         = 0x00000005,
    SHTDN_REASON_MINOR_UNSTABLE         = 0x00000006,
    SHTDN_REASON_MINOR_DISK         = 0x00000007,
    SHTDN_REASON_MINOR_PROCESSOR        = 0x00000008,
    SHTDN_REASON_MINOR_NETWORKCARD      = 0x00000000,
    SHTDN_REASON_MINOR_POWER_SUPPLY     = 0x0000000a,
    SHTDN_REASON_MINOR_CORDUNPLUGGED    = 0x0000000b,
    SHTDN_REASON_MINOR_ENVIRONMENT      = 0x0000000c,
    SHTDN_REASON_MINOR_HARDWARE_DRIVER      = 0x0000000d,
    SHTDN_REASON_MINOR_OTHERDRIVER      = 0x0000000e,
    SHTDN_REASON_MINOR_BLUESCREEN       = 0x0000000F,
    SHTDN_REASON_MINOR_SERVICEPACK      = 0x00000010,
    SHTDN_REASON_MINOR_HOTFIX           = 0x00000011,
    SHTDN_REASON_MINOR_SECURITYFIX      = 0x00000012,
    SHTDN_REASON_MINOR_SECURITY         = 0x00000013,
    SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY = 0x00000014,
    SHTDN_REASON_MINOR_WMI          = 0x00000015,
    SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL = 0x00000016,
    SHTDN_REASON_MINOR_HOTFIX_UNINSTALL     = 0x00000017,
    SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL = 0x00000018,
    SHTDN_REASON_MINOR_MMC          = 0x00000019,
    SHTDN_REASON_MINOR_TERMSRV          = 0x00000020,

    // Flags that end up in the event log code.
    SHTDN_REASON_FLAG_USER_DEFINED      = 0x40000000,
    SHTDN_REASON_FLAG_PLANNED           = 0x80000000,
    SHTDN_REASON_UNKNOWN            = SHTDN_REASON_MINOR_NONE,
    SHTDN_REASON_LEGACY_API         = (SHTDN_REASON_MAJOR_LEGACY_API | SHTDN_REASON_FLAG_PLANNED),

    // This mask cuts out UI flags.
    SHTDN_REASON_VALID_BIT_MASK         = 0xc0ffffff
  }
```

### VB.NET Signature:

```cs
<DllImport("advapi32.dll", SetLastError:=True)> _
Public Function InitiateSystemShutdownEx( _
     ByVal lpMachineName As String, _
     ByVal lpMessage As String, _
     ByVal Timeout As UInteger, _
     <MarshalAs(UnmanagedType.Bool)> ByVal bForceAppsClosed As Boolean, _
     <MarshalAs(UnmanagedType.Bool)> ByVal bRebootAfterShutdown As Boolean, _
     ByVal ShutdownReason As ShutdownReason) As <MarshalAs(UnmanagedType.Bool)> Boolean
   End Function

  <Flags()> _
    Public Enum ShutdownReason As UInteger
    ' Microsoft major reasons.
    SHTDN_REASON_MAJOR_OTHER = &H0UI
    SHTDN_REASON_MAJOR_NONE = &H0UI
    SHTDN_REASON_MAJOR_HARDWARE = &H10000UI
    SHTDN_REASON_MAJOR_OPERATINGSYSTEM = &H20000UI
    SHTDN_REASON_MAJOR_SOFTWARE = &H30000UI
    SHTDN_REASON_MAJOR_APPLICATION = &H40000UI
    SHTDN_REASON_MAJOR_SYSTEM = &H50000UI
    SHTDN_REASON_MAJOR_POWER = &H60000UI
    SHTDN_REASON_MAJOR_LEGACY_API = &H70000UI

    ' Microsoft minor reasons.
    SHTDN_REASON_MINOR_OTHER = &H0UI
    SHTDN_REASON_MINOR_NONE = &HFFUI
    SHTDN_REASON_MINOR_MAINTENANCE = &H1UI
    SHTDN_REASON_MINOR_INSTALLATION = &H2UI
    SHTDN_REASON_MINOR_UPGRADE = &H3UI
    SHTDN_REASON_MINOR_RECONFIG = &H4UI
    SHTDN_REASON_MINOR_HUNG = &H5UI
    SHTDN_REASON_MINOR_UNSTABLE = &H6UI
    SHTDN_REASON_MINOR_DISK = &H7UI
    SHTDN_REASON_MINOR_PROCESSOR = &H8UI
    SHTDN_REASON_MINOR_NETWORKCARD = &H0UI
    SHTDN_REASON_MINOR_POWER_SUPPLY = &HAUI
    SHTDN_REASON_MINOR_CORDUNPLUGGED = &HBUI
    SHTDN_REASON_MINOR_ENVIRONMENT = &HCUI
    SHTDN_REASON_MINOR_HARDWARE_DRIVER = &HDUI
    SHTDN_REASON_MINOR_OTHERDRIVER = &HEUI
    SHTDN_REASON_MINOR_BLUESCREEN = &HFUI
    SHTDN_REASON_MINOR_SERVICEPACK = &H10UI
    SHTDN_REASON_MINOR_HOTFIX = &H11UI
    SHTDN_REASON_MINOR_SECURITYFIX = &H12UI
    SHTDN_REASON_MINOR_SECURITY = &H13UI
    SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY = &H14UI
    SHTDN_REASON_MINOR_WMI = &H15UI
    SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL = &H16UI
    SHTDN_REASON_MINOR_HOTFIX_UNINSTALL = &H17UI
    SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL = &H18UI
    SHTDN_REASON_MINOR_MMC = &H19UI
    SHTDN_REASON_MINOR_TERMSRV = &H20UI

    ' Flags that end up in the event log code.
    SHTDN_REASON_FLAG_USER_DEFINED = &H40000000UI
    SHTDN_REASON_FLAG_PLANNED = &H80000000UI
    SHTDN_REASON_UNKNOWN = SHTDN_REASON_MINOR_NONE
    SHTDN_REASON_LEGACY_API = (SHTDN_REASON_MAJOR_LEGACY_API Or SHTDN_REASON_FLAG_PLANNED)

    ' This mask cuts out UI flags.
    SHTDN_REASON_VALID_BIT_MASK = &HC0FFFFFFUI
    End Enum
```
