Connected standby notification for a W8 Service
I have contacted Microsoft's technical support. This is their answer:
There are no direct notifications for ConnectedStandby enter/exit, but you can just use the monitor on/off notifications since ConnectedStandby is synonymous with screen off on an AOAC capable system (but is not on a legacy system, AOAC capability can be had by getting SystemPowerCapabilities using CallNtPowerInformation and looking at the AoAc value of the SYSTEM_POWER_CAPABILITIES struct).
To get monitor on/off notifications you can use RegisterPowerSettingNotification and use the GUID_MONITOR_POWER_ON power setting GUID.
Looks like there is only a workaround for this by listening to screen on/off events.
Couldn't find any offical solution of this to date. In my case detecting SessionSwitch with lock/unlock reasons was a good enough supplement:
SystemEvents.SessionSwitch += SystemEvents_SessionSwitch;
...
private void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
{
switch (e.Reason)
{
case SessionSwitchReason.SessionLock:
// Going into lock/standby screen
break;
case SessionSwitchReason.SessionUnlock:
// Back from lock/standby
break;
default:
break;
}
}
This is excruciating unable to comment!!
CallNtPowerInformation(SystemPowerCapabilities, ...)
will return SYSTEM_POWER_CAPABILITIES
. It has an BOOLEAN
member AoAc
, if it is FALSE
, your system does not support connected standby.
It worked for me on an Intel custom hardware(same as machines in market). AoAc
= Always On Always Connected, Intel's preference.