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)

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

CREATE_USN_JOURNAL_DATA

Журналы изменений

CreateFile

DELETE_USN_JOURNAL_DATA

DeviceIoControl

FSCTL_CREATE_USN_JOURNAL

ПЕРЕКРЫВАЮЩИХСЯ

Управляющие коды для управления томами