Поделиться через


структура MARK_HANDLE_INFO (winioctl.h)

Содержит сведения, которые используются для пометки указанного файла или каталога, а его номер последовательности обновления (USN) изменяет запись журнала с данными об изменениях. Он используется кодом элемента управления FSCTL_MARK_HANDLE.

Синтаксис

typedef struct _MARK_HANDLE_INFO {
  union {
    DWORD UsnSourceInfo;
    DWORD CopyNumber;
  } DUMMYUNIONNAME;
  DWORD  UsnSourceInfo;
  HANDLE VolumeHandle;
  DWORD  HandleInfo;
} MARK_HANDLE_INFO, *PMARK_HANDLE_INFO;

Члены

DUMMYUNIONNAME

DUMMYUNIONNAME.UsnSourceInfo

DUMMYUNIONNAME.CopyNumber

UsnSourceInfo

Тип внесенных изменений.

Операция не изменяет файл или каталог внешне с точки зрения созданного приложения.

Когда поток записывает новую запись USN, исходные флаги в предыдущей записи продолжают присутствовать только в том случае, если поток также задает эти флаги. Таким образом, структура исходной информации позволяет приложениям отфильтровать записи USN, которые задаются только известным источником, например антивирусной фильтрацией.

Определены следующие значения.

Ценность Значение
USN_SOURCE_DATA_MANAGEMENT
0x00000001
Операция содержит сведения об изменении файла или каталога, сделанного операционной системой.

Обычное использование заключается в том, что удаленное хранилище перемещает данные из внешнего в локальное хранилище. Удаленное хранилище — это иерархическое программное обеспечение управления хранилищами. Такой шаг обычно как минимум добавляет флаг USN_REASON_DATA_OVERWRITE в запись USN. Однако данные не изменились с точки зрения пользователя. Отметив, что USN_SOURCE_DATA_MANAGEMENT в элементе SourceInfo структуры USN_RECORD, содержащей запись, можно определить, что хотя операция записи выполняется в элементе, данные не изменились.

USN_SOURCE_AUXILIARY_DATA
0x00000002
Операция добавляет частный поток данных в файл или каталог.

Примером может быть детектор вирусов, добавляющий сведения контрольной суммы. По мере того как детектор вирусов изменяет элемент, система создает записи USN. USN_SOURCE_AUXILIARY_DATA указывает, что изменения не изменили данные приложения.

USN_SOURCE_REPLICATION_MANAGEMENT
0x00000004
Операция создает или обновляет содержимое реплицированного файла.

Например, служба репликации файлов задает этот флаг при создании или обновлении файла в реплицированном каталоге.

USN_SOURCE_CLIENT_REPLICATION_MANAGEMENT
0x00000008
Репликация выполняется в клиентских системах из облака или серверов.

VolumeHandle

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

Этот дескриптор требуется для проверки привилегий для этой операции.

Вызывающий объект должен иметь права SE_MANAGE_VOLUME_NAME. Дополнительные сведения см. в разделе Привилегии.

HandleInfo

Флаг, указывающий дополнительные сведения о файле или каталоге, определяемом значением дескриптора в элементе VolumeHandle.

Ценность Значение
MARK_HANDLE_PROTECT_CLUSTERS
0x00000001
Файл помечается как не удается дефрагментировать до закрытия дескриптора.

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

MARK_HANDLE_TXF_SYSTEM_LOG
0x00000004
Файл помечается как не удается дефрагментировать до закрытия дескриптора.

Windows Server 2003: этот флаг не поддерживается до Windows Server 2003 с пакетом обновления 1 (SP1).

Windows XP: этот флаг не поддерживается.

MARK_HANDLE_NOT_TXF_SYSTEM_LOG
0x00000008
Файл помечается как не удается дефрагментировать до закрытия дескриптора.

Windows Server 2003: этот флаг не поддерживается до Windows Server 2003 с пакетом обновления 1 (SP1).

Windows XP: этот флаг не поддерживается.

MARK_HANDLE_REALTIME
0x00000020
Файл помечается для поведения чтения в режиме реального времени независимо от фактического типа файла. Файлы, помеченные этим флагом, должны быть открыты для неуправляемых операций ввода-вывода.

Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: этот флаг не поддерживается.

MARK_HANDLE_NOT_REALTIME
0x00000040
Файл, ранее помеченный для поведения чтения в режиме реального времени с помощью флага MARK_HANDLE_REALTIME, можно отменить маркировку с помощью этого флага, удалив поведение в режиме реального времени. Файлы, помеченные этим флагом, должны быть открыты для неуправляемых операций ввода-вывода.

Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: этот флаг не поддерживается.

MARK_HANDLE_READ_COPY
0x00000080
Указывает номер копии, указанный в элементе CopyNumber, должен использоваться для операций чтения. Файлы, помеченные этим флагом, должны быть открыты для неуправляемых операций ввода-вывода.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: Этот флаг не поддерживается до Windows 8 и Windows Server 2012.

MARK_HANDLE_NOT_READ_COPY
0x00000100
Файл, ранее помеченный для поведения чтения и копирования с помощью флага MARK_HANDLE_READ_COPY, можно отменить маркировку с помощью этого флага, удалив поведение копирования чтения. Файлы, помеченные этим флагом, должны быть открыты для неуправляемых операций ввода-вывода.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: Этот флаг не поддерживается до Windows 8 и Windows Server 2012.

MARK_HANDLE_RETURN_PURGE_FAILURE
0x00000400
При перемешивание памяти, сопоставленной с кэшируемым операцией ввода-вывода с не кэшируемым операцией ввода-вывода, при выпуске не кэшированного ввода-вывода для очистки сопоставления памяти для диапазона не кэшированных операций ввода-вывода. Если эти очистки завершаются сбоем системы обычно не возвращает ошибку вызывающей стороны, что может привести к поврежденном состоянию (именно поэтому документация говорит, что это не делает). Этот флаг сообщает системе возвращать сбои очистки для заданного дескриптора, чтобы приложение могли лучше справиться с этой ситуацией.

Этот флаг не поддерживается до Windows 8 и Windows Server 2012.

MARK_HANDLE_DISABLE_FILE_METADATA_OPTIMIZATION
0x00001000
Для описания всех экстентов файла в NTFS в NTFS используется несколько записей MFT. Этот список дочерних записей MFT (также известных как записи FRS) управляется структурой, известной как список атрибутов. Список атрибутов ограничен размером 128 КБ. Если размер списка атрибутов достигает определенного порогового значения NTFS, активирует фоновое сжатие на экстентах, поэтому будет использоваться минимальное количество дочерних записей FRS. Этот флаг отключает эту функцию сжатия FRS для данного файла.

Этот флаг не поддерживается до Windows 10.

MARK_HANDLE_ENABLE_USN_SOURCE_ON_PAGING_IO
0x00002000
Указывает NTFS задать заданное значение UsnSourceInfo для записи по страницам в журнале USN. Традиционно это не было сделано при разбиении на страницах, так как система не знала, какой поток сделал указанные изменения. Это переопределение. Это работает только в том случае, если диспетчер памяти использует это состояние, связанное с ним.

Этот флаг не поддерживается до Windows 10.

MARK_HANDLE_SKIP_COHERENCY_SYNC_DISALLOW_WRITES
0x00004000
Установка этого флага сообщает системе, что записи не разрешены в этом файле. Если приложение пытается открыть файл для доступа на запись, операция завершается ошибкой с STATUS_ACCESS_DENIED. Если запись отображается сбоем операции с STATUS_MARKED_TO_DISALLOW_WRITES

Этот флаг не поддерживается до Windows 10.

Замечания

Чтобы получить дескриптор тома, вызовите CreateFile с параметром lpFileName в строке в следующей форме:

"\\.\X:"

В приведенной выше строке X — это буква, определяющая диск, на котором отображается том.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2003 [только классические приложения]
заголовка winioctl.h (включая Windows.h)

См. также

FSCTL_MARK_HANDLE

USN_RECORD