(57)【特許請求の範囲】
【請求項１】
ディレクトリエントリを処理するためにファイルシステムが実行する方法であって、
新規のディレクトリエントリのためのターゲットファイル名を取得するステップと、
前記ターゲットファイル名のハッシュを生成するステップであって、前記ターゲットファイル名の前記ハッシュは当該ターゲットファイル名の関数である、ステップと、
複数のディレクトリエントリ中のディレクトリエントリごとに、前記ターゲットファイル名の前記ハッシュが、各ディレクトリエントリのファイル名のハッシュにマッチングするか否かを判断するステップであって、前記ファイル名のハッシュは当該ファイル名の関数である、ステップと、
前記ターゲットファイル名の前記ハッシュが前記ディレクトリエントリのいずれの前記ファイル名のハッシュともマッチングしない場合は、前記新規のディレクトリエントリのための前記ターゲットファイル名を選択するステップと
を含む方法。
【請求項２】
各ディレクトリエントリは、前記ディレクトリエントリのための前記ファイル名の前記ハッシュを格納する、請求項１に記載の方法。
【請求項３】
前記ターゲットファイル名の前記ハッシュがディレクトリエントリ中の少なくとも１つのファイル名のハッシュとマッチングすると判定するステップと、
マッチングするディレクトリエントリの全体ファイル名を取得するステップと、
前記ターゲットファイル名が前記マッチングするディレクトリエントリの前記全体ファイル名とマッチングしない場合は、前記新規のディレクトリエントリのための前記ターゲットファイル名を選択するステップと、
をさらに含む請求項１に記載の方法。
【請求項４】
前記ターゲットファイル名が前記マッチングするディレクトリエントリの全体ファイル名とマッチングする場合は、前記新規のディレクトリエントリのための前記ターゲットファイル名を拒絶するステップをさらに含む請求項３に記載の方法。
【請求項５】
前記ターゲットファイル名が前記マッチングするディレクトリエントリの前記全体ファイル名とマッチングする場合は、前記ターゲットファイル名を、既存のディレクトリエントリとマッチングすると確認するステップをさらに含む請求項３に記載の方法。
【請求項６】
前記ターゲットファイル名を取得するステップは、ファイル生成要求を取得するステップを含む、請求項１に記載の方法。
【請求項７】
前記ターゲットファイル名を取得するステップは、ファイル変更要求を取得するステップを含む、請求項１に記載の方法。
【請求項８】
コンピュータ装置によって実行されるときにオペレーションを行う１つまたは複数のコンピュータ実行可能なコンポーネントを含む１つまたは複数の記憶媒体を含むコンピュータ装置であって、前記オペレーションは、
新規のディレクトリエントリのためのターゲットファイル名を取得する処理と、
前記ターゲットファイル名のハッシュを生成する処理であって、前記ターゲットファイル名の前記ハッシュは当該ターゲットファイル名の関数である、処理と、
複数のディレクトリエントリ中のディレクトリエントリごとに、前記ターゲットファイル名の前記ハッシュが、各ディレクトリエントリのファイル名のハッシュにマッチングするか否かを判断する処理であって、各ディレクトリエントリに対する前記ファイル名のハッシュは、当該ファイル名の関数として生成される、処理と、
前記ターゲットファイル名の前記ハッシュが前記ディレクトリエントリのいずれのための識別ハッシュとマッチングしない場合は、前記ターゲットファイル名を使用して新規のディレクトリエントリを生成する処理と
を含む、コンピュータ装置。
【請求項９】
各ディレクトリエントリは、前記ディレクトリエントリのための前記ファイル名の前記ハッシュを格納する、請求項８に記載のコンピュータ装置。
【請求項１０】
前記判断する処理が、
前記ターゲットファイル名の前記ハッシュが前記ディレクトリエントリ中の少なくとも１つのファイル名の少なくとも１つのハッシュとマッチングすると判定する処理と、
１つまたは複数のマッチングするディレクトリエントリの全体ファイル名を取得する処理と、
前記ターゲットファイル名と、前記マッチングするディレクトリエントリの前記全体ファイル名とを比較する処理と、
前記ターゲットファイル名が前記マッチングするディレクトリエントリのいずれかのための前記全体ファイル名とマッチングしない場合に、前記ターゲットファイル名のための新規ディレクトリエントリを生成する処理と
を含む、請求項８に記載のコンピュータ装置。
【請求項１１】
前記オペレーションが、前記ターゲットファイル名が前記マッチングするディレクトリエントリの前記全体ファイル名とマッチングする場合は、前記新規のディレクトリエントリのための前記ターゲットファイル名を拒絶する処理をさらに含む、請求項１０に記載のコンピュータ装置。
【請求項１２】
前記オペレーションが、前記ターゲットファイル名が前記マッチングするディレクトリエントリの前記全体ファイル名とマッチングする場合は、前記ターゲットファイル名を、既存のディレクトリエントリとマッチングすると確認する処理をさらに含む、請求項１０に記載のコンピュータ装置。
【請求項１３】
前記ターゲットファイル名を取得する処理が、ファイル生成要求を取得する処理を含む、請求項８に記載のコンピュータ装置。
【請求項１４】
前記新規のディレクトリエントリを生成する処理が、前記ターゲットファイル名および前記ターゲットファイル名の前記ハッシュを含むディレクトリエントリを生成する処理を含む、請求項８に記載のコンピュータ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、拡張ファイルシステムフォーマット、およびこの拡張ファイルシステムフォーマットに関連する様々なプロセスに関する。
【背景技術】
【０００２】
一般的に説明すれば、ポータブルストレージ媒体などのストレージ媒体上にデータを保持する、デジタルスチルカメラ、デジタルビデオカメラ、メディアプレーヤ、モバイル電話、モバイルコンピューティングデバイス、携帯型個人情報端末など、いくつかのポータブルコンピューティングデバイスが存在する。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
より複雑なポータブルコンピューティングデバイス、およびストレージ容量のより大きなポータブルストレージ媒体の継続的な開発により、このストレージ媒体上で使用されるファイルシステムフォーマットに対する柔軟性がさらに要求されている。現行のファイルシステムフォーマットアプローチは、これらのアプローチが、ストレージサイズ容量および／またはストレージ媒体用途を増大させる十分な柔軟性を実現できる点においては、不十分になる可能性がある。
【課題を解決するための手段】
【０００４】
ポータブルストレージ媒体についての拡張ファイルシステムフォーマット（ｅｘｔｅｎｓｉｂｌｅ  ｆｉｌｅ  ｓｙｓｔｅｍ  ｆｏｒｍａｔ）が提供される。この拡張ファイルシステムフォーマットは、カスタム定義することができる１次ディレクトリエントリタイプおよび２次ディレクトリエントリタイプの仕様を含んでいる。これらの１次ディレクトリエントリタイプおよび２次ディレクトリエントリタイプは、クリティカルディレクトリエントリと良性ディレクトリエントリとしてさらに分類することができる。
【０００５】
本発明の一態様によれば、データを記憶するためのコンピュータ実行可能コンポーネントを有するコンピュータ読取り可能媒体が提供される。このコンピュータ読取り可能コンポーネントは、ファイルシステムについてのブートパラメータを指定するためのブートパラメータコンポーネントを含むことができる。これらのコンピュータ読取り可能コンポーネントはまた、このファイルシステムに関連するファイルアロケーションテーブルを定義するためのファイルアロケーションテーブルコンポーネントも含んでいる。さらに、これらのコンピュータ読取り可能コンポーネントは、このファイルシステムのルートディレクトリ中のデータを指定するための１次ディレクトリエントリコンポーネントも含んでいる。さらに、これらのコンピュータ読取り可能コンポーネントは、この１次ディレクトリエントリコンポーネントに対応する少なくとも１つの２次エントリコンポーネントも含んでいる。この２次エントリコンポーネントは、この１次ディレクトリエントリコンポーネントに関連する定義するメタデータを定義している。これらの１次ディレクトリエントリコンポーネントおよび２次ディレクトリエントリコンポーネントは、さらにクリティカルまたは良性であるとして分類することができる。
【０００６】
本発明の別の態様によれば、データを記憶するためのコンピュータ実行可能コンポーネントを有するコンピュータ読取り可能媒体が提供される。これらのコンピュータ読取り可能コンポーネントは、ファイルシステムについてのブートパラメータを指定するためのブートパラメータコンポーネントを含んでいる。これらのコンピュータ読取り可能コンポーネントはまた、このファイルシステムに関連するファイルアロケーションテーブルを定義するためのファイルアロケーションテーブルコンポーネントも含んでいる。さらに、これらのコンピュータ読取り可能コンポーネントは、このファイルシステムのルートディレクトリ中のデータを指定するためのルートディレクトリコンポーネントも含んでいる。さらに、これらのコンピュータ読取り可能コンポーネントは、このルートディレクトリエントリコンポーネントに対応する少なくとも１つの拡張可能なメタデータコンポーネントを含んでいる。このメタデータコンポーネントは、このルートディレクトリコンポーネントに関連するメタデータを定義する。
【０００７】
例示の実施形態においては、ファイルシステムは、認識されないクリティカルな１次ディレクトリエントリまたはルートディレクトリエントリについては、ボリュームをマウントしないことになる。このファイルシステムは、認識されない良性１次ディレクトリエントリ、クリティカルな２次ディレクトリエントリ、および良性２次ディレクトリエントリを無視することができる。
【０００８】
詳細な説明において以下でさらに説明している選択した概念について簡単な形で紹介するために、この概要は提供されている。この概要は、この請求している主題の主要な特徴を特定することを意図してはおらず、またこの請求している主題の範囲を決定する助けとして使用することも意図してはいない。
【０００９】
本発明の前述の態様および多数の付随する利点については、添付図面と合わせ読む際に、これらが以下の詳細な説明を参照してより良く理解されるようになるにつれて、より簡単に理解されるようになろう。
【図面の簡単な説明】
【００１０】
【図１Ａ】本発明の一態様による拡張ファイルシステムフォーマットを実施する、ポータブルコンピューティングデバイスおよびストレージデバイスを含む例示の環境を示すブロック図である。
【図１Ｂ】本発明の一態様による拡張ファイルシステムフォーマットを実施する、ポータブルコンピューティングデバイスおよびストレージデバイスを含む例示の環境を示すブロック図である。
【図１Ｃ】本発明の一態様による拡張ファイルシステムフォーマットを実施する、ポータブルコンピューティングデバイスおよびストレージデバイスを含む例示の環境を示すブロック図である。
【図２】本発明の一態様による拡張ファイルシステムフォーマットに対応する様々なボリュームレイアウトコンポーネントを例証するブロック図である。
【図３】本発明の一態様による、１次ディレクトリエントリ構造および２次ディレクトリエントリ構造を含む拡張ファイルシステムディレクトリ構造を例証するブロック図である。
【図４】本発明の一態様による拡張ファイルシステムフォーマットでブートプロセスブロックを実施するためのデータコンポーネントを例証するブロック図である。
【図５】本発明の一態様による拡張ファイルシステムフォーマットでディレクトリエントリを実施するためのデータコンポーネントを例証するブロック図である。
【図６】本発明の一態様による拡張ファイルシステムフォーマットでファイル名および拡張子を実施するためのデータコンポーネントを例証するブロック図である。
【図７】本発明の一態様による拡張ファイルシステムフォーマットでボリューム識別子を実施するためのデータコンポーネントを例証するブロック図である。
【図８】本発明の一態様による拡張ファイルシステムフォーマットで拡張ディレクトリエントリを実施するためのデータコンポーネントを例証するブロック図である。
【図９】本発明の一態様による拡張ファイルシステムフォーマットで拡張ディレクトリエントリを実施するデータコンポーネントを例証するブロック図である。
【図１０】本発明の一態様による拡張ファイルシステムフォーマットでアクセス制御リストを実施するためのデータコンポーネントを例証するブロック図である。
【図１１】本発明の一態様による拡張ファイルシステムフォーマットのためのファイル名作成ルーチンを例証する流れ図である。
【発明を実施するための形態】
【００１１】
一般的に説明すれば、本発明は、拡張ファイルシステムフォーマット、およびこの拡張ファイルシステムフォーマットに関連する様々なプロセスに関する。例示の一実施形態においては、この拡張ファイルシステムフォーマットは、ポータブルストレージ媒体のための拡張ファイルシステムフォーマットと、このポータブルストレージ媒体上の拡張ファイルシステムフォーマットに関連する様々なプロセスに対応する。本発明は、ポータブルストレージ媒体ファイルシステムフォーマットに関して説明されることになるが、これらの開示の実施形態は本質的に例示的であり、限定的と解釈すべきではないことが当業者には理解されよう。さらに、これらの例示の実施例で使用されるデータ構造およびデータレイアウトは、性能、セキュリティなどに関する追加の情報を必要とすることもあることが当業者には理解されよう。
【００１２】
図１Ａ〜１Ｃは、本発明の拡張ファイルシステムフォーマットのための様々な動作環境１００を例証するブロック図である。図１Ａを参照すると、例示の実施形態において、この拡張ファイルシステムフォーマットは、モバイルコンピューティングデバイス１０２などのコンピューティングデバイスと、ポータブルストレージ媒体１０４などのストレージ媒体からのデータを記憶するために利用される。例示の一実施形態においては、モバイルコンピューティングデバイス１０２は、それだけには限定されないが、ポータブルコンピューティングデバイス、モバイル電話、携帯型個人情報端末、音楽プレーヤ、メディアプレーヤを含めて、様々なコンピューティングデバイスのうちの任意の１つに対応することができる。このポータブルストレージ媒体は、それだけには限定されないがハードドライブ、フラッシュメディア、マイクロドライブおよび他のストレージ媒体を含むこともできる。例示の実施形態においては、ポータブルストレージ媒体１０４上の拡張ファイルシステムは、モバイルコンピューティングデバイス１０２が利用する、動作環境など、どのようなタイプの実行可能または読み取り可能なソフトウェアコンポーネントも含んでいる必要はない。代わりに、ポータブルストレージ媒体１０４上の拡張ファイルシステムは、モバイルデバイス１０２が使用する実行可能または読み取り可能なソフトウェアコンポーネントを含むこともできる。
【００１３】
例示の一実施形態においては、モバイルコンピューティングデバイス１０２は、ポータブルストレージ媒体１０４上に記憶すべきデータを収集／交換するための他のコンピューティングデバイスと情報をやりとりすることができる。図１Ｂを参照すると、モバイルコンピューティングデバイス１０２は、別のコンピューティングデバイス１０６およびストレージ媒体１０８と直接に通信を行うことができる。例示の一実施形態においては、直接の通信は、様々な有線および無線の通信方法に対応することが可能である。例示の一実施形態においては、他のストレージ媒体１０８は、本発明の拡張ファイルシステムフォーマットに従ってフォーマットする必要はない。図１Ｃを参照すると、同様にして、モバイルコンピューティングデバイス１０２はまた、ネットワーク接続を介して別のコンピューティングデバイス１１０およびストレージ媒体１１２と情報をやりとりすることもできる。例示の一実施形態においては、このネットワーク接続は、ＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋローカルエリアネットワーク）接続およびＷＡＮ（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋワイドエリアネットワーク）接続に対応するようにすることができる。
【００１４】
次に図２を参照して、拡張ファイルシステムフォーマットについての例示の一実施形態のボリュームレイアウト２００について説明することにする。ボリュームレイアウト２００は、このパーティションのファイルシステムパラメータの説明に関連した様々な情報を含むブートパラメータコンポーネント２０２を含んでいる。例示の一実施形態においては、ブートパラメータコンポーネント２０２は、定義されたパーティションからブートストラップするためのコード、この定義されたパーティションについての基本的なファイルシステムパラメータ、および様々なエラーチェック情報を含むことができる。このブートパラメータの少なくとも一部分を定義するためのデータ構造については、以下で図４に関して説明することにする。
【００１５】
ボリュームレイアウト２００はまた、このファイルシステムに関連して使用される様々な追加のデータ構造を定義する、ＯＥＭパラメータ２０４として指定される拡張パラメータコンポーネントも含んでいる。例示の一実施形態においては、ＯＥＭ（ｏｒｉｇｉｎａｌ  ｅｑｕｉｐｍｅｎｔ  ｍａｎｕｆａｃｔｕｒｅ相手先ブランド供給業者）は、製造時に定義することができるストレージ媒体についての性能パラメータなど、様々な拡張データ構造を指定することができる。ボリュームレイアウト２００は、ファイルアロケーションおよびディレクトリアロケーションを定義するファイルアロケーションテーブルコンポーネント２０６をさらに含むことができる。例示の一実施形態においては、ファイルアロケーションテーブルコンポーネント２０６中の各エントリは、割り付けられたクラスタ、割り付けられていないクラスタまたは使用できないクラスタを表す３２−ビットエントリに対応する。ボリュームレイアウト２００はさらに、このファイルシステムフォーマットに従って記憶されるデータに対応する一連のファイルデータコンポーネント２０８Ａ〜２０８Ｘを含むことができる。ファイルデータコンポーネント２０８Ａ〜２０８Ｘの一部分を定義するための様々なデータ構造については、図３〜１０に関して定義することにする。
【００１６】
次に図３を参照すると、ある点で、ファイルデータコンポーネント２０８は、ディレクトリ構造３００による１つまたは複数のディレクトリエントリを含むことができる。例示の一実施形態においては、ディレクトリ構造３００は、１次ディレクトリエントリ３０２、および２次ディレクトリエントリ３０４にまとめることができる。これらの１次エントリおよび２次エントリ中の各ディレクトリエントリは、類別する（ｔｙｐｅ）ことができる。例えば、例示の一実施形態において、これらの１次ディレクトリエントリおよび２次ディレクトリエントリについてのタイプ値は、１〜２５５の範囲に対応するようにすることができる。１次ディレクトリエントリ３０２は、このファイルシステムのルートディレクトリ中の諸エントリに対応する。２次ディレクトリエントリ３０４は、１次ディレクトリエントリに従い、この１次ディレクトリエントリに関連づけられる。２次ディレクトリエントリは、この相互に関連する１次ディレクトリエントリに関連するこのメタデータを拡張する。
【００１７】
続けて図３を参照すると、例示の一実施形態において、１次ディレクトリエントリ３０２はさらに、クリティカル１次ディレクトリエントリ３０６と、良性１次ディレクトリエントリ３０８として分類することもできる。クリティカル１次ディレクトリエントリ３０６は、ディレクトリエントリごとに異なるフォーマットを定義する可能性がある。例示の一実施形態においては、動作環境は、以下で説明するように、知られていないクリティカル１次ディレクトリエントリを用いて拡張ファイルシステムフォーマットに対応するボリュームをマウントしないはずである。知られている１次ディレクトリエントリ３０６の実施例は、アロケーションビットマップ、アップケーステーブル、ボリュームラベル、暗号キー、および通常のディレクトリエントリを含むことができる。良性１次ディレクトリエントリ３０８はまた、ディレクトリエントリごとに異なる可能性のあるフォーマットを定義するが、特定の良性１次ディレクトリエントリが知られていない場合には、このファイルシステムによって無視することもできる。良性１次ディレクトリエントリ３０８は、そのボリュームの別のクラスタチェーンに関連づけることができる。さらに、良性１次ディレクトリエントリ３０８はまた、いくつかの２次ディレクトリエントリ３０４に関連づけることもできる。
【００１８】
１次ディレクトリエントリ３０２と同様にして、２次ディレクトリエントリ３０４はまた、さらにクリティカル２次ディレクトリエントリ３１０と、良性２次ディレクトリエントリ３１２として分類することができる。前述のように、クリティカル２次ディレクトリエントリ３１０と良性２次ディレクトリエントリ３１２は、良性１次ディレクトリエントリに関連づけられ、この１次ディレクトリエントリに関連するメタデータを拡張する。クリティカル２次ディレクトリエントリ３１０も良性２次ディレクトリエントリ３１２も共に、そのボリュームの別のクラスタチェーンに関連づけることができる。
【００１９】
この拡張ファイルシステムフォーマットに対応するボリュームをマウントするために、このファイルシステムは、マウントボリュームプロシージャを実施する。例示の一実施形態においては、このマウントボリュームプロシージャは、このボリュームについてのバージョン番号を調べようと試みる。このバージョン番号が知られていない（例えば、このバージョン番号が、より大きな数である）場合、このボリュームはマウントされないことになる。通常のディレクトリエニュメレーション（ｄｉｒｅｃｔｏｒｙ  ｅｎｕｍｅｒａｔｉｏｎ）中には、このファイルシステムが知らないどのようなクリティカル１次ディレクトリエントリも、このボリュームがマウントされないように防止することになる。その後、ファイルオープンなど様々なユーザによる開始プロセスは、このファイルシステムにこの２次ディレクトリエントリを列挙させることになる。クリティカル２次ディレクトリエントリ３１０が、ファイルシステムによって知られていない場合、このディレクトリエントリ全体がスキップされることになる。さらに、良性２次ディレクトリエントリ３１２がこのファイルシステムによって知られていない場合には、この特定の知られていない良性２次ディレクトリエントリは、無視されることになる。
【００２０】
次に図４を参照して、ブートパラメータコンポーネント２０２（図２）中のブートプロセスブロックを実施するためのデータコンポーネント４００を例証するブロック図について説明することにする。データコンポーネント４００は、このストレージ媒体のファイルシステムフォーマットについての名前を指定するためのＯＥＭ名コンポーネント４０２を含んでいる。データコンポーネント４００はまた、このファイルシステムに記憶されるデータの様々な特性を指定するためのデータサイズ記述コンポーネント４０４も含んでいる。例えば、データサイズ記述コンポーネント４０４は、セクタ当たりのバイト数、アロケーションユニット当たりのセクタ数、ＦＡＴテーブルオフセット、およびすべてのデータ構造についてのセクタ数を指定することができる。このデータコンポーネントは、このファイルシステム上のアクティブＦＡＴ数を指定するためのアクティブＦＡＴフラグコンポーネント４０６を含んでいる。例示の一実施形態において、ファイルシステムは、一部のオペレーティングシステム環境と共に利用するための複数のＦＡＴをサポートすることができる。データコンポーネント４００は、ボリュームのシリアル番号および／またはバージョン番号を識別するためのボリューム識別コンポーネント４０８をさらに含むことができる。さらに、データコンポーネント４００は、このファイルシステムについてのファイルシステムフォーマットを指定するためのファイルシステムタイプを含むことができる。データコンポーネント４００は、以上で識別したコンポーネント４０２〜４１０および追加のコンポーネントを実施するためのいくつかの追加／代替の行を含むこともできることが当業者には理解されよう。
【００２１】
次に図５を参照して、拡張ファイルシステムフォーマットでディレクトリエントリを実施するためのデータコンポーネント５００を例証するブロック図について説明することにする。次に図６を参照して、ファイル名および拡張子を実施するためのデータコンポーネント５００のブロック図について説明することにする。データコンポーネント５００は、この特定のディレクトリエントリが使用中であるかどうかを指定するための使用中コンポーネント５０２を含んでいる。例示の一実施形態においては、このディレクトリエントリが使用中である場合に、これらのデータコンポーネントの高位ビットが「１」に設定されることになる。データコンポーネント５００は、このディレクトリエントリが通常のディレクトリエントリに関連することを指定するためのタイプ指定コンポーネント５０４をさらに含んでいる。データコンポーネント５００は、この通常のディレクトリエントリに関連するいくつかの２次エントリを指定するための２次ディレクトリエントリコンポーネント５０６をさらに含んでいる。データコンポーネント５００は、このディレクトリエントリについての様々なファイルシステム属性を指定するためのファイル属性コンポーネント５０８も含んでいる。さらに、データコンポーネント５００は、作成タイムスタンプ、修正タイムスタンプ、他の時間情報など様々な時間情報を指定するための時間コンポーネント５１０を含んでいる。これに加えて、データコンポーネント５００は、この最後に作成されたタイムスタンプについての時間帯を指定するための時間帯コンポーネント５１２をさらに含んでいる。データコンポーネント５００は、以上で特定されたコンポーネント５０２〜５１２および追加のコンポーネントを実施するためのいくつかの追加／代替の行も含むことができることが当業者には理解されよう。
【００２２】
次に図６を参照して、ファイル名および拡張子を実施するためのデータコンポーネント６００のブロック図について説明することにする。データコンポーネント６００は、この特定のディレクトリエントリが使用中であるかどうかを指定するための使用中コンポーネント６０２を含んでいる。例示の一実施形態においては、このディレクトリエントリが使用中である場合に、これらのデータコンポーネントの高位ビットが「１」に設定されることになる。データコンポーネント６００は、このディレクトリエントリがファイルシステム名に関連することを指定するためのタイプ指定コンポーネント６０４をさらに含んでいる。このデータコンポーネントは、ファイル名長コンポーネント６０６をさらに含み、ファイル名は、コンポーネント６０８を有する。このファイル名ハッシュコンポーネント６０８の利用については、以下で説明することにする。データコンポーネント６００は、このファイル名を指定するためのファイル名コンポーネント６１０も含んでいる。データコンポーネント６００は、以上で特定したコンポーネント６０２〜６１０および追加のコンポーネントを実施するためのいくつかの追加／代替の行を含むこともできることが当業者には理解されよう。さらに、ファイル名ディレクトリエントリは、２次ディレクトリエントリによって拡張することができる。
【００２３】
次に図７を参照すると、拡張ファイルシステムフォーマットでボリューム識別子を実施するためのデータコンポーネント７００を例証するブロック図が示されている。データコンポーネント７００は、この特定のディレクトリエントリが使用中であるかどうかを指定するための使用中コンポーネント７０２を含んでいる。例示の一実施形態においては、このディレクトリエントリが使用中である場合に、これらのデータコンポーネントの高位ビットが「１」に設定されることになる。データコンポーネント７００は、このディレクトリエントリがボリューム識別子に関連することを指定するためのタイプ指定コンポーネント７０４をさらに含んでいる。データコンポーネント７００は、このボリューム識別子に関連するいくつかの２次エントリを指定するための２次ディレクトリエントリコンポーネント７０６をさらに含んでいる。データコンポーネント７００は、グローバル一意識別子などのボリューム識別子７０８も含んでいる。データコンポーネント７００は、以上で特定したコンポーネント７０２〜７０８および追加のコンポーネントを実施するためのいくつかの追加／代替の行も含むことができることが当業者には理解されよう。さらに、例示の一実施形態においては、データコンポーネント７００は、ボリューム識別子をサポートしないファイルシステムによって無視することができる良性ディレクトリエントリに対応している。
【００２４】
次に図８および９を参照すると、例示の一実施形態においては、ＯＥＭなどのパーティは、特定の良性１次ディレクトリエントリタイプ３０８および良性２次ディレクトリエントリタイプ３１２を定義可能とすることができる。前述のように、このファイルシステムが、この特定の良性１次ディレクトリエントリタイプ３０８または良性２次ディレクトリエントリタイプ３１２を認識または理解しないことになる場合には、このファイルシステムは、この定義されたディレクトリエントリタイプを無視することができる。
【００２５】
図８を参照して、拡張ファイルシステムフォーマットで拡張良性１次ディレクトリエントリ３０８を実施するためのデータコンポーネント８００を例証するブロック図について説明することにする。データコンポーネント８００は、この特定のディレクトリエントリが使用中であるかどうかを指定するための使用中コンポーネント８０２を含んでいる。例示の一実施形態においては、このディレクトリエントリが使用中である場合に、これらのデータコンポーネントの高位ビットが「１」に設定されることになる。データコンポーネント８００は、このディレクトリエントリが良性１次ディレクトリエントリであることを指定するためのタイプ指定コンポーネント８０４をさらに含んでいる。データコンポーネント８００は、このボリューム識別子に関連するいくつかの２次エントリを指定するための２次ディレクトリエントリコンポーネント８０６をさらに含んでいる。データコンポーネント８００は、グローバル一意識別子などのボリューム識別子８０８も含んでいる。データコンポーネント８００は、検証情報や開始クラスタなど追加の情報８１０をさらに含むことができる。データコンポーネント８００は、以上で特定したコンポーネント８０２〜５０６および追加のコンポーネントを実施するためのいくつかの追加／代替の行を含むことができることが当業者には理解されよう。
【００２６】
図９を参照して、拡張ファイルシステムフォーマットで良性２次ディレクトリエントリを実施するためのデータコンポーネント９００を例証するブロック図について説明することにする。データコンポーネント９００は、この特定のディレクトリエントリが使用中であるかどうかを指定するための使用中コンポーネント９０２を含んでいる。例示の一実施形態においては、このディレクトリエントリが使用中である場合に、これらのデータコンポーネントの高位ビットが「１」に設定されることになる。データコンポーネント９００は、このディレクトリエントリが良性１次ディレクトリエントリであることを指定するためのタイプ指定コンポーネント９０４をさらに含んでいる。データコンポーネント９００は、このボリューム識別子に関連するいくつかの２次エントリを指定するための２次ディレクトリエントリコンポーネント９０６をさらに含んでいる。データコンポーネント９００は、グローバル一意識別子などのボリューム識別子９０８も含んでいる。データコンポーネント９００は、検証情報や開始クラスタなど追加の情報９１０をさらに含むことができる。データコンポーネント９００は、以上で特定したコンポーネント９０２〜９０６および追加のコンポーネントを実施するためのいくつかの追加／代替の行を含むこともできることが当業者には理解されよう。
【００２７】
例示の一実施形態においては、良性の１次ディレクトリエントリおよび／または２次ディレクトリエントリは、ＡＣＬ（ａｃｃｅｓｓ  ｃｏｎｔｒｏｌ  ｌｉｓｔアクセス制御リスト）情報に関連づけることができる。図１０は、拡張ファイルシステムフォーマットでアクセス制御リストを実施するためのデータコンポーネント１０００を例証するブロック図である。データコンポーネント１０００は、この特定のディレクトリエントリが使用中であるかどうかを指定するための使用中コンポーネント１００２を含んでいる。例示の一実施形態においては、このディレクトリエントリが使用中である場合に、これらのデータコンポーネントの高位ビットが「１」に設定されることになる。データコンポーネント１０００は、このディレクトリエントリがＡＣＬディレクトリエントリであることを指定するためのタイプ指定コンポーネント１００４をさらに含んでいる。データコンポーネント１０００は、ＡＣＬフラグ、ＡＣＬデータベースに対するポインタなどいくつかのＡＣＬフィールド１００６をさらに含んでいる。データコンポーネント１０００は、以上で特定したコンポーネント１００２〜１００６および追加のコンポーネントを実施するためのいくつかの追加／代替の行を含むこともできることが当業者には理解されよう。
【００２８】
次に図１１を参照して、拡張ファイルシステムフォーマットについてのファイル名作成ルーチン１１００について説明することにする。ブロック１１０２において、ファイルシステムは、特定のファイル名を用いてディレクトリエントリを作成する要求を取得する。例示の一実施形態においては、この特定のファイル名は、デジタルカメラピクチャ命名規則などの命名規則に対応することが可能である。ブロック１１０４において、このファイルシステムは、ターゲット名ハッシュを生成する。ブロック１１０６において、反復ループが、次のディレクトリエントリハッシュ値を検査することによって開始される。ディレクトリエントリハッシュ値を記憶するための例示のディレクトリエントリタイプについては、データコンポーネント６００（図６）に関して以上で説明している。
【００２９】
判断ブロック１１０８において、このターゲットハッシュ値が現在のディレクトリエントリハッシュ値にマッチングするかどうかを判定するテストが行われる。これらがマッチングしていない場合、ルーチン１１００は、（これらすべてのディレクトリエントリが検査されるまで）ブロック１１０６に戻る。これらのハッシュ値が判断ブロック１１０８においてマッチングする場合には、ブロック１１１０において、このファイルシステムは、マッチングする可能性のあるディレクトリエントリについての全体ファイル名を取得する。ディレクトリエントリ全体ファイル名を記憶するための例示のディレクトリエントリタイプについては、データコンポーネント６００（図６）に関して以上で説明している。判断ブロック１１１２において、このターゲットファイル名が、マッチングする可能性のあるディレクトリエントリの全体ファイル名にマッチングするかどうかを判定するテストが行われる。マッチングする場合、ルーチン１１００は、競合を報告することにより終了し、このファイルシステムは、新しいファイル名を選択する必要があることになる。この全体のファイルがマッチングしない場合には、ルーチン１１００は、ブロック１１０６へと戻って、このファイルシステムにおけるこれらすべてのディレクトリエントリについてのハッシュ値をチェックし続けることになる。
【００３０】
本発明の一態様によれば、特定のディレクトリタイプの仕様を用いて様々な追加機能を追加することができる。例えば、ネームストリームディレクトリエントリを指定することにより、ネームストリームをサポートすることができる。さらに、特定の暗号化アルゴリズムおよびキー交換の利用によりオンディスク（ｏｎ−ｄｉｓｋ）暗号化をサポートすることもできる。さらに、時間帯変換をディレクトリエントリに関連づけて、このディレクトリエントリが行われた時間帯を用いて現在の時間帯を自動的に変換することもできる。
【００３１】
例示の実施形態について例証し説明してきたが、本発明の趣旨および範囲を逸脱することなく、様々な変更をこの中で行うことができることが理解されよう。
【符号の説明】
【００３２】
２００  ボリュームレイアウト
２０２  ブートパラメータ
２０４  ＯＥＭパラメータ
２０６  ファイルアロケーションテーブル
２０８Ａ  ファイルデータ
２０８Ｘ  ファイルデータ
３００  ディレクトリ構造
３０２  １次ディレクトリエントリタイプ
３０４  ２次ディレクトリエントリタイプ
３０６  クリティカル１次エントリタイプ
３０８  良性１次エントリタイプ
３１０  クリティカル１次エントリタイプ
３１２  良性１次エントリタイプ
【図１Ａ】
0005497206.tif 000002
【図１Ｂ】
0005497206.tif 000003
【図１Ｃ】
0005497206.tif 000004
【図２】
0005497206.tif 000005
【図３】
0005497206.tif 000006
【図４】
0005497206.tif 000007
【図５】
0005497206.tif 000008
【図６】
0005497206.tif 000009
【図７】
0005497206.tif 000010
【図８】
0005497206.tif 000011
【図９】
0005497206.tif 000012
【図１０】
0005497206.tif 000013
【図１１】
0005497206.tif 000014