Обработка IRP с функцией MJ_POWER
От: Black Fregat  
Дата: 13.03.10 12:23
Оценка:
Есть довольно старый драйвер, который не умеет обрабатывать IRP с функцией MJ_POWER. Он просто пропускает их вниз через IoCallDriver. Соответственно, поскольку не вызывается PoStartNextPowerIrp, на XP при остановке системы регулярно возникает синий экран DRIVER_POWER_STATE_FAILURE (9F) с подкодом 500

Возникает вопрос: возможно ли бороться с этим внешними средствами.

1) Может, системе можно запретить посылать IRP с функцией MJ_POWER конкретному драйверу, например, какими-либо настройками параметров энергопотребления?
2) Насколько плоха идея написать фильтр, который не будет пропускать IRP с функцией MJ_POWER на проблемный драйвер?

Вообще, буду рад, если ткнете меня в более подробную документацию, где можно было бы прочитать о схемах энергопотребления, в частности, о параметрах PDCAP_XX_SUPPORTED
Re: Обработка IRP с функцией MJ_POWER
От: -prus-  
Дата: 14.03.10 10:13
Оценка:
Здравствуйте, Black Fregat, Вы писали:

BF>1) Может, системе можно запретить посылать IRP с функцией MJ_POWER конкретному драйверу, например, какими-либо настройками параметров энергопотребления?

BF>2) Насколько плоха идея написать фильтр, который не будет пропускать IRP с функцией MJ_POWER на проблемный драйвер?

Да, фильтр — хорошое решение.
Однако можно еще попробовать подменить IRP_MJ_POWER в MajorFunction этого старого драйвера и в своем обработчике обрабатывать этот IRP как следует. Однако, этот метод имеет ряд недостатков.
С уважением,
Евгений
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.