Проверка флагов в объекте устройства

Для каждого IRP, запрашивающего операцию ввода-вывода в/из съемного носителя, драйвер устройства съемного носителя должен определить, установлен ли уже DO_VERIFY_VOLUME в его DeviceObject-Flags>. Если это значение задано, драйвер должен выполнить следующее:

  • Для запросов IRP_MJ_READ, IRP_MJ_WRITE и IRP_MJ_DEVICE_CONTROL проверьте, установлен ли SL_OVERRIDE_VERIFY_VOLUME в элементе Flagsструктуры IO_STACK_LOCATION драйвера. Если это так, продолжайте запрошенную операцию.

    Запросы управления устройствами, которые возвращают сведения о логической структуре базового носителя, должны иметь установленный флаг SL_OVERRIDE_VERIFY_VOLUME в элементе флагов стека ввода-вывода при подключении или повторном подключении файловой системой IFS тома съемных носителей.

  • В противном случае драйвер должен отказаться выполнять запросы ввода-вывода для соответствующего диска, устройства или секции, пока DO_VERIFY_VOLUME установлен в DeviceObject-Flags>. Драйвер съемных носителей должен завершать ошибкой IRPs, отправленные на соответствующее устройство, пока FSD не очистит DO_VERIFY_VOLUME в Flags объекта DeviceObject драйвера съемных носителей.

Если драйвер устройства с съемным носителем не отвергает IRPs при установке DO_VERIFY_VOLUME и SL_OVERRIDE_VERIFY_VOLUME не задан для предыдущих запросов на передачу, файловая система не может поддерживать целостность кэшированных данных файлов и не может запросить у пользователя повторное подключение носителя с открытым файлом.