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


IRP-Based операций ввода-вывода, которые подчиняются флагам объектов устройства

Метод буферизации для следующих операций ввода-вывода на основе IRP определяется значением элемента Flags структуры DEVICE_OBJECT для тома файловой системы:

  • IRP_MJ_DIRECTORY_CONTROL

  • IRP_MJ_QUERY_EA

  • IRP_MJ_QUERY_QUOTA

  • IRP_MJ_READ

  • IRP_MJ_SET_EA

  • IRP_MJ_SET_QUOTA

  • IRP_MJ_WRITE

Флаги DO_BUFFERED_IO и DO_DIRECT_IO в элементе Flags используются следующим образом:

  • Если установлен флаг DO_BUFFERED_IO, операция использует буферизованное ввод-вывод.

  • Если флаг DO_DIRECT_IO установлен, а флаг DO_BUFFERED_IO не задан, операция использует прямой ввод-вывод.

  • Если ни флаг не задан, операция не использует ни буферизованного, ни прямого ввода-вывода.

Дополнительные сведения о флагах объектов устройства см. в разделах DEVICE_OBJECT и инициализация объекта устройства.

Обратите внимание, что IRP_MJ_READ и IRP_MJ_WRITE могут быть операциями ввода-вывода на основе IRP или быстрыми операциями ввода-вывода. Если они основаны на IRP, метод буферизации определяется флагами объектов устройства, как описано выше. Если эти операции выполняют быстрые операции ввода-вывода, они всегда не используют ни буферизованного, ни прямого ввода-вывода. Дополнительные сведения об операциях ввода-вывода, которые могут быть основаны на IRP или быстрых операциях ввода-вывода, см. в статье Операции, которые могут быть IRP-Based или быстрые операции ввода-вывода.