После IoGetDeviceObjectPointer - синий экран KERNEL_MODE_EXCEPTION_NOT_HANDLED (ERROR_PATH_NOT_FOUND). Глянул в NTOSKRNL место, где вызывается. Это в DebugService int 3. на сколько я понимаю DebugService используется в DbgPrint и т.д. Десятки раз использовал IoGetDeviceObjectPointer раньше - такого не было. В этом случае ObjectName проверенный. Получен ZwQuerySymbolicLinkObject из символической ссылки так что с ним вопросов быть не может. Помогите разобраться.
Во-первых, давай сюда анализ дампа (команда !analyze -v в WinDbg). Во-вторых, что есть ERROR_PATH_NOT_FOUND, какое это имеет отношение к падению? Ну и в конце концов показывай код.
1. Я предпочитаю пользоваться DriverWorkbench, а не WinDbg. 2. ERROR_PATH_NOT_FOUND это как раз исключение. 3. Код оказался правильным. Ошибка была не в этом драйвере, а в том, к которому я пытался потом цепляться. IoGetDeviceObjectPointer, как всем известно, вызывает ZwOpenFile. В "чужом" драйвере вызывается диспетчеризируемая функция обработки IRP_MJ_CREATE. Вот там то и были ошибки. Всем спасибо. Тему можно закрывать. P.S. 2 x64. А можете привести пример, где бы использовался вызов IoGetDeviceObjectPointer и был бы тот же BSOD, что и у меня? Это к Вашему последнему пункту вопроса. Я думаю вряд ли, но может я ошибаюсь.
Исключения обычно записываются кодами NTSTATUS, а не Win32, тем более что не существует точного маппинга значений NTSTATUS на Win32-коды. Как мне это нравится, когда человек приходит, не даёт никакой информации, просит помочь, а в итоге разбирается сам, не понимая того, чтобы в этом случае никто, кроме него, разобраться и не смог бы. Ошибки бывают косвенные (наведённые). Ну ты вроде умный у нас, давай, думай
2 x64 Я между прочим к Вам очень даже хорошо отношусь Читал Ваши заметки на Вашем болге. Ну разобрался. Что ж я теперь виноват, что разобрался сам? Мне анализ дампа все-таки выкладывать? Я так не вижу в этом смысла, т.к "ошибка" то была не у меня, а в другом драйвере. (Ошибка в кавычках, т.к как язык не поворачивается то что там так назвать). Теперь буду знать, что надо думать за себя (за свой код) и за того парня. Хотя сколько уже раз наступал на подобные грабли. Видимо для программирования нужно более гибкое мышление чем у меня.
В какой-то книге было что-то типа "никогда не надо предполагать, что чужая программа работает правильно и все что можно проверяйте сами".