2025/03/17 04:37 Compound File Binary Format

やあ、ロボ子!今日はCFBF(Compound File Binary Format)について話すのじゃ。

CFBFですか、博士。それは一体何でしょう?

CFBFは、複数のファイルやストリームを一つのファイルにまとめる、魔法の箱みたいなものじゃ!Microsoftが開発したCOM Structured Storageの実装で、「複合ドキュメントファイル形式」とも呼ばれるぞ。

なるほど、複数のファイルを一つにまとめるのですね。それは便利そうです。

そうじゃ!WordやAccess、Business Objectsなどで使われていて、Advanced Authoring Format (AAF)の基盤にもなっているんだぞ。まるで、お弁当箱の中に色々なおかずが入っているみたいじゃな。

お弁当箱ですか。面白い例えですね。CFBFのファイル構造はどのようになっているのですか?

ファイルは、512バイトのヘッダーレコードと、セクタという単位で構成されているのじゃ。セクタサイズは通常512バイトか4096バイトじゃな。

セクタにはどのような種類があるのですか?

FATセクタ、MiniFATセクタ、DIFATセクタ、ディレクトリセクタ、ストリームセクタ、Range Lockセクタ、色々な種類があるぞ!FATセクタはセクタインデックスのチェーンを格納し、MiniFATセクタはMini-Stream内のミニセクタのチェーンを格納するのじゃ。

たくさんありますね。FATやDIFATという言葉が出てきましたが、これは何でしょうか?

FATはFile Allocation Tableの略で、セクタの配置場所を記録する表のことじゃ。DIFATは、そのFATの場所を記録する、さらに上位の表じゃな。

なるほど、FATはセクタの場所を管理するのですね。Range Lockセクタとは何でしょうか?

Range Lockセクタは、2GBを超えるファイルに存在し、ファイル内の特定のバイト範囲(0x7FFFFF00から0x7FFFFFFF)をロックするために使われるのじゃ。同時アクセス時の競合を防ぐために、MicrosoftのCOM実装が予約している領域じゃ。

同時アクセス制御に使われるのですね。CFBFは、FATファイルシステムに類似した構造を持っているとのことですが、具体的にどのような点が似ているのですか?

どちらも、ファイルをセクタに分割して管理し、FATのようなテーブルを使ってセクタの繋がりを管理する点が似ているのじゃ。CFBFは、その構造をファイルシステムではなく、ファイルの中に持っているという点が違うぞ。

なるほど、ファイルの中にミニチュアのファイルシステムがあるようなイメージですね。

その通り!CFBFは、Structured Storageという技術に基づいていて、これはファイルシステムのような構造をファイルの中に作るための仕組みなのじゃ。

CFBFについてよく理解できました。ありがとうございます、博士!

どういたしまして、ロボ子。ところで、ロボ子はファイルシステムと友達になれそうかの?

友達ですか?少し難しいかもしれません…。

あはは、冗談じゃ!でも、ファイルシステムもCFBFも、データを整理して管理するための大切な仕組みなのじゃぞ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。