Как найти ошибку в драйвере WDF, которая вызывает BSOD в Windows 8

Я должен поддерживать драйвер WDF. Это не аппаратный драйвер: драйвер использует файл на диске, который монтируется как раздел Windows. Все данные, записываемые на диск, шифруются драйвером. Драйвер работает в режиме ядра.

Драйвер был разработан для XP и успешно перенесен на Vista и 7, 32 и 64-битные версии. Я столкнулся с одной большой проблемой в Windows 8. Драйвер приводит к фатальной системной ошибке:

BugCheck 50, {ffffffffffffffd0, 0, fffff800002de33a, 0}
Probably caused by : Wdf01000.sys ( Wdf01000!FxDevice::DispatchWithLock+fa )

Проблема возникает после удаления устройства с помощью WdfObjectDelete(). Пока устройство не удалено, драйвер работает нормально и системной ошибки нет. При вызове WdfObjectDelete система аварийно завершает работу после определенной задержки.

verifier не обнаруживает ошибок в драйвере. Мои вопросы следующие:

  1. Есть ли что-то особенное в WDF в Windows 8?
  2. Есть ли какой-либо инструмент/метод, который мог бы помочь мне найти ошибку в драйвере?

person user3428478    schedule 17.03.2014    source источник


Ответы (1)


Для этой проблемы не должно быть ничего конкретного для Windows 8. Я бы рекомендовал начать с отладки ваш драйвер с помощью WinDbg через удаленную систему. С его помощью вы можете установить точки останова, выполнить код и, что наиболее важно, получить информацию о сбое. После того, как вы подключили машину и видите, что она дает сбой, используйте analyze -v для получения информации. OSR — отличный ресурс для отладки BSOD.

person Preston    schedule 28.03.2014
comment
Эта статья — хороший ресурс по анализу ошибок. - person Thiago Cardoso; 07.06.2016