|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
|
rudolfninja |
|
||||||||||||||
Опытный Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: 1 Всего: 6 |
Ребята, приветствую.
Сразу к сути проблемы: есть драйврер-фильтр ФС, который вывалвает БСОД на Windows10 при попытке перезагрузки или выключения ОС. На Win7 все работает ОК. Анализируя дамп в WinDbg (с помощью !analyze -v), увидел следующее:
Полагаю, что это значит, что ОС запущена на виртуалке, хотя заказчик говорит, что не важно где. С помощью WinDbg я в дампе нашел место, где валится проблема. Вот стек вызовов:
Вот что происходит в MYDRV-функция (ниже не весь код функций, а только та часть, котороя около указанных смещений). MYDRV!Control:
Тут вызывается ControlMount. Вот что происходт внутри этой функции:
В ControlMount получаем стек девайса и вызываем IsShadow:
До этой строчки в IsShadow StorageStackDeviceObject никак не меняется. И именно тут вылетает эксепшн (PageFault). С помощью cmkd я выяснил, что находится в MountVolume.Vpd->RealDevice:
Получается, что адрес RealDevice невалидный (более того, что-то мне подсказывает, что VPB-блок в целом невалидный), а я пытаюсь у него получить DeviceType. Отсюда и BSOD. На MSDN я нашел следующее:
Получается, что VPB, и конкретно RealDevice, устанавливается виндовым IOManager'ом. Собственно, вопросы: 1) Может ли быть причина в том, как написано на MSDN, указатель на блок параметров устройства портится и поэтому падает ошибка? Хотя дальше этот драйвер не отправляет IPR вниз по стеку драйверов. Но если проблема в этом, то почему на Win7 все окей? 2) Может ли быть причина в том, что драйвер собирается версией WDK (DDK) для Win7? 3) Какие еще есть мысли по поводу причины и диагностики? Буду рад услышать ваше мнение по теме проблемы. |
||||||||||||||
|
|||||||||||||||
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |