| 103 | |
| 104 | #if defined(_WIN_ALL) && !defined(SFX_MODULE) |
| 105 | void Shutdown(POWER_MODE Mode) |
| 106 | { |
| 107 | HANDLE hToken; |
| 108 | TOKEN_PRIVILEGES tkp; |
| 109 | if (OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken)) |
| 110 | { |
| 111 | LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid); |
| 112 | tkp.PrivilegeCount = 1; |
| 113 | tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; |
| 114 | |
| 115 | AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0); |
| 116 | } |
| 117 | if (Mode==POWERMODE_OFF) |
| 118 | ExitWindowsEx(EWX_SHUTDOWN|EWX_FORCE,SHTDN_REASON_FLAG_PLANNED); |
| 119 | if (Mode==POWERMODE_SLEEP) |
| 120 | SetSuspendState(FALSE,FALSE,FALSE); |
| 121 | if (Mode==POWERMODE_HIBERNATE) |
| 122 | SetSuspendState(TRUE,FALSE,FALSE); |
| 123 | if (Mode==POWERMODE_RESTART) |
| 124 | ExitWindowsEx(EWX_REBOOT|EWX_FORCE,SHTDN_REASON_FLAG_PLANNED); |
| 125 | } |
| 126 | |
| 127 | |
| 128 | bool ShutdownCheckAnother(bool Open) |