#windows #windows-7 #kernel
#Windows #windows-7 #ядро
Вопрос:
Я пытаюсь выяснить, что происходит при установке нового драйвера для Windows. (Какие структуры данных ядра изменены.) Кто-нибудь знает какую-нибудь хорошую документацию по этой теме. Отлаживать это немного болезненно.
Спасибо
Ответ №1:
Когда драйвер установлен, помещается ли он в хранилище драйверов (см.http://msdn.microsoft.com/en-us/library/ff544868(v=vs.85).aspx)
При обнаружении нового устройства, у которого нет текущей ассоциации драйверов, PNP manager просматривает хранилище драйверов, чтобы увидеть, соответствует ли какой-либо из сохраненных драйверов новому устройству.
Если PNP manager найдет драйвер, соответствующий устройству, он выполнит директивы в файле drivers inf. Обычно это создает служебную запись в реестре (HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet services), копирует двоичные файлы драйвера куда-нибудь вроде Windows System32 drivers и т.д. Кроме того, PNP manager создаст ассоциацию этого устройства с этим драйвером (я думаю, HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Enum), чтобы в следующий раз он мог ускорить процесс.
Я не думаю, что какие-либо структуры данных ядра изменяются при установке драйвера. Вы хотите спросить, когда драйвер загружен?
Комментарии:
1. Мне было интересно, изменится ли IDT с новым драйвером. Может быть случай, когда prologue не изменяется, а просто новый epilogue регистрируется с новым драйвером. Однако, если IDT меняется, то для загрузки в IDTR должно потребоваться новое значение.
2. @agent.smith: Я предлагаю вам спросить об этом на osronline.com/showlists.cfm?list=ntdev они более осведомлены в этом вопросе, чем я