Обнаружение и предотвращение / задержка отключения Windows Mobile - PullRequest
2 голосов
/ 25 февраля 2010

У меня есть приложение для мобильных окон, которое должно обнаружить отключение питания и выполнить некоторую операцию до выключения устройства.

Мне удалось обнаружить, что устройство выключается с помощью pinvoke к api RequestPowerNotifications win32.

Однако я не могу понять, как отключить питание на достаточно долго, чтобы запустить мой код.

Ответы [ 2 ]

5 голосов
/ 25 февраля 2010

Как приложение, вы не сможете предотвратить это, если OEM не предоставит для этого собственный API (и я никогда не видел его ни на одном устройстве WInMo, только на нескольких пользовательских устройствах CE). Когда управляющему электропитанием предписывается приостановить работу, он отправляет уведомление и немедленно начинает отключение. Единственными подсистемами, которые получают возможность откладывать вещи, являются драйверы, и они не могут вызывать Win32 API в течение этого времени (это означает возможность отключения периферийных устройств, сохранения регистров и т. Д.).

Я также не могу сказать, что когда-либо видел вескую причину для приложения, чтобы когда-либо делать это. Если пользователь нажимает кнопку питания, он хочет выключить питание - приложение не будет заблокировано. Если операционная система должна выключиться (например, из-за низкого энергопотребления), предотвращение этого в любом случае было бы плохо.

0 голосов
/ 07 марта 2011

Как указал ctacke: это грязно. Но вы можете попробовать SetSystemPowerState( POWER_STATE_ON ); всякий раз, когда ваш поток уведомлений о питании указывает, что устройство пытается приостановить.

http://msdn.microsoft.com/en-us/library/ms920754.aspx

-PaulH

...