Windows カーネルで許可されている最長の名前の長さはどれくらいですか?
例: カーネルは構造体を使用してすべてのオブジェクト パスを保持することを知っていますUNICODE_STRING
。ワイド文字列のバイト長は 内に格納されるUSHORT
ため、パスの最大長は 2^15 - 1 文字です。ファイル名 (パスではなく) に同様の厳しい制限はありますか? (NTFS または FAT32 が特定の制限を課すかどうかは気にしません。追加のファイル システムまたはシェルの制限がないことを前提として、カーネルで理論的に許可されている可能な限り長い名前を探しています。)
(編集:なぜこれが重要なのか疑問に思っている人は、通常、ディレクトリのトラバースはFindFirstFile
/FindNextFile
ファイルごとに1回の呼び出しによって達成されると考えてください。 という名前の関数が与えられた場合、これは基礎となるシステムコールであり、呼び出しごとに複数のファイル名NtQueryDirectoryFile
を返します。実際には、このパスの最大長制限を利用して、スタックのみをバッファーとして使用する非常に高速なディレクトリ トラバーサーを作成することが可能です. 今、私はその概念を拡張しようとしています.ファイル名。)