Reparsar marcas de ponto

Cada ponto de nova análise tem uma marca de identificador para que você possa diferenciar com eficiência entre os diferentes tipos de pontos de nova análise, sem precisar examinar os dados definidos pelo usuário no ponto de nova análise. O sistema usa um conjunto de marcas predefinidas e um intervalo de marcas reservadas para a Microsoft. Se você usar qualquer uma das marcas reservadas ao definir um ponto de nova análise, a operação falhará. As marcas não incluídas nesses intervalos não são reservadas e estão disponíveis para seu aplicativo.

Ao definir um ponto de nova análise, você deve marcar os dados a serem colocados no ponto de nova análise. Depois que o ponto de nova análise for estabelecido, uma nova operação de conjunto falhará se a marca dos novos dados não corresponder à marca dos dados existentes. Se as marcas corresponderem, a operação set substituirá o ponto de nova análise existente.

Para recuperar a marca de ponto de nova análise, use a função FindFirstFile . Se o membro dwFileAttributes incluir o atributo FILE_ATTRIBUTE_REPARSE_POINT , o membro dwReserved0 especificará o ponto de nova análise.

Conteúdo da Marca

As marcas de nova análise são armazenadas como valores DWORD . Os bits definem determinados atributos, conforme mostrado no diagrama a seguir.

   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        |
  +-+-+-+-+-----------------------+-------------------------------+

Os 16 bits baixos determinam o tipo de ponto de nova análise. Os 16 bits altos têm 12 bits reservados para uso futuro e 4 bits que denotam atributos específicos das marcas e os dados representados pelo ponto de nova análise. A tabela a seguir descreve esses bits.

bit Descrição
M Bit da Microsoft. Se esse bit estiver definido, a marca pertence à Microsoft. Todas as outras marcas devem usar zero para esse bit.
R Reservados; deve ser zero para todas as marcas que não sejam da Microsoft.
N Nome de bit alternativo. Se esse bit estiver definido, o arquivo ou diretório representará outra entidade nomeada no sistema.

As macros a seguir existem para ajudar no teste de marcas:

Cada macro retornará um valor diferente de zero se o bit associado estiver definido.

Veja a seguir os valores de marca de nova análise predefinidos da Microsoft; eles são definidos em 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

Para garantir a exclusividade das marcas, a Microsoft fornece um mecanismo para distribuir novas marcas. Para obter mais informações, consulte o Kit ifs (sistema de arquivos instalável).