exFAT comprimento do rótulo do volume: 11 ou 15 caracteres?

5

Existe uma quantidade razoável de material de referência na Web que afirma que o comprimento máximo de rótulo para um volume exFAT deve ter 11 caracteres. No entanto, existem duas maneiras que estou ciente de exceder isso:

  1. Use a ferramenta do Linux exfatlabel encontrada no pacote exfat-utils;

  2. Formate um dispositivo USB usando a opção "Format" no menu de contexto "Clique com o botão direito do mouse" no Windows 7. Observe que a mesma opção no Windows 8.1 não permite mais rótulos com mais de 11 caracteres.

Ambos os itens acima permitem um rótulo de volume de até 15 caracteres sem nenhum outro efeito aparente.

Alguma idéia do que está acontecendo aqui? O fato de a Microsoft ter corrigido esse problema com a transição do Windows 7 para o Windows 8.1 sugere que provavelmente seja um bug ou algum outro tipo de comportamento indefinido ou questionável.

    
por David G 04.05.2017 / 23:13

1 resposta

4

O exFAT armazena o rótulo do volume em uma entrada de diretório especial. O tamanho da entrada inteira é sempre de 32 bytes, portanto, as entradas "nome do arquivo" e "rótulo do volume" têm 30 bytes de espaço para o texto em si - isso significa que 15 codepoints UCS-2 podem ser armazenados tecnicamente. (O rótulo do volume é exatamente uma entrada, enquanto os nomes dos arquivos podem ser múltiplos.)

No entanto, a especificação exFAT 1.0 está na patente dos EUA 20090164440 (página 21, tabela 23) diz que o intervalo válido de byte de comprimento de rótulo está entre 0 e 11 e marca o espaço restante da entrada de diretório como "reservado".

Então, meu palpite é que a Microsoft decidiu limitar deliberadamente os marcadores exFAT ao mesmo tamanho que o FAT, a fim de reduzir os problemas de compatibilidade com outros softwares, por exemplo, firmwares de dispositivos que são difíceis de atualizar. (Talvez outra implementação tenha tentado compartilhar código entre o FAT e o exFAT, e os rótulos longos causaram a falha?)

(o FAT armazena os rótulos de volume exatamente da mesma maneira, portanto, ele tem um limite de 11 bytes devido ao uso do campo 8.3 filename.)

Enquanto isso, os exfat-utils não foram escritos exatamente para a especificação (talvez partes dele tenham engenharia reversa) ou simplesmente não se importam com esse problema e fazem uso total do espaço disponível.

Tão longos rótulos são fora do padrão, mas provavelmente seguros de usar - é improvável que esses bytes extras sejam reutilizados para qualquer outra coisa, já que a Microsoft sabe que redirecioná-los entraria em conflito com o antigo marcadores de 15 bytes que as pessoas criaram no passado. Se eles permitiram isso no Win7, eles têm que suportá-lo por um longo tempo.

    
por 05.05.2017 / 00:01