FSCTL_MARK_HANDLE IOCTL (winioctl.h)

Помечает указанный файл или каталог и его запись журнала изменений сведениями об изменениях в этом файле или каталоге.

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

BOOL DeviceIoControl(
  (HANDLE) hDevice,             // handle to file or directory
  FSCTL_MARK_HANDLE,            // dwIoControlCode
  (LPVOID)lpInBuffer,           // input buffer
  (DWORD)nInBufferSize,         // size of input buffer
  NULL,                         // lpOutBuffer
  0,                            // nOutBufferSize
  (LPDWORD) lpBytesReturned,    // number of bytes returned
  (LPOVERLAPPED) lpOverlapped   // OVERLAPPED structure
);

Комментарии

Сведения о последствиях перекрывающихся операций ввода-вывода для этой операции см. в разделе Примечания статьи DeviceIoControl .

FSCTL_MARK_HANDLE — единственная операция журнала изменений, которая работает с отдельным файлом или каталогом. Это не влияет на действия, которые пользователь может сделать с элементом. Вместо этого он добавляет сведения в файл или каталог, предоставляя сведения о том, как операционная система изменила элемент, или добавляет к элементу частный поток данных.

Если в файле или каталоге есть какие-либо изменения, сведения, добавленные с помощью FSCTL_MARK_HANDLE , также копируются в запись USN, созданную для файла или каталога. Обратите внимание, что эти две операции могут выполняться независимо друг от друга. Например, необязательно, чтобы запись USN могла пометить файл как не удается дефрагментировать, и нет необходимости помечать файл или каталог для обновления содержимого соответствующей записи USN. Дополнительные сведения о том, каким FSCTL_MARK_HANDLE могут пометить элемент (дополнительные сведения см. в разделе MARK_HANDLE_INFO ).

Использование FSCTL_MARK_HANDLE при удалении или неактивном журнале изменений тома не является ошибкой. Соответствующие сведения применяются к файлу или каталогу независимо от состояния журнала изменений, если журнал изменений существует.

Обратите внимание, что метки времени могут быть неправильно обновлены для удаленного файла. Чтобы обеспечить согласованность результатов, используйте небуферизованный ввод-вывод.

Том должен быть NTFS.

В Windows 8 и Windows Server 2012 этот код поддерживается следующими технологиями.

Технология Поддерживается
Протокол SMB 3.0 Нет
SMB 3.0 Transparent Failover (TFO) Нет
SMB 3.0 с масштабируемыми общими папками (SO) Нет
Файловая система общего тома кластера (CSVFS) Да

CsvFs всегда выдает USN_SOURCE_REPLICATION_MANAGEMENT и MARK_HANDLE_PROTECT_CLUSTERS для файлов, подходящих для прямого ввода-вывода.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Верхняя часть winioctl.h (включая Windows.h)

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