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


Повторное изменение тегов точек

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

При установке точки повторного анализа необходимо отметить данные, которые будут помещены в точку повторного анализа. После установки точки повторного анализа новая операция задания завершается ошибкой, если тег для новых данных не совпадает с тегом для существующих данных. Если теги совпадают, операция задания перезаписывает существующую точку повторного сравнения.

Чтобы получить тег точки повторного выражения, используйте функцию 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).