Почти без надежды на ответ, но еще полу-офф про драйверы USB для винды (+)
(«Телесистемы»: Конференция 'Микроконтроллеры и их применение')

миниатюрный аудио-видеорекордер mAVR

Отправлено SM 20 октября 2004 г. 16:15

Намбер ван.
Когда используется Selective Suspend, чтобы выборочно вгонять отдельно взятые девайсы в power down. Я делаю так. Завожу таймер, он вызывает DPC, DPC проверяет, можно ли засуспендить девайс, и если можно - то через IoQueueWorkItem пихает процедуру, которая проделав всякую разную синхронизацию, пихает в pdo запрос IOCTL_INTERNAL_SUBMIT_IDLE_NOTIFICATION. В callback'е от него отправляю в pdo IRP_MN_WAIT_WAKE чтобы разрешить wakeup, и делаю IRP_MN_SET_POWER в требуемое состояние (PowerDeviceD2). В комплишене от IDLE_NOTIFICATION в случае ошибки (или CANCELLED) вывожу девайс в PowerDeviceD0. Для принудительного вывода девайса из power down я отменяю IDLE_NOTIFICATION irp. Получаю процедуру завершения с кодом ошибки, и там включаю девайс в D0. В результате все засыпает отлично, но по отмене не просыпается (на USB шине нет resume). Что я не так делаю? Или что не доделал?

Ну и намбер ту. После выхода из hibernate кто должен сконфигурировать USB-девайс? Я или pdo?

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru