Обнаружить программный сброс на устройстве Windows Mobile - PullRequest
0 голосов
/ 28 сентября 2011

Есть ли способ заставить мое приложение Windows Mobile 6.1 реагировать на перезагрузку системы? Если это имеет значение, я использую Compact Framework 3.5.

1 Ответ

1 голос
/ 28 сентября 2011

Сброс системы (т. Е. Вызов ядра с IOCTL_HAL_REBOOT) происходит через диспетчер питания (что ж, должно быть, OEM выбрал другой вариант, но это было бы редко).Во время сброса PM транслирует уведомление управления электропитанием, которое вы можете получить, вызвав API-интерфейсы RequestPowerNotifications.Одна из последних вещей, которые делает менеджер электропитания, - это однопоточность и вызов всех методов драйверов Xxx_PowerDown. драйверы на данный момент имеют возможность выполнять очистку, окончательную очистку и т. Д., Чтобы перейти в стабильное состояние, а затем устройство перезагружается.

С точки зрения приложения вызов RequestPowerNotificationsэто единственное, что вы можете сделать.Имейте в виду, что PM передает уведомления и просто продолжает двигаться.Он не ждет, пока кто-нибудь завершит какое-либо действие (как при вызове Xxx_PowerDown).Это часто означает, что ваше приложение никогда не получит уведомление, или, если это произойдет, вы можете получить только возможность запустить пару строк кода (я думаю, больше всего я видел около 4 строк).При приостановке / возобновлении код приложения обычно запускается после пробуждения.После сброса, так как ОЗУ и процессор сбрасываются, вы не получаете такой возможности.

Итак, после этого затянувшегося ответа короткий ответ заключается в том, что вы могли бы иметь возможностьполучить уведомление, но даже если вы это сделаете, вряд ли вы сможете что-либо сделать в ответ на него.

...