Повторное изменение тегов точек
Каждая точка повторного анализа имеет тег идентификатора, что позволяет эффективно различать различные типы точек повторного анализа без необходимости изучать определяемые пользователем данные в точке повторного анализа. Система использует набор предопределенных тегов и диапазон тегов, зарезервированных для корпорации Майкрософт. Если при задании точки повторного определения используется любой из зарезервированных тегов, операция завершается ошибкой. Теги, не включенные в эти диапазоны, не зарезервированы и доступны для вашего приложения.
При установке точки повторного анализа необходимо отметить данные, которые будут помещены в точку повторного анализа. После установки точки повторного анализа новая операция задания завершается ошибкой, если тег для новых данных не совпадает с тегом для существующих данных. Если теги совпадают, операция задания перезаписывает существующую точку повторного сравнения.
Чтобы получить тег точки повторного выражения, используйте функцию FindFirstFile . Если элемент dwFileAttributes содержит атрибут FILE_ATTRIBUTE_REPARSE_POINT , то элемент dwReserved0 задает точку повторного измерения.
Содержимое тега
Теги reparse хранятся в виде значений DWORD . Биты определяют определенные атрибуты, как показано на следующей схеме.
3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+-+-+-+-+-----------------------+-------------------------------+
|M|R|N|R| Reserved bits | Reparse tag value |
+-+-+-+-+-----------------------+-------------------------------+
Низкие 16 бит определяют тип точки повторного определения. Для высоких 16 битов зарезервировано 12 битов для дальнейшего использования и 4 бита, которые обозначают определенные атрибуты тегов и данные, представленные точкой повторного анализа. Эти биты описаны в следующей таблице.
bit | Описание |
---|---|
M | Microsoft bit. Если этот бит задан, тег принадлежит корпорации Майкрософт. Все остальные теги должны использовать ноль для этого бита. |
R | Защищены; значение должно быть равно нулю для всех тегов, не относящихся к Корпорации Майкрософт. |
N | Имя суррогатного бита. Если этот бит задан, файл или каталог представляет другую именованную сущность в системе. |
Для тестирования тегов существуют следующие макросы:
Каждый макрос возвращает ненулевое значение, если задан связанный бит.
Ниже приведены предопределенные значения тегов повторного определения майкрософт. Они определены в WinNT.h:
- IO_REPARSE_TAG_AF_UNIX
- IO_REPARSE_TAG_APPEXECLINK
- IO_REPARSE_TAG_CLOUD
- IO_REPARSE_TAG_CLOUD_1
- IO_REPARSE_TAG_CLOUD_2
- IO_REPARSE_TAG_CLOUD_3
- IO_REPARSE_TAG_CLOUD_4
- IO_REPARSE_TAG_CLOUD_5
- IO_REPARSE_TAG_CLOUD_6
- IO_REPARSE_TAG_CLOUD_7
- IO_REPARSE_TAG_CLOUD_8
- IO_REPARSE_TAG_CLOUD_9
- IO_REPARSE_TAG_CLOUD_A
- IO_REPARSE_TAG_CLOUD_B
- IO_REPARSE_TAG_CLOUD_C
- IO_REPARSE_TAG_CLOUD_D
- IO_REPARSE_TAG_CLOUD_E
- IO_REPARSE_TAG_CLOUD_F
- IO_REPARSE_TAG_CLOUD_MASK
- IO_REPARSE_TAG_CSV
- IO_REPARSE_TAG_DEDUP
- IO_REPARSE_TAG_DFS
- IO_REPARSE_TAG_DFSR
- IO_REPARSE_TAG_FILE_PLACEHOLDER
- IO_REPARSE_TAG_GLOBAL_REPARSE
- IO_REPARSE_TAG_HSM
- IO_REPARSE_TAG_HSM2
- IO_REPARSE_TAG_MOUNT_POINT
- IO_REPARSE_TAG_NFS
- IO_REPARSE_TAG_ONEDRIVE
- IO_REPARSE_TAG_PROJFS
- IO_REPARSE_TAG_PROJFS_TOMBSTONE
- IO_REPARSE_TAG_SIS
- IO_REPARSE_TAG_STORAGE_SYNC
- IO_REPARSE_TAG_SYMLINK
- IO_REPARSE_TAG_UNHANDLED
- IO_REPARSE_TAG_WCI
- IO_REPARSE_TAG_WCI_1
- IO_REPARSE_TAG_WCI_LINK
- IO_REPARSE_TAG_WCI_LINK_1
- IO_REPARSE_TAG_WCI_TOMBSTONE
- IO_REPARSE_TAG_WIM
- IO_REPARSE_TAG_WOF
Чтобы обеспечить уникальность тегов, корпорация Майкрософт предоставляет механизм для распространения новых тегов. Дополнительные сведения см. в разделе Комплект устанавливаемой файловой системы (IFS).