检测并阻止/延迟窗口移动电源关闭

tra*_*ter 2 c# winapi compact-framework windows-mobile

我有一个窗口移动应用程序,它需要检测电源关闭并在设备关闭之前执行一些操作.

我已经能够检测到设备正在使用pinvoke关闭到RequestPowerNotifications win32 api.

但是,我无法弄清楚如何阻止电源关闭足够长的时间来运行我的代码.

cta*_*cke 5

作为一个应用程序,你不能阻止它,除非OEM以某种方式为此提供了一个自定义API(我从来没有在任何WInMo设备上看到它,只在少数自定义CE设备上).当电源管理器被告知暂停时,它会发出通知并立即开始关机.唯一有机会延迟事物的子系统是驱动程序,并且在此期间它们无法调用Win32 API(这意味着可以关闭外设,保存寄存器等).

我也不能说我曾经有过申请这么做的充分理由.如果用户按下电源按钮,他们想要关机 - 不被应用程序禁止.如果操作系统需要断电(例如由于低功率),那么无论如何都要防止它是一件坏事.