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


Проверка состояния 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 прерываются на чтение и запись.

  • Подтверждение должно быть получено до продолжения операции.