Повторное изменение тегов точек
Каждая точка повторного анализа содержит тег идентификатора, чтобы можно было эффективно различать различные типы точек повторного анализа, не проверяя определяемые пользователем данные в точке повторного анализа. Система использует набор предопределенных тегов и диапазон тегов, зарезервированных для Майкрософт. Если при настройке точки повторного использования используется любой из зарезервированных тегов, операция завершается ошибкой. Теги, не включенные в эти диапазоны, не зарезервированы и доступны для приложения.
При установке точки повторного анализа необходимо пометить данные, которые будут помещены в точку повторного анализа. После установки точки повторного анализа новая операция задания завершается ошибкой, если тег для новых данных не соответствует тегу существующих данных. Если теги совпадают, операция задания перезаписывает существующую точку повторного выполнения.
Чтобы получить тег точки повторного определения, используйте функцию 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 бита, которые указывают определенные атрибуты тегов и данные, представленные точкой повторного анализа. В следующей таблице описаны эти биты.
Бит | Описание |
---|---|
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).