(57)【要約】【課題】  実行時バインディング／動的パス名解決の方法および装置を提供すること。【解決手段】  実行時バインディング／動的パス名解決は、ユーザモードまたはカーネルモードで動作する変数識別子、カーネルモードで動作するパス名エンジンおよびデータ構造によって実施され得る。変数識別子はパス名中の変数を識別する。パス名エンジンは、オブジェクトファイルへのパスが確定されるように変数を文字列に変換することによって変数を評価する。パス名エンジンは、変数をデータ構造に記憶された対応する値にマップすることによって変数の可能な文字列値の範囲を決定する。使用可能な値がデータ構造での記憶のために選択された値だけであるから、各変数は明確な値の範囲を有する。値を確定する機構は拡張可能であり、いつでも変数／値対をデータ構造中に実装することができる。【選択図】  図３
2005050347.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実行可能コンポーネントを有するコンピュータ可読媒体であって、
変数／値マッピングを含むデータ構造と、
パス名中の変数を識別し、前記識別された変数に関連する値を前記データ構造から取り出し、前記変数が前記データ構造からの前記値で置き換えられるように前記パス名を変更するように構成されたパス名リゾルバと
を含むことを特徴とするコンピュータ可読媒体。
【請求項２】
前記パス名リゾルバが、前記パス名中の前記変数を識別するように構成された変数識別子を含むことを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項３】
前記パス名リゾルバが、
前記データ構造中の前記変数をサーチするステップと、
前記対応する値にアクセスするステップと、
パスがオブジェクトの場所を識別するように前記パス名中の前記変数の代わりに前記値を挿入するステップと
を実施することによって前記変数を識別するように構成されたパス名エンジンを含むことを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項４】
前記データ構造がオペレーティングシステムのカーネルモードに実装されることを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項５】
変数／値対がユーザによって前記データ構造に定義されることを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項６】
変数／値対が、前記コンピュータ可読媒体が動作する状況によって前記データ構造に定義されることを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項７】
コンピュータ実行可能命令を有するコンピュータ可読媒体であって、
変数を含むパス名を受け取ること、
前記変数をデータ構造中の対応する値にマップすることによって前記パス名を解決すること、
前記解決されたパス名によって指し示されるオブジェクトにハンドルを返すこと、および
前記データ構造に変数／値対を付加することによって前記データ構造を拡張すること
を含むことを特徴とするコンピュータ可読媒体。
【請求項８】
前記パス名中の前記変数を識別することをさらに含むことを特徴とする請求項７に記載のコンピュータ可読媒体。
【請求項９】
オペレーティングシステムのカーネルに実装されたデータ構造中の前記変数をサーチすることをさらに含むことを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１０】
前記パス名中の変数の代わりに前記変数に対応する値を挿入することをさらに含むことを特徴とする請求項９に記載のコンピュータ可読媒体。
【請求項１１】
拡張可能なデータ構造を用いて符号化されたコンピュータ可読媒体であって、
パス名中に含まれる変数の識別を含む第１のフィールドと、
値を含む前記パス名がオブジェクトを指し示すように動作する前記変数の値を含む第２のフィールドと
を含むことを特徴とするコンピュータ可読媒体。
【請求項１２】
前記データ構造がオペレーティングシステムのカーネルに記憶されることを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１３】
前記データ構造が変数／値対を付加することによって拡張可能であることを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１４】
コンピュータで実施される方法であって、
オブジェクトへのアクセスを要求するコンポーネントによって提供されたパス名中の変数を識別するステップと、
前記変数をデータ構造中の対応する値にマップするステップと、
解決されたパス名が前記オブジェクトを指し示すパスを作成するように、前記パス名中の変数を前記対応する値で置き換えることによって前記パス名を変更するステップと、
前記要求元コンポーネントに前記変更されたパス名を返すステップと
を含むことを特徴とする方法。
【請求項１５】
変数を含むパス名を受け取るステップをさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
オペレーティングシステムのカーネルに実装された前記データ構造中の変数をサーチするステップをさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１７】
請求項１４に記載の方法を実施するコンピュータ実行可能命令を含むことを特徴とするコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算処理システムに関し、より詳細には、計算処理システム上に記憶されたリソースの場所を識別するパス名に関する。
【背景技術】
【０００２】
コンピュータオペレーティングシステムでは、パス名は、ファイルまたはディレクトリの場所を識別する一続きの英数字である。最も単純な形式のパス名がファイル自体の名前である。オペレーティングシステムは、パス名がファイル名で指定されると、現在の作業ディレクトリ中のファイルを探す。そのファイルが異なるディレクトリにある場合には、オペレーティングシステムがそのファイルを探し出せるようにパスが指定される。パス名をオペレーティングシステム言語に変換するプロセスはパス名解決（ｐａｔｈｎａｍｅ  ｒｅｓｏｌｕｔｉｏｎ）と呼ばれる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
既存のシステムの１つの問題は、パス名が本質的に静的なことである。現在のところ、カスタマイズ可能な、またはパスのユーザの状況で評価されるパス名コンポーネントのための機構はない。パス名が作成されると、どのユーザがログオンするか、どのマシン上でそのパス名解決が行われるかなどに関わりなく、その同じパス名が同じデータに解決されることになる。この限界が、かねてより、コンピュータシステムのユーザおよび設計者を悩ませている。
【０００４】
動的パス名解決の機構は、現在に至るまで、当業者によって成し遂げられていない。
【課題を解決するための手段】
【０００５】
本発明の一態様によれば、コンピュータ実行可能コンポーネントを有するコンピュータ可読媒体は、変数／値マッピングおよびパス名リゾルバを含む。このパス名リゾルバは、パス名中の変数を識別し、データ構造から識別された変数に関連する値を取り出し、その変数がそのデータ構造からの値で置き換えられるようにパス名を変更するように構成される。
【０００６】
本発明の別の態様によれば、コンピュータ可読媒体はコンピュータ実行可能命令を有する。このコンピュータ実行可能命令は、変数を含むパス名を受け取ること、その変数をデータ構造中の対応する値にマップすることによってパス名を解決すること、解決されたパス名によって指し示されたオブジェクトにハンドルを返すこと、およびデータ構造に変数／値対を付加することによってデータ構造を拡張することを含む。
【０００７】
本発明の別の態様によれば、コンピュータ可読媒体は、拡張可能なデータ構造を用いて符号化される。この拡張可能なデータ構造は、第１のフィールドおよび第２のフィールドを含む。第１のフィールドはパス名に含まれる変数の識別を含む。第２のフィールドはその変数の値を含む。パス名はオブジェクトを指し示すように動作する値を含む。
【０００８】
本発明の別の態様によれば、コンピュータで実施される方法は、オブジェクトへのアクセスを要求するコンポーネントによって提供されるパス名中の変数を識別するステップ、その変数をデータ構造中の対応する値にマップするステップ、解決されたパス名がそのオブジェクトを指し示すパスを作成するようにパス名中の変数を対応する値で置き換えることによってパス名を変更するステップ、および要求元コンポーネントに変更されたパス名を返すステップを含む。
【発明を実施するための最良の形態】
【０００９】
手短に言うと、本発明は、実行時バインディング／動的パス名解決の方法およびシステムに関する。このパス名解決は、変数識別子、パス名エンジン、およびデータ構造によって実施され得る。パス名によるオブジェクトへのアクセス要求時に、変数識別子はパス名中の変数を識別する。パス名エンジンは、変数／値マッピングを持つデータ構造を参照することによってその変数を評価する。データ構造は、現ユーザの状況で記憶することができる。パス名エンジンは、パス名中の変数をデータ構造からのそれに対応する値で置き換えることによってパス名を変更し、変更されたパス名を返す。
【００１０】
以下では、まず、本発明の実施形態を実装することのできる例示的計算処理環境の一例を参照して本発明を説明する。次に、本発明の具体的な一実装形態の詳細例を説明する。また、この具体的実装形態の若干の詳細に関連する代替実装形態も含まれ得る。本発明の実施形態は本明細書で説明するものに限らないことが理解されるであろう。
【００１１】
例示的動作環境
図１を参照すると、本発明を実装するためのシステムの一例は、計算処理装置１００などの計算処理装置を含む。ごく基本的な構成では、計算処理装置１００は、通常、少なくとも１つの処理装置１０２およびシステムメモリ１０４を含む。計算処理装置の正確な構成および種類に応じて、システムメモリ１０４は、揮発性（ＲＡＭなど）とすることも、不揮発性（ＲＯＭ、フラッシュメモリなど）とすることも、それら２つの何らかの組み合わせとすることもできる。システムメモリ１０４は、通常、オペレーティングシステム１０５、１つまたは複数のプログラムモジュール１０６を含み、プログラムデータ１０７も含み得る。オペレーティングシステム１０５は、本発明によるパス名リゾルバ１２０をさらに含む。この基本的構成を、図１の破線１０８内のコンポーネントによって示す。
【００１２】
計算処理装置１００は、その他の機構または機能も持ち得る。例えば、計算処理装置１００は、磁気ディスク、光ディスク、またはテープなどの付加的（取り外し可能および／または取り外し不能）データ記憶装置を含むこともできる。そうした付加的記憶機構を図１に取り外し可能記憶装置１０９および取り外し不能記憶装置１１０で示す。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を記憶するための任意の方法または技術で実装された、揮発性および不揮発性、取り外し可能および取り外し不能の媒体が含まれ得る。システムメモリ１０４、取り外し可能記憶装置１０９および取り外し不能記憶装置１１０は、すべて、コンピュータ記憶媒体の例である。コンピュータ記憶媒体には、それだけに限らないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたはその他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（ＤＶＤ）またはその他の光記憶機構、磁気カセット、磁気テープ、磁気ディスク記憶装置またはその他の磁気記憶装置、あるいは所望の情報を記憶するのに使用することができ、計算処理装置１００からアクセス可能な他の任意の媒体が含まれる。そうしたどんなコンピュータ記憶媒体も計算処理装置１００の一部とすることができる。また、計算処理装置１００は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置などの入力装置１１２も備えることができる。ディスプレイ、スピーカ、印刷装置などの出力装置１１４も含まれ得る。これらの装置は当分野で公知であり、ここで詳細に論じる必要はない。
【００１３】
計算処理装置１００は、この装置がネットワークなどを介して他の計算処理装置１１８とやりとりすることを可能にする通信接続１１６も含み得る。通信接続１１６は、通信媒体の一例である。通信媒体は、通常、搬送波やその他の搬送機構などの変調されたデータ信号に、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータによって実施することができ、任意の情報送達媒体を含む。「変調されたデータ信号」という用語は、その特性セットのうちの１つまたは複数を持つ信号、あるいは信号中に情報を符号化するような方式で変更された信号を意味する。例をあげると、それだけに限らないが、通信媒体には、有線ネットワークや直接配線接続などの有線媒体、および音響、無線周波数、赤外線、その他の無線媒体などの無線媒体が含まれる。本明細書で使用するコンピュータ可読媒体という用語は、記憶媒体と通信媒体の両方を含むものである。
【００１４】
パス名リゾルバの構造
図２を参照すると、本発明を実施するための環境の一例を示す構成図が示されている。図２に示す例示的環境は、本発明によるパス名リゾルバ１２０を含むファイルシステムのためのパス／リンクサブシステム環境２００である。この環境は、要求元コンポーネント２０５を含み、これは、パス名２０６によってオブジェクト（オブジェクト２１２など）へのアクセスを要求する任意のコンポーネントとすることができる。要求元コンポーネント２０５は、例えば、電子メールメッセージ中の埋め込みパスまたはユニフォームリソースロケータ（ＵＲＬ）、スクリプト中に含まれる変数を持つパスのうちの任意の１つまたは複数とすることができる。
【００１５】
この実施形態では、オブジェクト２１２を参照するのに使用されるパス名２０６は変数を含む。例えば、そうしたパス名の一例として「＼＼ｓｅｒｖｅｒ＼ｓｈａｒｅ＼＠ｕｓｅｒ＼ｐｈｏｎｅｌｉｓｔ．ｄｏｃ」が考えられる。この例では、「ｕｓｅｒ」という用語が、「＠」文字の使用によって変数であると識別される。他の文字を使用することもできる。
【００１６】
パス名リゾルバ１２０は、変数識別子２１０、パス名エンジン２２０、およびデータ構造２２２を含む。この具体的実装形態では、変数識別子２１０はユーザモードで動作し、パス名エンジン２２０およびデータ構造はカーネルモードにある。パス名エンジン２２０は、要求元コンポーネント２０５に応答し、変数識別子２１０に変数評価を要求する。あるいは、要求元コンポーネント２０５は、変数評価を要求するために変数識別子２１０と直接やりとりする。
【００１７】
変数識別子２１０はパス名２０６中の変数を識別する。この具体的実装形態では、パス名２０６中の一意の接頭部、この例では「＠」文字を見つけ出すことによって変数が識別される。一意の接頭部は、１つまたは複数の文字の任意の組み合わせとすることもできる。変数識別子２１０は、識別された変数をパス名エンジン２２０に返す。
【００１８】
パス名エンジン２２０は、データ構造２２２を参照することによって変数を評価する。データ構造２２２は、対応する値にマップされた多数の変数名を記憶する。それらの値は、文字列とすることも、文字列を生じさせる任意の実行可能コードへの参照点とすることもできる。パス名エンジン２２０は、データ構造２２２中の変数をサーチする。対応する値は、値がデータ構造２２２中に記憶されている場合に限り見つかる。したがって、使用可能な値はデータ構造２２２に記憶された値だけであるので、各変数は明確な値の範囲を有する。データ構造２２２中にその変数が存在しない場合には、パス名は、変数を含むパス名ではなく、文字列であると識別される。これにより、変数を識別する接頭部として適正な文字を使用することが可能になる。代替として、不正な文字を使用して変数を識別することも可能であり、その場合は、変数がデータ構造２２２中に存在しなかった場合には、エラーが返されるはずである。
【００１９】
変数に適した値がデータ構造２２２中に存在する場合には、その値が変数識別子２１０に返される。次いで、変数識別子２１０は、変数を変数の値で置き換えることによって、要求元コンポーネント２０５が提供したパス名２０６を変更することができる。このようにして、変更されたパス名はオブジェクト２１２を指し示す。次いで、変数識別子２１０は、変更されたパス名をそのオブジェクト２１２のハンドルに解決するよう要求し、そのハンドルを要求元コンポーネント２０５に返すことができる。
【００２０】
一実施形態では、異なるユーザが異なる１組の変数／値マッピングを持つように、データ構造２２２を各ユーザに一意とすることができる。これは、どのユーザがログオンするかに基づいて、テキスト上同一のパス名（変数を含む）を異なるオブジェクトにマップできるようにする。例えば、「＠ｕｓｅｒｎａｍｅ」などの変数が動的パス名に使用される場合には、この変数は、どのユーザがその計算処理システムにログオンしたかに基づいて異なる値に評価されるはずである。別の例では、「＠Ｌ―１４６」などの変数がオフィスの場所を指すことができる。その変数を、そのオフィスの現在の占有者に基づく名前を持つ、そのオフィス内の印刷機を識別するパス名中で使用することができる。したがって、データ構造２２２は、オフィスの場所の変数をそのオフィスの現在の占有者のユーザ名にマップする表を含み得る。他の多くの代替手段も、当業者には明らかになるであろう。
【００２１】
この実装形態では、任意の特権のあるアプリケーションがデータ構造２２２に値および／または変数を書き込み、したがって、この機構を拡張可能にすることができる。あるいは、恣意的に値を付加することができないように、有限数の値を用いてデータ構造２２２のサイズを固定することもできる。ファイルシステム２００の要件によって決定される可能な値の範囲を持つデータ構造２２２で一意の変数を定義することも可能である。
【００２２】
変数に対応する値は様々に定義することができる。例えば、値は、ユーザ定義とすることもでき、コンテキスト特有とすることもできる（例えば、値は、オペレーティングシステムまたは環境の状態によって定義され得る）。「ｕｓｅｒ」と定義さる変数に対応する値など、広範に使用されるいくつかの基本的値を提供することもできる。
【００２３】
実行時バインディング／動的パス名解決のプロセス
図３を参照すると、本発明に従って実施されるパス名解決プロセスの例示的概要の論理的流れ図が示されている。プロセスは、要求元コンポーネントがパス名によって識別されるオブジェクトへのアクセスを要求している開始ブロック３００から始まる。続いてブロック３１０に進む。
【００２４】
ブロック３１０では、パス名中の変数を識別する。変数を、パス名をその構成部分に構文解析し、一意の接頭文字、「＠」などをサーチすることによって識別し得る。変数が見つかった場合には、ブロック３２０に進む。
【００２５】
ブロック３２０では、変数／値マッピングを含む表などのデータ構造でその変数のサーチを実施する。判断ブロック３３０で、データ構造中にその変数のエントリが見つかったかどうか判定する。データ構造中に変数が見つかった場合には、ブロック３４０に進む。データ構造中に変数が見つからなかった場合には、ブロック３６０に進み、その変数を、解決を要求しない文字列として処理する。
【００２６】
ブロック３４０で、データ構造から変数に関連する値を取り出し、ブロック３５０に進む。ブロック３５０で、パス名中の変数を対応する値で置き換えて完全なパス名を形成し、ブロック３６０に進む。ブロック３６０で、要求元コンポーネントに完全なパス名を返す。プロセスはブロック３７０に進み、パス名解決を完了する。
【００２７】
データ構造に変数／値対を付加するプロセス
図４を参照すると、本発明に従って実施される、データ構造を拡張するプロセスの一例の論理的流れ図が示されている。データ構造は、新規の変数／値対を付加することによって拡張することができる。
【００２８】
プロセスはブロック４００から開始し、そこでシステム管理者は、より多くの変数および／または対応する値をデータ構造に含めることを決定する。判断ブロック４１０で、オペレーティングシステムが実行時バインディング／動的パス名をサポートしているかどうか判定する。オペレーティングシステムが実行時バインディング／動的パス名をサポートしている場合には、ブロック４３０に進む。オペレーティングシステムが実行時バインディング／動的パス名をサポートしていない場合には、ブロック４２０に進む。ブロック４２０で、システム管理者に、オペレーティングシステムが実行時バインディング／動的パス名をサポートしていないことを知らせるエラーメッセージを発行し、ブロック４６０に進む。
【００２９】
ブロック４３０で、システム管理者に、変数／値対を入力するよう促す。ブロック４４０に進む。ブロック４４０で、システム管理者がシステムに変数／値対を入力する。ブロック４５０に進む。ブロック４５０で、データ構造に変数／値対を付加する。プロセスはブロック４６０で終了する。
【００３０】
本発明によるデータ構造への変数／値対の付加は、ユーザログオン時などのスクリプトによっても実施され得ることが理解されるであろう。また、事前定義の変数／値マッピングを含むポリシーを設定することもできる。同様に、保護モードでデータ構造を変更するのに十分な許可を含むソフトウェアコンポーネントが、データ構造中の変数／値マッピングにアクセスし、それを変更することも可能である。このように、個々のユーザ、そうしたいくつかのコンポーネントが実行される個々のハードウェアまたはソフトウェアの状況で、あるいは他の何らかの基準に基づいて、変数／値マッピングを作成することができる。
【００３１】
以上の明細書、例およびデータは、本発明の構成の製造および使用についての完全な説明を提供するものである。本発明の精神および範囲を逸脱することなく本発明の多くの実施形態が実施され得るので、本発明は、添付の特許請求の範囲に存するものである。
【図面の簡単な説明】
【００３２】
【図１】本発明の例示的実施形態で使用することのできる計算処理装置の一例を示す図である。
【図２】本発明を実施するための環境の一例を示す構成図である。
【図３】本発明に従って実施されるパス名解決プロセスの概要の一例を示す論理的流れ図である。
【図４】本発明に従って実施されるデータ構造拡張プロセスの概要の一例を示す論理的流れ図である。
【符号の説明】
【００３３】
１００  計算処理装置
１０２  処理装置
１０４  システムメモリ
１０５  オペレーティングシステム
１０６  プログラムモジュール
１０７  プログラムデータ
１０９  取り外し可能記憶装置
１１０  取り外し不能記憶装置
１１２  入力装置
１１４  出力装置
１１６  通信接続
１１８  その他の計算処理装置
１２０  パス名リゾルバ
２０５  要求元コンポーネント
２０６  「パス名」
２１０  変数識別子
２１２  オブジェクト
２２０  パス名エンジン
２２２  変数／値
【図１】
2005050347.tif 000003
【図２】
2005050347.tif 000004
【図３】
2005050347.tif 000005
【図４】
2005050347.tif 000006