I would like to be able to differentiate between these three reasons for turning on. The third reason is of course not so nice. The first two reasons are perfectly acceptable, they are what the system is designed for. The user presses the power button which resumes the computer.The waitable timer expired and the computer resumes as scheduled.There are three reasons why the computer could wake-up I am creating an application that puts the computer in hibernation for a few hours or even a full week (Using a WaitableTimer and WaitForSingleObject).