How to support Connected Standby In Win7 and Win8 for Bus Controller driver

I searched the MSDN and other documentation did not found any direct documentation for handling connected standby support in drivers. Every where its about Supporting Idle Power-Down.

I want to implement Connected Standby for one of our Bus Controller driver.
I tried to follow following article, didnt see working.

http://msdn.microsoft.com/en-us/library/windows/hardware/ff544671(v=vs.85).aspx

Another question is do I need to handle this separately for Win7 and Win8 as Connected Standby came along with Win8 ?

Any pointers/links for sample could would be great help.

Thanks
Sumedh

Personally I don’t think you can implement it on Win7. Connected standby (IOIC) requires both hardware, system software, OS and driver follow ACPI 5.0, but Win7 kernel doesn’t support such power management framework.

http://msdn.microsoft.com/en-us/library/windows/hardware/dn481216(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/hardware/dn495676(v=vs.85).aspx

On Win7? There is no connected standby support on Win7. Forget that entirely.

To the best of my knowledge, all the information necessary to support connected standby on Win8 is not yet publicly available. This doesn’t mean it’s a secret… it just means the info hasn’t been written-up and released yet.

Again, this is according to my best info at present and based on my own investigation. Somebody from Microsoft who’s involved in this technology might reply that I’m wrong, that all the necessary docs are available, or that I’m wrong and the docs will never be available.

As I’ve written (here, I think) many times: Supporting Connected Standby isn’t something that can be done by a single driver. The entire system has to be engineered from the beginning to properly support Connected Standby. It is a non-trivial process, which numerous subtleties. One controller driver does not a Connected Standby Enabled system make.

Peter
OSR
@OSRDrivers

The system hardware is engineered to support connected standby. One of the device that we are providing needs to support CS.
In normal scenario (sleep/Resume) EvtDeviceD0ExitPreInterruptsDisabled is getting called properly and device is entering into D3. However in case of Connected standby “EvtDeviceD0ExitPreInterruptsDisabled” not called at all.

Since there is no documentation specifically for Connected Standby, I am trying to implement idle processing support.
If anyone has tried anytime please confirm if following code will work and framework will call “EvtDeviceD0ExitPreInterruptsDisabled” while system entering connected standby.

WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS idleSettings;
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT(&idleSettings, IdleCannotWakeFromS0);
idleSettings.DxState = PowerDeviceD3;
idleSettings.IdleTimeoutType = SystemManagedIdleTimeoutWithHint;
idleSettings.IdleTimeout = 10000;
idleSettings.Enabled = WdfTrue;
idleSettings.ExcludeD3Cold = WdfFalse;
status = WdfDeviceAssignS0IdleSettings(devContext->WdfDevice, &idleSettings);

Thanks

SystemManagedIdleTimeoutWithHint?

Your driver is PoFx integrated and your managing F-States? This is a PEP integrated device?

Peter
OSR
@OSRDrivers

I dont have much idea about PoFx, F-Stats and PEP. Just seeking help for connected standby and Idle support.

Hmmm… But, why use SystemManagedIdleTimeoutWithHint, then? This is implying to The Framework that you’re a PoFx integrated driver, isn’t it?

Peter
OSR
@OSRDrivers