(57)【要約】マルチパートファイル（２０２）に変換を適用するシステムおよび方法を記載する。マルチパートファイル中のストリームにアクセスする要求が受け取られる。要求を受け取ると、そのストリームに関連付けられた変換のリストが識別される（２１０）。このリストもマルチパートファイル（２０２）中に含まれる。要求を完了する前に、変換リスト中で指定される変換がデータに行われる。要求が書き込みである場合、変換でデータを符号化する（４１４）。要求が読み取りである場合は、変換でデータを復号する（４３０）。変換リストは順序に影響される。変換リストは、ストリームと変換リストの名前とを関係付けるマップを含む第１のストリーム、ストリームについての各変換をリストする第２のストリーム、ならびに、変換に関連付けられた情報を識別する、リストされる各変換についての第３のストリームを有するデータ構造を含む。
2006526191.tif 000002
【特許請求の範囲】
【請求項１】
マルチパートファイル中のストリームにアクセスする要求を受け取るステップと、
前記ストリームに関連付けられた少なくとも１つの変換のリストを識別するステップであって、前記リストは前記マルチパートファイル中から識別されるステップと、
前記要求を完了する前に、前記変換リスト中で指定された変換をデータに行うステップと
を備えることを特徴とするコンピュータ実施方法。
【請求項２】
前記マルチパートファイルは、ＯＬＥの複合ファイルを含むことを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項３】
前記変換リストを識別するステップは、前記ストリームを求めてデータ空間マップを検索するステップを備え、前記データ空間マップは、前記ストリームと、データ空間に関連付けられたデータ空間名との関係付けを提供し、前記データ空間が前記リストを定義することを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項４】
前記少なくとも１つの変換のリストは、リストされる各変換のタイプおよび名前を含むことを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項５】
前記リストはさらに、前記リスト中で識別される変換の１つについての変換インスタンスデータを含み、前記変換インスタンスデータは、前記１つの変換によって変換されたデータを復号するための関連情報を指定することを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項６】
前記要求は、データチャンクの書き込み要求であり、前記少なくとも１つの変換が前記データチャンクに行われて、記憶媒体に書き込まれる符号化データを作成することを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項７】
前記データチャンクは、前記ストリームについて前記記憶媒体に以前に書き込まれた他のデータチャンクと隣接しないことを特徴とする請求項６に記載のコンピュータ実施方法。
【請求項８】
前記データチャンクは、前記ストリームについての他のデータチャンクを伴う固定サイズのチャンクであることを特徴とする請求項６に記載のコンピュータ実施方法。
【請求項９】
前記リストは、圧縮変換および暗号化変換を含むことを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項１０】
前記要求は、データチャンクの読み取り要求であり、前記少なくとも１つの変換は、前記ストリームから取り出された前記データチャンクに逆変換を行って復号後のデータを要求元に提供することを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項１１】
マルチパートファイルに変換を適用する機構を有するコンピュータシステムであって、
プロセッサと、
複数のコンピュータ実行可能命令のために割り振られたメモリであって、前記複数のコンピュータ実行可能命令は、前記プロセッサによる実行のために前記メモリにロードされるメモリと
を備え、前記コンピュータ実行可能命令は、
マルチパートファイル中のストリームにアクセスする要求を受け取るステップと、
前記ストリームに関連付けられた少なくとも１つの変換のリストを識別するステップであって、前記リストは前記マルチパートファイル中から識別されるステップと、
前記要求を完了する前に、前記変換リスト中で指定された変換をデータに行うステップと
を備える方法を行うことを特徴とするコンピュータシステム。
【請求項１２】
前記マルチパートファイルは、ＯＬＥの複合ファイルを含むことを特徴とする請求項１１に記載のコンピュータシステム。
【請求項１３】
前記変換リストを識別するステップは、前記ストリームを求めてデータ空間マップを検索するステップを備え、前記データ空間マップは、前記ストリームと、データ空間に関連付けられたデータ空間名との関係付けを提供し、前記データ空間が前記リストを定義することを特徴とする請求項１１に記載のコンピュータシステム。
【請求項１４】
前記少なくとも１つの変換のリストは、リストされる各変換のタイプおよび名前を含むことを特徴とする請求項１１に記載のコンピュータシステム。
【請求項１５】
前記リストはさらに、前記リスト中で識別される変換の１つについての変換インスタンスデータを含み、前記変換インスタンスデータは、前記１つの変換によって変換されたデータを復号するための関連情報を指定することを特徴とする請求項１１に記載のコンピュータシステム。
【請求項１６】
前記要求は、データチャンクの書き込み要求であり、前記少なくとも１つの変換が前記データチャンクに行われて、記憶媒体に書き込まれる符号化データを作成することを特徴とする請求項１１に記載のコンピュータシステム。
【請求項１７】
前記データチャンクは、前記ストリームについて前記記憶媒体に以前に書き込まれた他のデータチャンクと隣接しないことを特徴とする請求項１６に記載のコンピュータシステム。
【請求項１８】
前記データチャンクは、前記ストリームについての他のデータチャンクを伴う固定サイズのチャンクであることを特徴とする請求項１６に記載のコンピュータシステム。
【請求項１９】
前記リストは、圧縮変換および暗号化変換を含むことを特徴とする請求項１１に記載のコンピュータシステム。
【請求項２０】
前記要求は、データチャンクの読み取り要求であり、前記少なくとも１つの変換は、前記ストリームから取り出された前記データチャンクに逆変換を行って復号後のデータを要求元に提供することを特徴とする請求項１１に記載のコンピュータシステム。
【請求項２１】
データ構造が符号化されたコンピュータ可読媒体であって、
マルチパートファイル中のストリームを変換リストの名前と関係付けるマップを含む第１のストリームと、
前記ストリームについての各前記変換をリストする第２のストリームと、
前記変換に関連付けられた情報を識別する、各前記変換についての第３のストリームと
を備えることを特徴とするコンピュータ可読媒体。
【請求項２２】
前記データ構造は、前記マルチパートファイル中に含まれることを特徴とする請求項２１に記載のコンピュータ可読媒体。
【請求項２３】
前記変換リストの名前は、前記マルチパートファイル中の複数のストリームと関係付けることができることを特徴とする請求項２１に記載のコンピュータ可読媒体。
【請求項２４】
前記変換リストは順序に影響されることを特徴とする請求項２１に記載のコンピュータ可読媒体。
【請求項２５】
前記情報は、前記変換のクラス名とクラスタイプを識別することを特徴とする請求項２１に記載のコンピュータ可読媒体。
【請求項２６】
前記情報はさらに、前記変換に関連付けられたインスタンスデータを識別することを特徴とする請求項２５に記載のコンピュータ可読媒体。
【請求項２７】
前記変換は圧縮変換を含み、前記インスタンスデータは前記圧縮変換のウィンドウサイズを含むことを特徴とする請求項２６に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチパートファイルに変換を適用する機構に関する。
【背景技術】
【０００２】
本願は、米国籍および居住者であるマイクロソフト社により２００３年５月１７日に出願されたＰＣＴ出願として出願され、米国を除くすべての国を指定する。
【０００３】
今日のコンピュータシステムは、通例、大量のデータを数個のファイルに格納する。ファイルのフォーマットは、ワードプロセッサ、表計算などの各種アプリケーションと互換性のある数個の異なるフォーマットの１つである。別のユーザがファイル内のデータを閲覧または操作できるように、別のコンピュータにファイルを送信することが必要となることが頻繁にある。時に、ファイルが相当に大きい場合は、ファイルをもう一方のコンピュータに送信する前にファイルに変換（例えば圧縮）を行う。ファイルを圧縮することにより、もう一方のコンピュータにデータを送信するのに必要な帯域幅が少なくなる。他の状況では、別の変換（例えば暗号化）を行って、権限のないユーザによりデータが見られないようにすることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
こうした変換方法の一部は、固有の符号化方式を有し、別個のファイル（例えばディクショナリ）を使用してその固有の符号化方式についての情報を格納する。変換されたファイルにアクセスする際には、この別個のファイルを使用しなければならない。別個のファイルが破損、損失した場合、あるいはその他の理由で利用できなくなった場合は、変換されたファイルは使用法がなくなる。また、こうした変換方法の一部は、符号化データをインターリーブし、情報を処理するための独自の符号化方式を定義するので、一旦ファイルが変換されると、ファイルを共有する、あるいはファイルに共通の処理を行うことができなくなる。また、ファイルを変換する前に、現在の変換方法ではファイル中のデータを隣接したバイトに編成することが必要とされる。ファイルのバイトが隣接した状態を保つようにすることは、多量のオーバーヘッドを費やし、かなり頻繁に編集されるファイルには実行することができない。したがって、こうした変換は非常に有用であるが、それが実施される方式は、多面的に利用できる体験をユーザにもたらさない。
【課題を解決するための手段】
【０００５】
本発明は、ユーザにより高い柔軟性を提供する変換を実施するシステムおよび方法を対象とする。簡潔に述べると、本発明は、１つまたは複数の変換に関連付けられた変換情報をマルチパートファイル（ｍｕｌｔｉ−ｐａｒｔ  ｆｉｌｅ）に格納する機構を提供する。マルチパートファイルは、その１つまたは複数の変換が適用されるデータも含む。したがって、本発明は、マルチパートファイルのためのファイルフォーマットを提供し、データにアクセスするアプリケーションは、変換されたデータに容易にアクセスすることができる。本発明によれば、複数のデータ変換をともに連鎖化する（ｃｈａｉｎ）ことができる。それら連鎖化されたデータ変換を「データ空間」と称する。各データ空間は、ともに連鎖化された変換の一意の順序とタイプを有する。例えば、２つのデータ空間が同じ変換を指定することができるが、その変換を適用する異なる順序を指定することができる。変換情報は、データ空間についての情報を含む。
【０００６】
本発明の別の態様によれば、マルチパートファイルは、複数のストリームを含む。各ストリームは、データ空間の１つに関連付けることができる。したがって、本発明によれば、マルチパートファイル中の一部のストリームを変換し、一方、その他のストリームが各自のネイティブフォーマットを保つことができる。マルチパートファイル全体の変換を必要とせずに特定のストリームを変換するこの能力は、ユーザがマルチパートファイル中の機密性のある情報だけを暗号化する（ドキュメントの編集など）ことができるなど、高い柔軟性をユーザにもたらす。
【０００７】
したがって、本発明は、マルチパートファイルに変換を適用するシステムおよび方法を対象とする。マルチパートファイル中のストリームへのアクセスを求める要求が受け取られる。要求を受け取ると、そのストリームに関連付けられた変換のリストが識別される。このリストもマルチパートファイル中に含まれている。要求を完了する前に、変換リスト中で指定される変換がデータに行われる。要求が書き込みである場合は、変換でデータを符号化する。要求が読み取りである場合は、変換でデータを復号する。変換のリストは順序に影響される。変換リストは第１のストリームを有するデータ構造を含み、第１のストリームは、当該ストリームを変換リストの名前に関連付けるマップを含む。そのストリームの各変換をリストする第２のストリーム。その変換に関連付けられた情報を識別する、リストされた各変換についての第３のストリーム。
【発明を実施するための最良の形態】
【０００８】
本発明は、マルチパートファイルに変換を適用する機構を提供する。この機構は、変換情報を指定する構造を提供する。変換情報および変換されたデータは、同一のドキュメント中に共存する。本発明の機構は、１つのドキュメント中に複数タイプのストリームを可能にするマルチパートファイルフォーマットに好ましく基づく。発明者は、ＯＬＥ（Ｏｂｊｅｃｔ  Ｌｉｎｋｉｎｇ  ａｎｄ  Ｅｍｂｅｄｄｉｎｇ）の複合ファイルフォーマットが本発明の実施に特に適していると判断した。したがって、以下の説明では、複合ファイルフォーマットを使用して本発明を説明する。しかし、当業者は、以下の説明を注意深く読んだ後に、下記の機構に各種の変更を加えて他のマルチファイルフォーマットが本発明を実施することにより、そうした他のマルチファイルフォーマットに対応できることを認識されよう。したがって、本発明の実施形態は、ここに記載される実施形態に限定されないことが理解されよう。
【０００９】
本明細書では、まず本発明の実施形態を実施することが可能な例示的コンピューティング環境の一例を参照して本発明を説明する。次いで、本発明の特定の一実施の詳細な例を説明する。特定の実施形態の一定の詳細に関しては、代替の実施も含めることができる。
【００１０】
本発明の例示的コンピューティング環境
図１は、本発明の実施に使用することが可能なコンピューティングデバイスを示す機能ブロック図である。図１は、本発明の例示的実施で使用することができる例示的コンピューティングデバイスを示す。図１を参照すると、非常に基本的な構成で、コンピューティングデバイス１００は、通例、少なくとも１つの処理装置１０２とシステムメモリ１０４を含む。コンピューティングデバイス１００の正確な構成とタイプに応じて、システムメモリ１０４は、揮発性（ＲＡＭなど）、不揮発性（ＲＯＭ、フラッシュメモリなど）、またはこの２種の何らかの組み合わせとすることができる。システムメモリ１０４は通例、オペレーティングシステム１０５、１つまたは複数のプログラムモジュール１０６を含み、プログラムデータ１０７を含むことができる。プログラムモジュール１０６の例には、ブラウザアプリケーション、金融管理アプリケーション、ワードプロセッサなどがある。この基本的構成を図１では点線１０８内の構成要素で表す。
【００１１】
コンピューティングデバイス１００は、これに追加的な機能を有することができる。例えば、コンピューティングデバイス１００は、例えば磁気ディスク、光ディスク、またはテープなどの追加的なデータ記憶装置（取り外し可能および／または取り外し不能）も含むことができる。そのような追加的ストレージを図１では取り外し可能ストレージ１０９と取り外し不能ストレージ１１０で表す。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を記憶する任意の方式または技術として実施された揮発性および不揮発性、取り外し可能および取り外し不能の媒体が含まれる。システムメモリ１０４、取り外し可能ストレージ１０９、および取り外し不能ストレージ１１０はすべてコンピュータ記憶媒体の例である。コンピュータ記憶媒体には、これらに限定しないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、その他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、その他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、その他の磁気記憶装置、または所望の情報の記憶に使用することができ、コンピューティングデバイス１００によるアクセスが可能な任意の他の媒体が含まれる。そのようなコンピュータ記憶媒体をいずれもコンピューティングデバイス１００の一部とすることができる。コンピューティングデバイス１００は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置などの入力装置１１２も有することができる。ディスプレイ、スピーカ、プリンタなどの出力装置１１４も含めることができる。これらの装置は当技術分野でよく知られており、ここで詳細に説明する必要はない。
【００１２】
コンピューティングデバイス１００は、コンピューティングデバイス１００がネットワークを介してなど他のコンピューティングデバイス１１８と通信することを可能にする通信接続１１６も含むことができる。通信接続１１６は、通信媒体の一例である。通信媒体は通例、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータによって、搬送波や他のトランスポート機構などの変調データ信号として実施されることができ、任意の情報伝達媒体を含む。用語「変調データ信号」とは、信号中に情報を符号化するような形でその特性の１つまたは複数を設定または変化させた信号を意味する。例として、これに限定しないが、通信媒体には、有線ネットワークや直接配線接続などの有線媒体と、音響、ＲＦ、赤外線、およびその他の無線媒体などの無線媒体が含まれる。本明細書で使用する用語「コンピュータ可読媒体」には、記憶媒体と通信媒体の両方が含まれる。
【００１３】
構成要素の概説
図２は、本発明を実施する環境の構成要素の概要を示す機能流れ図である。図には、好ましくはＯＬＥ複合ファイルであるマルチパートファイル２０２を示す。ＯＬＥドキュメントモデルは当技術分野で知られており、多数の異種タイプのデータを単一ドキュメントに含めるための機構として広く認識されている。従来、ＯＬＥ複合ファイルは、数個の埋め込みファイルまたは他の支援内容を単一のドキュメントに関連付けることと併せて使用される。複合ファイル中の各要素は、その要素を作成したアプリケーションによる操作を可能とする方式で格納される。各要素は、図２に示すストリーム２０４、２０６、および２０８などのストリームとして格納される。上記のように、各ストリームは、数個のタイプの１つである。例えば、ストリーム１  ２０４はワードプロセッシングドキュメントであり、ストリーム２  ２０６は表計算であり、ストリームＺ  ２０８はグラフィックファイルとすることができる。
【００１４】
従来は、マルチパートファイル２０２に対する変換を要求する際には、マルチパートファイル２０２の内容全体（すなわちストリーム２０４〜２０８）が隣接していることが必要とされ、ともに変換されていた。しかし、本発明によれば、ストリーム２０４〜２０８は隣接している必要はない。ストリーム２０４〜２０８は、セクタ単位（ｓｅｃｔｏｒ−ｂａｓｅｄ）とすることができる。以下の説明では、セクタ単位のファイルとは、格納され、ストリーム全体に相当する複数のデータのチャンク（固まり）を有するファイルを指す。複数のチャンクは隣接して格納することができるが、通例は隣接せずに格納される。一実施形態では、このチャンクは、５１２バイトに固定するなど固定サイズとすることができる。あるいは、本発明の範囲から逸脱せずに、チャンクは様々に異なるサイズにしてもよい。ストリームが編集される際は、新しいデータのチャンクを作成し、そのストリームの他のデータのチャンクとの関係で隣接しないバイトに格納することができる。したがって、セクタ単位のファイルにより、ストリームが隣接した状態を保つようにするオーバーヘッドを無しにストリームを容易に編集することが可能になる。
【００１５】
下記で詳細に説明するように、本発明は、マルチパートファイル２０２中のストリーム（例えばストリーム２０６）に関連付けられた、指定されたデータのチャンク２４０を他のストリームを変換せずに変換できるようにする。本発明は、指定されたストリームを他のストリームから独立して変換することを可能にするので、本発明は、データを保護し、制御する多大な柔軟性を提供する。例えば、図２に、変換プロセスを受けるストリーム２  ２０６を示す。ストリーム２  ２０６は、特定品目に関連付けられた費用を含む表計算を表すものとする。したがって、権限のないユーザが費用を見ることができないように、この費用情報を保護することが望ましい場合がある。したがって、ストリーム２  ２０６を行き先とするデータ２４０は、一連の変換（すなわち変換２２０〜２２４）を受ける。当業者には理解されるように、任意数の変換を連鎖化することができ、またどのような順序で連鎖化してもよい。連鎖化される特定の変換とそれら変換を連鎖化する順序がデータ空間２３０を表す。一般に、データ空間は、１つの変換を指定しても、複数の変換を指定してもよい。上記の例では、最後の変換（例えば変換２２４）が、変換後のデータを、例えばディスク（図示せず）に存在するストリーム２  ２０６に書き込む。マルチパートファイルに変換を適用する機構を使用する一実施形態については、下記で図４と併せて詳細に説明する。
【００１６】
本発明の特定の実施形態の説明
図３は、図２に示す変換メタデータ２１０を表すツリー階層の一実施形態の図式表現である。一般に、ツリー階層は、マルチパートファイルと互換性のある任意の方式でマルチパートファイル中に含めることができる。以下の説明では、複合ファイルを参照してこのツリー階層を説明する。一般に、複合ファイルは、通例「ファイル中のファイルシステム」と考えられる。複合ファイル中には、ファイルシステム中のディレクトリに類似する「ストレージ」の階層と、ファイルシステム中のファイルに類似する「ストリーム」がある。図３では、長方形の枠がストリームを表し、長円形の枠がストレージを表す。本発明の変換メタデータ２１０を説明する前に、この例示的階層ではストリーム２０４〜２０８（図２に示す）がルート３０２の下に描かれていることに気づかれよう。ルートの下にストリームを定義することは、複合ファイルフォーマットに一般的な手法である。
【００１７】
本発明によって提供される変換メタデータ２１０についてさらに詳細に説明する。ルート３０２から分岐した「＼００６ＤａｔａＳｐａｃｅ」３１０と名づける特別なストレージが変換メタデータ２１０を格納する。＼００６ＤａｔａＳｐａｃｅストレージ３１０は、ＤａｔａＳｐａｃｅＭａｐストリーム３２０、ＤａｔａＳｐａｃｅｌｎｆｏストレージ３３０、およびＴｒａｎｓｆｏｒｍＩｎｆｏストレージ３４０を含んでいる。この実施形態では、特別なストレージに選択した名前「＼００６ＤａｔａＳｐａｃｅｓ」は、Ｃプログラミング言語に即して書かれている。したがって、この実施形態では、この名前は、単一の非英数文字のトークンと、トークン値６で始まる。一般に、この特別なストレージに割り当てられる名前は、任意であり、ユーザの実装に依存する。
【００１８】
ＤａｔａＳｐａｃｅＭａｐストリーム３２０は、ストリーム（例えばストリーム２０４〜２０８）を各自に割り当てられたデータ空間にマッピングする。一実施形態では、ＤａｔａＳｐａｃｅＭａｐストリーム３２０は、ストリーム参照の列３２２とＤａｔａＳｐａｃｅＮａｍｅの列３２４の２つの列を有する表である。ストリーム参照列３２２の内容は、複合ドキュメントに格納されたストリーム（例えばストリーム２０４〜２０８）の１つを参照する。ＤａｔａＳｐａｃｅＮａｍｅの内容は、ストリーム参照列３２２内で識別される、関連付けられたストリームに定義された固有のデータ空間を参照する。１つのデータ空間を任意数のストリームに関連付けることができる。例えば、図３に示すように、「ＤａｔａＳｐａｃｅＮａｍｅ１」と識別されるデータ空間は、ストリーム１  ２０４とストリーム２  ２０６に関連付けられている。上記のＤａｔａＳｐａｃｅＭａｐストリーム３２０の説明ではＤａｔａＳｐａｃｅＭａｐストリーム３２０を表としたが、当業者は、他のデータフォーマットを使用してストリームを識別し、データ空間に関係付けることが可能であることを認識されよう。
【００１９】
ＤａｔａＳｐａｃｅｌｎｆｏストレージ３３０は、１つまたは複数のＤａｔａＳｐａｃｅＮａｍｅストリーム（例えばＤａｔａＳｐａｃｅＮａｍｅストリーム３３２および３３４）を含む。ここに記載する実施形態では、ＤａｔａＳｐａｃｅＮａｍｅストリームは、標準的な複合ファイルのショートネームの慣習に従って名前をつけている。各ＤａｔａＳｐａｃｅＮａｍｅストリーム３３２および３３４は、個々のＤａｔａＳｐａｃｅＮａｍｅストリーム３３２および３３４に関連付けられた変換のリスト３３６を識別する。一実施形態では、ＤａｔａＳｐａｃｅＮａｍｅストリーム３３２および３３４はそれぞれ、データ空間を構成する順序付けられた変換リストとすることができる。変換はスタック状になるので、リスト３３６内の順序は重要である。一実施形態では、リスト３３６内の第１の変換３３７を「最下位」の変換と称し、これは、変換３３７が、基礎となるデータストリーム（例えばストリーム２０４）中のビットに最も近いことを意味する。リスト３３６内の最後の変換３３９を「最上位」変換と称し、これは、変換３３９が、データの消費側／作成側（例えばアプリケーション）に最も近いことを意味する。下記で図４との関連でより詳細に説明するように、リスト３３６内で指定される順序が、変換を通じたデータの流れを決定する。
【００２０】
ＴｒａｎｓｆｏｒｍＩｎｆｏストレージ３４０は、１つまたは複数のＴｒａｎｓｆｏｒｍＩｎｓｔａｎｃｅストレージ（例えばＴｒａｎｓｆｏｒｍＩｎｓｔａｎｃｅストレージ３４２、３４４、および３４６）を含む。一実施形態では、これらの下位ストレージの名前は、変換の名前である。各ＴｒａｎｓｆｏｒｍＩｎｓｔａｎｃｅストレージ３４２、３４４、および３４６内には、少なくとも１つの「＼００６Ｐｒｉｍａｒｙ」と称するストリーム３５０がある。＼００６Ｐｒｉｍａｒｙストリーム３５０は、ＴｒａｎｓｆｏｒｍＣｌａｓｓ  Ｔｙｐｅ３５４およびＴｒａｎｓｆｏｒｍＣｌａｓｓ  Ｎａｍｅ３５６など、特定の変換についての関連情報を含んでいる。ＴｒａｎｓｆｏｒｍＣｌａｓｓ  Ｔｙｐｅ３５４は、特定の変換（例えばＬＺ圧縮、デジタル著作権管理（ＤＲＭ）保護など）を実装する特定の変換クラスを表す。一実施形態では、ＴｒａｎｓｆｏｒｍＣｌａｓｓ  Ｎａｍｅ３５６が、変換のクラス（すなわちタイプ）を一意に識別するストリングに指定される。クラスを識別するストリングは、その変換を実装するクラスのクラス名とすることができる。ＴｒａｎｓｆｏｒｍＣｌａｓｓ  Ｔｙｐｅ３５４は、ＴｒａｎｓｆｏｒｍＣｌａｓｓ  Ｎａｍｅ３５６に指定されるストリングをどのように解釈するかを示すタイプインディケータを指定する。＼００６Ｐｒｉｍａｒｙストリーム３５０は、ＴｒａｎｓｆｏｒｍＩｎｓｔａｎｃｅ  Ｄａｔａ３５８の空間も含むことができる。ＴｒａｎｓｆｏｒｍＩｎｓｔａｎｃｅＤａｔａ３５８は、ＴｒａｎｓｆｏｒｍＣｌａｓｓ  Ｎａｍｅ３５６およびＴｒａｎｓｆｏｒｍＣｌａｓｓ  Ｔｙｐｅ３５４によって指定された変換に対して指定された情報を格納する。例えば、変換が圧縮変換である場合、ＴｒａｎｓｆｏｒｍＩｎｓｔａｎｃｅＤａｔａ３５８は、ウィンドウサイズなどを含むことができる。
【００２１】
ある変換については、ＴｒａｎｓｆｏｒｍＩｎｓｔａｎｃｅＤａｔａ３５８は、必要な情報を格納するのに十分な空間を提供しない場合がある。したがって、さらなる改良として、本発明は、変換が、ＴｒａｎｓｆｏｒｍＩｎｓｔａｎｃｅＤａｔａストリーム（例えばＴｒａｎｓｆｏｒｍＩｎｓｔａｎｃｅＤａｔａストリーム３７０）に追加的な情報を格納することを可能にする。これは、＼００６Ｐｒｉｍａｒｙストリーム３５０と名前の衝突がない限り許可される。ＴｒａｎｓｆｏｒｍｌｎｓｔａｎｃｅＤａｔａの性質は、変換のタイプに応じて異なる。
【００２２】
上記のツリー階層では、変換後のデータをその変換情報とともに格納するドキュメントフォーマットの一実施形態を説明したが、当業者は、この階層は、本発明の動作に影響を与えずに変えることが可能であることを認識されよう。したがって、変換情報が変換後のデータとともに格納されるツリー階層はいずれも本発明から逸脱しない。図４は、本発明による変換後のデータを有するドキュメントをフォーマットする機構が使用される変換プロセスの図である。この例示的変換プロセスでは、アプリケーション４００が、図２に示したマルチパートファイル２０２の読み取りおよび書き込みを試みる。一般に、変換クラスの各インスタンスは、ＩＳｔｒｅａｍインタフェースを入力として受け取り、符号化された（変換後の）データを別のＩＳｔｒｅａｍインタフェースに出力する。変換（例えば変換４２０および４２２）は登録されており、ストリーム２０６に関連付けられたデータ空間は、ＯＬＥ複合ドキュメントによって提供されるアプリケーションプログラミングインタフェースを介するなどしてすでに指定されている。例えば、ストリーム２０６が最初に作成された時に、ストリーム２０６をマルチパートドキュメント２０２中に作成したアプリケーションは、データに適用すべき変換を指定する責任があった。これは、各引数が変換を参照する引数リストを介して行うことができる。
【００２３】
読み取りと書き込みのアクセスは、ＯＳ層を介して行われる。従来は、書き込みの動作は、ＩＳｔｒｅａｍインタフェース４１４を介してストリーム２  ２０６にアクセスしていた。しかし、本発明では、ＩＳｔｒｅａｍインタフェース４１４の前に１つまたは複数の変換を挿入することができる。各変換（例えば変換４２０および４２２）は、ＩＳｔｒｅａｍインタフェース（それぞれＩＳｔｒｅａｍインタフェース４１０と４１２）を入力として受け取り、各自の符号化した（変換後の）データを別のＩＳｔｒｅａｍインタフェース（それぞれＩＳｔｒｅａｍインタフェース４１２と４１４）に出力する。
【００２４】
同様に、アプリケーション４００がマルチパートファイル２０２中のストリーム２  ２０６の読み取りを試みる際には、１つまたは複数の逆変換（例えば逆変換４５０および４５２）を挿入することができる。逆変換の個数は、データを正しく復号してアプリケーションがデータを理解できるように、変換の数と同じにする。アプリケーション４００とストリーム２０６の間に変換が挿入される方式について、次いで図５との関連で説明する。
【００２５】
図５は、本発明による複合ファイル内の変換後のデータにアクセスするプロセスを概説する論理流れ図である。プロセス５００は開始ブロック５０１で開始し、この時点でアプリケーションがマルチパートファイルのストリーム中のデータへのアクセスを要求している。そのストリームには、変換情報２１０がすでに指定されている。
【００２６】
判定ブロックで、ストリームがデータ空間のメンバであるかどうかの判定を行う。図３を参照すると、一実施形態では、この判定は、要求されるストリームを識別するストリーム参照３２２を求めてＤａｔａＳｐａｃｅＭａｐ内を検索することによって行われる。ストリームに関連付けられたストリーム参照３２２が見つからない場合はそのストリームには定義された変換がないことになり、処理は終了に進む。その状況では、アプリケーションは、本発明以前に行われていた方式でデータにアクセスする。しかし、ストリーム参照３２２がＤａｔａＳｐａｃｅＭａｐ内に含まれている場合は、処理はブロック５０４に進む。
【００２７】
ブロック５０４で、ストリーム参照３２２に関連付けられたＤａｔａＳｐａｃｅＮａｍｅを取得する。ＤａｔａＳｐａｃｅＮａｍｅは、ストリングまたは他のフォーマットである。
【００２８】
ブロック５０６で、ブロック５０４で得たＤａｔａＳｐａｃｅＮａｍｅを使用して、ＤａｔａＳｐａｃｅＩｎｆｏストレージを検索して、ＤａｔａＳｐａｃｅＭａｐ内で識別されたＤａｔａＳｐａｃｅＮａｍｅに関連付けられたＤａｔａＳｐａｃｅＮａｍｅストリームを識別する。ＤａｔａＳｐａｃｅＮａｍｅストリームは、このデータ空間名に関連付けられた変換のリストを含んでいる。
【００２９】
ブロック５０８で、リスト中から変換が識別される。アクセスが書き込みであるか読み取りであるかに応じて、この変換でそれぞれデータを符号化するか、またはデータを復号することができる。ＤａｔａＳｐａｃｅＮａｍｅストリームは、各変換を特定の順序でリストする。アクセスが書き込みである場合、この順序は、最上位から最下位の順序になる。アクセスが読み取りである場合、この順序は最下位から最上位の順序になる。
【００３０】
ブロック５１０で、識別された変換が適用される。変換を適用する際、変換のインスタンスデータを使用してデータを正しく変換する。アクセスが書き込みである場合は、変換（符号化）が適用される。アクセスが読み取りである場合は、逆変換（復号）が適用される。
【００３１】
判定ブロック５１２で、データ空間が連鎖化された変換をさらに含むかどうかの判定を行う。これは、リスト３３６がさらに多くの変換インスタンスを参照するかどうかを調べることによって判定することができる。データ空間中の最後の変換が適用されている場合は、最後の変換がデータを出力し、プロセスが完了する。しかし、さらに別の変換がリストされている場合は、処理はブロック５０８にループバックし、最後の変換が適用されるまで上記の要領で進行する。
【００３２】
また、当業者は、プロセス３００によって提供される機能は各種方式で実装できることを理解されよう。例えば、ストリーム名から変換リストに直接マッピングを行うことができる（データ空間の使用を省く）。したがって、本発明は、ストリームをその変換情報にマッピングするための上記およびその他の実施形態を含む。プロセス５００は、そのような実施形態の１つを例示する。
【００３３】
上記の詳述、例、およびデータは、本発明の構成の作成と使用についての完全な説明を提供する。本発明の精神および範囲から逸脱せずに本発明の多数の実施形態を作成することができるので、本発明は、添付の特許請求の範囲に存在する。
【図面の簡単な説明】
【００３４】
【図１】本発明の実施に使用することが可能なコンピューティングデバイスを示す機能ブロック図である。
【図２】本発明による変換プロセスの概要を概説する機能流れ図である。
【図３】図２に示す変換メタデータを表す例示的ツリー階層の図式表現図である。
【図４】変換プロセスの図である。
【図５】本発明の一実施形態による、マルチパートファイル中の変換後データにアクセスするプロセスを概説する論理流れ図である。
【図１】
2006526191.tif 000003
【図２】
2006526191.tif 000004
【図３】
2006526191.tif 000005
【図４】
2006526191.tif 000006
【図５】
2006526191.tif 000007
【国際調査報告】
2006526191.tif 000008
2006526191.tif 000009