web-dev-qa-db-ja.com

exFATボリュームラベルの長さ:11または15文字?

ExFATボリュームの最大ラベル長は11文字であることが想定されているとWebにはかなりの量の参考資料があります。ただし、これを超えることがわかっている方法が2つあります。

  1. Exfat-utilsパッケージにあるLinuxツールexfatlabelを使用してください。

  2. Windows 7の[ドライブを右クリック]コンテキストメニューの[フォーマット]オプションを使用してUSBデバイスをフォーマットします。Windows8.1の同じオプションでは、11文字を超えるラベルは使用できなくなりました。

上記のどちらでも、15文字までのボリュームラベルが可能で、他に明らかな悪影響はありません。

ここで何が起こっているのかについてのアイデアはありますか? MicrosoftがWindows 7からWindows 8.1への移行でこの問題を修正したという事実は、おそらくバグか、その他の何らかの未定義のまたは疑わしい動作であると示唆しています。

7
David G

exFATは、ボリュームラベルを特別なディレクトリエントリに格納します。エントリ全体のサイズは常に32バイトであるため、「ファイル名」と「ボリュームラベル」の両方のエントリには、テキスト自体のために30バイトのスペースがあります。つまり、15 UCS-2コードポイントは技術的に保存できます。 (ボリュームラベルは正確に1つのエントリですが、ファイル名は複数にまたがることができます。)

ただし、 米国特許2009016444 (21ページ、表23)のexFAT 1.0仕様では、有効なラベル長バイトの範囲は0から11、ディレクトリエントリの残りのスペースを「予約済み」としてマークします。

したがって、他のソフトウェアとの互換性の問題を減らすために、MicrosoftはexFATラベルを意図的にFATと同じサイズに制限することを決めたと思います。アップデートが難しいデバイスファームウェア。 (おそらく別の実装がFATとexFATの間でコードを共有しようとしました、そして長いラベルはそれをクラッシュさせましたか?)

(FATはボリュームラベルをまったく同じ方法で保存するため、8.3ファイル名フィールドを使用するため、11バイトの制限があります。)

一方、exfat-utilsは仕様に正確に対応していない(おそらく一部がリバースエンジニアリングされている)か、単にこの問題を気にせず、利用可能なスペースを最大限に利用しています。

長いラベルは非標準ですが、おそらく安全に使用できます。これらの予備のバイトがeverで他の目的に再利用される可能性は低いです。old人々が過去に作成した15バイトのラベル。彼らがWin7でそれを許可した場合、彼らはそれを長い間サポートする必要があります。

7
user1686