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


Проверка флагов в объекте device

Для каждого 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 в deviceObject-Flags> драйвера съемного носителя.

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