FSCTL_OPBATCH_ACK_CLOSE_PENDING IOCTL (winioctl.h)
Уведомляет сервер о том, что клиентское приложение готово к закрытию файла. Используйте эту операцию после уведомления о том, что оппортунистическая блокировка файла готова к разрыву.
Для выполнения этой операции вызовите функцию DeviceIoControl , используя следующие параметры.
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to file
FSCTL_OPBATCH_ACK_CLOSE_PENDING, // dwIoControlCode
NULL, // lpInBuffer
0, // nInBufferSize
NULL, // lpOutBuffer
0, // nOutBufferSize
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
Комментарии
Перед вызовом этой функции не делайте предположений о количестве доступных виртуальных каналов, так как система и другие подключаемые модули могут иметь зарезервированные виртуальные каналы. Всегда проверка для кода возврата CHANNEL_RC_TOO_MANY_CHANNELS после вызова этой функции.
Сведения о последствиях перекрывающихся операций ввода-вывода для этой операции см. в разделе Примечания статьи DeviceIoControl .
Используйте управляющий код FSCTL_OPBATCH_ACK_CLOSE_PENDING , когда вы получите уведомление о том, что оппортунистическая блокировка файла готова к разрыву, и вы планируете закрыть файл в ближайшее время. Эта операция не запрашивает новую оппортунистическую блокировку.
Если вы не собираетесь закрывать файл, можно использовать код FSCTL_OPLOCK_BREAK_ACKNOWLEDGE или FSCTL_OPLOCK_BREAK_ACK_NO_2 для ответа на уведомление. Первая блокировка, используемая, если сломаемая блокировка является монопольной оппортунистической блокировкой, указывает, что файл должен получить оппортунистическую блокировку уровня 2. Последний запрашивает открытый файл, но теряет все блокировки.
Приложения получают уведомление о том, что оппортунистическая блокировка нарушена с помощью элемента hEvent структуры OVERLAPPED , связанной с файлом, в котором нарушена оппортунистическая блокировка. Приложения также могут использовать такие функции, как GetOverlappedResult и HasOverlappedIoCompleted.
В 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) |