(57)【特許請求の範囲】
【請求項１】
コンピュータシステムにて複数のフォーマットでデータを記憶させる合成文書内にデータを記憶させる方法であって、前記複数のフォーマットの各々がコンピュータプログラムの固有のフォーマットであり、前記コンピュータシステムはデータをファイル内に組織するファイルシステムを有するものにおいて、前記方法が、
前記ファイルシステムのファイルを生成する段階と、
前記生成されたフアイル内に含まれる複数のサブファイルを指し示すようなディレクトリ構造を前記生成されたファイル内に記憶する段階と、
複数のコンピュータプログラムの各々に対して、
サブファイルに対して位置を割当て、そして割当てられた位置及びサブファイルの名前とを前記ディレクトリ構造内に記憶することにより、前記生成されたファイル内にサブファイルを生成する段階と、
前記生成されたサブファイル内に、データをコンピュータプログラムの固有のフォーマットで記憶し、前記固有のフォーマット内の前記データが前記コンピュータプログラムによりアクセス可能である段階とを備え、
前記ファイルは、前記複数のサブファイル自身の少なくとも１つがサブファイル・ディレクトリ構造及び１つ又は複数のサブサブファイルを含むように階層的に組織化されていることを特徴とする方法。
【請求項２】
コンピュータシステムにてファイルバンドル内のデータをアクセスする方法であって、前記ファイルバンドルはファイルシステムを使用してアクセスされるファイルシステムファイルであり、前記ファイルバンドルはディレクトリと複数のファイルバンドルファイルを有しており、前記方法が、
第１のアプリケーションプログラムの制御下で、
ファイルバンドルをオープンする段階と、
第２のアプリケーションプログラムによって発生されたデータを含む複数のファイルバンドルファイル内の１つのファイルバンドルファイルを識別する段階と、
前記第２のアプリケーションプログラムをリクエストして前記識別されたファイルバンドルファイル内のデータをアクセスする段階と、
前記第２のアプリケーションプログラムの制御下で、
前記識別されたファイルバンドルファイルをオープンする段階と、
前記オープンされたファイルバンドルファイル内のデータにアクセスを行なう段階とを備え、
前記ファイルバンドルは、前記複数のファイルバンドルファイル自身の少なくとも１つが入れ子状（ネスト）ディレクトリ構造及び１つ又は複数の入れ子状（ネスト）ファイルバンドルファイルを含むように階層的に組織化されていることを特徴とする方法。
【請求項３】
コンピュータシステムにて複数のアプリケーションによって発生されたデータを、ファイルシステムを用いてアクセスされるファイルシステムファイル内に記憶する方法において、前記方法が、
ファイルシステムファイルを生成する段階と、
前記生成されたファイルシステムファイル内にディレクトリ構造を記憶する段階と、
アプリケーションによって発生されたデータを記憶するために、前記生成されたファイルシステムファイル内にサブファイルを生成する段階と、
前記生成されたサブファイル内にデータを記憶するよう前記データを発生するアプリケーションに要求する段階と、
前記要求されたアプリケーションの制御下で、前記発生されたデータを前記生成されたサブファイル内に記憶する段階とを備え、
前記サブファイル自身が入れ子状（ネスト）ディレクトリ構造及び１つ又は複数の入れ子状（ネスト）サブファイルを含むことを特徴とする方法。
【請求項４】
前記発生されたデータを前記生成されたサブファイル内に記憶する前記段階が、前記発生されたデータを収納するために前記ファイルシステムファイルの大きさを増大させる段階を含むことを特徴とする請求項３記載の方法。
【請求項５】
コンピュータシステムにてファイルシステムのファイルシステムファイル内に複数のサブファイルを記憶する方法であって、前記ファイルシステムは前記ファイルシステムファイルへのアクセスを提供するものにおいて、
アプリケーションプログラムの制御下で、
前記ファイルシステムに前記ファイルシステムファイルを生成することを要求する段階と、
複数のサブファイルの各々の名前を前記サブファイルが記憶される前記ファイルシステムファイル内の位置にマッピングしたディレクトリ構造を表すデータを前記ファイルシステムファイル内に記憶することを前記ファイルシステムに要求する段階と、
複数のサブファイルの各々に対して、
前記サブファイルが記憶される前記ファイルシステムファイル内の位置を識別する段階と、
前記ファイルシステムファイル内の前記識別された位置に前記サブファイルのデータを記憶するように前記ファイルシステムに要求する段階と、
前記サブファイルの名前を前記識別された位置にマップするデータを、前記ファイルシステムファイル内の前記ディレクトリ構造内に記憶するように前記ファイルシステムに要求する段階とを含み、
前記複数のサブファイルの少なくとも１つが、複数のサブサブファイル及びサブファイルディレクトリ構造を含むことを特徴とする方法。
【請求項６】
前記複数のサブファイルの各々の前記データが、前記サブファイルの前記データを発生したそれぞれのアプリケーションプログラムの固有のフォーマット内にある請求項５記載の方法。
【請求項７】
コンピュータシステムにてファイルバンドル内にサブファイルを生成する方法であって、前記ファイルバンドルはファイルシステムによりアクセス可能なファイルシステムファイルであり、前記ファイルシステムは生成ファンクションのためのファイルシステム実行を有し、前記生成ファンクションは前記ファイルシステムのファイルシステムファイルを生成するためのものにおいて、前記方法が、
サブファイル生成のための生成ファンクションのファイルバンドル実行を提供する段階と、
親コンピュータプログラムの実行を開始する段階と、
前記親コンピュータプログラムの制御下で、前記生成ファンクションの前記ファイルシステム実行を使用して前記ファイルバンドルを生成する段階と、
子コンピュータプログラムの実行を開始する段階と、
前記子コンピュータプログラムの制御下で、前記生成ファンクションを呼出して、前記ファイルバンドル実行が前記ファイルバンドル内にサブファイルの生成を生ずるために実行される段階とを含み、
前記サブファイルがディレクトリ構造及び１つ又は複数のサブサブファイルを含むことを特徴とする方法。
【請求項８】
コンピュータシステムにて複数のアプリケーションプログラムデータストリームのデータをアクセスする方法であって、前記コンピュータシステムはファイルシステムデータストリームにアクセスするため単一のデータストリームアクセス機構を有し、前記単一のデータストリームアクセス機構はデータをアクセスするためファイルシステムデータストリーム内の位置を示すファイルシステムファイルポインタを有するものにおいて、前記方法が、
複数のアプリケーションプログラムデータストリームの各々について、
要求を受ける段階と、
アプリケーションプログラムデータ流れに対するアプリケーションプログラムファイルポインタを検索する段階と、
前記ファイルシステムファイルポインタを前記検索されたアプリケーションプログラムファイルポインタに設定する段階と、
前記単一のデータストリームアクセス機構を使用して前記ファイルシステムデータストリームにアクセスして、これにより前記アプリケーションプログラムデータストリームの前記アプリケーションプログラムファイルポインタにより指示された位置のデータがアクセスされる段階と、
を含む方法。
【請求項９】
ファイルシステムを持つコンピュータシステムにて前記ファイルシステムのファイル内に複数のサブファイルを記憶する方法であって、前記複数のサブファイルの各々がデータ及び識別子を有して前記ファイル内の位置に記憶されていて、前記複数のサブファイルの各々のデータがアプリケーションプログラムにより生成されるものにおいて、前記方法が、
前記複数のサブファイルの各々の前記識別子を前記サブファイルの前記位置へマップするディレクトリ構造を記憶し、これにより前記複数のサブファイルについてデータを生成するそれぞれのアプリケーションプログラムに対して前記複数のサブファイルがアクセス可能とする段階と、
前記複数のサブファイルの各々のデータが前記データを生成した前記アプリケーションプログラムの固有フォーマットにある、前記複数のサブファイルを記憶する段階とを含み、
前記複数のサブファイル自身の少なくとも１つが入れ子状（ネスト）ディレクトリ構造及び１つ又は複数の入れ子状（ネスト）サブファイルを含むことを特徴とする方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、コンピュータ装置にデータを記憶するための方法及び装置、更に言えば、合成文書にデータを記憶するための方法及び装置に関する。
【０００２】
【従来の技術】
コンピュータ作動装置には、一般に、ファイルシステムと呼ばれるサブシステムが含まれる。ファイルシステムは、複数のファイルにデータを記憶する。ファイルシステムは、ディスク若しくは他の長期間記憶媒体に記憶されたデータにアクセスを行うために、アプリケーションプログラミングインタフェース（ＡＰＩ）を提供する。ファイルシステムＡＰＩは、アプリケーションによって呼出（インボウク）される様々なファンクションを提供してデータにアクセスを行う。アプリケーションプログラムは、ファイルの内部フォーマットを制御して、どのデータをどのファイルに記憶するのか決定を行う。一般には、このファイルシステムによって、ファイルをディレクトリに集合分けすることが可能とされる。各ディレクトリは、多数のファイルと多数のサブディレクトリを含むことができる。また、サブディレクトリは、ファイル若しくは他のサブディレクトリを含むこともできる。複数のファイルをディレクトリ若しくはサブディレクトリに集合分けするようなファイルシステムは階層ファイルシステムと呼ばれる。
様々なタイプのデータにアクセスを行うには、多数のアプリケーションプログラムが必要である。例えば、ワードプロセッシングプログラムは、テキストや、グラフ、スプッレッドシート中のデータを、単一の文書に結合することができる。テキストフォーマットは、ワードプロセッシングプログラムにとって固有のフォーマットとして知られている。ワードプロセッシングプログラムのユーザは、ファイルに記憶されたグラフやスプレッドシートを文書に含めるべきであることを指定することもできる。これを行うため、ワードプロセッシングプログラムは、グラフプログラム若しくはスプレッドシートプログラムによって発生されたファイルからデータを移入することができる。ワードプロセッシングプログラムは、一般には、グラフ及びスプレッドシートファイルの内部フォーマットのみならず、それらのグラフ及びスプレッドシートデータをどのように表示若しくは印字するのかを、知らなければならない。
【０００３】
ワードプロセッシングプログラムの市場性は、多くのフォーマットで記憶されたデータを移入するための能力によって強化される。しかしながら、特別なノンテキストフォーマットのデータをアクセスするようにして、ワードプロセッシングプログラムを適合させることには、非常に多くの時間が費やされると共に高価なものとなる。ワードプロセッシングプログラムを適合させるために、開発者は、その特別なフォーマットの完全な記述を必要とし、印字、表示、及び、可能ならばデータ記憶のために、コードを開発する。ワードプロセッシングプログラムを特別なフォーマットに適合させるために必要とされる努力は、そのフォーマットが他の業者によって定義されている場合に増大する。業者はそのフォーマットの完全な仕様を公表してはいないだろうし、また、そのフォーマットをなんの意思表示なく変更するだろう。この結果、アプリケーションプログラムの開発者は、それ固有のファイルフォーマットの他に２つ若しくはそれ以上の公衆向けのファイルフォーマットだけを指示するような選択を行うだろう。
提案されている１つの解決策は、特別なノン・テキストフォーマットでデータを発生したアプリケーションプログラムをワードプロセッシングプログラムによってインボウクし、ワードプロセッシング文書の一部であるノン・テキストデータを表示若しくは印字するというものである。例えば、文書がグラフを取り込んだものであれば、ワードプロセッシングプログラムはそのデータを発生したグラフプログラムをインボウクして、そのグラフを印字若しくは表示するか若しくはデータを用いる他の幾つかのタスクを実行するであろう。しかしながら、このグラフプログラムが、特別なワードプロセッシングプログラムによって特別にイボウクされるように開発されていなければ、そのグラフプログラムをインボウクすることは実際的ではないだろう。一般に、グラフプログラムは、データが、あるフォーマットでグラフデータのみを有するようなファイルに記憶されることを期待する。
【０００４】
ワードプロセッシングプログラムによって、他のプログラムをインボウクし、さもなければワードプロセッシング文書の一部であるノン・テキストを処理して、印字、表示、若しくは他のプロセスを可能とするために、幾つかのアプローチが示唆されている。第１のアプローチは、ノン・テキストを発生する各プログラムを変更することによって、それらのプログラムが、ワードプロセッシング文書の内部フォーマットを知り、その文書からノン・テキストデータを検索し、また、その検索されたデータを処理することができるようにするというものである。この解決策は、各ワードプロセッシングプログラムに対する内部フォーマットをプログラムが知る必要があるという理由から、高価なものとなり得る。
第２の解決策は、ワードプロセッシング文書の各構成要素を別々のファイルに記憶するというものである。このアプローチを用いた場合には、データは各アプリケーションプログラムに固有のフォーマットに記憶されるだろう。このため、アプリケーションプログラムは、その固有のデータを処理するために、直接にインボウクされるだろう。しかしながら、この第２のフォーマットでは、ワードプロセッシング文書の完全性が損なわれる危険がある。ユーザは、一般に、オペレーティングシステムのコマンドを使用するようなファイルを削除することができる。故に、ユーザは、ワードプロセッシング文書の一部であるファイルの１つを削除することも可能だろう。ワードプロセッシング文書は、このとき、削除されたファイルに対するリンクを持つことになる。
【０００５】
【発明の概要】
本発明の目的は、合成文書を管理するための方法及び装置を提供することにある。
本発明の他の目的は、実行中のファイルシステムのインタフェースと並列処理されるような合成文書インタフェースを提供することにある。
また、本発明の他の目的は、現存のアプリケーションを変換して、最小の変換コストでシステムを使用できる合成文書システムを提供することにある。
これらの及び、以下に本発明がより詳細に記述されていることから明かとなるであろう、他の目的は、また、アプケーションプログラムを合成文書に記憶することを可能とする方法及び装置によって達成されるであろう。本発明は、合成文書内にファイルバンドルとして構成されるべきデータを提供する。ファイルバンドルは、階層的に構成され得るサブファイルを含むようなファイルシステムファイルである。ファイルバンドルファイル内のデータは、より好ましくは、そのデータ（固有のデータ）を発生するプログラムによって定義されたフォーマットで記憶される。そのデータを発生するプログラムは、他のプログラムによって作り出されたファイルバンドルをオープンし、そのファイルバンドルファイル内のデータを記憶し、検索する。
【０００６】
【実施例】
より好ましい実施例において、本発明は、アプリケーションプログラムによって合成文書に記憶されたデータの共有を可能とするような方法及び装置を提供する。合成文書は、様々なアプリケーションによって発生されたデータを含むディスクファイルである。本発明はこの合成文書内にファイルバンドルとして構成されるべきデータを与える。ファイルバンドルは、階層的に構成され得るサブファイルを含んだファイルシステムファイルである。サブファイルはファイルバンドルファイルと呼ばれている。ファイルバンドルファイル内のデータは、より好ましくは、発生プログラムによって定義された固有のフォーマットで記憶される。例えば、ワードプロセッシング文書が、スプレッドシートデータを含む場合には、ファイルバンドルファイルは、このスプレッドシートプログラムによって発生されたフォーマットでこの固有のデータを含むだろう。
図１は、本発明のファイルバンドルの一般的なレイアウトを示す。ファイルバンドルは、ファイルシステムＡＰＩを用いて生成されたファイルシステムファイルである。ファイルバンドル１００は、ディレクトリ１１０、テキストファイルバンドル（ＦＢ）ファイル１２０、グラフＦＢファイル１３０、及び、スプレッドシートＦＢファイル１４０を備える。ディレクトリ１１０は、各ＦＢファイルに対して、エントリ１１１、１１２、１１３を含む。これらのエントリは各々、対応するＦＢファイルに対するポインタと、ＦＢファイルの長さや生成時間のような他の情報を含む。より好ましい実施例では、これらのディレクトリエントリは、ファイルシステムのディレクトリに記憶されたデータタイプと同じようなデータを含む。テキストＦＢファイル１２０は、グラフＦＢファイルに対するリンク１２１と、スプレッドシートＦＢファイルに対するリンク１２２を含む。これらのリンク１２１、１２２は、それらのグラフ及びスプレッドシートデータが文書の一部であることを表示する。
【０００７】
より好ましい実施例において、ファイルバンドルは、それ自身がファイルバンドルであるようなＦＢファイルを含む。ＦＢファイルは、入れ子状のファイルバンドルファイルを形成するためのディレクトリポインタを備えることができる。ファイルバンドルのネスティングは階層ディレクトリ構造と似ている。このネスティングによって、合成文書を合成文書内に含ませることが可能となる。このように、ワードプロセッシングシステムに対するファイルバンドルは、スプレッドシートデータに対するファイルバンドルファイルを含み、更には、グラフデータを含むことができる。図２は、ファイルバンドルであるＦＢファイルを含んだファイルバンドルを示す。ファイルバンドル２００は、４つのエントリ２１１、２１２、２１３、２１４を有するディレクトリ２１０を含む。ディレクトリエントリ２１４は、ＦＢファイル２５０を指し、ファイルバンドルであるＦＢファイルを指す指示子を含む。ＦＢファイル２５０は、ＦＢファイル２５４、２５５を指すエントリ２５１、２５２を有したディレクトリ２５３を含む。図１及び図２は一つの実施例を示すが、当業者には明かなように、他のディレクトリ記憶方法及びファイルバンドルのファイルも可能である。例えば、ファイルシステムのディレクトリ及びファイル構造と同じ方法でファイルバンドルを構成することが好ましい。
【０００８】
現存のアプリケーションプログラムは、ファイルシステムファイルに入れ子状のフォーマットで記憶されたデータにアクセスを行うことができる。しかしながら、これらのアプリケーションは、ファイルバンドルファイル内に記憶されたそれらの出生データにアクセスを行うようには開発されていない。本発明はまた、ファイルバンドルＡＰＩを提供する。このファイルバンドルＡＰＩによって、現存のアプリケーションプログラムは、最小の変更でファイルバンドルファイルの出生データにアクセスすることができる。
本発明は、マイクロソフトコーポレイションによって開発されたＭＳ−ＤＯＳのようなノン・マルチタスキングオペレーティングシステムを有したコンピュータシステム上で実行するものとして記述されている。しかしながら、当業者ならば、本発明をマルチタスキングオペレーティングシステムを有したコンピュータシステム上で実行することが可能であることに気付くであろう。ＭＳ−ＤＯＳによって、プログラム（親プログラム）は他のプログラム（子プログラム）を実行することができる。子プログラムが完了すると、制御は親プログラムに戻される。このように、親プログラムは、子プログラムをロードして、親プログラムによって生成された合成文書のその出生データにアクセスすることができる。しかしながら、ＭＳ−ＤＯＳは、オープンファイルの各々に対して単一のファイルポインタのみを保持する。ファイルポインタは、次の読み出し若しくは書込みが発生するであろう現在のポイントを指す。ＭＳ−ＤＯＳによって、プログラム（親プログラム）は、それもまたそのファイルをオープンするような他のプログラム（子プログラム）をロードして、子プログラムの成すファイルポインタにおける変更によって親プログラムに影響を与えることができる。
【０００９】
上で述べたように、オープンファイルの各々に関して単一のファイルポインタのみを支持するようなオペレーティングシステムは、単一のデータストリーム（流れ）のみを支持すると言われる。本発明の方法は、単一のファイルシステムデータ流れ内の多数のデータ流れを実行するためのものである。これらの方法を用いることによって、現存のアプリケーションを変更して、ファイルポインタを変更する子プログラムに関連付けられる必要のないファイルバンドルを使用することが可能である。
本発明は、複数のアプリケーションプログラム（親及び子）に対して、同一のファイルバンドルオープンを有することを可能とし、各アプリケーションプログラムに対して別々のファイルポインタを保持することを可能とし、また、本発明によって、各アプリケーションプログラムは、データを、オープンファイルバンドル内のその出生フォーマットで記憶することができる。
図３は、ファイルバンドルＡＰＩとファイルシステムＡＰＴ間のインタフェースを示す図である。上述のように、ファイルシステム３０２は、記憶媒体３０１にアクセスするためのファンクションを与える。ある実施例において、ファイルバンドルＡＰＩによって提供されるファンクションは、ファイルシステムＡＰＩ３０２によって提供されるファンクションと並列に動作する。例えば、当業者に明かなように、一般のファイルシステムＡＰＩは以下のファンクションを含む。
【００１０】
ｆ生成                    ファイルの生成
ｆ生成ディレクトリ        ディレクトリの生成
ｆオープン                ファイルのオープン
ｆクローズ                ファイルのクローズ
ｆ読出                    ファイルからの読み出し
ｆ書込                    ファイルへの書込み
ｆシーク                  ロケーションポインタの位置付け
ファイルバンドルＡＰＩ３０３は、より好ましくは、以下のファンクションを有する。
ｆＦＢ生成                ファイルバンドルの生成
ｆＦＢオープン            ファイルバンドルのオープン
ｆＦＢＦ生成              ＦＢファイルの生成
ｆＦＢＦオープン          ファイルバンドルファイルのオープン
ｆＦＢＦ生成ディレクトリ  ＦＢディレクトリの生成
ｆＦＢＦクローズ          ＦＢファイルのクローズ
ｆＦＢＦ読出              ＦＢファイルからの読出し
ｆＦＢＦ書込              ＦＢファイルへの書込み
ｆＦＢＦシーク            ＦＢファイルポインタの位置付け
ワードプロセッシングプログラムが、本発明に従って、テキスト、グラフ、スプレッドシートデータを含んだ文書を生成する場合には、このワードプロセッシングプログラムは、データを記憶するためのファイルバンドルを生成する。ワードプロセッシングプログラムは、一般に、グラフ及びスプレッドシートデータをそれら固有のフォーマットで含むようなファイルシステムファイルの名前を受け取る。ワードプロセッシングプログラムは、グラフデータに対して１つのファイルバンドルを、スプレッドシートデータに対して１つのファイルバンドルを、生成する。ワードプロセッシングプログラムはその後、ファイルシステムファイルをオープンし、そのグラフ及びスプレッドファイルから対応するファイルバンドルファイルにデータを複写する。ワードプロセッシングプログラムが、グラフ若しくはスプレッドデータを表示若しくは印字した場合、それは、データを生成したグラフ若しくはスプレッドシートプログラムをインボウクする。アプリケーションプログラムをインボウクするとき、ワードプロセッシングプログラムは、ファイルバンドルの名前、ファイルバンドルファイルの名前、及び実行（例えば、データの表示）のためのファンクションに関連するパラメーターをそれに伝える。その後、アプリケーションプログラムは、ｆＦＢオープンファンクションを用いてファイルバンドルファイルをオープンし、ｆＦＢＦ読出ファンクションを用いてデータを読出し、それを表示する。本発明によって設けられ且つ以下に詳述されているこれらのファンクションは、ファイルバンドルオープンを有する各プログラムに対してファイルポインタを保持する。ワードプロセッシングプログラムはサーバであるアプリケーションプログラムのクライアントとなるものである。
【００１１】
図４は、本発明の一実施例におけるデータ記憶のためのサンプルデータ構造を示す図である。ファイルバンドル４１０は、ディレクトリ４１１、４１２、４１３、４１４を含む。ディレクトリ構造と各ファイルが論理的に接近したものとして示されている。論理的に接近したデータを非接近的に記憶するためのＭＳ−ＤＯＳのファイルアロケーションテーブル（ＦＡＴ）方法のようなファイルシステム技術が存在することは、当業者に明かであろう。より好ましい実施例では、ファイルバンドルＡＰＩは、ＦＡＴタイプの技術を実行して、データをファイルバンドル内に記憶する。ファイルバンドル４１０が（ｆＦＢオープンを用いて）オープンされたとき、ファイルシステムはデータ構造４２０を初期化して、ファイルの現在の状態を含める。データ構造４２０は、ファイルバンドル４１０に対するファイルポインタを含んでいるようなファイルポインタ４２１を含む。ファイルポインタ４２１は、ファイルシステムが保持する単一のファイルポインタである。ファイルバンドルが（ｆＦＢオープンファンクションを用いて）オープンされると、ファイルバンドルＡＰＩは、エントリをファイルバンドルテーブル（ＦＢテーブル）４３０に付加する。ＦＢテーブルは、各オープンファイルバンドルに対するエントリを含む。このエントリは、ファイルシステム付与型ハンドルであるオープンファイル（Ｆハンドル）に対するハンドルと、ファイルバンドルＡＰＩ発生型ハンドルであるファイルバンドル内のオープンファイルバンドルファイル（ＦＢＦハンドル）に対するハンドルを含む。例えば、エントリ４３１は、ファイルバンドル４１０に対応するハンドルと、オープンファイルハンドルファイルの各発生に対応するハンドルを含む。各エントリは、ファイルバンドルハンドル（ＦＢハンドル）によって識別される。ファイルバンドルＡＰＩは、アプリケーションが（ｆＦＢＦオープンを用いて）ファイルバンドルファイルをオープンする毎にファイルバンドルファイルデータ構造をアロケートする。データ構造４４０、４５０、４６０のようなファイルバンドルファイルデータ構造は、各々、ファイルバンドル内のファイルバンドルファイルのスタートに対するポインタと、ファイルバンドルファイルに対するファイルポインタと、ＦＢテーブル４３０内のファイルバンドルのハンドルを含む。より好ましい実施例において、ファイルバンドルＡＰＩは、ディレクトリを含んだ各ファイルバンドルファイルに対して、ファイルシステムファイルデータ構造と同様なデータ構造を保持する。
【００１２】
図５は、ファイルバンドルを生成するｆＦＢ生成ファンクションの全流れ図である。このファンクションから伝達され受け取られるパラメーターは、好ましくは、ファイルバンドルＡＰＩ３０が使用するような、ファイルシステムＡＰＩ３０２のｆ生成ファンクションのそれらに対応する。このファンクションは、ファイルシステムファイルデータ構造４２０を生成する生成されたファイルバンドルにハンドルを戻し、ハンドルをファイルバンドルに戻す。ステップ５０１で、このファンクションはｆ生成ファンクションをインボウクして、ファイルシステムファイルデータ構造４２０を生成するファイルバンドルを生成し、ハンドルをファイルハンドルに戻す。ステップ５０２で、ｆ生成ファンクションからエラーが戻された場合は、そのファンクションはエラーを伴って戻されるか、さもなければ、そのファンクションはステップ５０３に続く。ステップ５０３で、このファンクションはｆ書込ファンクションをインボウクしてファイルバンドルを初期化する。この初期化には一般的に、ディレクトリ階層とファイルアロケーションテーブルの初期化が含まれる。ステップ５０４で、このファンクションはＦＢテーブル４３０を生成されたファイルバンドルに関して初期化して、ＦＢテーブルエントリを指すＦＢハンドルを用いて戻る。
【００１３】
図６は、現存のファイルバンドルをオープンするｆＦＢオープンファンクションの全流れ図である。このファンクションから伝達され受け取られるパラメーターは、好ましくは、ｆオープンファンクションのそれらに対応する。このファンクションは、オープンされたファイルバンドルにハンドルを戻す。ステップ６０１で、ＦＢテーブルによって表示されているように、ファイルが既にオープンされている場合には、ファンクションはエラーを戻すか、さもなければファンクションはステップ６０２に続く。ステップ６０２で、このファンクションは、ｆオープンファンクションをインボウクして、ファイルバンドルをオープンする。ステップ６０３で、ｆオープンファンクションからエラーが戻された場合には、このファンクションは、エラーを戻すか、ステップ６０４に続く。ステップ６０４で、このファンクションはｆ読出ファンクションをインボウクして、ファイルバンドルから識別データを読み出す。ステップ６０５で、オープンされたファイルが有効なファイルバンドルであるならば、ファンクションはステップ６０６に続き、さもなければエラーを戻す。ステップ６０６で、このファンクションは、オープンされたファイルバンドルに対してＦＢテーブルエントリをアロケートし且つ初期化し、戻る。
【００１４】
図７は、ファイルバンドルファイルを生成するｆＦＢＦ生成ファンクションの全流れ図である。このファンクションから伝達され且つ受け取られたパラメーターは、好ましくは、ｆ生成ファンクションのそれらに対応する。このファンクションは、ファイルバンドルハンドル（ＦＢハンドル）を伝達されて、オープンファイルバンドルファイルにハンドル（ＦＢＦハンドル）を戻す。ステップ７０１で、このファンクションは、ｆ読出ファンクションをインボウクして、ファイルバンドルディレクトリを読出し、そのファイルバンドルが既に存在しているかどうか判断する。ステップ７０２で、ファイルバンドルファイルが既に存在していれば、このファンクションは、エラーを伴って戻り、さもなければステップ７０３で続行される。ステップ７０３で、このファンクションは、ｆ書込ファンクションをインボウクして、ファイルバンドルファイルを生成する。この生成には、ディレクトリエントリをファイルバンドルに付加することが含まれる。ステップ７０４で、このファンクションは、生成されたファイルバンドルファイルに対してファイルバンドルファイルデータ構造をアローケートし且つ初期化して、戻る。
【００１５】
ｆＦＢＦオープンファンクションは、ｆＦＢＦ生成ファンクションと同様である。主な相違は、オープンされるべきファイルバンドルが既に存在しなければならないことである。
図８は、データをファイルバンドルファイルに書き込むｆＦＢＦ書込ファンクションの全流れ図である。このファンクションに伝達され、受け取られるパラメーターは、ｆ書込ファンクションのそれらに対応する。このファンクションには、ファイルバンドルファイルのハンドル（ＦＢＦハンドル）が伝達される。ステップ８０１で、ファイルバンドルファイルがオープンされた場合には（このファンクションは、ハンドルが有効なＦＢファイルデータ構造を指し示すことを確実なものとする）、このファンクションは、ステップ８０２に続くか、さもなければエラーを戻す。ステップ８０２で、書込がファイルサイズの増大を要求した場合には、このファンクションは、ステップ８０３に続き、さもなければ、ステプ８０４に続く。ステップ８０３で、このファンクションは、ファイルバンドルファイルに対してファイルバンドル内のスペースをアロケートする。ステップ８０４で、このファンクションは、ｆシークファンクションをインボウクしてファイルポインタをファイルバンドルに対して位置付け、書込みを開始すべきファイルバンドルファイル内のロケーションに対応させる。ステップ８０５で、このファンクションは、ｆ書込ファンクションをインボウクしてデータをファイルに書き込む。ステップ８０６で、このファンクションは、ファイルバンドルファイルデータ構造のファイルバンドルファイルポインタを更新して、戻る。
【００１６】
ｆＦＢＦ読出ファンクションは、ｆＦＢＦ書込ファンクションと同様である。主な相違は、読出にはスペースがアロケートされないことである。ｆＦＢＦシークファンクションは、ｆシークファンクションと同じようなファンクションを実行する。このｆＦＢＦシークファンクションは、ファイルバンドルファイルハンドルを伝達されて、ファイルポインタをそのファイルバンドルファイルに対して再び位置決めする。本発明は、より好ましい実施例を記述したものであるが、これらの実施例によって本発明を限定する意図はない。本発明の範囲は、特許請求の範囲によって規定される。
【図面の簡単な説明】
【図１】本発明のファイルバンドルの一般的なレイアウトを示す図。
【図２】ファイルバンドルであるファイルバンドルファイルを含んだファイルバンドルを示す図。
【図３】ファイルバンドルＡＰＩとファイルシステムＡＰＩとの間のインタフェースを示す図。
【図４】本発明の一実施例におけるデータ記憶のためのサンプルデータを示す図。
【図５】ファイルバンドルを生成するためのｆＦＢ生成ファンクションの全流れ図。
【図６】現存のファイルバンドルをオープンするｆＦＢオープンファンクションの全流れ図。
【図７】ファイルバンドルファイルを生成するｆＦＢＦ生成ファンクションの全流れ図。
【図８】ファイルバンドルファイルにデータの書き込みを行うｆＦＢＦ書込ファンクションの全流れ図。
【図１】
0003902797.tif 000002
【図２】
0003902797.tif 000003
【図３】
0003902797.tif 000004
【図４】
0003902797.tif 000005
【図５】
0003902797.tif 000006
【図６】
0003902797.tif 000007
【図７】
0003902797.tif 000008
【図８】
0003902797.tif 000009