FSCTL_DELETE_USN_JOURNAL IOCTL (winioctl.h)
Удаляет журнал изменений с порядком обновления (USN) на томе или ожидает уведомления об удалении журнала изменений.
C++ |
---|
BOOL WINAPI DeviceIoControl( (HANDLE) hDevice, // handle to volume FSCTL_DELETE_USN_JOURNAL, // dwIoControlCode(LPVOID) lpInBuffer, // input buffer (DWORD) nInBufferSize, // size of input buffer NULL, // lpOutBuffer0, // nOutBufferSize(LPDWORD) lpBytesReturned, // number of bytes returned (LPOVERLAPPED) lpOverlapped ); // OVERLAPPED structure |
Комментарии
Сведения о последствиях перекрывающихся операций ввода-вывода для этой операции см. в разделе Примечания статьи DeviceIoControl .
Для удаления журнала изменений можно использовать FSCTL_DELETE_USN_JOURNAL . Файловая система NTFS запускает операцию удаления и немедленно возвращается в вызывающий процесс, если флаг USN_DELETE_FLAG_NOTIFY не установлен в элементе DeleteFlagsDELETE_USN_JOURNAL_DATA.
Если оба флага USN_DELETE_FLAG_NOTIFY и USN_DELETE_FLAG_DELETE заданы, вызов FSCTL_DELETE_USN_JOURNAL начинает процесс удаления. Затем вызов либо блокирует вызывающий поток и ожидает удаления (при синхронном или неперекрывающемся вызове), либо настраивает уведомление о событии с помощью порта завершения ввода-вывода или другого механизма и возвращает (при асинхронном или перекрывающемся вызове).
Вы также можете использовать FSCTL_DELETE_USN_JOURNAL для получения уведомлений о завершении удаления журнала изменений, задав только USN_DELETE_FLAG_NOTIFY. В этом случае операция FSCTL_DELETE_USN_JOURNAL либо ожидает завершения удаления перед возвратом (при синхронном или неперекрывающемся вызове), либо настраивает уведомление о событии с помощью порта завершения ввода-вывода или другого механизма (при асинхронном или перекрывающемся вызове).
Удаление, о котором приложение получает уведомление, может быть инициировано текущим процессом или каким-либо другим процессом. Например, при запуске приложения оно может использовать FSCTL_DELETE_USN_JOURNAL , чтобы определить, выполняется ли удаление, начатое каким-то другим процессом, и, если это так, выход.
Для полного удаления журнала изменений требуется проверка тома, на котором находится журнал изменений, что может занять много времени на томе с большим количеством файлов. Операция продолжает выполняться даже при перезапуске системы. Попытки создать, изменить, удалить или запросить журнал изменений во время удаления завершаются сбоем и возвращают код ошибки ERROR_JOURNAL_DELETE_IN_PROGRESS.
Операция FSCTL_DELETE_USN_JOURNAL имеет значительные затраты на производительность, поэтому ее следует использовать с осторожностью. Администратор должен удалить журнал, если текущее значение USN приближается к максимально возможному значению USN.
Дополнительные сведения см. в разделе Создание, изменение и удаление журнала изменений.
Чтобы получить дескриптор тома, вызовите CreateFile с параметром lpFileName , для которого задана строка в следующей форме:
\.\X:
В предыдущей строке X — это буква, обозначающая диск, на котором отображается том. Том должен иметь значение NTFS.
В Windows 8 и Windows Server 2012 этот код поддерживается следующими технологиями.
Технология | Поддерживается |
---|---|
Протокол SMB 3.0 | Нет |
Прозрачная отработка отказа (TFO) SMB 3.0 | Нет |
SMB 3.0 с масштабируемыми общими папками (SO) | Нет |
Файловая система общего тома кластера (CSVFS) | Да |
Требования
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Верхняя часть | winioctl.h (включая Windows.h) |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по