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.