Проверка состояния oplock операции IRP_MJ_SET_INFORMATION
Следующие операции IRP_MJ_SET_INFORMATION проверка состоянии блокировки:
- FileEndOfFileInformation
- FileAllocationInformation
- FileValidDataLengthInformation
- FileRenameInformation
- FileShortNameInformation
- FileLinkInformation
- FileDispositionInformation
Проверка состояния блокировки для операций FileEndOfFileInformation, FileAllocationInformation и FileValidDataLengthInformation
Эти сведения применяются при выполнении следующих операций с файлом или потоком:
Вызывающий объект пытается изменить логический размер потока. Обратите внимание, что когда поток отложенного модуля записи диспетчера кэша пытается задать новый конец файла, проверка блокировки не выполняется. Это связано с тем, что проверка выполняется ранее при получении реального запроса на запись.
Вызывающий объект пытается изменить выделенный размер потока.
Условия для типа запроса уровня 2
Всегда прервусь на Нет.
Подтверждение не требуется; операция выполняется немедленно.
Условия для всех других типов запросов
Прерывайте работу на IRP_MJ_SET_INFORMATION (для FileEndOfFileInformation, FileAllocationInformation и FileValidDataLengthInformation), когда операция выполняется с FILE_OBJECT с ключом oplock, отличающимся от ключа FILE_OBJECT, которому принадлежит oplock. Если блокировка не работает, прервите ее на Нет.
Требования к подтверждению различаются следующим образом:
Запрос на чтение: подтверждение не требуется; операция выполняется немедленно.
Read-Handle запрос. Хотя подтверждение разрыва требуется, операция продолжается немедленно (т. е. без ожидания подтверждения).
Уровень 1. Запросы пакетной службы, фильтрации, чтения и записи и обработки. Подтверждение должно быть получено до продолжения операции.
Проверка состояния блокировки для операций FileRenameInformation, FileShortNameInformation и FileLinkInformation
Эти сведения применяются при выполнении следующих операций с файлом или потоком:
Файл или поток переименовываются.
Для файла задается короткое имя.
Для файла создается жесткая ссылка. Это влияет на состояние oplock, если новая жесткая ссылка заменяет существующую ссылку на другой файл, а на заменяется блокировка.
Каталог-предок потока, в котором существует блокировка, переименовываются или устанавливается короткое имя каталога предка.
Условия для операций уровня 1, уровня 2, чтения и Read-Write
Блокировка не нарушена.
Подтверждение не требуется, и операция выполняется немедленно.
Условия для операций batch, filter, read-handle и read-write-handle
Прерывание IRP_MJ_SET_INFORMATION (для FileRenameInformation, FileShortNameInformation и FileLinkInformation) при выполнении операции с FILE_OBJECT с ключом блокировки, отличающимся от ключа FILE_OBJECT, которому принадлежит блокировка. Если блокировка не работает:
Пакетные запросы и запросы фильтра прервются на Нет.
Read-Handle прервать запросы на чтение.
Запросы read-write-handle прерываются на чтение и запись.
Подтверждение должно быть получено до продолжения операции.
Проверка состояния блокировки для операций FileDispositionInformation
Эти сведения применяются, когда вызывающий объект пытается удалить файл.
Прерывайте работу на IRP_MJ_SET_INFORMATION (для FileDispositionInformation), когда операция выполняется в FILE_OBJECT с ключом oplock, отличающимся от ключа FILE_OBJECT, которому принадлежит блокировка, и при FILE_DISPOSITION_INFORMATION. Значение DeleteFile имеет значение TRUE**. Если блокировка не работает:
Read-Handle прервать запросы на чтение.
Запросы read-write-handle прерываются на чтение и запись.
Подтверждение должно быть получено до продолжения операции.