(57)【要約】プロテクトされたアプリケーションをシェルモジュールと結合するための方法とシステム。シェルモジュールは、アプリケーションに付加される。シェルモジュールは、アプリケーションが実行される前に実行され、最初にリソースを作成する。シェルモジュールが実行を終了した後、アプリケーションは、作成されたりソースにアクセスすることを試みる。アクセスが成功した場合は、アプリケーションは、続行することが許される。さもなければ、アプリケーションは終了する。リソースにアクセスすることのアプリケーションにとっての不能は、シェルモジュールが実際にリソースを作成しなかったことを示す。これは、シェルモジュールが実行されなかったことを示し、シェルモジュールは、除去されたか、アプリケーションから機能的に切り離されたかのどちらかであるかもしれない。これは、シェルモジュールのセキュリティ機能が、実行されなかったことをさらに暗示する。シェルのセキュリティチェックが、おそらく実行されていないので、このアプリケーションは、それ故、実行することが許可されない。
2009524879.tif 000002
【特許請求の範囲】
【請求項１】
セキュリティコードのシェルモジュールをアプリケーションに結合する方法であって、
ａ．  リソースを作成することが、前記シェルモジュールによって実行され、
ｂ．  前記リソースにアクセスすることを試みることが、前記アプリケーションによって実行され、
ｃ．  前記アクセスが成功しない場合、前記アプリケーションを終了する、
セキュリティコードのシェルモジュールをアプリケーションに結合する方法。
【請求項２】
前記リソースが、割り当てられたメモリを備え、
ｄ．  前記割り当てられたメモリに取り決められた値を保存し；
ｅ．  前記割り当てられたメモリのアドレスの表示を保存することが、シェルモジュールによって、ステップａ．の後、かつ、ステップｂ．の前に行われる、
ことを更に備える請求項１に記載の方法。
【請求項３】
前記アドレスの表示が、前記割り当てられたメモリのアドレスを備える、
請求項２に記載の方法。
【請求項４】
前記アドレスの表示が、前記アプリケーションと前記シェルモジュールとの両方に知られた定数と結合された前記割り当てられたメモリのアドレスを備える、
請求項２に記載の方法。
【請求項５】
前記定数の少なくとも一部が、前記アプリケーションの開発者によって提供される、
請求項４に記載の方法。
【請求項６】
前記定数と前記割り当てられたメモリの前記アドレスとの結合が、知られた前記定数と前記アドレスとのビットごとの排他的論理和を備える、
請求項４に記載の方法。
【請求項７】
前記取り決められた値の少なくとも一部が、前記アプリケーションの開発者によって提供される、
請求項２に記載の方法。
【請求項８】
前記割り当てられたメモリの前記アドレスの表示が、前記アプリケーションの実行可能なヘッダに保存される、
請求項２に記載の方法。
【請求項９】
前記ステップｂ．が、
i.  前記実行可能なヘッダから前記アドレスの表示を取り出すことを試み、前記実行可能なヘッダから前記アドレスの表示を取り出すことが出来なかったことが、前記リソースへの不成功なアクセスを示す、
ことを備える請求項８に記載の方法。
【請求項１０】
前記ステップｂ．が、
ii.   前記割り当てられたメモリの内容を読み、
iii.  読み込んだ内容が、前記取り決められた値と一致するかどうか決定し、前記取り決められた値と一致しないことが、前記リソースへの不成功なアクセスを示す、
ことを更に備える、請求項９に記載の方法。
【請求項１１】
前記リソースが、名付けられたリソースを備える、請求項１に記載の方法。
【請求項１２】
前記名付けられたリソースが、ミューテックスを備える、請求項１１に記載の方法。
【請求項１３】
名付けられたリソースが、セマフォを備える、請求項１１に記載の方法。
【請求項１４】
前記ステップが、前記名付けられたリソースの名前を引き出すことを備える、
請求項１１に記載の方法。
【請求項１５】
前記名付けられたリソースの名前についての前記引き出すことが、
i.    名前情報を取得し、
ii.   名前情報に基づいて前記名前を作成すること、
を備え、
前記ステップｂ．が、
i.    前記名前情報を取り出し、
ii.   前記名前情報に基づいて前記名前を作成し、
iii.  作成された名前を使用して前記名付けられたリソースにアクセスすることを試みること、
を備える、請求項１４に記載の方法。
【請求項１６】
前記名前情報が、前記アプリケーションの開発者によって提供される情報を備える、
請求項１５に記載の方法。
【請求項１７】
前記名前情報が、プロセスの特定の値を備える、請求項１５に記載の方法。
【請求項１８】
前記プロセスの特定の値が、プロセスのスタート時間を備える、請求項１７に記載の方法。
【請求項１９】
前記プロセスの特定の値が、プロセスＩＤを備える、請求項１７に記載の方法。
【請求項２０】
コンピュータプログラム製品であって、
コンピュータで使用可能な媒体を備え、前記媒体は、記録されたコンピュータプログラムロジックを有し、コンピュータ上で実行されたとき、セキュリティコードのシェルモジュールをアプリケーションに結びつけ、
前記コンピュータプログラムロジックは、
コンピュータにリソースを作成させる、前記シェルモジュール中の、第１のコンピュータプログラムロジック；
コンピュータに前記リソースへのアクセスを試みさせる、前記アプリケーション中の、第２のコンピュータプログラムロジック；
前記アクセスが成功しない場合に、コンピュータにアプリケーションを終了させる、第３のコンピュータプログラムロジック、
を備える、コンピュータプログラム製品。
【請求項２１】
前記リソースは、割り当てられたメモリを備え、
前記コンピュータはプログラム製品は、
コンピュータに、取り決められた値を割り当てられたメモリ中に保存させる、第４のコンピュータプログラムロジックと、
コンピュータに、前記割り当てられたメモリのアドレスの表示を保存させる、第５のコンピュータプログラムロジックと、
を備え、
前記第１のコンピュータプログラムロジックの後で、かつ、前記第２のコンピュータプログラムロジックの前に、前記第４と前記第５のコンピュータプログラムロジックが実行される、
請求項２０に記載のコンピュータプログラム製品。
【請求項２２】
前記割り当てられたメモリのアドレスの表示が、前記アプリケーションの実行可能なヘッダに保存される、
請求項２１に記載のコンピュータプログラム製品。
【請求項２３】
前記第２のコンピュータプログラムロジックが、
i.  コンピュータに、実行可能なヘッダから前記アドレスの表示を取り出すことを試みさせ、前記アドレスの表示を取り出すこと出来なかったことが、前記リソースへのアクセスの不成功を示す、コンピュータプログラムロジックと、
ii.  コンピュータに、割り当てられたメモリの内容を読ませる、コンピュータプログラムロジックと、
iii.  コンピュータに、読み込まれた前記内容が、前記取り決められた値と一致するかどうか決定させ、前記取り決められた値と一致しなかったことが、前記リソースへのアクセスの不成功を示すコンピュータプログラムロジックと、
を備える、請求項２２に記載のコンピュータプログラム製品。
【請求項２４】
前記リソースが、名付けられたリソースを備える、請求項２０に記載のコンピュータプログラム製品。
【請求項２５】
前記第１のコンピュータプログラムロジックが、
i.  コンピュータに、名前情報を取得させるコンピュータプログラムロジックと、
ii.  コンピュータに、前記名前情報に基づいて前記リソースの名前を作成させるコンピュータプログラムロジックと、
を備え、
前記第２のコンピュータプログラムロジックが、
i.  コンピュータに、前記名前情報を取り出させる、コンピュータプログラムロジックと、
ii.  コンピュータに、前記名前情報に基づいて名前を作成させる、コンピュータプログラムロジックと、
iii.  コンピュータに、作成された前記名前を使用して前記名付けられたリソースにアクセスすることを試みさせ、作成された前記名前を使用して前記名付けられたリソースにアクセス出来なかったことが、前記リソースへのアクセスの不成功を示す、コンピュータプログラムロジックと、
を備える、請求項２４に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
ここに記載されている本発明は、デジタル権利管理に関し、更に特定すればソフトウエアの不正な使用を防ぐことに関する。
【背景技術】
【０００２】
ソフトウエアの商品流通での積年の問題の一つは、ソフトウエアの使用の管理である。ソフトウエア開発者の考え方から言えば、ソフトウエアを購入した、または、ソフトウエアの許諾を受けたグループのみがそのソフトウエアの使用をすることができる。他の規制が同様に適切にあるかもしれない。例えば、ソフトウエア開発者は、特定のマシン上でのソフトウエアの使用を制限することを望むかもしれない。ソフトウエア開発者は、そのソフトウエアが使用されても良い時間間隔を制限することも望むかもしれない。そのような制限は、もし強制的であるならば、ソフトウエアパッケージが使用される条件を制限する。ソフトウエアパッケージの使用、即ち、例えば上記のような制限で定められた境界の外での使用は、未許可の使用を表す。ソフトウエア開発者の考え方から言えば、購入者またはライセンサと合意して、ソフトウエアは、ソフトウエア開発者によって特定された条件でのみ使用されるべきである。これらの条件の外でのソフトウエアパッケージの使用は、お金を払わない使用である。そのような未許可の使用は、それ故に、ソフトウエア開発者にとって失われたお金を表す。
【０００３】
ソフトウエアの未許可使用の問題の１つの解決法は、シェルとして知られる追加のソフトウエアモジュールのを使用することを含む。これは、図１に示される。アプリケーションプログラム１１０は、ヘッダ１２０と、次にコード１３０と、データ１４０とを備える。アプリケーション１１０の末尾に付加されたのはシェルモジュールであり、シェルランタイムコード１５０である。ポインタ１６０は、ヘッダ１２０の中に存在する。ポインタ１６０は、シェルランタイムコード１５０がアプリケーション１１０の前に実行されることを保証する。
【０００４】
シェルモジュール１５０は、１つ又はそれ以上のセキュリティチェックを実行する。これらのチェックは、ソフトウエアの使用のための条件が満たされているか否かを決定する。例えば、シェルモジュール１５０は、アプリケーション１１０が認可されたマシン上で実行されているかどうかを決定することが出来る。加えて、シェルモジュール１５０は、アプリケーション１１０が、認可された時間帯で実行されているるかどうかを決定することが出来る。シェルモジュール１５０は、もし要求されるならば、セキュリティトークンが所定の位置にあるかどうかもチェックすることが出来る。シェルモジュール１５０での全てのチェックが通った場合に限り、アプリケーション１１０は、実行を開始することが出来る。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、そのようなシェルモジュールの使用は、必ずしも十分ではない。ハッカーは、例えば、そのシェルをアプリケーションから分離するかもしれない。セキュリティチェックがなされないように、そのシェルモジュールが除去され、または、機能的にアプリケーションから切り離されるかもしれない。それ故に、もし、シェルモジュールが削除され、又は、機能的にアプリケーションから切り離された場合は、アプリケーションが使用できないような、シェルモジュールがアプリケーションに結合することを通したメカニズムが必要である。
【課題を解決するための手段】
【０００６】
ここに記載されている発明は、プロテクトされるアプリケーションをシェルモジュールと結合するためのシステムと方法である。シェルモジュールは、アプリケーションに付加される。そのシェルモジュールは、アプリケーションの実行の前に実行され、最初にリソースを作成する。そのシェルモジュールが実行を終了した後、アプリケーションは、その作成されたリソースにアクセスを試みる。もし、アクセスが成功したならば、そのアプリケーションは、続行することが許される。さもなくば、アプリケーションは、終了される。アプリケーションがリソースにアクセスできないことは、シェルモジュールが実際にリソースを作成しなかったことを示す。これは、シェルモジュールが実行されなかったことを示し、シェルモジュールは、除去されたか、機能的にアプリケーションから切り離されたかどちらかであろう。これは、更に、シェルモジュールのセキュリティ機能が実行されなかったことを示す。それ故に、シェルのセキュリティチェックは、おそらく実行されてないので、アプリケーションは、実行することを許可されない。
【０００７】
本発明の様々な実施例の構成と作用のみならず、本発明の、更なる実施形態、特徴、利点は、添付の図を参照して以下に示される。
【発明を実施するための最良の形態】
【０００８】
本発明の好ましい実施例は、図を参照して記載され、同等の参照番号は、同一、または、機能的に似たエレメントを示す。図において、それぞれの参照番号の最も左の桁は、参照番号が最初に使用される図と一致する。特定の構成と配置が論じられるが、単に例証目的でなされたことが理解されるべきである。当業者は、本発明の目的と精神から離れることなく他の構成と配置が使用されることを認識するであろう。本発明は、種々の他のシステムとアプリケーションにも採用されることが出来ることも、当業者にとって明白であろう。
【０００９】
I. 概観
ここで述べられている発明は、プロテクトされたアプリケーションをシェルモジュールと結合するためのシステムと方法である。シェルモジュールは、アプリケーションに付加される。シェルモジュールは、アプリケーションの実行前に実行され、最初にリソースを作成する。シェルモジュールの実行が終了後、アプリケーションは、作成されたリソースにアクセスすることを試みる。もし、アクセスが成功するならば、アプリケーションは、続行することを認められる。さもなくば、アプリケーションは、終了する。アプリケーションがリソースにアクセスできないことは、シェルモジュールが実際にリソースを作成しなかったことを示す。これは、シェルモジュールが実行されなかったことを示し、シェルモジュールは、除去されたか、機能的にアプリケーションから切り離されたかどちらかであろう。これは、更に、シェルモジュールのセキュリティ機能が実行されなかったことを示す。それ故に、シェルのセキュリティチェックは、おそらく実行されてないので、アプリケーションは、実行することを許可されない。
【００１０】
II. システム
ここに述べられている発明は、例えば図２で例示されるコンピュータ環境で実行されるソフトウエアの形態をとることが出来る。
【００１１】
コンピュータシステム２００の例は、図２で示される。コンピュータシステム２００は、例えばプロセッサ２０４のように１つ以上のプロセッサを含むことが出来る。プロセッサ２０４は、通信インフラストラクチャ２０６（例えば、通信バスやネットワーク）に接続されても良い。この記載を読んだ後、他のコンピュータシステム、そして／又は、コンピュータアーキテクチャに対して本発明をどのように導入するかが、当業者にとって明白になるであろう。
【００１２】
コンピュータシステム２００はディスプレイインタフェース２０２含むことができ、このインタフェースは、グラフィックス、テキスト、そして他のデータを通信インフラストラクチャ２０６からディスプレイユニット２３０のディスプレイに転送することが出来る。
【００１３】
コンピュータシステム２００は、メインメモリ２０８、例えばランダムアクセスメモリ（RAM）も含むことができ、第２のメモリ２１０も含むことができる。第２のメモリ２１０は、例えば、ハードディスクドライブ２１２、そして／または、磁気テープ装置、光ディスク装置、その他、を表すがそれに限定されないリムーバブル記憶装置２１４を含むことができる。リムーバブル記憶装置２１４は、周知の方法でリムーバブル記憶ユニット２１８、に書き込み、そして／または、から読み込みをすることができる。リムーバブル記憶ユニット２１８は、リムーバブル記憶装置２１４によって、読み込みされ、そして／または書き込みされることができる、フロッピー（登録商標）ディスク、磁気テープ、光ディスク、その他、を表すことができる。ありがたいことに、リムーバブル記憶ユニット２１８は、その中にコンピュータソフト、そして／または、データを保存しているコンピュータで使用できる記憶媒体を含むことができる。
【００１４】
別の実施形態において、第２のメモリ２１０は、コンピュータシステム２００に、コンピュータプログラムや他の命令がロードされることを可能にするための他の似た手段を含んでも良い。そのような手段は、例えば、リムーバブル記憶ユニット２２２とインタフェース２２０とを含むことができる。そのようなものの例は、それに限定されない、リムーバブルメモリチップ（例えば、EPROMやPROM）そして関連したソケット、そして／または、他のリムーバブル記憶ユニット２２２とリムーバブル記憶ユニット２２２からコンピュータシステム２００にソフトウエアとデータとを転送することを可能にすることができるインタフェース２２０とを含むことができる。
【００１５】
コンピュータシステム２００は、通信インタフェース２２４も含むことができる。通信インタフェース２２４は、ソフトウエアとデータとがコンピュータシステム２００と外部デバイスとの間で転送されることを可能にすることができる。通信インタフェース２２４の例は、これに限定されない、モデム、ネットワークインタフェース（例えばイーサネット（登録商標）カード）、通信ポート、PCMCIAスロットそしてカード、その他を含むことができる。通信インタフェース２２４を経由して転送されるソフトウエアとデータは、例えば、電子、電磁気、光信号、又は、通信インタフェース２２４によって受信可能な他の信号であってもよい信号２２８の形である。これらの信号２２８は、通信パス（即ち、チャネル）２２６を経由して通信インタフェース２２４に提供されることができる。このチャネル２２６は、信号２２８を運ぶことができ、ワイヤやケーブル、光ファイバ、電話線、携帯電話リンク、ＲＦリンク、そして／または、他の通信チャネルを使用することを導入されることができる。
【００１６】
このドキュメントにおいて、用語「コンピュータプログラム媒体」と「コンピュータで使用可能な媒体」とは、一般的にメディア、例えば、それに限定されない、リムーバブル記憶ユニット２１８、ハードディスクドライブ２１２にインストールされるハードディスク、そして／または、信号２２８を参照するために使用される。これらのコンピュータプログラムメディアは、コンピュータシステム２００にプログラムを提供するための手段である。
【００１７】
コンピュータプログラム（コンピュータコントロールロジックとも言われる）は、メインメモリ２０８そして／または第２のメモリ２１０に保存されても良い。コンピュータプログラムは、通信インタフェース２２４を経由して受信されても良い。そのようなコンピュータプログラムは、実行されたとき、コンピュータシステム２００が、ここで述べられているように、本発明の要件を実行することを可能にする。特に、コンピュータシステムは、実行されたとき、プロセッサ２０４が、以下に述べられている実施形態に従って、本発明を実行することを可能にすることができる。よって、そのようなコンピュータプログラムは、コンピュータシステム２００のコントローラを意味する。
【００１８】
本発明を具体化するソフトウエアは、コンピュータプログラム製品に保存されることができ、例えば、リムーバブル記憶装置２１４、ハードディスクドライブ２１２、インタフェース２２０、または、通信インタフェース２２４を使用するコンピュータシステム２００にロードされる事ができる。コントロールロジック（ソフトウエア）は、プロセッサ２０４によって実行されたとき、プロセッサ２０４に、ここで述べられているように、本発明の機能を実行させる。
【００１９】
III.  方法
本発明の一実施例の処理は、図３、４に示される。図３において、プロテクトされたアプリケーション３１０は、ヘッダ３２０、コード３３０、そしてデータ３４０を備えるように示される。アプリケーション３１０に付加されたものは、シェルランタイムコード３５０である。その全体の処理は、アプリケーション３１０の実行の前にシェルモジュール３５０が実行される点において図１の処理といくつかの類似性を有する。その他の関連した機能に共通して、シェルモジュール３５０は、メモリ位置３６０を割り当てる。メモリ位置３６０は、アドレス３７０に位置する。メモリ３６０を割り当てることに加えて、シェルモジュール３５０は、メモリ位置３６０に、取り決められた値３８０も保存する。本発明の実施例において、取り決められた値３８０は、アプリケーション３１０の開発者によって提供されたあらかじめ決められた値であることができる。
【００２０】
シェルモジュール３５０は、それから、アプリケーションによってすぐにアクセス可能な位置にアドレス３７０を保存する。図示された実施例において、アドレス３７０は、ヘッダ３２０内に位置する日付／時間スタンプ３９０で、またはそれと共に保存される。
【００２１】
いったん、アプリケーションが実行を始めると、アプリケーションは、アドレス３７０を検索し、そのアドレス即ち、メモリ位置３６０に行く、そして、取り決められた値３８０を読み出すことを試みる。もし、その読み出された値が取り決められた値３８０と合致するならば、それから、アプリケーションは続行する。もし、その値が、合致しないならば、アプリケーション３１０は終了する。さらに、もしアドレス３７０がアプリケーション３１０によって見つけられなかったならば、それから、アプリケーションは終了する。
【００２２】
もし、ハッカーがシェルモジュール３５０を除去することに成功し、または、そうでなければ、アプリケーションからシェル３５０を機能的に切り離すことに成功するならば、それで、日付／時間スタンプ３９０は、アドレスを受信しないであろう、そして、アプリケーションは、メモリ位置３６０にアクセスすることに失敗するであろう。あるいは、アプリケーションは、日付／時間スタンプ領域３９０にいくつかアドレスを有することができる。しかし、そのアドレスで見つけられる値は、取り決められた値３８０とおそらく合致しないであろう。
【００２３】
このチェックシーケンスを回避するために、ハッカーは、シェルモジュール３５０の振る舞いをシミュレートするであろう。ハッカーは、アプリケーションによって実行される位置、即ち、日付／時間スタンプフィールド３９０にアドレスを置かなければならないであろう。これは、ハッカーにとってすることが困難であろう。
【００２４】
その上、これは、保存されたアドレス３７０をわかりにくくすることによって、より困難にされることができる。シェルモジュール３５０は、例えば、アドレス３７０を取得することができ、そして、それを、決定論的で可逆的な方法で、ある既知の定数と結合することができる。例えば、アドレス３７０は、ビットごとに排他的論理和をとる操作を使用して、その定数と結合されることができる。アプリケーション３１０は、それから、日付／時間スタンプ３９０から分かりにくくされたアドレスを読み、それから、実際のアドレス３７０を再生するためにその定数を分かりにくくされたアドレスに適用する。本発明の実施例において、全ての定数のいくつかは、アプリケーションの開発者によって供給される。
【００２５】
図３の実施例と関係のある処理は、図４のフローチャートに表されている。そのプロセスは、ステップ４０５から始まる。ステップ４１０において、シェルモジュールは、メモリの位置を割り当てる。ステップ４１５において、シェルモジュールは、割り当てられたメモリ位置に取り決められた値を保存する。上述したように、取り決められた値は、アプリケーションのソフトウエア開発者によって提供されることが出来る。ステップ４２０において、割り当てられたメモリのアドレスは、アプリケーションの実行可能なヘッダに保存される。そのアドレスの保存のための１つの可能な位置は、上述したように、ヘッダの日付／時間スタンプであろう。
【００２６】
ステップ４２５において、アプリケーションは、ヘッダからそのアドレスを回収することを試みる。ステップ４３０において、この回収が成功したかどうかに関して決定がされる。もし、回収が成功しないならば、アプリケーションは、ステップ４４０で終了する。もし、回収が成功するならば、それから、プロセスは、４３５で継続する。ここで、メモリの内容が読まれる。ステップ４４５において、正しい値が、割り当てられたメモリ位置で見つかるかどうかに関して決定される。もし、見つからなかった場合は、アプリケーションは、ステップ４４０で終了する。もし、ステップ４４５で決定されるように、正しい値が見つけられる場合は、それから、アプリケーションは継続し、プロセスはステップ４５０で完了する。
【００２７】
本発明の他の実施例は、図５で示される。前回の図と同様、アプリケーションは、ヘッダ５２０、データ５４０とともにコード５３０から成る。また一方、シェルモジュール５５０は、シェルモジュール５５０が、リソースを作成するために使用される所に添付される。この実施例において、シェルモジュール５５０は、相互排除オブジェクト、または、「ミューテックス」５６０を作成する。ミューテックスはプログラムスレッドによって使用される、たとえば、ファイルなどのデータ構造へのアクセスを共有するプログラムオブジェクトである。そのファイルを必要とするどのスレッドも、そのファイルを使用している間、他のスレッドに対してミューテックスをロックしなければならない。ミューテックスは、そのファイルがもはや使用されない、または、そのルーチンが完了するときに、ロックを解除される。
【００２８】
ここで、作成されたミューテックス５６０は、シェルモジュール５５０によって名前を与えられる。そのミューテックスの名前は、名前情報に基づく。名前情報の一つの例は、プロセスＩＤである。ミューテックスの名前は、それ故に、プロセスＩＤであることができ、または、プロセスＩＤに基づくことができる。図示された実施例において、ミューテックス５６０のための名前は、ファンクションｆ（プロセスＩＤ）の値である。シェルモジュール５５０が実行を完了したあと、制御は、コード５３０に戻る。
【００２９】
コード５３０は、それから、ミューテックス５６０の名前を再作成することを試みる。示された実施例でそうするために、もしその名前がＩＤのファンクションであるならば、コード５３０は、プロセスＩＤに基づいて名前を形成しなければならない。もし、名前が単純にプロセスＩＤであるならば、コード５３０は、単純にプロセスＩＤを得る。いずれにしても、コード５３０は、それから、名前をつけられたミューテックス５６０にアクセスすることを試みる。ミューテックス５６０にアクセスできないと言うことは、シェルモジュール５５０が削除されたか、無効にされたか、または、機能的にアプリケーション５１０から切り離されたかを示す。もし、シェルモジュール５５０が存在しなかったか、無効にされていた場合は、プロセスＩＤに基づく名前を持つミューテックスはシェルモジュール５５０によって作成されなかったであろう。コード５３０は、それから、作成されなかったリソースにアクセスを試み、そして、明らかにそうすることができなかったであろう。
【００３０】
本発明のこの実施例の処理は、図６のフローチャートに示される。このプロセスは、ステップ６０５から始まる。ステップ６１０において、シェルモジュールは、名前情報、即ち、作成されるミューテックスを名付けるために使用される情報を得る。図示された実施例において、プロセスＩＤは、名前情報として使用される。ステップ６１５において、シェルモジュールは、例えば、プロセスＩＤの１６進数表記などの名前の文字列を作成する。ステップ６２０において、シェルモジュールは、名前の文字列によって識別される、例えばミューテックスなどの、名付けられたリソースを作成する。ステップ６２５において、アプリケーションは、名前情報を読み出す。ステップ６３０において、アプリケーションは、名前情報に基づく名前の文字列を作成する。ステップ６３５において、アプリケーションは、その名前がついているリソースにアクセスすることを試みる。ステップ６４０において、名付けられたリソースへのアクセスが成功したかどうかについて決定される。もし、成功しなかった場合は、ステップ６４５でアプリケーションは終了する。もし、名付けられたリソースへのアクセスの試みが成功した場合は、それから、プロセスは、ステップ６５０で続行する。
【００３１】
本発明の他の実施例において、名前情報は、いくつかの出所からくることができる点に注意すべきである。図示された実施例において、名前情報は、プロセスＩＤである。あるいは、他のプロセス特定情報は、ミューテックスの名前を引き出すために用いられることができる。一つの可能性は、プロセスのためのスタート時間である。名前は、それから、スタート時間、または、その機能である。更にもう一つの他の実施例において、名前は、アプリケーションのソフトウエア開発者によって提供される名前情報に基づくことができる。
【００３２】
他の実施例において、ミューテックス以外のものがシェルモジュールによって作成される事ができる点にも注意すべきである。シェルモジュールは、セマフォ、または、例えば他の名付けられたリソースのようなものを作成することができる。ミューテックスの実施例の場合において、リソースは、プロセスに由来する名前、または、アプリケーション開発者によって提供される名前に基づいて名付けられることができる。アプリケーションは、その名前を使用しているリソースにアクセスすることを試みる事によってシェルモジュールの動作を確かめることができる。
【００３３】
ＩＶ．結論
本発明のいくつかの実施例が、上に記載されているが、例としてだけ提示されており、本発明を制限する意味ではないことを理解すべきである。添付の請求項で定義されるように、本発明の目的と精神から離れることなく、形状と細部において様々な変更がその中に成されることができることが、当業者によって理解されるであろう。それ故に、本発明の範囲と幅とは、上記の典型的な実施例によって制限されるべきではなく、以下の請求項およびそれと等価なものに従ってのみ定義されるべきである。
【図面の簡単な説明】
【００３４】
【図１】従来のシェルモジュールが添付されたアプリケーションプログラムを示す。
【図２】本発明の実施例に係る、本発明を実行することが出来るコンピュータのプラットフォームである。
【図３】アプリケーションが後でアクセスを試みるメモリ上の位置を、シェルモジュールが割り当てる、本発明の実施例の示す構成図である。
【図４】図３の実施例に関連する処理を示すフローチャートである。
【図５】アプリケーションが後でアクセスを試みるミューテックス（mutex）を、シェルモジュールが作成する本発明の実施例を示す構成図である。
【図６】図５の実施例に関係する処理を示すフローチャートである。
【符号の説明】
【００３５】
１１０  アプリケーション
１２０  ヘッダ
１３０  コード
１４０  データ
１５０  シェルモジュール
１６０  ポインタ
２００  コンピュータシステム
２０４  プロセッサ
２０６  通信インフラストラクチャ
２０８  メインメモリ
２１０  メモリ
２１２  ハードディスクドライブ
２１４  リムーバブル記憶装置
２１８  リムーバブル記憶ユニット
２２０  インタフェース
２２２  リムーバブル記憶ユニット
２２４  通信インタフェース
２２６  通信パス
２２８  信号
２３０  ディスプレイユニット
３１０  アプリケーション
３２０  ヘッダ
３３０  コード
３４０  データ
３５０  シェルモジュール
３６０  メモリ
３７０  アドレス
３８０  取り決められた値
３９０  日付／時間スタンプ
５１０  アプリケーション
５２０  ヘッダ
５３０  コード
５４０  データ
５５０  シェルモジュール
５６０  ミューテックス
【図１】
2009524879.tif 000003
【図２】
2009524879.tif 000004
【図３】
2009524879.tif 000005
【図４】
2009524879.tif 000006
【図５】
2009524879.tif 000007
【図６】
2009524879.tif 000008
【国際調査報告】
2009524879.tif 000009