Операции, которые могут быть IRP-Based или быстрым вводом-выводом
Следующие типы операций могут быть операциями на основе IRP или быстрыми операциями ввода-вывода.
IRP_MJ_DEVICE_CONTROL. (Обратите внимание, что IRP_MJ_INTERNAL_DEVICE_CONTROL всегда на основе IRP.)
IRP_MJ_QUERY_INFORMATION. Эта операция может выполняться быстро, если параметр FileInformationClass имеет значение FileBasicInformation, FileStandardInformation или FileNetworkOpenInformation.
IRP_MJ_READ. Драйверы минифильтров могут задать флаг FLTFL_OPERATION_REGISTRATION_SKIP_CACHED_IO в структуре FLT_OPERATION_REGISTRATION , чтобы избежать получения быстрых операций ввода-вывода IRP_MJ_READ и кэшированных операций чтения на основе IRP.
IRP_MJ_WRITE. Драйверы минифильтра могут задать флаг FLTFL_OPERATION_REGISTRATION_SKIP_CACHED_IO в структуре FLT_OPERATION_REGISTRATION, чтобы избежать получения быстрых операций ввода-вывода IRP_MJ_WRITE и кэшированных операций записи на основе IRP.
Если любая из этих операций является быстрой операцией ввода-вывода, она всегда не использует ни буферизованного, ни прямого ввода-вывода, даже если эквивалентная операция на основе IRP использует другой метод буферизации.
Если IRP_MJ_DEVICE_CONTROL является быстрой операцией ввода-вывода, она всегда не использует ни буферизованного, ни прямого ввода-вывода, независимо от типа передачи IOCTL.
Хотя IRP_MJ_LOCK_CONTROL может быть операцией ввода-вывода на основе IRP или быстрой операцией ввода-вывода, она не имеет буферов.