(57)【要約】      （修正有）【課題】消費者が、実行することを所望するコードだけのライセンス契約を行えるようにする。【解決手段】アプリケーション１０２は、１つまたは複数の保護されたサービス１０６（１〜Ｊ）に対してコールを行う。保護されたサービス１０６（１〜Ｊ）はアプリケーション１０２によって呼び出されると、メータリングエンジン１０８を呼び出す。メータリングエンジン１０８は、アプリケーション１０２、または直接の呼び出し元が、保護されたサービス１０６を実行する許可を有するかどうかの判定を行う。実施エンジン１１４は、メータリングデータの安全なストア１１６、及び１つまたは複数のサービス契約１１８（１〜Ｋ）と通信する。【選択図】図１
2005259126.tif 000002
【特許請求の範囲】
【請求項１】
コードの実行をメータリングする方法であって、
ランタイムエリア内の保護されたサービスの実行を要求するコールを受け取るステップと、
前記実行の許可を要求するステップと、
許可を求める前記要求を分析するステップと、
前記分析を前記許可のステータスの基礎にするステップとを備えることを特徴とする方法。
【請求項２】
前記分析は、前記第１のランタイムエリアとは別個の第２のランタイムエリア内で行われることを特徴とする請求項１に記載の方法。
【請求項３】
前記第１のランタイムエリアおよび前記第２のランタイムエリアは、メモリの異なるパーティション内に存在することを特徴とする請求項２に記載の方法。
【請求項４】
前記第１のランタイムエリアは、第１のコンピューティングデバイスに配置され、前記第２のランタイムエリアは、第２のコンピューティングデバイスに配置されることを特徴とする請求項２に記載の方法。
【請求項５】
前記要求を分析するステップは、契約およびメータリングデータを入力として使用するステップを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記分析を反映するように前記メータリングデータを更新するステップをさらに備えることを特徴とする請求項５に記載の方法。
【請求項７】
許可を要求するステップは、前記保護されたサービスと、前記分析を実行するように構成されたメータリングエンジンとの間で安全な接続を開くステップを含むことを特徴とする請求項１に記載の方法。
【請求項８】
許可を要求するステップは、前記第１のランタイムエリア内の前記保護されたサービスから前記第２のランタイムエリア内のメータリングエンジンに暗号化されたメッセージを送るステップを含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記許可が与えられ、前記保護されたサービスを実行するステップと、
前記実行の結果を前記コールを開始したアプリケーションに返すステップとをさらに備えることを特徴とする請求項１に記載の方法。
【請求項１０】
前記許可が与えられず、前記保護されたサービスを実行できなかったという通知を前記コールを開始したアプリケーションに返すステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項１１】
コードの実行をメータリングするためのプロセッサ実行可能命令を含むプロセッサ可読媒体であって、前記プロセッサ実行可能命令は、
保護されたサービスの実行を求める要求を受け取るための命令と、
前記保護されたサービスを実行する許可を要求するための命令であって、前記許可要求は、前記保護されたサービスからメータリングエンジンに対して行われる命令と、
前記メータリングエンジンを使用して、メータリングデータに鑑みて契約を分析して、アプリケーションにより前記保護されたサービスを使用する前記許可要求が許されるべきかどうかを判定するための命令とを備えることを特徴とする媒体。
【請求項１２】
前記メータリングエンジンは、前記保護されたサービスが内部で動作するランタイムエリアとは別個のランタイムエリア内で動作することを特徴とする請求項１１に記載のプロセッサ可読媒体。
【請求項１３】
前記分析するための命令は、
前記メータリングデータおよび前記保護されたサービスのＩＤを分析に対する入力として使用して、前記契約を分析するための命令と、
前記分析を反映するように前記メータリングデータを更新するための命令とを含むことを特徴とする請求項１１に記載のプロセッサ可読媒体。
【請求項１４】
許可を要求するための命令は、前記保護されたサービスと前記メータリングエンジンとの間で安全な接続を開くための命令を含むことを特徴とする請求項１１に記載のプロセッサ可読媒体。
【請求項１５】
コード実行の前記メータリングは、被管理コード環境において実行されることを特徴とする請求項１１に記載のプロセッサ可読媒体。
【請求項１６】
前記許可要求が許可された場合、前記保護されたサービスを実行するための命令と、
前記実行の結果を前記アプリケーションに返すための命令とをさらに含むことを特徴とする請求項１１に記載のプロセッサ可読媒体。
【請求項１７】
前記許可要求が許可されなかった場合、実行できなかったという通知を前記アプリケーションに返すための命令をさらに含むことを特徴とする請求項１１に記載のプロセッサ可読媒体。
【請求項１８】
前記保護されたサービスと前記メータリングエンジンの間の通信を暗号法を使用して保護するための命令をさらに含むことを特徴とする請求項１１に記載のプロセッサ可読媒体。
【請求項１９】
安全な通信チャネルを間に有する第１のランタイムエリアおよび第２のランタイムエリアと、
保護されたサービスであって、前記第１のランタイムエリア内の該保護されたサービスの実行を求める要求をアプリケーションから受け取るように構成されたものと、
前記要求を受け取り、前記第２のランタイムエリア内で動作して、メータリングデータに規則を適用することにより、前記要求に応答して許可コードまたは拒否コードを返すように構成されたメータリングエンジンとを備えることを特徴とするコード実行デバイス。
【請求項２０】
前記メータリングエンジンは、
前記保護されたサービスとの安全な通信のために構成された実施エンジンと、
前記保護されたサービスの動作を規定する前記規則を前記実施エンジンに供給するように構成されたサービス契約と、
前記メータリングデータが内部に含まれ、前記保護されたサービスの過去の動作を反映する履歴データを前記実施エンジンに供給するように構成された安全なストアとを含むことを特徴とする請求項１９に記載のコード実行デバイス。
【請求項２１】
前記メータリングエンジンは、
前記保護されたサービスのＩＤ、およびメータリングデータの安全なストアからのデータを前記許可コードまたは前記拒否コードのリターンを提供する分析に対する入力として使用し、
前記分析を反映するようにメータリングデータの前記安全なストアを更新するように構成されることを特徴とする請求項１９に記載のコード実行デバイス。
【請求項２２】
携帯電話であることを特徴とする請求項１９に記載のコード実行デバイス。
【請求項２３】
被管理コード環境内で使用されるように構成されることを特徴とする請求項１９に記載のコード実行デバイス。
【請求項２４】
複合デバイスであり、前記保護されたサービスは、前記複合デバイスの第１の部分に含まれ、前記メータリングエンジンは、前記複合デバイスの第２の部分に含まれ、前記複合デバイスの前記第１の部分は、前記複合デバイスの前記第２の部分から遠隔に配置されることを特徴とする請求項１９に記載のコード実行デバイス。
【請求項２５】
保護されたサービスが内部に含まれる該保護されたサービスのライブラリをさらに備えることを特徴とする請求項１９に記載のコード実行デバイス。
【請求項２６】
アプリケーションが内部に含まれる該アプリケーションのライブラリをさらに備えることを特徴とする請求項１９に記載のコード実行デバイス。
【請求項２７】
保護されたサービスのライブラリからサービスを消費するように構成されたアプリケーションと、
前記アプリケーションから実行を求める要求を受け取るように構成された、保護されたサービスの前記ライブラリ内の保護されたサービスと、
前記保護されたサービスの動作を規定する規則に基づき、前記要求に許可コードまたは拒否コードを返すように構成されたメータリングエンジンとを備えることを特徴とする被管理コード環境。
【請求項２８】
前記保護されたサービスおよび前記メータリングエンジンは、異なるランタイムエリア内で動作することを特徴とする請求項２７に記載の被管理コード環境。
【請求項２９】
前記メータリングエンジンは、
前記保護されたサービスとの安全な通信のために構成された実施エンジンと、
前記保護されたサービスの動作を規定する前記規則を前記実施エンジンに供給するように構成されたサービス契約と、
前記保護されたサービスおよび前記アプリケーションの過去の動作を反映する履歴データを前記実施エンジンに供給するように構成されたメータリングデータの安全なストアとを含むことを特徴とする請求項２７に記載の被管理コード環境。
【請求項３０】
前記メータリングエンジンは、
前記保護されたサービスの動作を規定する前記規則を含むサービス契約と、
メータリングデータの安全なストアと、
前記アプリケーションのＩＤ、前記保護されたサービスのＩＤ、およびメータリングデータの前記安全なストアからのデータを前記分析に対する入力として使用して前記サービス契約を分析すること、および
前記分析を反映するようにメータリングデータの前記安全なストアを更新することにより、前記許可コードまたは前記拒否コードを返すように構成された実施エンジンとを含むことを特徴とする請求項２７に記載の被管理コード環境。
【請求項３１】
コードの実行をメータリングするためのコード実行デバイスであって、
アプリケーションから保護されたサービスを呼び出すための手段と、
前記保護されたサービスからメータリングエンジンを呼び出すための手段と、
契約を分析して、前記アプリケーションによる前記保護されたサービスの使用を許可するか、または禁止するかを判定するための手段とを備えることを特徴とするデバイス。
【請求項３２】
許可が適切であると判定された場合、
前記保護サービスにおいて定義された、前記アプリケーションによって要求された機能を実行するための手段と、
前記実行の結果を前記アプリケーションに返すための手段とをさらに備えることを特徴とする請求項３１に記載のコード実行デバイス。
【請求項３３】
拒否が適切であると判定された場合、前記拒否の通知を前記アプリケーションに返すための手段をさらに含むことを特徴とする請求項３１に記載のコード実行デバイス。
【請求項３４】
前記契約を分析するための前記手段は、
前記アプリケーションのＩＤ、前記保護されたサービスのＩＤ、前記契約内の規則、およびメータリングデータの安全なストアからのデータを前記分析に対する入力として使用して前記契約を分析するための手段と、
前記分析を反映するようにメータリングデータの前記安全なストアを更新するための手段とを含むことを特徴とする請求項３１に記載のコード実行デバイス。
【請求項３５】
前記メータリングエンジンを呼び出すための前記手段は、
前記保護されたサービスと前記メータリングエンジンとの間で安全な接続を開くための手段と、
前記保護されたサービスと前記メータリングエンジンとを異なるランタイムエリア内で動作させるための手段とを含むことを特徴とする請求項３１に記載のコード実行デバイス。
【請求項３６】
前記メータリングは、被管理コード環境内で実行されることを特徴とする請求項３１に記載のコード実行デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、コードのメータリングされた実行に関する。
【背景技術】
【０００２】
デジタル権利管理は、音楽、映画、およびその他の著作権で保護されたデータをベースとするマテリアルなど、「コンテンツ」の保護に焦点をあて、広範囲にわたって扱ってきた。具体的には、そのようなマテリアルを、コピー、ならびにコンテンツプロバイダとコンテンツ消費者の間のライセンス契約に違反する他の使用から保護するために使用することができる様々な暗号化戦略（ｓｔｒａｔｅｇｙ）の研究が行われてきた。
【０００３】
実行可能ソフトウェアコードは、従来、消費者がソフトウェア購入（「シュリンク包装された」、またはダウンロードされた）を行い、コンピュータシステム上にそのソフトウェアをインストールし、ライセンス契約に同意するという異なるモデルに従ってきた。上記の時点で、従来のシステムおよび方法は、（通常、ソフトウェアをインストールすることができるマシンの数を規定するライセンス契約に合うように）消費者が、ソフトウェア購入に含まれるコードの任意の部分を所望される任意の度合いで実行することを許す。
【０００４】
前述した実行可能ソフトウェアに関する現行のライセンスモデルは、ソフトウェア購入決定を行う際、「全か無か（ａｌｌ  ｏｒ  ｎｏｔｈｉｎｇ）」の選択、すなわち、すべての費用を被り、すべての恩恵を受けるか、またはすべての費用とすべての恩恵をなしで済ますかの選択を消費者に与える。このため、購入分析には、通常、消費者が、使用の閾値レベルを超えることを予想しているかどうかについての判定を必要とする。超えると予想する場合、購入が行われ、超えると予想しない場合、購入は行われない。一部の状況では、このモデルは、ソフトウェア製作者として満足できるものではない可能性がある。というのは、消費者が、自身のソフトウェア製品の使用が少ないと予想して購入を行うことを断った場合、売れ行きが低下するからである。このモデルは、消費者にも同様に満足のいくものではない。というのは、消費者は、ソフトウェア製品の必要性を不正確に見積る可能性があるからである。そのような見込み違いにより、購入品がほとんど使用されないこと、または予想したよりも大きかったニーズが満たされないことになる可能性がある。さらに、消費者が、使用が少ないと正しく見積り、購入をなしで済ませた場合でも、消費者のソフトウェア製品の必要性が満たされていないため、不満が存在する。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
したがって、ソフトウェアコードの動作のライセンス契約を行う代替の技術の必要性が存在する。
【課題を解決するための手段】
【０００６】
ランタイムにコードの実行をメータリング（ｍｅｔｅｒｉｎｇ）するためのシステムおよび方法を説明する。一実装では、保護されたサービスの実行を要求するコールが受け取られる。これに応答して、実行の許可が要求される。許可を求める要求が分析される。許可の付与は、この分析に基づく。
【０００７】
添付の図面を参照して詳細な説明を述べる。図では、符号の左端の数字により、その符号が最初に出現する図が特定される。異なる図における同一の符号の使用は、類似するアイテム、または同一のアイテムを示す。
【発明を実施するための最良の形態】
【０００８】
概要
以下の説明は、コードの実行をメータリングするシステムおよび方法を対象とする。そのようなシステムおよび方法は、コンピュータシステム、携帯電話、その他多数などのあらゆるコード実行デバイスに適合可能である。一実装では、アプリケーション、またはライブラリとして編成された複数のアプリケーションが、やはりライブラリとして構成されることが可能な１つまたは複数の保護されたサービスの動作を呼び出すコールを行う。保護されたサービスは、料金請求、ソフトウェアライセンス契約、セキュリティ、児童保護、または他の諸目的に関連する理由などで、動作および機能が管理されることが所望される実行可能コードであることが可能である。それぞれの保護されたサービスの実行は、別々に管理されることが可能であるため、実行可能コードのライセンス契約は、「粒状（ｇｒａｎｕｌａｒ）」にすることができ、すなわち、実行可能コードの小さい機能ブロックのライセンス契約を行い、それにより、より大きいコードブロックのライセンス契約を行うことの代替を提供することができる。これは、ベンダが利用するための貴重な販売ツールを提供することができる。というのは、そのようなツールにより、消費者が、実行することを所望するコードだけのライセンス契約を行うことが可能になるからである。
【０００９】
アプリケーションによって呼び出されると、保護されたサービスは、保護されたサービスを呼び出したアプリケーションが、そうする許可を有するかどうかを判定する分析を実行するようにメータリングエンジンに求める。許可は、通常、メータリングデータに鑑みて評価されるサービス契約で定められる。例えば、サービス契約は、保護されたサービスに対するアプリケーションによるある回数のコールを、場合により、時間に応じて、許すことが可能である。この場合、保護されたサービスに対する以前のコールの履歴、および、場合により、以前のコールの回数が、メータリングデータに含まれる。メータリングエンジンによるサービス契約およびメータリングデータの分析により、保護されたサービスの実行を求めるアプリケーションの要求の許可または拒否の決定がもたらされる。次に、許可される場合、保護されたサービスが実行され、結果をアプリケーションに返す。
【００１０】
典型的な装置
図１は、コンピュータシステム、携帯電話、ＰＤＡ，エンターテイメントデバイス（例えば、セットトップボックス、ケーブルボックス、デジタルオーディオプレーヤー、ＤＶＤなど）、あるいはソフトウェアを実行することができる他のデバイスであることが可能なコード実行デバイス１００の例を示す。アプリケーション１０２、またはアプリケーションのライブラリ１０２（１）ないし１０２（Ｎ）が、デバイス１００上で実行されるように構成される。アプリケーションは、任意のタイプのソフトウェアであることが可能である。可能なアプリケーションの例には、ワークステーション上で実行されるように構成されたオフィス生産性ソフトウェア、または携帯電話上で実行されるように構成されたテキストメッセージングアプリケーションが含まれる。例示的なアプリケーションライブラリ１０２（１）ないし１０２（Ｎ）は、例えば、オフィス生産性スイート（ｓｕｉｔｅ）などのより大型のプログラムに関連する複数の機能ブロックを含むことが可能である。
【００１１】
アプリケーション１０２は、１つまたは複数の保護されたサービス１０６（１）ないし１０６（Ｊ）に対してコールを行うように構成される。保護されたサービスは、以下により完全に明らかにするとおり、メータリングされたコード実行の対象となるという点で、「保護されている」。保護されたサービスは、ほとんどあらゆる目的で構成されることが可能な実行可能ソフトウェアルーチンである。例えば、コード実行デバイス１００が、携帯電話である場合、保護されたサービスは、動作がメータリングされるべき機能をサポートすることができる。そのような環境では、保護されたサービスは、テキストメッセージを送信すること、自動転送（ｃａｌｌ−ｆｏｒｗａｒｄｉｎｇ）セットアップを円滑にすること、あるいはメータリングされた実行が所望される他の機能などの諸機能をサポートすることができる。コード実行デバイス１００がワークステーションである代替の実施例では、保護されたサービスは、動作がメータリングされるべきオフィス生産性スイートの拡張された諸機能をサポートすることができる。そのような環境では、保護されたサービスは、頻繁に使用されることも、そうでないことも可能な諸機能をサポートすることができる。例えば、保護されたサービスは、ｐｄｆファイルの作成、外国語スペルチェッカ（ｆｏｒｅｉｇｎ  ｓｐｅｌｌ−ｃｈｅｃｋｅｒ）の動作、あるいはメータリングされた実行が所望される他の機能などの諸機能をサポートすることができる。
【００１２】
それぞれの保護されたサービス１０６は、アプリケーション１０２によって呼び出されると、メータリングエンジン１０８を呼び出すように構成される。メータリングエンジン１０８は、アプリケーション１０２、または直接の呼び出し元（例えば、スタック内に位置することが可能な）が、保護されたサービス１０６を実行する許可を有するかどうかの判定を行う。メータリングエンジン１０８に対する保護されたサービス１０６からのコールは、通常、安全な伝送レイヤ１１０を使用して行われる。安全な伝送レイヤは、強固な暗号法、安全なソケット、あるいは安全な通信のための任意の従来の、または新たに開発された戦略を利用することができる。
【００１３】
一実装では、アプリケーション１０２および保護されたサービス１０６は、単一のランタイムエリア内に配置されることが可能であることに留意されたい。代替として、アプリケーション１０２と保護されたサービス１０６は、それぞれ、各ランタイムエリア内に配置されたメモリが１０４を境界とする別々のランタイムエリア１０３、１０５において実行されてもよい。同様に、メータリングエンジン１０８は、１１２を境界とするメモリ内の別個のランタイムエリア１０７内で、または別個のマシンまたはデバイスにおいて実行されることが可能であるが、一部の実装では、メータリングエンジン１０８は、アプリケーション１０２および／または保護されたサービス１０６と同一のランタイムエリア内で実行されることが可能である。
【００１４】
典型的なメータリングエンジン１０８内の構造を図１に示す。実施（ｅｎｆｏｒｃｅｍｅｎｔ）エンジン１１４が、実行する許可を要求する際、アプリケーション１０２によって呼び出された保護されたサービス１０６と安全な形で通信するように構成される。実施エンジン１１４は、メータリングデータの安全なストア１１６、および１つまたは複数のサービス契約１１８（１）〜１１８（Ｋ）と通信するようにさらに構成される。
【００１５】
メータリングデータの安全なストア１１６は、１つまたは複数の保護されたサービスの使用量に関係のあるデータを含むように構成される。例えば、メータリングデータ１１６は、アプリケーションが各コールを行って、任意の保護されたサービスが呼び出された合計回数、およびコールの時刻に関する情報を含むことが可能である。そのようなデータは、例えば、コード実行デバイス１００が携帯電話であり、問題の保護されたサービス１０６が、テキストメッセージングサービスを提供するために構成されていることが可能である場合に役立つ。この例では、メータリングデータ１１６は、過去のテキストメッセージの数および時刻に関する情報を含むことが可能である。この情報は、保護されたサービス１０６のさらなる実行が許されるかどうかを判定するのに、多くの状況において役立つであろう。
【００１６】
１つまたは複数のサービス契約１１８（１）〜１１８（Ｋ）が、メータリングエンジン１０８内部に含まれることが可能である。サービス契約１１８は、１つまたは複数の保護されたサービス１０６の使用を規定する規則を含む。例えば、サービス契約１１８内の規則は、保護されたサービス１０６が実行されることが可能な最大回数、またはそのようなサービスがある期間内に実行されることが可能な最大回数を示すことが可能である。代替として、サービス契約１１８内の規則は、ある日付を課し、その日付を過ぎると、保護されたサービスの実行がもはや許されないことも可能である。読者には容易に理解されるとおり、任意の数、および任意のタイプの規則が、サービス契約内に含まれることが可能である。
【００１７】
実装に応じて、１つまたは複数のサービス契約１１８が存在することが可能である。メータリングエンジン１０８が携帯電話内に構成された実装では、１つまたは複数の保護されたサービスを規定する単一のサービス契約１１８が存在することが可能である。メータリングエンジン１０８が、コンピュータで使用されるように構成された別の実装では、より複雑なセットの保護されたサービス１０６（１）〜１０６（Ｊ）の実行を規定する規則を提供する複数のサービス契約１１８（１）〜１１８（Ｋ）が存在することが可能である。
【００１８】
図１は、１０４、１１２を境界とする別々のランタイムエリア１０３、１０５、１０７の１つまたは複数を伴って解釈されることも、伴わずに解釈されることも可能である。一実施形態では、アプリケーション１０２、保護されたサービス１０６、およびメータリングエンジン１０８の１つまたは複数は、保護されたメモリエリア１０３、１０５、１０７を使用することなどにより、別々のランタイム環境において動作することができる。代替の実施形態では、１つまたは複数の保護されたランタイム環境１０３、１０５、１０７は、結合されてもよい。さらに、ソフトウェア１０２、１０６、および１０８のいくつか、またはすべては、被管理コード（ｍａｎａｇｅｄ  ｃｏｄｅ）環境の一部であること、またはその環境内に含まれることが可能である。被管理コード環境の一例が、マイクロソフトコーポレーション（会社名）からの．ＮＥＴソフトウェア技術である。
【００１９】
図１のコード実行デバイス１００は、図示するとおり、モノリシックであることが可能であり、したがって、メータリングエンジン１０８を含むことが可能である。代替として、コード実行デバイスは、図２に示すとおり、複合型（ｃｏｍｐｏｕｎｄ）であってもよい。図２の実装では、コード実行デバイス２００は、メータリングエンジン１０８を含む遠隔に配置されたデバイス２０２と通信する。この例では、コード実行デバイス２００とメータリングエンジン１０８との間の通信は、所望に応じて、インターネットを介して、または他のシステムおよび方法によって行われることが可能である。
【００２０】
例示的な方法
図３は、保護されたサービスの実行をメータリングするための例示的なプロセス３００を表す流れ図である。表されたプロセスの要素は、例えば、ＡＳＩＣ上のハードウェア論理ブロックを含む任意の適切な手段によって、またはプロセッサ可読媒体上に定義されたプロセッサ可読命令の実行によって実行されることが可能である。
【００２１】
本明細書で使用する「プロセッサ可読媒体」は、プロセッサによって使用される、または実行される命令を含む、格納する、通信する、伝搬する、またはトランスポートすることができる任意の手段であることが可能である。プロセッサ可読媒体は、限定としてではなく、電子、磁気、光学、電磁、赤外線、または半導体のシステム、装置、デバイス、または伝搬媒体であることが可能である。プロセッサ可読媒体のより具体的な例には、とりわけ、１つまたは複数の線を有する電気接続、ポータブルコンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能なプログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、光ファイバ、再書き込み可能ＣＤ（ＣＤ−ＲＷ）、ポータブルＣＤ−ＲＯＭ（ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）が含まれる。
【００２２】
図３を再び参照すると、プロセス３００は、多くの異なるコンピューティング環境において実施することができるが、説明のため、図１のコード実行デバイス１００に関連して説明する。ブロック３０２で、アプリケーション１０２が、１つまたは複数の保護されたサービス１０６に含まれる機能の必要性があると判定する。これに応じて、アプリケーションは、保護されたサービスの実行を要求するコールを行い、このコールが、保護されたサービス１０６によって受け取られる。
【００２３】
ブロック３０４で、安全な接続チャネルまたは通信チャネルが、保護されたサービス１０６とメータリングエンジン１０８の間で、通常、開かれる。前述したとおり、メータリングエンジン１０８は、保護されたサービス１０６と同一のコード実行デバイス１００上に含まれることが可能である。代替として、メータリングエンジンは、遠隔に配置されてもよい。これが該当する場合、安全な通信チャネルは、インターネット、またはその他のネットワークを介して作成されることが可能である。
【００２４】
ブロック３０６で、メッセージが、保護されたサービスからメータリングエンジンに送られる。ブロック３０４で安全な接続またはチャネルが開かれている場合、暗号化は、通常、要求されない。しかし、安全な接続またはチャネルが利用できない場合、メッセージは、Ｐｒｅｔｔｙ  Ｇｏｏｄ  Ｐｒｉｖａｃｙ（登録商標）暗号法、またはその他の暗号法の適用などにより、通常、暗号化される。ブロック３０８で、保護されたサービスを実行する許可を要求するメッセージが、メータリングエンジンによって受け取られる。
【００２５】
ブロック３１０で、保護されたサービスを使用する許可が、サービス契約１１８、ならびにメータリングデータの安全なストア１１６から獲得されたデータの分析に基づき、メータリングエンジン１０８によって判定される。サービス契約は、保護されたサービス１０６の動作を規定する１つまたは複数の規則を含む。規則の例には、所定の回数を超える保護されたサービスの使用、またはある日付を過ぎた保護されたサービスの使用に対する制限が含まれる。同様に、多種多様な規則も構想することができる。
【００２６】
保護されたサービスの使用を許可する、または拒否する決定を行う際、メータリングエンジン１０８は、通常、メータリングデータの安全なストア１１６にアクセスし、ストア１１６は、サービス契約１１８内に含まれる規則が適用されることが可能な情報を提供する。ブロック３１２で、メータリングデータ１１６が、保護されたサービスによって行われたコールを反映するように更新される。例えば、サービス契約１１８内の規則が、保護されたサービスの許される実行回数を明示している場合、メータリングデータ１１６は、保護されたサービスの追加の実行を反映するように更新される。
【００２７】
ブロック３１４で、メータリングエンジンによる分析により、保護されたサービスを実行する許可が適切に付与されることが示された場合、許可コードが、メータリングエンジンによって発行され、代替として、拒否コードが発行されることが可能である。これに応じて、保護されたサービス１０６が実行される（ブロック３１６）。ブロック３１８で、保護されたサービスは、動作の結果を呼び出し側アプリケーション１０２に返すことができる。
【００２８】
代替として、メータリングエンジンによる分析が、保護されたサービスの使用の拒否をもたらした場合、保護されたサービスは、実行できなかったという通知を呼び出し側アプリケーション１０２に返すように指示される（ブロック３２０）。
【００２９】
流れ図、ならびに流れ図のブロックに関連する本文で１つまたは複数の方法を開示したが、ブロックは、必ずしもブロックが提示された順序で実行される必要はなく、代替の順序も、同様の利点をもたらすことが可能であることを理解されたい。さらに、方法は、排他的ではなく、単独でも、互いに組み合わせても実行することができる。
【００３０】
例示的なコード実行デバイス
図４は、コードのメータリングされた実行が実施されることが可能なコード実行システム１００を示す。任意のタイプのコード実行デバイスが、コードのメータリングされた実行を利用することができるが、図４の実施例では、コード実行システム１００は、コード実行がメータリングされることが可能なコンピュータワークステーションとして構成されている。
【００３１】
コード実行システム１００は、コンピュータ４０２の形態の汎用コンピューティングシステムを含む。コンピュータ４０２のコンポーネントには、１つまたは複数のプロセッサまたは処理装置４０４、システムメモリ４０６、ならびにプロセッサ４０４からシステムメモリ４０６までを含む様々なシステムコンポーネントを結合するシステムバス４０８が含まれることが可能であるが、以上には限定されない。システムバス４０８は、様々なバスアーキテクチャのいずれかを使用する、メモリバスまたはメモリコントローラ、周辺バス、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス、グラフィック専用高速バス（ａｃｃｅｌｅｒａｔｅｄ  ｇｒａｐｈｉｃｓ  ｐｏｒｔ）、およびプロセッサバスまたはローカルバスを含むいくつかのタイプのバス構造の１つまたは複数を代表する。
【００３２】
コンピュータ４０２は、通常、様々なコンピュータ可読媒体を含む。そのような媒体は、コンピュータ４０２がアクセスすることができる任意の利用可能な媒体であることが可能であり、揮発性媒体と不揮発性媒体、リムーバブルな媒体と固定の媒体がともに含まれる。システムメモリ４０６は、ランダムアクセスメモリ（ＲＡＭ）４１０のような不揮発性メモリの形態、および／または読み取り専用メモリ（ＲＯＭ）４１２のような不揮発性メモリの形態でコンピュータ可読媒体を含む。始動時などに、コンピュータ４０２内部の要素間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム（ＢＩＯＳ）４１４が、ＲＯＭ４１２の中に格納される。ＲＡＭ４１０は、通常、処理装置４０４が即時にアクセスすることができ、かつ／または現在、処理しているデータおよび／またはプログラムモジュール群を含む。
【００３３】
コンピュータ４０２は、他のリムーバブルな／固定の、揮発性／不揮発性のコンピュータ記憶媒体も含むことが可能である。例として、図４は、固定の不揮発性磁気媒体（図示せず）に対して読み取りおよび書き込みを行うためのハードディスクドライブ４１６、リムーバブルな不揮発性の磁気ディスク４２０（例えば、「フロッピー（登録商標）ディスク」）に対して読み取りおよび書き込みを行うための磁気ディスクドライブ４１８、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光媒体などの、リムーバブルな不揮発性の光ディスク４２４に対して読み取りおよび／または書き込みを行うための光ディスクドライブ４２２を示す。ハードディスクドライブ４１６、磁気ディスクドライブ４１８、および光ディスクドライブ４２２はそれぞれ、１つまたは複数のデータ媒体インタフェース４２５でシステムバス４０８に接続される。代替として、ハードディスクドライブ４１６、磁気ディスクドライブ４１８、および光ディスクドライブ４２２は、ＳＣＳＩインタフェース（図示せず）でシステムバス４０８に接続することもできる。
【００３４】
ディスクドライブ群、および関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性ストレージをコンピュータ４０２に提供する。この実施例は、ハードディスク４１６、リムーバブルな磁気ディスク４２０、およびリムーバブルな光ディスク４２４を示しているが、磁気カセットまたは他の磁気記憶装置、フラッシュメモリカード、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）または他の光ストレージ、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、電気的に消去可能なプログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）などの、コンピュータがアクセス可能なデータを格納することができる他のタイプのコンピュータ可読媒体も、例示的なコンピューティングシステムおよびコンピューティング環境を実施するのに利用できることを理解されたい。
【００３５】
例として、オペレーティングシステム４２６、１つまたは複数のアプリケーションプログラム４２８、他のプログラムモジュール群４３０、およびプログラムデータ４３２を含め、任意の数のプログラムモジュールが、ハードディスク４１６、磁気ディスク４２０、光ディスク４２４、ＲＯＭ４１２、および／またはＲＡＭ４１０に格納されることが可能である。そのようなオペレーティングシステム４２６、１つまたは複数のアプリケーションプログラム４２８、他のプログラムモジュール群４３０、およびプログラムデータ４３２のそれぞれ（または以上の何らかの組み合わせ）が、ユーザネットワークアクセス情報のキャッシュスキーム（ｃａｃｈｉｎｇ  ｓｃｈｅｍｅ）の実施形態を含むことが可能である。
【００３６】
コンピュータ４０２は、通信媒体として特定される様々なコンピュータ／プロセッサ可読媒体を含むことが可能である。通信媒体は、通常、搬送波などの変調されたデータ信号、またはその他のトランスポート機構でコンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを実体化し、あらゆる情報配信媒体が含まれる。「変調されたデータ信号」という用語は、信号に情報を符号化するような形で特性の１つまたは複数が設定または変更された信号を意味する。限定としてではなく例として、通信媒体には、有線ネットワークまたは直接有線接続などの有線媒体、ならびに音響媒体、ＲＦ媒体、赤外線媒体、およびその他の無線媒体などの無線媒体が含まれる。以上の媒体のいずれかの組み合わせも、コンピュータ可読媒体の範囲内に含まれる。
【００３７】
ユーザは、キーボード４３４やポインティングデバイス４３６（例えば、「マウス」）などの入力デバイス群を介して、コマンドおよび情報をコンピュータシステム４０２に入力することができる。その他の入力デバイス群４３８（特に図示せず）には、マイク、ジョイスティック、ゲームパッド、サテライトディッシュ、シリアルポート、スキャナ、および／または同様のデバイスが含まれることが可能である。以上の入力デバイス群、およびその他の入力デバイス群は、システムバス４０８に結合された入出力インタフェース群４４０を介して処理装置４０４に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などの他のインタフェースおよびバス構造で接続してもよい。
【００３８】
モニタ４４２、または他のタイプのディスプレイデバイスも、ビデオアダプタ４４４のようなインタフェースを介してシステムバス４０８に接続することができる。モニタ４４２に加え、その他の出力周辺デバイス群には、入出力インタフェース群４４０を介してコンピュータ４０２に接続することができるスピーカ（図示せず）やプリンタ４４６などのコンポーネントが含まれることが可能である。
【００３９】
コンピュータ４０２は、リモートコンピューティングデバイス４４８のような、１つまたは複数のリモートコンピュータに対する論理接続を使用するネットワーク化された環境において動作することができる。例として、リモートコンピューティングデバイス４４８は、パーソナルコンピュータ、ポータブルコンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピアデバイス、またはその他の一般的なネットワークノードであることが可能である。リモートコンピューティングデバイス４４８は、コンピュータシステム４０２に関連して本明細書で説明した要素および機能の多く、またはすべてを含むことが可能なポータブルコンピュータとして例示されている。
【００４０】
コンピュータ４０２とリモートコンピュータ４４８との間の論理接続が、ローカルエリアネットワーク（ＬＡＮ）４５０および一般的なワイドエリアネットワーク（ＷＡＮ）４５２として表されている。そのようなネットワーキング環境は、オフィス、企業全体のコンピュータ網、イントラネット、およびインターネットで一般的である。ＬＡＮネットワーキング環境において実装される場合、コンピュータ４０２は、ネットワークインタフェースまたはネットワークアダプタ４５４を介してローカルネットワーク４５０に接続される。ＷＡＮネットワーキング環境において実装される場合、コンピュータ４０２は、通常、モデム４５６、または広域ネットワーク４５２を介して通信を確立するための他の手段を含む。コンピュータ４０２の内蔵または外付けとすることが可能なモデム４５６は、入出力インタフェース群４４０、または他の適切な機構を介して、システムバス４０８に接続することができる。図示したネットワーク接続は例示であり、コンピュータ４０２および４４８の間で通信リンクを確立する他の手段も使用することができることを理解されたい。
【００４１】
コンピューティング環境４００で例示したようなネットワーク化された環境では、コンピュータ４０２に関連して示したプログラムモジュール群、またはプログラムモジュール群の諸部分は、リモートメモリ記憶装置の中に格納することができる。例として、リモートアプリケーションプログラム群４５８が、リモートコンピュータ４４８のメモリデバイス上に存在する。例示のため、オペレーティングシステムなどのアプリケーションプログラム群、およびその他の実行可能プログラムコンポーネントは、本明細書では、個別のブロックとして示しているが、そのようなプログラム群およびコンポーネントは、様々な時点で、コンピュータシステム４０２の異なる記憶コンポーネントに常駐し、コンピュータのデータプロセッサによって実行されることが認識されよう。
【００４２】
結論
本発明を構造上の特徴および／または方法上の動作に特有の言葉遣いで説明してきたが、添付の特許請求の範囲で定義される本発明は、説明した特定の特徴または動作に必ずしも限定されないことを理解されたい。むしろ、特定の特徴および動作は、請求する発明を実施するための例示的形態として開示している。
【図面の簡単な説明】
【００４３】
【図１】典型的なアプリケーションまたはアプリケーションライブラリ、複数の保護されたサービス、およびメータリングエンジンが内部に示されたコード実行デバイスの実施例を示す図である。
【図２】複合構造が、メータリングエンジンからコード実行デバイスを分離するコード実行デバイスの第２の実施例を示す図である。
【図３】保護されたサービスの実行をメータリングするための方法を特に示す、メータリングされたコード実行の例示的な実装を表す流れ図である。
【図４】コードのメータリングされた実行が実施されることが可能な例示的なコード実行デバイスを示す図である。
【符号の説明】
【００４４】
１００、２００  コード実行デバイス
１０２（１）  アプリケーション
１０６（１）  保護されたサービス
１０８  メータリングエンジン
１１０  安全な伝送レイヤ
１１４  実施エンジン
１１６  メータリングデータの安全なストア
１１８（１）  サービス契約
２０２  リモートデバイス
【図１】
2005259126.tif 000003
【図２】
2005259126.tif 000004
【図３】
2005259126.tif 000005
【図４】
2005259126.tif 000006
【外国語明細書】
2005259126000001.pdf