Я пытаюсь изменить драйвер диска на уровне ядра Windows, чтобы правильно реагировать на обновленные коды управления. Например, у него был только обработчик для устаревшего кода управления IOCTL_DISK_GET_DRIVE_GEOMETRY
, но не более новый управляющий код IOCTL_DISK_GET_DRIVE_GEOMETRY_EX
, поэтому я добавил это.
Конечно, я обновил драйвер, чтобы использовать все новые структуры и функции Windows, например, функцию IoReadPartitionTableEx()
и структуру DRIVE_LAYOUT_INFORMATION_EX
(я пытаюсь добавить поддержку GPT к драйверу). Проблема в том, что когда я использую драйвер диска, я вижу (используя DebugView), что Windows (я думаю, это Windows... возможно, это что-то еще...) по-прежнему отправляет старый управляющий код IOCTL_DISK_GET_DRIVE_GEOMETRY
в мой драйвер. Я бы хотел, чтобы Windows отправила новые коды управления моему драйверу. Это даже Windows, которая отправляет эти коды управления? Возможно ли еще один слой между Windows и драйвером, о котором я еще не знаю?
Предполагается ли драйвер каким-то образом идентифицировать свой "тип" для Windows, так что Windows точно знает, как "говорить" с ним? Как Windows точно знает, какие коды управления отправлять конкретному драйверу? Я искал ответы на эти (казалось бы, очень простые) вопросы и не нашел ясного ответа, что заставляет меня поверить, что я принципиально неправильно понял что-то о драйверах Windows. Имеет ли смысл мой вопрос?