FSCTL_REQUEST_BATCH_OPLOCK IOCTL (winioctl.h)

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

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

BOOL b = DeviceIoControl(
  (HANDLE) hDevice,              // handle to file
  FSCTL_REQUEST_BATCH_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 коде элемента управления. Чтобы запросить блокировку для дескриптора, который может изменить тип блокировки (дескриптор не нужно закрывать и повторно открывать), используйте код элемента управления FSCTL_REQUEST_OPLOCK .

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

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

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

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

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

Сведения о последствиях перекрывающихся операций ввода-вывода для этой операции см. в разделе Примечания статьи 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)

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