#ifndef _REASON_H
#define _REASON_H

/* Windows shutdown reason definitions */

#define MAX_REASON_NAME_LEN  64
#define MAX_REASON_DESC_LEN  256
#define MAX_REASON_BUGID_LEN  32
#define MAX_REASON_COMMENT_LEN  4096

#define SHTDN_REASON_FLAG_COMMENT_REQUIRED  0x01000000
#define SHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED  0x02000000
#define SHTDN_REASON_FLAG_CLEAN_UI  0x04000000
#define SHTDN_REASON_FLAG_DIRTY_UI  0x08000000

#define SHTDN_REASON_FLAG_USER_DEFINED  0x40000000
#define SHTDN_REASON_FLAG_PLANNED  0x80000000

#define SHTDN_REASON_MAJOR_OTHER  0x00000000
#define SHTDN_REASON_MAJOR_NONE  0x00000000
#define SHTDN_REASON_MAJOR_HARDWARE  0x00010000
#define SHTDN_REASON_MAJOR_OPERATINGSYSTEM  0x00020000
#define SHTDN_REASON_MAJOR_SOFTWARE  0x00030000
#define SHTDN_REASON_MAJOR_APPLICATION  0x00040000
#define SHTDN_REASON_MAJOR_SYSTEM  0x00050000
#define SHTDN_REASON_MAJOR_POWER  0x00060000

#define SHTDN_REASON_MINOR_OTHER  0x00000000
#define SHTDN_REASON_MINOR_NONE  0x000000ff
#define SHTDN_REASON_MINOR_MAINTENANCE  0x00000001
#define SHTDN_REASON_MINOR_INSTALLATION  0x00000002
#define SHTDN_REASON_MINOR_UPGRADE  0x00000003
#define SHTDN_REASON_MINOR_RECONFIG  0x00000004
#define SHTDN_REASON_MINOR_HUNG  0x00000005
#define SHTDN_REASON_MINOR_UNSTABLE  0x00000006
#define SHTDN_REASON_MINOR_DISK  0x00000007
#define SHTDN_REASON_MINOR_PROCESSOR  0x00000008
#define SHTDN_REASON_MINOR_NETWORKCARD  0x00000009
#define SHTDN_REASON_MINOR_POWER_SUPPLY  0x0000000a
#define SHTDN_REASON_MINOR_CORDUNPLUGGED  0x0000000b
#define SHTDN_REASON_MINOR_ENVIRONMENT  0x0000000c
#define SHTDN_REASON_MINOR_HARDWARE_DRIVER  0x0000000d
#define SHTDN_REASON_MINOR_OTHERDRIVER  0x0000000e
#define SHTDN_REASON_MINOR_BLUESCREEN  0x0000000F

#define SHTDN_REASON_UNKNOWN  SHTDN_REASON_MINOR_NONE

#define SHTDN_REASON_VALID_BIT_MASK  0xc0ffffff

#define PCLEANUI  (SHTDN_REASON_FLAG_PLANNED|SHTDN_REASON_FLAG_CLEAN_UI)
#define UCLEANUI  (SHTDN_REASON_FLAG_CLEAN_UI)
#define UDIRTYUI  (SHTDN_REASON_FLAG_DIRTY_UI)

#endif /* _REASON_H */
