Синхронизация Oplock

Фильтры и файловые системы, запрашивающие монопольные оппортунистические блокировки (oplock), должны синхронизировать вызовы с предоставляемым системой пакетом oplock. В частности, вызовы процедур oplock FSCTRL (для установления блокировок) должны быть синхронизированы с вызовами процедур oplock проверка-break. Список обоих наборов подпрограмм включает:

При обработке запроса oplock фильтры и файловые системы должны обеспечить следующее:

  • Операции ввода-вывода, которые могут нарушить блокировку, не могут выполняться параллельно с обработкой запроса.
  • Запросы Oplock не могут выполняться одновременно с подтверждением прерывания oplock.

Вызовы IRP, запрашивающие создание монопольных блокировок для одного блока управления файлами (FCB), являются следующими:

Ниже приведены некоторые примеры синхронизации oplock.

  • При обработке запроса oplock файловая система получает только некоторые ресурсы, вызывает FsRtlOplockFsctrlEx и освобождает ресурс.

  • При обработке подтверждения прерывания операции файловая система получает тот же общий ресурс, вызывает FsRtlOplockFsctrlEx и освобождает ресурс.

  • При выполнении операций ввода-вывода файловая система получает тот же общий ресурс, вызывает FsRtlCheckOplockEx2, выполняет операции ввода-вывода и освобождает ресурс.

    Верхние файловые системы должны обеспечивать синхронизацию вызовов FsRtlCheckUpperOplock и FsRtlUpperOplockFsctrl аналогичным образом.