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


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

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

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

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

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

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