| /** | |
| * This file has no copyright assigned and is placed in the Public Domain. | |
| * This file is part of the w64 mingw-runtime package. | |
| * No warranty is given; refer to the file DISCLAIMER.PD within this package. | |
| */ | |
| #ifndef _INC_RESTARTMANAGER | |
| #define _INC_RESTARTMANAGER | |
| #if (_WIN32_WINNT >= 0x0600) | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif | |
| typedef enum _RM_APP_STATUS { | |
| RmStatusUnknown = 0x0, | |
| RmStatusRunning = 0x1, | |
| RmStatusStopped = 0x2, | |
| RmStatusStoppedOther = 0x4, | |
| RmStatusRestarted = 0x8, | |
| RmStatusErrorOnStop = 0x10, | |
| RmStatusErrorOnRestart = 0x20, | |
| RmStatusShutdownMasked = 0x40, | |
| RmStatusRestartMasked = 0x80 | |
| } RM_APP_STATUS; | |
| typedef enum _RM_APP_TYPE { | |
| RmUnknownApp = 0, | |
| RmMainWindow = 1, | |
| RmOtherWindow = 2, | |
| RmService = 3, | |
| RmExplorer = 4, | |
| RmConsole = 5, | |
| RmCritical = 1000 | |
| } RM_APP_TYPE; | |
| typedef enum _RM_FILTER_ACTION { | |
| RmInvalidFilterAction = 0, | |
| RmNoRestart = 1, | |
| RmNoShutdown = 2 | |
| } RM_FILTER_ACTION; | |
| typedef enum _RM_FILTER_TRIGGER { | |
| RmFilterTriggerInvalid = 0, | |
| RmFilterTriggerFile = 1, | |
| RmFilterTriggerProcess = 2, | |
| RmFilterTriggerService = 3 | |
| } RM_FILTER_TRIGGER; | |
| typedef enum _RM_REBOOT_REASON { | |
| RmRebootReasonNone = 0x0, | |
| RmRebootReasonPermissionDenied = 0x1, | |
| RmRebootReasonSessionMismatch = 0x2, | |
| RmRebootReasonCriticalProcess = 0x4, | |
| RmRebootReasonCriticalService = 0x8, | |
| RmRebootReasonDetectedSelf = 0x10 | |
| } RM_REBOOT_REASON; | |
| typedef enum _RM_SHUTDOWN_TYPE { | |
| RmForceShutdown = 0x1, | |
| RmShutdownOnlyRegistered = 0x10 | |
| } RM_SHUTDOWN_TYPE; | |
| typedef struct _RM_UNIQUE_PROCESS { | |
| DWORD dwProcessId; | |
| FILETIME ProcessStartTime; | |
| } RM_UNIQUE_PROCESS, *PRM_UNIQUE_PROCESS; | |
| typedef struct _RM_FILTER_INFO { | |
| RM_FILTER_ACTION FilterAction; | |
| RM_FILTER_TRIGGER FilterTrigger; | |
| DWORD cbNextOffset; | |
| LPWSTR strFilename; | |
| RM_UNIQUE_PROCESS Process; | |
| LPWSTR strServiceShortName; | |
| } RM_FILTER_INFO, *PRM_FILTER_INFO; | |
| typedef struct _RM_PROCESS_INFO { | |
| RM_UNIQUE_PROCESS Process; | |
| WCHAR strAppName[CCH_RM_MAX_APP_NAME+1]; | |
| WCHAR strServiceShortName[CCH_RM_MAX_SVC_NAME+1]; | |
| RM_APP_TYPE ApplicationType; | |
| ULONG AppStatus; | |
| DWORD TSSessionId; | |
| WINBOOL bRestartable; | |
| } RM_PROCESS_INFO; | |
| typedef void ( *RM_WRITE_STATUS_CALLBACK )( | |
| UINT nPercentComplete | |
| ); | |
| DWORD WINAPI RmAddFilter( | |
| DWORD dwSessionHandle, | |
| LPCWSTR strFilename, | |
| RM_UNIQUE_PROCESS *Application, | |
| LPCWSTR strShortServiceName, | |
| RM_FILTER_ACTION ActionType | |
| ); | |
| DWORD WINAPI RmCancelCurrentTask( | |
| DWORD dwSessionHandle | |
| ); | |
| DWORD WINAPI RmEndSession( | |
| DWORD dwSessionHandle | |
| ); | |
| DWORD WINAPI RmGetFilterList( | |
| DWORD dwSessionHandle, | |
| PBYTE pbFilterBuf, | |
| DWORD cbFilterBuf, | |
| LPDWORD cbFilterBufNeeded | |
| ); | |
| DWORD WINAPI RmGetList( | |
| DWORD dwSessionHandle, | |
| UINT *pnProcInfoNeeded, | |
| UINT *pnProcInfo, | |
| RM_PROCESS_INFO rgAffectedApps[ ], | |
| LPDWORD lpdwRebootReasons | |
| ); | |
| DWORD WINAPI RmJoinSession( | |
| DWORD *pSessionHandle, | |
| const WCHAR strSessionKey[ ] | |
| ); | |
| DWORD WINAPI RmRegisterResources( | |
| DWORD dwSessionHandle, | |
| UINT nFiles, | |
| LPCWSTR rgsFilenames[ ], | |
| UINT nApplications, | |
| RM_UNIQUE_PROCESS rgApplications[ ], | |
| UINT nServices, | |
| LPCWSTR rgsServiceNames[ ] | |
| ); | |
| DWORD WINAPI RmRemoveFilter( | |
| DWORD dwSessionHandle, | |
| LPCWSTR strFilename, | |
| RM_UNIQUE_PROCESS *Application, | |
| LPCWSTR strShortServiceName | |
| ); | |
| DWORD WINAPI RmRestart( | |
| DWORD dwSessionHandle, | |
| DWORD dwRestartFlags, | |
| RM_WRITE_STATUS_CALLBACK fnStatus | |
| ); | |
| #define RmForceShutdown 0x1 | |
| #define RmShutdownOnlyRegistered 0x10 | |
| DWORD WINAPI RmShutdown( | |
| DWORD dwSessionHandle, | |
| ULONG lActionFlags, | |
| RM_WRITE_STATUS_CALLBACK fnStatus | |
| ); | |
| DWORD WINAPI RmStartSession( | |
| DWORD *pSessionHandle, | |
| DWORD dwSessionFlags, | |
| WCHAR strSessionKey[] | |
| ); | |
| #ifdef __cplusplus | |
| } | |
| #endif | |
| #endif /* (_WIN32_WINNT >= 0x0600) */ | |
| #endif /*_INC_RESTARTMANAGER*/ | |