FSCTL_REQUEST_OPLOCK_LEVEL_2 IOCTL (winioctl.h)

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

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

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

Комментарии

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

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

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

Файловая система не требует подтверждения от приложения, запрашивающего оппортунистическую блокировку уровня 2, когда блокировка нарушена. После того как блокировка будет нарушена, сетевой перенаправитель получает уведомление о том, что все кэшированные данные из файла не считаются допустимыми. Дополнительные сведения см. в разделе Нарушение режима.

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

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

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

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

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

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

Требования

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

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