FSCTL_REQUEST_OPLOCK_LEVEL_1 IOCTL (winioctl.h)
Запрашивает оппортунистическую блокировку файла уровня 1.
Для выполнения этой операции вызовите функцию DeviceIoControl , используя следующие параметры.
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to file
FSCTL_REQUEST_OPLOCK_LEVEL_1, // 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_1 , чтобы запросить оппортунистическую блокировку файла уровня 1. Клиентская файловая система может кэшировать данные чтения или записи локально, пока удерживается блокировка уровня 1.
Владелец блокировки уровня 1 должен подтвердить разрыв блокировки (см. раздел Нарушение оппортунистических блокировок), прежде чем любая операция, несовместимая с блокировкой уровня 1, может пройти на другом дескрипторе. После того как блокировка будет нарушена, сетевой перенаправитель получает уведомление о том, что все кэшированные данные из файла не считаются допустимыми.
Дополнительные сведения см. в разделе Типы оппортунистических блокировок.
Сравнение различных кодов элементов управления oplock см. в разделе FSCTL_REQUEST_OPLOCK.
Код элемента управления FSCTL_REQUEST_OPLOCK_LEVEL_1 завершается сбоем, если файл открыт в неперекрывающемся (синхронном) режиме.
Сведения о последствиях перекрывающихся операций ввода-вывода для этой операции см. в разделе Примечания статьи 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) |