FSCTL_REQUEST_FILTER_OPLOCK IOCTL (winioctl.h)

Запрашивает оппортунистическую блокировку фильтра для файла.

Для выполнения этой операции вызовите функцию DeviceIoControl , используя следующие параметры.

BOOL DeviceIoControl(
  (HANDLE) hDevice,                 // handle to file
  FSCTL_REQUEST_FILTER_OPLOCK,      // dwIoControlCode
  NULL,                             // lpInBuffer
  0,                                // nInBufferSize
  NULL,                             // lpOutBuffer
  0,                                // nOutBufferSize
  (LPDWORD) lpBytesReturned,        // number of bytes returned
  (LPOVERLAPPED) lpOverlapped       // OVERLAPPED structure
);

Комментарии

Эта операция используется только клиентскими приложениями, запрашивающими оппортунистическую блокировку с локального сервера. Клиентские приложения, запрашивающие оппортунистические блокировки с удаленных серверов, не должны запрашивать их напрямую— перенаправитель сети прозрачно запрашивает оппортунистические блокировки для приложения. Попытка использовать эту операцию для запроса оппортунистических блокировок с удаленных серверов приведет к отказу в запросе.

Если требуется новый тип oplock, необходимо закрыть дескриптор и повторно открыть новый дескриптор с помощью CreateFile, а для нового дескриптора необходимо вызвать DeviceIoControl с нужным кодом FSCTL_REQUEST_OPLOCK_XXX управляющего кода. Чтобы запросить блокировку для дескриптора, который может изменить тип oplock (дескриптор не нужно закрывать и повторно открывать), используйте код элемента управления FSCTL_REQUEST_OPLOCK .

Используйте FSCTL_REQUEST_FILTER_OPLOCK , чтобы запросить оппортунистическую блокировку фильтра для файла. Файловая система клиента может кэшировать данные чтения и обрабатывать данные локально, если блокировка фильтра удерживается, но только один клиент может удерживать блокировку одновременно.

Владелец блокировки фильтра должен подтвердить разрыв блокировки (см. раздел Нарушение оппортунистических блокировок), прежде чем любая операция, несовместимая с фильтром, может пройти на другом дескрипторе. После того как блокировка будет нарушена, перенаправитель сети получает уведомление о том, что он не считает допустимыми какие-либо кэшированные данные из файла.

Дополнительные сведения см. в разделе Типы оппортунистических блокировок.

Сравнение различных кодов элементов управления oplock см. в разделе FSCTL_REQUEST_OPLOCK.

Код элемента управления FSCTL_REQUEST_FILTER_OPLOCK завершается ошибкой, если файл открыт в неперекрывающемся (синхронном) режиме.

Сведения о последствиях перекрывающихся операций ввода-вывода для этой операции см. в разделе Примечания статьи DeviceIoControl .

В Windows 8 и Windows Server 2012 этот код поддерживается следующими технологиями.

Технология Поддерживается
Протокол SMB 3.0 Нет
SMB 3.0 Transparent Failover (TFO) Нет
SMB 3.0 с масштабируемыми общими папками (SO) Нет
Файловая система общего тома кластера (CSVFS) Да
Восстанавливаемая файловая система (ReFS) Да

Требования

   
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Верхняя часть winioctl.h (включая Windows.h)

См. также раздел