Поделиться через


Дополнительные ошибки при обработке IRP

Ниже приведены дополнительные ошибки, которые иногда делают драйверы при обработке IRP.

Потерянные или двойное завершение IRP

Эти проблемы, наряду с отсутствующими вызовами подпрограмм диспетчера ввода-вывода, таких как IoStartNextPacket, часто возникают в путях обработки ошибок. Быстрые проверки путей драйвера могут найти такие проблемы.

Конвергентирование общедоступных путей IOCTL и частных путей IOCTL

Как правило, драйверы должны содержать отдельные пути выполнения для общедоступных и частных списков IOCTL (или FSCTL). Драйвер не может определить, исходит ли запрос IOCTL или FSCTL в режиме ядра или в пользовательском режиме, просмотрев код элемента управления. Следовательно, обработка как открытого, так и частного кодов в одном пути выполнения (или выполнение минимальной проверки, а затем вызов одних и тех же подпрограмм) может открыть драйвер для нарушений безопасности. Если частный IOCTL или FSCTL является привилегированным, то непривилегированные пользователи, которые знают коды управления, могут получить к нему доступ. Таким образом, если ваш драйвер поддерживает частные запросы IOCTL или FSCTL, убедитесь, что он обрабатывает такие запросы отдельно от любых общедоступных ioCTL или FSCTLs, которые он также должен поддерживать.