(57)【要約】  デバイスドライバのインストール時において、当該デバイスドライバがフィルタオブジェクトに予め定義されたエントリポイント通知関数を呼び出した場合に、フィルタオブジェクトが当該デバイスドライバのエントリポイントを抽出し、エントリポイントが抽出された後に、フィルタオブジェクトが、当該フィルタオブジェクトのエントリポイントを引数に設定してカーネルのエントリポイント通知関数を呼び出すことにより、アプリケーションから対象デバイスに対し行われる要求内容を抽出する。【特許請求の範囲】
【請求項１】
カーネルからエントリ関数を呼び出させることにより対象デバイスを動作させるソフトウェアであるデバイスドライバと結合するように設定され、かつ、前記デバイスドライバが前記エントリ関数のメモリアドレスの集合であるエントリポイントを前記カーネルに対して通知するエントリポイント通知関数と、自身のエントリポイントとを予め定義したフィルタオブジェクトが、アプリケーションから前記対象デバイスに対し行なわれる要求内容を抽出する要求内容抽出方法をコンピュータに実行させる要求内容抽出プログラムであって、
前記デバイスドライバのインストール時において、当該デバイスドライバが前記フィルタオブジェクトに予め定義された前記エントリポイント通知関数を呼び出した場合に、前記フィルタオブジェクトが当該デバイスドライバの前記エントリポイントを抽出するエントリポイント抽出手順と、
前記エントリポイント抽出手順によって前記エントリポイントが抽出された後に、前記フィルタオブジェクトが、当該フィルタオブジェクトのエントリポイントを引数に設定して前記カーネルのエントリポイント通知関数を呼び出して前記要求内容を抽出する要求内容抽出手順と、
をコンピュータに実行させることを特徴とする要求内容抽出プログラム。
【請求項２】
前記フィルタオブジェクトが、前記要求内容抽出手順によって前記要求内容を抽出した際に、自身のエントリポイントへ渡された引数をそのまま設定して、前記エントリポイント抽出手順によって抽出された前記デバイスドライバの前記エントリポイントのエントリ関数を呼び出すことにより、前記要求内容それぞれを前記デバイスドライバに通知する要求内容通知手順をさらにコンピュータに実行させることを特徴とする請求項１に記載の要求内容抽出プログラム。
【請求項３】
カーネルからエントリ関数を呼び出させることにより対象デバイスを動作させるソフトウェアであるデバイスドライバと結合するように設定され、かつ、前記デバイスドライバが前記エントリ関数のメモリアドレスの集合であるエントリポイントを前記カーネルに対して通知するエントリポイント通知関数と、自身のエントリポイントとを予め定義したフィルタオブジェクトが、アプリケーションから前記対象デバイスに対し行なわれる要求内容を抽出する要求内容抽出方法であって、
前記デバイスドライバのインストール時において、当該デバイスドライバが前記フィルタオブジェクトに予め定義された前記エントリポイント通知関数を呼び出した場合に、前記フィルタオブジェクトが当該デバイスドライバの前記エントリポイントを抽出するエントリポイント抽出工程と、
前記エントリポイント抽出工程によって前記エントリポイントが抽出された後に、前記フィルタオブジェクトが、当該フィルタオブジェクトのエントリポイントを引数に設定して前記カーネルのエントリポイント通知関数を呼び出して前記要求内容を抽出する要求内容抽出工程と、
を含んだことを特徴とする要求内容抽出方法。
【請求項４】
前記フィルタオブジェクトが、前記要求内容抽出工程によって前記要求内容を抽出した際に、自身のエントリポイントへ渡された引数をそのまま設定して、前記エントリポイント抽出工程によって抽出された前記デバイスドライバの前記エントリポイントのエントリ関数を呼び出すことにより、前記要求内容それぞれを前記デバイスドライバに通知する要求内容通知工程をさらに含んだことを特徴とする請求項３に記載の要求内容抽出方法。
【請求項５】
カーネルからエントリ関数を呼び出させることにより対象デバイスを動作させるソフトウェアであるデバイスドライバと結合するように設定され、かつ、前記デバイスドライバが前記エントリ関数のメモリアドレスの集合であるエントリポイントを前記カーネルに対して通知するエントリポイント通知関数と、自身のエントリポイントとを予め定義したフィルタオブジェクトが、アプリケーションから前記対象デバイスに対し行なわれる要求内容を抽出する要求内容抽出装置であって、
前記デバイスドライバのインストール時において、当該デバイスドライバが前記フィルタオブジェクトに予め定義された前記エントリポイント通知関数を呼び出した場合に、前記フィルタオブジェクトが当該デバイスドライバの前記エントリポイントを抽出するエントリポイント抽出手段と、
前記エントリポイント抽出手段によって前記エントリポイントが抽出された後に、前記フィルタオブジェクトが、当該フィルタオブジェクトのエントリポイントを引数に設定して前記カーネルのエントリポイント通知関数を呼び出して前記要求内容を抽出する要求内容抽出手段と、
を備えたことを特徴とする要求内容抽出装置。
【請求項６】
前記フィルタオブジェクトが、前記要求内容抽出手段によって前記要求内容を抽出した際に、自身のエントリポイントへ渡された引数をそのまま設定して、前記エントリポイント抽出手段によって抽出された前記デバイスドライバの前記エントリポイントのエントリ関数を呼び出すことにより、前記要求内容それぞれを前記デバイスドライバに通知する要求内容通知手段をさらに備えたことを特徴とする請求項５に記載の要求内容抽出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、要求内容抽出プログラム、要求内容抽出方法および要求内容抽出装置に関する。
【背景技術】
【０００２】
従来より、デバイスドライバが、カーネルを介して、対象となるハードディスクなどのデバイス（以下、対象デバイスと記す）の動作制御を実行する方法が知られている。具体的には、デバイスドライバは、カーネルからエントリ関数を呼び出させることによりアプリケーションからの要求を対象デバイスに通知し、当該対象デバイスは、通知された要求内容に従って、例えば、Ｒｅａｄ／Ｗｒｉｔｅなどの動作を実行する。すなわち、図４の（Ａ）に示すように、要求内容が、要求元のアプリケーション、カーネルとしてのＯＳ（Operating  System）、デバイスドライバの経路で対象デバイスに伝えられる。なお、エントリ関数とは、デバイスドライバのカーネルへの登録関数のことである。【０００３】
一方、要求元のアプリケーションから対象デバイスに対する要求内容を、デバイスドライバを修正することなく抽出する技術（フィルタリング技術）に対する需要がある。すなわち、フィルタリング技術を用いて対象デバイスに対するＲｅａｄ／Ｗｒｉｔｅ要求などの内容を抽出して把握することで、例えば、業務を継続しながらも、対象デバイスへの更新要求を適宜抽出して、円滑にデータを新しいデバイスへ移行することが可能になる。また、図４の（Ｂ）に示すように、カーネルとしてのＯＳとデバイスドライバとの間に論理ボリュームを管理する論理ボリュームマネージャを設置している構成においては、フィルタリング技術を用いて論理ボリュームマネージャからの要求内容を把握することで、円滑に論理ボリュームを移行することが可能になる。なお、図４は、従来技術を説明するための図である。【０００４】
フィルタリング技術としては、対象デバイスとは独立した擬似デバイスを用いるものがある。具体的には、擬似デバイスをＯＳに設定して、対象デバイスに対して通知される要求を、擬似デバイスに対して行なわせることで、要求内容を抽出する。その後、擬似デバイスは、要求内容を対象デバイスに通知することで、対象デバイスは、従来の動作を実行する。例えば、図４の（Ｃ）に示すように、要求元のアプリケーションが対象デバイスを「デバイス番号：１」として認識している場合は、当該要求元のアプリケーションが「デバイス番号：２」である擬似デバイスを認識するように設定を変更することで、擬似デバイスを介して要求内容を抽出する。【０００５】
また、特許文献１では、デバイスドライバの不具合を発見して修正（デバック）するデバック用デバイスドライバを、デバックの対象となるデバイスドライバ（デバック対象デバイスドライバ）とリンクさせることで、デバック対象デバイスドライバの内部コードを変更することなく、デバック用の出力データを抽出する技術を開示している。【０００６】
また、特許文献２では、利用者の作成したプログラムコードを試験的に実行するシステムにおいて、システムに重大な障害を与えることを回避するために、当該システムが持つ実行時ライブラリを参照させないように、プログラムコードの実行時に使用されるライブラリ関数を同名のダミー関数と予め静的にリンクすることで、プログラムコードを修正することなく実行する技術を開示している。【０００７】
【特許文献１】特開２０００−９９３６４号公報
【特許文献２】特開２００６−１３９４６５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、上記した従来のフィルタリング技術は、要求元アプリケーションの仕様に基づいてフィルタリング方法を設計する必要があるので、容易に要求内容が抽出できないという問題点があった。すなわち、要求元アプリケーションがデバイスを識別する方法を、当該要求元アプリケーションの仕様に基づいて解明した上で、フィルタリング方法を設計する必要があり、容易に要求内容が抽出できないという問題点があった。【０００９】
また、要求元のアプリケーションのソースコードなどの仕様が完全に公開されていない場合は、対象デバイスを識別する方法の解明が困難であることから、要求元のアプリケーションの認識設定を対象デバイスから擬似デバイスに変更することができず、容易に要求内容が抽出できないという問題点があった。【００１０】
また、仮にデバイスを識別する方法を解明しても、解明した方法によっては要求元アプリケーションにおける対象デバイスの認識を擬似デバイスへ変更することが困難な場合があるので、容易に要求内容が抽出できないという問題点があった。【００１１】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、容易に要求内容を抽出することが可能になる要求内容抽出プログラム、要求内容抽出方法および要求内容抽出装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するため、請求項１に係る発明は、カーネルからエントリ関数を呼び出させることにより対象デバイスを動作させるソフトウェアであるデバイスドライバと結合するように設定され、かつ、前記デバイスドライバが前記エントリ関数のメモリアドレスの集合であるエントリポイントを前記カーネルに対して通知するエントリポイント通知関数と、自身のエントリポイントとを予め定義したフィルタオブジェクトが、アプリケーションから前記対象デバイスに対し行なわれる要求内容を抽出する要求内容抽出方法をコンピュータに実行させる要求内容抽出プログラムであって、前記デバイスドライバのインストール時において、当該デバイスドライバが前記フィルタオブジェクトに予め定義された前記エントリポイント通知関数を呼び出した場合に、前記フィルタオブジェクトが当該デバイスドライバの前記エントリポイントを抽出するエントリポイント抽出手順と、前記エントリポイント抽出手順によって前記エントリポイントが抽出された後に、前記フィルタオブジェクトが、当該フィルタオブジェクトのエントリポイントを引数に設定して前記カーネルのエントリポイント通知関数を呼び出して前記要求内容を抽出する要求内容抽出手順と、をコンピュータに実行させることを特徴とする。【００１３】
また、請求項２に係る発明は、上記の発明において、前記フィルタオブジェクトが、前記要求内容抽出手順によって前記要求内容を抽出した際に、自身のエントリポイントへ渡された引数をそのまま設定して、前記エントリポイント抽出手順によって抽出された前記デバイスドライバの前記エントリポイントのエントリ関数を呼び出すことにより、前記要求内容それぞれを前記デバイスドライバに通知する要求内容通知手順をさらにコンピュータに実行させることを特徴とする。【００１４】
また、請求項３に係る発明は、カーネルからエントリ関数を呼び出させることにより対象デバイスを動作させるソフトウェアであるデバイスドライバと結合するように設定され、かつ、前記デバイスドライバが前記エントリ関数のメモリアドレスの集合であるエントリポイントを前記カーネルに対して通知するエントリポイント通知関数と、自身のエントリポイントとを予め定義したフィルタオブジェクトが、アプリケーションから前記対象デバイスに対し行なわれる要求内容を抽出する要求内容抽出方法であって、前記デバイスドライバのインストール時において、当該デバイスドライバが前記フィルタオブジェクトに予め定義された前記エントリポイント通知関数を呼び出した場合に、前記フィルタオブジェクトが当該デバイスドライバの前記エントリポイントを抽出するエントリポイント抽出工程と、前記エントリポイント抽出工程によって前記エントリポイントが抽出された後に、前記フィルタオブジェクトが、当該フィルタオブジェクトのエントリポイントを引数に設定して前記カーネルのエントリポイント通知関数を呼び出して前記要求内容を抽出する要求内容抽出工程と、を含んだことを特徴とする。【００１５】
また、請求項４に係る発明は、上記の発明において、前記フィルタオブジェクトが、前記要求内容抽出工程によって前記要求内容を抽出した際に、自身のエントリポイントへ渡された引数をそのまま設定して、前記エントリポイント抽出工程によって抽出された前記デバイスドライバの前記エントリポイントのエントリ関数を呼び出すことにより、前記要求内容それぞれを前記デバイスドライバに通知する要求内容通知工程をさらに含んだことを特徴とする。【００１６】
また、請求項５に係る発明は、カーネルからエントリ関数を呼び出させることにより対象デバイスを動作させるソフトウェアであるデバイスドライバと結合するように設定され、かつ、前記デバイスドライバが前記エントリ関数のメモリアドレスの集合であるエントリポイントを前記カーネルに対して通知するエントリポイント通知関数と、自身のエントリポイントとを予め定義したフィルタオブジェクトが、アプリケーションから前記対象デバイスに対し行なわれる要求内容を抽出する要求内容抽出装置であって、前記デバイスドライバのインストール時において、当該デバイスドライバが前記フィルタオブジェクトに予め定義された前記エントリポイント通知関数を呼び出した場合に、前記フィルタオブジェクトが当該デバイスドライバの前記エントリポイントを抽出するエントリポイント抽出手段と、前記エントリポイント抽出手段によって前記エントリポイントが抽出された後に、前記フィルタオブジェクトが、当該フィルタオブジェクトのエントリポイントを引数に設定して前記カーネルのエントリポイント通知関数を呼び出して前記要求内容を抽出する要求内容抽出手段と、を備えたことを特徴とする。【００１７】
また、請求項６に係る発明は、上記の発明において、前記フィルタオブジェクトが、前記要求内容抽出手段によって前記要求内容を抽出した際に、自身のエントリポイントへ渡された引数をそのまま設定して、前記エントリポイント抽出手段によって抽出された前記デバイスドライバの前記エントリポイントのエントリ関数を呼び出すことにより、前記要求内容それぞれを前記デバイスドライバに通知する要求内容通知手段をさらに備えたことを特徴とする。
【発明の効果】
【００１８】
請求項１、３または５の発明によれば、デバイスドライバのインストール時において、当該デバイスドライバがフィルタオブジェクトに予め定義されたエントリポイント通知関数を呼び出した場合に、フィルタオブジェクトが当該デバイスドライバのエントリポイントを抽出し、エントリポイントが抽出された後に、フィルタオブジェクトが、当該フィルタオブジェクトのエントリポイントを引数に設定してカーネルのエントリポイント通知関数を呼び出して要求内容を抽出するので、要求元アプリケーションの仕様に依存することなく、要求元のアプリケーションからの要求内容を抽出することができるので、容易に要求内容を抽出することが可能になる。すなわち、デバイスドライバを修正したり、要求元のアプリケーションのデバイス認識を変更したりするなど、要求元アプリケーションの仕様ごとにフィルタリング方法を設計する手間を排除できるので、容易に要求内容を抽出することが可能になる。【００１９】
また、請求項２、４または６の発明によれば、フィルタオブジェクトが、要求内容を抽出した際に、自身のエントリポイントへ渡された引数をそのまま設定して、抽出されたデバイスドライバのエントリポイントのエントリ関数を呼び出すことにより、要求内容それぞれをデバイスドライバに通知するので、デバイスドライバはフィルタオブジェクトが無い時と全く同じように対象デバイスを制御することができる。そのため、例えば、業務を継続しながらも、円滑にデータを新しいデバイスへ移行するなどの付加価値の高いデバイスドライバを提供することが可能になる。
【図面の簡単な説明】
【００２０】
【図１】図１は、実施例１における制御装置の概要および特徴を説明するための図である。
【図２】図２は、実施例１における制御装置の構成を示すブロック図である。
【図３】図３は、実施例１における制御装置の処理を説明するための図である。
【図４】図４は、従来技術を説明するための図である。
【符号の説明】
【００２１】
１０  制御装置
１１  カーネル（ＯＳ）
１２  デバイスドライバ
１３  フィルタオブジェクト
１３ａ  エントリポイント抽出部
１３ｂ  要求内容抽出部
１３ｃ  要求内容通知部
１４  メモリ
１４ａ  エントリポイント記憶部
１４ｂ  要求内容記憶部
２０  管理部
３０  アプリケーション
４０  ディスク装置
４０ａ  対象デバイス
【発明を実施するための最良の形態】
【００２２】
以下に添付図面を参照して、この発明に係る要求内容抽出プログラム、要求内容抽出方法および要求内容抽出装置の実施例を詳細に説明する。なお、以下では、この発明を制御装置に適用した場合を実施例として説明する。また、以下では、実施例１における制御装置の概要および特徴、実施例１における制御装置の構成および処理の手順、実施例１の効果を順に説明する。
【実施例１】
【００２３】
［用語の説明］
まず最初に、以下の実施例で用いる主要な用語を説明する。以下の実施例で用いる「デバイスドライバ」とは、「カーネル」から「エントリ関数」を呼び出させることによりハードディスクなどの対象デバイスを動作させるソフトウェアのことであり、「カーネル」とは、「アプリケーションや周辺機器の監視」、「ハードディスクやメモリなどの資源の管理」といったＯＳ（Operating  System）の基本動作を実装したソフトウェアのことである。【００２４】
また、「エントリ関数」とは、「デバイスドライバ」の「カーネル」への登録関数のことであり、「エントリポイント通知関数」などがこれに含まれる。ここで、「エントリポイント」とは、「エントリ関数」のメモリアドレスの集合、具体的には、ｒｅａｄ、ｗｒｉｔｅなど複数の「エントリ関数」のメモリアドレスをまとめた構造体のことであり、「エントリポイント通知関数」とは、「デバイスドライバ」のインストール時に、「デバイスドライバ」が「カーネル」から呼び出す関数のことであり、「エントリポイント通知関数」が呼び出されることにより、ＯＳは、当該「デバイスドライバ」の「エントリポイント」を取得することができる。例えば、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ社が提供するＯＳであるＳｏｌａｒｉｓ（登録商標）では、「ｍｏｄ＿ｉｎｓｔａｌｌ」が「エントリポイント通知関数」となる。【００２５】
［実施例１における制御装置の概要および特徴］
続いて、図１を用いて、実施例１における制御装置の主たる特徴を具体的に説明する。図１は、実施例１における制御装置の概要および特徴を説明するための図である。【００２６】
実施例１における制御装置においては、デバイスドライバに結合するように設定され、かつ、エントリポイント通知関数および自身のエントリポイントを予め定義したフィルタオブジェクトが設置され、当該フィルタオブジェクトが、アプリケーションから対象ドライバに対し行なわれる要求内容を抽出することを概要とする。ここで、実施例１における制御装置の管理者は、デバイスドライバのインストール前に（あるいは、デバイスドライバのアンインストール後に）、リンクエディタを使用することにより（例えば、Ｓｏｌａｒｉｓ（登録商標）の場合は、ｌｄコマンドを使用することにより）、当該デバイスドライバと結合するようにフィルタオブジェクトを設定し（図１の（Ａ）の（１）参照）、さらに、当該フィルタオブジェクトに対して、エントリポイント通知関数およびエントリポイントを予め定義しておく（図１の（Ａ）の（２）参照）。【００２７】
すなわち、実施例１における制御装置は、このようにして設置されたフィルタオブジェクトを用いることにより、当該フィルタオブジェクトが、図１の（Ａ）に示すように、要求元であるアプリケーションから、カーネル（ＯＳ）、デバイスドライバの経路で対象デバイスに対し行なわれる要求の内容（例えば、Ｒｅａｄ／Ｗｒｉｔｅ要求など）を抽出することを概要とする。【００２８】
ここで、本発明は、容易に要求内容を抽出することが可能になることに主たる特徴がある。この主たる特徴について簡単に説明すると、実施例１における制御装置に設置されるフィルタオブジェクトは、デバイスドライバのインストール時において、当該デバイスドライバがフィルタオブジェクトに予め定義されたエントリポイント通知関数を呼び出した場合に、当該デバイスドライバのエントリポイントを抽出する。【００２９】
すなわち、図１の（Ｂ）に示すように、デバイスドライバのインストール時において、当該デバイスドライバは、予め実施例１における制御装置に設置されたフィルタオブジェクトと結合し、一つのファイル（ソフトウェア）として動作するようになる。そして、デバイスドライバは、カーネル（ＯＳ）のエントリポイント通知関数（Ｓｏｌａｒｉｓ（登録商標）の場合では、「ｍｏｄ＿ｉｎｓｔａｌｌ」）を呼び出すのではなく、フィルタオブジェクトのエントリポイント通知関数を呼び出し（図１の（Ｂ）の（３）参照）、これにより、フィルタオブジェクトは、当該デバイスドライバのエントリポイントを、呼び出されたエントリポイント通知関数の引数を参照することによって抽出する。例えば、フィルタオブジェクトは、Ｓｏｌａｒｉｓ（登録商標）の場合は、呼び出されたエントリポイント通知関数の引数「ｍｏｄ＿ｉｎｓｔａｌｌ（ｘｘ）のカッコ内のアドレス」を参照して、デバイスドライバのエントリポイント（ｘｘ）を抽出する（図１の（Ｂ）の（４）参照）。【００３０】
そして、実施例１における制御装置に設置されるフィルタオブジェクトは、エントリポイントが抽出された後に、当該フィルタオブジェクトのエントリポイントを引数に設定してカーネルのエントリポイント通知関数を呼び出して要求内容を抽出する。例えば、フィルタオブジェクトは、デバイスドライバのエントリポイント（ｘｘ）を抽出した後に、自身のエントリポイント（ｙｙ）を引数に設定してカーネル（ＯＳ）のエントリポイント通知関数「ｍｏｄ＿ｉｎｓｔａｌｌ（ｙｙ）」を呼び出す（図１の（Ｃ）の（５）参照）。これにより、カーネル（ＯＳ）は、要求元であるアプリケーションからの要求内容を、デバイスドライバではなく、フィルタオブジェクトに対して通知する。例えば、Ｒｅａｄ／Ｗｒｉｔｅ要求として、「ｙｙ＿ｒｅａｄ」や「ｙｙ＿ｗｒｉｔｅ」をフィルタオブジェクトに対して通知し（図１の（Ｃ）の（６）参照）、フィルタオブジェクトは、デバイスドライバから対象デバイスに対して行なわれる要求内容を抽出する。【００３１】
そして、実施例１における制御装置に設置されるフィルタオブジェクトは、要求内容を抽出した際に、自身のエントリポイントへ渡された引数をそのまま設定して、抽出されたデバイスドライバのエントリポイントのエントリ関数を呼び出すことにより、要求内容それぞれをデバイスドライバに通知する。すなわち、図１の（Ｄ）に示すように、フィルタオブジェクトは、自らが設定したエントリ関数群の個々の関数（ｙｙ＿ｒｅａｄやｙｙ＿ｗｒｉｔｅ）の中で、抽出したデバイスドライバのエントリポイントのエントリ関数（ｘｘ＿ｒｅａｄやｘｘ＿ｗｒｉｔｅ）をカーネル（ＯＳ）から呼び出すことにより、要求元であるアプリケーションからの要求内容それぞれをデバイスドライバに通知する。【００３２】
なお、カーネルから呼び出されるエントリ関数と同名の関数を、フィルタオブジェクトに定義したまま残しておくと、デバイスドライバをカーネルへ組み込む時に、シンボルの衝突エラーを引き起こすため、上記の操作が終了した後は、リンクエディタのシンボル属性定義ファイルを使用することにより、同関数のスコープをローカル属性に変更することでこれらが実行されないように設定を行なう。【００３３】
このようなことから、実施例１における制御装置においてフィルタオブジェクトを設置することにより、要求元アプリケーションの仕様に依存することなく、要求元のアプリケーションからの要求内容を抽出することができるので、上記した主たる特徴の通り、容易に要求内容を抽出することが可能になる。【００３４】
［実施例１における制御装置の構成］
次に、図２を用いて、実施例１における制御装置を説明する。図２は、実施例１における制御装置の構成を示すブロック図である。【００３５】
図２に示すように、実施例１における制御装置１０は、カーネル１１と、デバイスドライバ１２と、フィルタオブジェクト１３とから構成され、さらに、管理部２０と、アプリケーション３０と、対象デバイス４０ａを備えるディスク装置４０とに接続される。【００３６】
管理部２０は、制御装置１０の管理者から、後述するフィルタオブジェクト１３の設置に関する設定の入力を受け付けて管理したり、後述するデバイスドライバ１２のインストールを受け付けて管理したりする。【００３７】
ディスク装置４０に備えられる対象デバイス４０ａは、アプリケーション３０からの要求を、後述するデバイスドライバ１２を介して受信し、例えば、Ｒｅａｄ／Ｗｒｉｔｅなどの動作を実行するものであり、具体的には、ハードディスクなどがこれに対応する。【００３８】
カーネル（ＯＳ）１１は、ＯＳの基本動作を実装したソフトウェアであり、例えば、アプリケーション３０からの要求内容を、対象デバイスを動作させるソフトウェアであるデバイスドライバ１２を介して、対象デバイス４０ａに通知したりする。【００３９】
フィルタオブジェクト１３は、管理部２０に入力された設定に基づいて、制御装置１０に設置されるものであり、デバイスドライバ１３に結合するように設定され、かつ、エントリポイント通知関数および自身のエントリポイントが予め定義され、特に本発明に密接に関連するものとしては、図２に示すように、エントリポイント抽出部１３ａと、要求内容抽出部１３ｂと、要求内容通知部１３ｃと、メモリ１４とを備える。また、メモリ１４は、図２に示すように、エントリポイント記憶部１４ａと、要求内容記憶部１４ｂとを備える。エントリポイント記憶部１４ａは、フィルタオブジェクト１３のエントリポイントを記憶し、さらに、エントリポイント抽出部１３ａによって抽出されるエントリポイントを記憶する。また、要求内容記憶部１４ｂは、要求内容抽出部１３ｂによって抽出されたアプリケーション３０から対象デバイス４０ａへの要求内容を記憶する。ここで、エントリポイント抽出部１３ａは、請求の範囲に記載の「エントリポイント抽出手順」に対応し、要求内容抽出部１３ｂは、同じく「要求内容抽出手順」に対応し、要求内容通知部１３ｃは、同じく「要求内容通知手順」に対応する。以下、これらについて詳述する。【００４０】
エントリポイント抽出部１３ａは、デバイスドライバ１２のインストール時において、デバイスドライバ１２がフィルタオブジェクト１３に予め定義されたエントリポイント通知関数を呼び出した場合に、デバイスドライバ１２のエントリポイントを抽出し、その結果をエントリポイント記憶部１４ａに格納する。ここで、図２に示すように、デバイスドライバ１２のインストール時において、デバイスドライバ１２は、予め制御装置１０に設置されたフィルタオブジェクト１３と連結して、一つのファイルとして動作するようになる。そして、デバイスドライバ１２がフィルタオブジェクト１３に予め定義されたエントリポイント通知関数を呼び出すことにより、エントリポイント抽出部１３ａは、デバイスドライバ１２のエントリポイントを、呼び出されたエントリポイント通知関数の引数を参照することによって抽出する。例えば、フィルタオブジェクト１３は、Ｓｏｌａｒｉｓ（登録商標）の場合では、呼び出されたエントリポイント通知関数の引数「ｍｏｄ＿ｉｎｓｔａｌｌ（ｘｘ）のカッコ内のアドレス」を参照して、デバイスドライバのエントリポイント（ｘｘ）を抽出する（図１の（Ｂ）の（４）参照）。【００４１】
要求内容抽出部１３ｂは、エントリポイント記憶部１４ａにデバイスドライバ１２のエントリポイントが格納された後に、エントリポイント記憶部１４ａが記憶するフィルタオブジェクト１３のエントリポイントを引数に設定してカーネル（ＯＳ）１１のエントリポイント通知関数を呼び出して要求内容を抽出し、その結果を、要求内容記憶部１４ｂに格納する。例えば、要求内容抽出部１３ｂは、デバイスドライバ１２のエントリポイント（ｘｘ）を抽出した後に、フィルタオブジェクト１３のエントリポイント（ｙｙ）を引数に設定してカーネル（ＯＳ）１１のエントリポイント通知関数「ｍｏｄ＿ｉｎｓｔａｌｌ（ｙｙ）」を呼び出す（図１の（Ｃ）の（５）参照）。これにより、カーネル（ＯＳ）１１は、要求元であるアプリケーション３０からの要求内容（例えば、Ｒｅａｄ／Ｗｒｉｔｅ要求として、「ｙｙ＿ｒｅａｄ」や「ｙｙ＿ｗｒｉｔｅ」）をフィルタオブジェクト１３に対して通知し（図１の（Ｃ）の（６）参照）、要求内容抽出部１３ｂは、デバイスドライバ１２から対象デバイス４０ａに対して行なわれる要求内容を抽出する。【００４２】
要求内容通知部１３ｃは、フィルタオブジェクト１３のエントリポイントへ渡された引数をそのまま設定して、抽出されたデバイスドライバ１２のエントリポイントのエントリ関数を呼び出すことにより、要求内容それぞれをデバイスドライバ１２に通知する。すなわち、図１の（Ｄ）に示すように、要求内容通知部１３ｃは、フィルタオブジェクト１３が設定したエントリ関数群の個々の関数（ｙｙ＿ｒｅａｄやｙｙ＿ｗｒｉｔｅ）の中で、抽出したデバイスドライバ１２のエントリポイントのエントリ関数（ｘｘ＿ｒｅａｄやｘｘ＿ｗｒｉｔｅ）をカーネル（ＯＳ）１１から呼び出すことにより、要求元であるアプリケーションからの要求内容それぞれをデバイスドライバ１２に通知する。【００４３】
［実施例１における制御装置による処理の手順］
次に、図３を用いて、実施例１における制御装置１０による処理を説明する。図３は、実施例１における制御装置の処理を説明するための図である。【００４４】
図３に示すように、まず、実施例１における制御装置１０は、フィルタオブジェクト１３の設定が終了し、デバイスドライバ１２のインストールが開始されると（ステップＳ３０１肯定）、エントリポイント抽出部１３ａは、デバイスドライバ１２のエントリポイントを抽出する（ステップＳ３０２）。【００４５】
すなわち、「デバイスドライバ１２と結合し、かつ、エントリポイント通知関数およびエントリポイントを定義する」というフィルタオブジェクト１３に関する設定が管理部２０に対して入力されたことにより、制御装置１０にフィルタオブジェクト１３が設置され、そののち、デバイスドライバ１２のインストールが開始されると、デバイスドライバ１２は、フィルタオブジェクト１３と結合される。ここで、デバイスドライバ１２がフィルタオブジェクト１３に予め定義されたエントリポイント通知関数を呼び出すことにより、エントリポイント抽出部１３ａは、デバイスドライバ１２のエントリポイントを、呼び出されたエントリポイント通知関数の引数を参照することによって抽出する。【００４６】
そして、要求内容抽出部１３ｂは、エントリポイント記憶部１４ａが記憶するフィルタオブジェクト１３のエントリポイントを引数に設定してカーネル（ＯＳ）１１のエントリポイント通知関数を呼び出して要求内容を抽出する（ステップＳ３０３）。例えば、要求内容抽出部１３ｂは、フィルタオブジェクト１３のエントリポイント（ｙｙ）を引数に設定してカーネル（ＯＳ）１１のエントリポイント通知関数「ｍｏｄ＿ｉｎｓｔａｌｌ（ｙｙ）」を呼び出すことにより、アプリケーション３０からデバイスドライバ１２を介して対象デバイス４０ａに対して行なわれる要求内容を抽出する。【００４７】
続いて、要求内容通知部１３ｃは、フィルタオブジェクト１３のエントリポイントへ渡された引数をそのまま設定して、抽出されたデバイスドライバ１２のエントリポイントのエントリ関数を呼び出すことにより、要求内容それぞれをデバイスドライバ１２に通知し（ステップＳ３０４）、処理を終了する。すなわち、図１の（Ｄ）に示すように、要求内容通知部１３ｃは、フィルタオブジェクト１３が設定したエントリ関数群の個々の関数（ｙｙ＿ｒｅａｄやｙｙ＿ｗｒｉｔｅ）の中で、抽出したデバイスドライバ１２のエントリポイントのエントリ関数（ｘｘ＿ｒｅａｄやｘｘ＿ｗｒｉｔｅ）をカーネル（ＯＳ）１１から呼び出すことにより、要求元であるアプリケーションからの要求内容それぞれをデバイスドライバ１２に通知する。【００４８】
［実施例１の効果］
上記したように、実施例１によれば、デバイスドライバ１２のインストール時において、デバイスドライバ１２がフィルタオブジェクト１３に予め定義されたエントリポイント通知関数を呼び出した場合に、フィルタオブジェクト１３がデバイスドライバ１２のエントリポイントを抽出し、エントリポイントが抽出された後に、フィルタオブジェクト１３が、自身のエントリポイントを引数に設定してカーネル（ＯＳ）１１のエントリポイント通知関数を呼び出して要求内容を抽出するので、要求元であるアプリケーション３０の仕様に依存することなく、要求元のアプリケーション３０からの要求内容を抽出することができるので、容易に要求内容を抽出することが可能になる。すなわち、デバイスドライバ１２を修正したり、要求元のアプリケーション３０のデバイス認識を変更したりするなど、要求元であるアプリケーション３０の仕様ごとにフィルタリング方法を設計する手間を排除できるので、容易に要求内容を抽出することが可能になる。【００４９】
また、実施例１によれば、フィルタオブジェクト１３が、要求内容を抽出した際に、自身のエントリポイントへ渡された引数をそのまま設定して、抽出されたデバイスドライバ１２のエントリポイントのエントリ関数を呼び出すことにより、要求内容それぞれをデバイスドライバ１２に通知するので、デバイスドライバ１２はフィルタオブジェクト１３が無い時と全く同じように対象デバイス４０ａを制御することができる。そのため、例えば、業務を継続しながらも、円滑にデータを新しいデバイスへ移行するなどの付加価値の高いデバイスドライバを提供することが可能になる。【００５０】
上記の実施例１において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動でおこなうこともでき（例えば、抽出した要求内容を自動的にデバイスドライバ１２に通知するのではなく、制御装置１０の管理者が、要求内容を参照したのちに、デバイスドライバ１２に通知するなど）、あるいは、手動的におこなうものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる（例えば、フィルタオブジェクト１３の設定を自動的に実行するなど）。この他、上記文章中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に更新することができる。【００５１】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各処理部および各記憶部の分散・統合の具体的形態（例えば、図２の形態など）は図示のものに限られず、例えば、要求内容抽出部１３ｂと要求内容通知部１３ｃとを統合するなど、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。【００５２】
なお、本実施例で説明した要求内容抽出プログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【産業上の利用可能性】
【００５３】
以上のように、本発明に係る要求内容抽出プログラム、要求内容抽出方法および要求内容抽出装置は、デバイスドライバに結合するように設定され、かつ、エントリポイント通知関数およびエントリポイントを予め定義されたフィルタオブジェクトが設置され、当該フィルタオブジェクトが、アプリケーションから対象ドライバに対し行なわれる要求内容を抽出する場合に有用であり、特に、容易に要求内容を抽出することが可能になることに適する。
【図１】
2008149417.tif 000002
【図２】
2008149417.tif 000003
【図３】
2008149417.tif 000004
【図４】
2008149417.tif 000005
【手続補正書】
【提出日】平成21年10月5日(2009.10.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
カーネルからエントリ関数を呼び出させることにより対象デバイスを動作させるソフトウェアであるデバイスドライバと結合するように設定され、かつ、前記デバイスドライバが前記エントリ関数のメモリアドレスの集合であるエントリポイントを前記カーネルの第１エントリポイント関数に対して通知する第２エントリポイント通知関数と、自身のエントリポイントとを予め定義したフィルタオブジェクトに、アプリケーションから前記対象デバイスに対し行なわれる要求内容を抽出させる要求内容抽出方法をコンピュータに実行させる要求内容抽出プログラムであって、
前記デバイスドライバのインストール時において、当該デバイスドライバに前記フィルタオブジェクトへ予め定義された前記第２エントリポイント通知関数を呼び出させた場合に、前記フィルタオブジェクトに当該デバイスドライバの前記エントリポイントを抽出させるエントリポイント抽出手順と、
前記エントリポイント抽出手順によって前記エントリポイントが抽出された後に、前記フィルタオブジェクトに、当該フィルタオブジェクトのエントリポイントを引数に設定させ、前記カーネルの第１エントリポイント通知関数を呼び出させて前記要求内容を抽出させる要求内容抽出手順と、
をコンピュータに実行させることを特徴とする要求内容抽出プログラム。
【請求項２】
前記フィルタオブジェクトに、前記要求内容抽出手順によって前記要求内容を抽出させた際に、自身のエントリポイントへ渡された引数をそのまま設定させて、前記エントリポイント抽出手順によって抽出された前記デバイスドライバの前記エントリポイントのエントリ関数を呼び出させることにより、前記要求内容それぞれを前記デバイスドライバに通知させる要求内容通知手順をさらにコンピュータに実行させることを特徴とする請求項１に記載の要求内容抽出プログラム。
【請求項３】
カーネルからエントリ関数を呼び出させることにより対象デバイスを動作させるソフトウェアであるデバイスドライバと結合するように設定され、かつ、前記デバイスドライバが前記エントリ関数のメモリアドレスの集合であるエントリポイントを前記カーネルの第１エントリポイント通知関数に対して通知する第２エントリポイント通知関数と、自身のエントリポイントとを予め定義したフィルタオブジェクトに、アプリケーションから前記対象デバイスに対し行なわれる要求内容をコンピュータに抽出させる要求内容抽出方法であって、
前記デバイスドライバのインストール時において、当該デバイスドライバに前記フィルタオブジェクトへ予め定義された前記第２エントリポイント通知関数を呼び出させた場合に、前記フィルタオブジェクトに当該デバイスドライバの前記エントリポイントを抽出させるエントリポイント抽出工程と、
前記エントリポイント抽出工程によって前記エントリポイントが抽出された後に、前記フィルタオブジェクトに、当該フィルタオブジェクトのエントリポイントを引数に設定させ、前記カーネルの第１エントリポイント通知関数を呼び出させて前記要求内容を抽出させる要求内容抽出工程と、
を含んだことを特徴とする要求内容抽出方法。
【請求項４】
前記フィルタオブジェクトに、前記要求内容抽出工程によって前記要求内容を抽出させた際に、自身のエントリポイントへ渡された引数をそのまま設定させて、前記エントリポイント抽出工程によって抽出された前記デバイスドライバの前記エントリポイントのエントリ関数を呼び出させることにより、前記要求内容それぞれを前記デバイスドライバに通知させる要求内容通知工程をさらに含んだことを特徴とする請求項３に記載の要求内容抽出方法。
【請求項５】
カーネルからエントリ関数を呼び出させることにより対象デバイスを動作させるソフトウェアであるデバイスドライバと結合するように設定され、かつ、前記デバイスドライバが前記エントリ関数のメモリアドレスの集合であるエントリポイントを前記カーネルの第１エントリポイント関数に対して通知する第２エントリポイント通知関数と、自身のエントリポイントとを予め定義したフィルタオブジェクトに、アプリケーションから前記対象デバイスに対し行なわれる要求内容を抽出させる要求内容抽出装置であって、
前記デバイスドライバのインストール時において、当該デバイスドライバに前記フィルタオブジェクトへ予め定義された前記第２エントリポイント通知関数を呼び出させた場合に、前記フィルタオブジェクトに当該デバイスドライバの前記エントリポイントを抽出させるエントリポイント抽出手段と、
前記エントリポイント抽出手段によって前記エントリポイントが抽出された後に、前記フィルタオブジェクトに、当該フィルタオブジェクトのエントリポイントを引数に設定させて、前記カーネルの第１エントリポイント通知関数を呼び出させて前記要求内容を抽出させる要求内容抽出手段と、
を備えたことを特徴とする要求内容抽出装置。
【請求項６】
前記フィルタオブジェクトに、前記要求内容抽出手段によって前記要求内容を抽出させた際に、自身のエントリポイントへ渡された引数をそのまま設定させて、前記エントリポイント抽出手段によって抽出された前記デバイスドライバの前記エントリポイントのエントリ関数を呼び出させることにより、前記要求内容それぞれを前記デバイスドライバに通知させる要求内容通知手段をさらに備えたことを特徴とする請求項５に記載の要求内容抽出装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、要求内容抽出プログラム、要求内容抽出方法および要求内容抽出装置に関する。
【背景技術】
【０００２】
従来より、デバイスドライバが、カーネルを介して、対象となるハードディスクなどのデバイス（以下、対象デバイスと記す）の動作制御を実行する方法が知られている。具体的には、デバイスドライバは、カーネルからエントリ関数を呼び出させることによりアプリケーションからの要求を対象デバイスに通知し、当該対象デバイスは、通知された要求内容に従って、例えば、Ｒｅａｄ／Ｗｒｉｔｅなどの動作を実行する。すなわち、図４の（Ａ）に示すように、要求内容が、要求元のアプリケーション、カーネルとしてのＯＳ（Operating  System）、デバイスドライバの経路で対象デバイスに伝えられる。なお、エントリ関数とは、デバイスドライバのカーネルへの登録関数のことである。
【０００３】
一方、要求元のアプリケーションから対象デバイスに対する要求内容を、デバイスドライバを修正することなく抽出する技術（フィルタリング技術）に対する需要がある。すなわち、フィルタリング技術を用いて対象デバイスに対するＲｅａｄ／Ｗｒｉｔｅ要求などの内容を抽出して把握することで、例えば、業務を継続しながらも、対象デバイスへの更新要求を適宜抽出して、円滑にデータを新しいデバイスへ移行することが可能になる。また、図４の（Ｂ）に示すように、カーネルとしてのＯＳとデバイスドライバとの間に論理ボリュームを管理する論理ボリュームマネージャを設置している構成においては、フィルタリング技術を用いて論理ボリュームマネージャからの要求内容を把握することで、円滑に論理ボリュームを移行することが可能になる。なお、図４は、従来技術を説明するための図である。
【０００４】
フィルタリング技術としては、対象デバイスとは独立した擬似デバイスを用いるものがある。具体的には、擬似デバイスをＯＳに設定して、対象デバイスに対して通知される要求を、擬似デバイスに対して行なわせることで、要求内容を抽出する。その後、擬似デバイスは、要求内容を対象デバイスに通知することで、対象デバイスは、従来の動作を実行する。例えば、図４の（Ｃ）に示すように、要求元のアプリケーションが対象デバイスを「デバイス番号：１」として認識している場合は、当該要求元のアプリケーションが「デバイス番号：２」である擬似デバイスを認識するように設定を変更することで、擬似デバイスを介して要求内容を抽出する。
【０００５】
また、特許文献１では、デバイスドライバの不具合を発見して修正（デバック）するデバック用デバイスドライバを、デバックの対象となるデバイスドライバ（デバック対象デバイスドライバ）とリンクさせることで、デバック対象デバイスドライバの内部コードを変更することなく、デバック用の出力データを抽出する技術を開示している。
【０００６】
また、特許文献２では、利用者の作成したプログラムコードを試験的に実行するシステムにおいて、システムに重大な障害を与えることを回避するために、当該システムが持つ実行時ライブラリを参照させないように、プログラムコードの実行時に使用されるライブラリ関数を同名のダミー関数と予め静的にリンクすることで、プログラムコードを修正することなく実行する技術を開示している。
【０００７】
【特許文献１】特開２０００−９９３６４号公報
【特許文献２】特開２００６−１３９４６５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、上記した従来のフィルタリング技術は、要求元アプリケーションの仕様に基づいてフィルタリング方法を設計する必要があるので、容易に要求内容が抽出できないという問題点があった。すなわち、要求元アプリケーションがデバイスを識別する方法を、当該要求元アプリケーションの仕様に基づいて解明した上で、フィルタリング方法を設計する必要があり、容易に要求内容が抽出できないという問題点があった。
【０００９】
また、要求元のアプリケーションのソースコードなどの仕様が完全に公開されていない場合は、対象デバイスを識別する方法の解明が困難であることから、要求元のアプリケーションの認識設定を対象デバイスから擬似デバイスに変更することができず、容易に要求内容が抽出できないという問題点があった。
【００１０】
また、仮にデバイスを識別する方法を解明しても、解明した方法によっては要求元アプリケーションにおける対象デバイスの認識を擬似デバイスへ変更することが困難な場合があるので、容易に要求内容が抽出できないという問題点があった。
【００１１】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、容易に要求内容を抽出することが可能になる要求内容抽出プログラム、要求内容抽出方法および要求内容抽出装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するため、本発明は、カーネルからエントリ関数を呼び出させることにより対象デバイスを動作させるソフトウェアであるデバイスドライバと結合するように設定され、かつ、前記デバイスドライバが前記エントリ関数のメモリアドレスの集合であるエントリポイントを前記カーネルの第１エントリポイント関数に対して通知する第２エントリポイント通知関数と、自身のエントリポイントとを予め定義したフィルタオブジェクトに、アプリケーションから前記対象デバイスに対し行なわれる要求内容を抽出させる要求内容抽出方法をコンピュータに実行させる要求内容抽出プログラムであって、前記デバイスドライバのインストール時において、当該デバイスドライバに前記フィルタオブジェクトへ予め定義された前記第２エントリポイント通知関数を呼び出させた場合に、前記フィルタオブジェクトに当該デバイスドライバの前記エントリポイントを抽出させるエントリポイント抽出手順と、前記エントリポイント抽出手順によって前記エントリポイントが抽出された後に、前記フィルタオブジェクトに、当該フィルタオブジェクトのエントリポイントを引数に設定させ、前記カーネルの第１エントリポイント通知関数を呼び出させて前記要求内容を抽出させる要求内容抽出手順と、をコンピュータに実行させることを特徴とする。
【００１３】
また、本発明は、上記の発明において、前記フィルタオブジェクトに、前記要求内容抽出手順によって前記要求内容を抽出させた際に、自身のエントリポイントへ渡された引数をそのまま設定させて、前記エントリポイント抽出手順によって抽出された前記デバイスドライバの前記エントリポイントのエントリ関数を呼び出させることにより、前記要求内容それぞれを前記デバイスドライバに通知させる要求内容通知手順をさらにコンピュータに実行させることを特徴とする。
【００１４】
また、本発明は、カーネルからエントリ関数を呼び出させることにより対象デバイスを動作させるソフトウェアであるデバイスドライバと結合するように設定され、かつ、前記デバイスドライバが前記エントリ関数のメモリアドレスの集合であるエントリポイントを前記カーネルの第１エントリポイント通知関数に対して通知する第２エントリポイント通知関数と、自身のエントリポイントとを予め定義したフィルタオブジェクトに、アプリケーションから前記対象デバイスに対し行なわれる要求内容をコンピュータに抽出させる要求内容抽出方法であって、前記デバイスドライバのインストール時において、当該デバイスドライバに前記フィルタオブジェクトへ予め定義された前記第２エントリポイント通知関数を呼び出させた場合に、前記フィルタオブジェクトに当該デバイスドライバの前記エントリポイントを抽出させるエントリポイント抽出工程と、前記エントリポイント抽出工程によって前記エントリポイントが抽出された後に、前記フィルタオブジェクトに、当該フィルタオブジェクトのエントリポイントを引数に設定させ、前記カーネルの第１エントリポイント通知関数を呼び出させて前記要求内容を抽出させる要求内容抽出工程と、を含んだことを特徴とする。
【００１５】
また、本発明は、上記の発明において、前記フィルタオブジェクトに、前記要求内容抽出工程によって前記要求内容を抽出させた際に、自身のエントリポイントへ渡された引数をそのまま設定させて、前記エントリポイント抽出工程によって抽出された前記デバイスドライバの前記エントリポイントのエントリ関数を呼び出させることにより、前記要求内容それぞれを前記デバイスドライバに通知させる要求内容通知工程をさらに含んだことを特徴とする。
【００１６】
また、本発明は、カーネルからエントリ関数を呼び出させることにより対象デバイスを動作させるソフトウェアであるデバイスドライバと結合するように設定され、かつ、前記デバイスドライバが前記エントリ関数のメモリアドレスの集合であるエントリポイントを前記カーネルの第１エントリポイント関数に対して通知する第２エントリポイント通知関数と、自身のエントリポイントとを予め定義したフィルタオブジェクトに、アプリケーションから前記対象デバイスに対し行なわれる要求内容を抽出させる要求内容抽出装置であって、前記デバイスドライバのインストール時において、当該デバイスドライバに前記フィルタオブジェクトへ予め定義された前記第２エントリポイント通知関数を呼び出させた場合に、前記フィルタオブジェクトに当該デバイスドライバの前記エントリポイントを抽出させるエントリポイント抽出手段と、前記エントリポイント抽出手段によって前記エントリポイントが抽出された後に、前記フィルタオブジェクトに、当該フィルタオブジェクトのエントリポイントを引数に設定させて、前記カーネルの第１エントリポイント通知関数を呼び出させて前記要求内容を抽出させる要求内容抽出手段と、を備えたことを特徴とする。
【００１７】
また、本発明は、上記の発明において、前記フィルタオブジェクトに、前記要求内容抽出手段によって前記要求内容を抽出させた際に、自身のエントリポイントへ渡された引数をそのまま設定させて、前記エントリポイント抽出手段によって抽出された前記デバイスドライバの前記エントリポイントのエントリ関数を呼び出させることにより、前記要求内容それぞれを前記デバイスドライバに通知させる要求内容通知手段をさらに備えたことを特徴とする。
【発明の効果】
【００１８】
本発明によれば、デバイスドライバのインストール時において、当該デバイスドライバにフィルタオブジェクトへ予め定義された第２エントリポイント通知関数を呼び出させた場合に、フィルタオブジェクトに当該デバイスドライバの前記エントリポイントを抽出させ、エントリポイントが抽出された後に、フィルタオブジェクトに、当該フィルタオブジェクトのエントリポイントを引数に設定させ、カーネルの第１エントリポイント通知関数を呼び出させて要求内容を抽出させるので、要求元アプリケーションの仕様に依存することなく、要求元のアプリケーションからの要求内容を抽出することができるので、容易に要求内容を抽出することが可能になる。すなわち、デバイスドライバを修正したり、要求元のアプリケーションのデバイス認識を変更したりするなど、要求元アプリケーションの仕様ごとにフィルタリング方法を設計する手間を排除できるので、容易に要求内容を抽出することが可能になる。
【００１９】
また、本発明によれば、フィルタオブジェクトに、要求内容を抽出させた際に、自身のエントリポイントへ渡された引数をそのまま設定させて、抽出されたデバイスドライバのエントリポイントのエントリ関数を呼び出させることにより、要求内容それぞれをデバイスドライバに通知させるので、デバイスドライバはフィルタオブジェクトが無い時と全く同じように対象デバイスを制御することができる。そのため、例えば、業務を継続しながらも、円滑にデータを新しいデバイスへ移行するなどの付加価値の高いデバイスドライバを提供することが可能になる。
【発明を実施するための最良の形態】
【００２０】
以下に添付図面を参照して、この発明に係る要求内容抽出プログラム、要求内容抽出方法および要求内容抽出装置の実施例を詳細に説明する。なお、以下では、この発明を制御装置に適用した場合を実施例として説明する。また、以下では、実施例１における制御装置の概要および特徴、実施例１における制御装置の構成および処理の手順、実施例１の効果を順に説明する。
【実施例１】
【００２１】
［用語の説明］
まず最初に、以下の実施例で用いる主要な用語を説明する。以下の実施例で用いる「デバイスドライバ」とは、「カーネル」から「エントリ関数」を呼び出させることによりハードディスクなどの対象デバイスを動作させるソフトウェアのことであり、「カーネル」とは、「アプリケーションや周辺機器の監視」、「ハードディスクやメモリなどの資源の管理」といったＯＳ（Operating  System）の基本動作を実装したソフトウェアのことである。
【００２２】
また、「エントリ関数」とは、「デバイスドライバ」の「カーネル」への登録関数のことであり、「エントリポイント通知関数」などがこれに含まれる。ここで、「エントリポイント」とは、「エントリ関数」のメモリアドレスの集合、具体的には、ｒｅａｄ、ｗｒｉｔｅなど複数の「エントリ関数」のメモリアドレスをまとめた構造体のことであり、「エントリポイント通知関数」とは、「デバイスドライバ」のインストール時に、「デバイスドライバ」が「カーネル」から呼び出す関数のことであり、「エントリポイント通知関数」が呼び出されることにより、ＯＳは、当該「デバイスドライバ」の「エントリポイント」を取得することができる。例えば、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ社が提供するＯＳであるＳｏｌａｒｉｓ（登録商標）では、「ｍｏｄ＿ｉｎｓｔａｌｌ」が「エントリポイント通知関数」となる。
【００２３】
［実施例１における制御装置の概要および特徴］
続いて、図１を用いて、実施例１における制御装置の主たる特徴を具体的に説明する。図１は、実施例１における制御装置の概要および特徴を説明するための図である。
【００２４】
実施例１における制御装置においては、デバイスドライバに結合するように設定され、かつ、エントリポイント通知関数および自身のエントリポイントを予め定義したフィルタオブジェクトが設置され、当該フィルタオブジェクトが、アプリケーションから対象ドライバに対し行なわれる要求内容を抽出することを概要とする。ここで、実施例１における制御装置の管理者は、デバイスドライバのインストール前に（あるいは、デバイスドライバのアンインストール後に）、リンクエディタを使用することにより（例えば、Ｓｏｌａｒｉｓ（登録商標）の場合は、ｌｄコマンドを使用することにより）、当該デバイスドライバと結合するようにフィルタオブジェクトを設定し（図１の（Ａ）の（１）参照）、さらに、当該フィルタオブジェクトに対して、エントリポイント通知関数およびエントリポイントを予め定義しておく（図１の（Ａ）の（２）参照）。
【００２５】
すなわち、実施例１における制御装置は、このようにして設置されたフィルタオブジェクトを用いることにより、当該フィルタオブジェクトが、図１の（Ａ）に示すように、要求元であるアプリケーションから、カーネル（ＯＳ）、デバイスドライバの経路で対象デバイスに対し行なわれる要求の内容（例えば、Ｒｅａｄ／Ｗｒｉｔｅ要求など）を抽出することを概要とする。
【００２６】
ここで、本発明は、容易に要求内容を抽出することが可能になることに主たる特徴がある。この主たる特徴について簡単に説明すると、実施例１における制御装置に設置されるフィルタオブジェクトは、デバイスドライバのインストール時において、当該デバイスドライバがフィルタオブジェクトに予め定義されたエントリポイント通知関数を呼び出した場合に、当該デバイスドライバのエントリポイントを抽出する。
【００２７】
すなわち、図１の（Ｂ）に示すように、デバイスドライバのインストール時において、当該デバイスドライバは、予め実施例１における制御装置に設置されたフィルタオブジェクトと結合し、一つのファイル（ソフトウェア）として動作するようになる。そして、デバイスドライバは、カーネル（ＯＳ）のエントリポイント通知関数（Ｓｏｌａｒｉｓ（登録商標）の場合では、「ｍｏｄ＿ｉｎｓｔａｌｌ」）を呼び出すのではなく、フィルタオブジェクトのエントリポイント通知関数を呼び出し（図１の（Ｂ）の（３）参照）、これにより、フィルタオブジェクトは、当該デバイスドライバのエントリポイントを、呼び出されたエントリポイント通知関数の引数を参照することによって抽出する。例えば、フィルタオブジェクトは、Ｓｏｌａｒｉｓ（登録商標）の場合は、呼び出されたエントリポイント通知関数の引数「ｍｏｄ＿ｉｎｓｔａｌｌ（ｘｘ）のカッコ内のアドレス」を参照して、デバイスドライバのエントリポイント（ｘｘ）を抽出する（図１の（Ｂ）の（４）参照）。
【００２８】
そして、実施例１における制御装置に設置されるフィルタオブジェクトは、エントリポイントが抽出された後に、当該フィルタオブジェクトのエントリポイントを引数に設定してカーネルのエントリポイント通知関数を呼び出して要求内容を抽出する。例えば、フィルタオブジェクトは、デバイスドライバのエントリポイント（ｘｘ）を抽出した後に、自身のエントリポイント（ｙｙ）を引数に設定してカーネル（ＯＳ）のエントリポイント通知関数「ｍｏｄ＿ｉｎｓｔａｌｌ（ｙｙ）」を呼び出す（図１の（Ｃ）の（５）参照）。これにより、カーネル（ＯＳ）は、要求元であるアプリケーションからの要求内容を、デバイスドライバではなく、フィルタオブジェクトに対して通知する。例えば、Ｒｅａｄ／Ｗｒｉｔｅ要求として、「ｙｙ＿ｒｅａｄ」や「ｙｙ＿ｗｒｉｔｅ」をフィルタオブジェクトに対して通知し（図１の（Ｃ）の（６）参照）、フィルタオブジェクトは、デバイス
ドライバから対象デバイスに対して行なわれる要求内容を抽出する。
【００２９】
そして、実施例１における制御装置に設置されるフィルタオブジェクトは、要求内容を抽出した際に、自身のエントリポイントへ渡された引数をそのまま設定して、抽出されたデバイスドライバのエントリポイントのエントリ関数を呼び出すことにより、要求内容それぞれをデバイスドライバに通知する。すなわち、図１の（Ｄ）に示すように、フィルタオブジェクトは、自らが設定したエントリ関数群の個々の関数（ｙｙ＿ｒｅａｄやｙｙ＿ｗｒｉｔｅ）の中で、抽出したデバイスドライバのエントリポイントのエントリ関数（ｘｘ＿ｒｅａｄやｘｘ＿ｗｒｉｔｅ）をカーネル（ＯＳ）から呼び出すことにより、要求元であるアプリケーションからの要求内容それぞれをデバイスドライバに通知する。
【００３０】
なお、カーネルから呼び出されるエントリ関数と同名の関数を、フィルタオブジェクトに定義したまま残しておくと、デバイスドライバをカーネルへ組み込む時に、シンボルの衝突エラーを引き起こすため、上記の操作が終了した後は、リンクエディタのシンボル属性定義ファイルを使用することにより、同関数のスコープをローカル属性に変更することでこれらが実行されないように設定を行なう。
【００３１】
このようなことから、実施例１における制御装置においてフィルタオブジェクトを設置することにより、要求元アプリケーションの仕様に依存することなく、要求元のアプリケーションからの要求内容を抽出することができるので、上記した主たる特徴の通り、容易に要求内容を抽出することが可能になる。
【００３２】
［実施例１における制御装置の構成］
次に、図２を用いて、実施例１における制御装置を説明する。図２は、実施例１における制御装置の構成を示すブロック図である。
【００３３】
図２に示すように、実施例１における制御装置１０は、カーネル１１と、デバイスドライバ１２と、フィルタオブジェクト１３とから構成され、さらに、管理部２０と、アプリケーション３０と、対象デバイス４０ａを備えるディスク装置４０とに接続される。
【００３４】
管理部２０は、制御装置１０の管理者から、後述するフィルタオブジェクト１３の設置に関する設定の入力を受け付けて管理したり、後述するデバイスドライバ１２のインストールを受け付けて管理したりする。
【００３５】
ディスク装置４０に備えられる対象デバイス４０ａは、アプリケーション３０からの要求を、後述するデバイスドライバ１２を介して受信し、例えば、Ｒｅａｄ／Ｗｒｉｔｅなどの動作を実行するものであり、具体的には、ハードディスクなどがこれに対応する。
【００３６】
カーネル（ＯＳ）１１は、ＯＳの基本動作を実装したソフトウェアであり、例えば、ア
プリケーション３０からの要求内容を、対象デバイスを動作させるソフトウェアであるデ
バイスドライバ１２を介して、対象デバイス４０ａに通知したりする。
【００３７】
フィルタオブジェクト１３は、管理部２０に入力された設定に基づいて、制御装置１０に設置されるものであり、デバイスドライバ１３に結合するように設定され、かつ、エントリポイント通知関数および自身のエントリポイントが予め定義され、特に本発明に密接に関連するものとしては、図２に示すように、エントリポイント抽出部１３ａと、要求内容抽出部１３ｂと、要求内容通知部１３ｃと、メモリ１４とを備える。また、メモリ１４は、図２に示すように、エントリポイント記憶部１４ａと、要求内容記憶部１４ｂとを備える。エントリポイント記憶部１４ａは、フィルタオブジェクト１３のエントリポイントを記憶し、さらに、エントリポイント抽出部１３ａによって抽出されるエントリポイントを記憶する。また、要求内容記憶部１４ｂは、要求内容抽出部１３ｂによって抽出されたアプリケーション３０から対象デバイス４０ａへの要求内容を記憶する。ここで、エントリポイント抽出部１３ａは、請求の範囲に記載の「エントリポイント抽出手順」に対応し、要求内容抽出部１３ｂは、同じく「要求内容抽出手順」に対応し、要求内容通知部１３ｃは、同じく「要求内容通知手順」に対応する。以下、これらについて詳述する。
【００３８】
エントリポイント抽出部１３ａは、デバイスドライバ１２のインストール時において、デバイスドライバ１２がフィルタオブジェクト１３に予め定義されたエントリポイント通知関数を呼び出した場合に、デバイスドライバ１２のエントリポイントを抽出し、その結果をエントリポイント記憶部１４ａに格納する。ここで、図２に示すように、デバイスドライバ１２のインストール時において、デバイスドライバ１２は、予め制御装置１０に設置されたフィルタオブジェクト１３と連結して、一つのファイルとして動作するようになる。そして、デバイスドライバ１２がフィルタオブジェクト１３に予め定義されたエントリポイント通知関数を呼び出すことにより、エントリポイント抽出部１３ａは、デバイスドライバ１２のエントリポイントを、呼び出されたエントリポイント通知関数の引数を参照することによって抽出する。例えば、フィルタオブジェクト１３は、Ｓｏｌａｒｉｓ（登録商標）の場合では、呼び出されたエントリポイント通知関数の引数「ｍｏｄ＿ｉｎｓｔａｌｌ（ｘｘ）のカッコ内のアドレス」を参照して、デバイスドライバのエントリポイ
ント（ｘｘ）を抽出する（図１の（Ｂ）の（４）参照）。
【００３９】
要求内容抽出部１３ｂは、エントリポイント記憶部１４ａにデバイスドライバ１２のエントリポイントが格納された後に、エントリポイント記憶部１４ａが記憶するフィルタオブジェクト１３のエントリポイントを引数に設定してカーネル（ＯＳ）１１のエントリポイント通知関数を呼び出して要求内容を抽出し、その結果を、要求内容記憶部１４ｂに格納する。例えば、要求内容抽出部１３ｂは、デバイスドライバ１２のエントリポイント（ｘｘ）を抽出した後に、フィルタオブジェクト１３のエントリポイント（ｙｙ）を引数に設定してカーネル（ＯＳ）１１のエントリポイント通知関数「ｍｏｄ＿ｉｎｓｔａｌｌ（ｙｙ）」を呼び出す（図１の（Ｃ）の（５）参照）。これにより、カーネル（ＯＳ）１１は、要求元であるアプリケーション３０からの要求内容（例えば、Ｒｅａｄ／Ｗｒｉｔｅ要求として、「ｙｙ＿ｒｅａｄ」や「ｙｙ＿ｗｒｉｔｅ」）をフィルタオブジェクト１３に対して通知し（図１の（Ｃ）の（６）参照）、要求内容抽出部１３ｂは、デバイスドライバ１２から対象デバイス４０ａに対して行なわれる要求内容を抽出する。
【００４０】
要求内容通知部１３ｃは、フィルタオブジェクト１３のエントリポイントへ渡された引数をそのまま設定して、抽出されたデバイスドライバ１２のエントリポイントのエントリ関数を呼び出すことにより、要求内容それぞれをデバイスドライバ１２に通知する。すなわち、図１の（Ｄ）に示すように、要求内容通知部１３ｃは、フィルタオブジェクト１３が設定したエントリ関数群の個々の関数（ｙｙ＿ｒｅａｄやｙｙ＿ｗｒｉｔｅ）の中で、抽出したデバイスドライバ１２のエントリポイントのエントリ関数（ｘｘ＿ｒｅａｄやｘｘ＿ｗｒｉｔｅ）をカーネル（ＯＳ）１１から呼び出すことにより、要求元であるアプリケーションからの要求内容それぞれをデバイスドライバ１２に通知する。
【００４１】
［実施例１における制御装置による処理の手順］
次に、図３を用いて、実施例１における制御装置１０による処理を説明する。図３は、実施例１における制御装置の処理を説明するための図である。
【００４２】
図３に示すように、まず、実施例１における制御装置１０は、フィルタオブジェクト１３の設定が終了し、デバイスドライバ１２のインストールが開始されると（ステップＳ３０１肯定）、エントリポイント抽出部１３ａは、デバイスドライバ１２のエントリポイントを抽出する（ステップＳ３０２）。
【００４３】
すなわち、「デバイスドライバ１２と結合し、かつ、エントリポイント通知関数およびエントリポイントを定義する」というフィルタオブジェクト１３に関する設定が管理部２０に対して入力されたことにより、制御装置１０にフィルタオブジェクト１３が設置され、そののち、デバイスドライバ１２のインストールが開始されると、デバイスドライバ１２は、フィルタオブジェクト１３と結合される。ここで、デバイスドライバ１２がフィルタオブジェクト１３に予め定義されたエントリポイント通知関数を呼び出すことにより、エントリポイント抽出部１３ａは、デバイスドライバ１２のエントリポイントを、呼び出されたエントリポイント通知関数の引数を参照することによって抽出する。
【００４４】
そして、要求内容抽出部１３ｂは、エントリポイント記憶部１４ａが記憶するフィルタオブジェクト１３のエントリポイントを引数に設定してカーネル（ＯＳ）１１のエントリポイント通知関数を呼び出して要求内容を抽出する（ステップＳ３０３）。例えば、要求内容抽出部１３ｂは、フィルタオブジェクト１３のエントリポイント（ｙｙ）を引数に設定してカーネル（ＯＳ）１１のエントリポイント通知関数「ｍｏｄ＿ｉｎｓｔａｌｌ（ｙｙ）」を呼び出すことにより、アプリケーション３０からデバイスドライバ１２を介して対象デバイス４０ａに対して行なわれる要求内容を抽出する。
【００４５】
続いて、要求内容通知部１３ｃは、フィルタオブジェクト１３のエントリポイントへ渡された引数をそのまま設定して、抽出されたデバイスドライバ１２のエントリポイントのエントリ関数を呼び出すことにより、要求内容それぞれをデバイスドライバ１２に通知し（ステップＳ３０４）、処理を終了する。すなわち、図１の（Ｄ）に示すように、要求内容通知部１３ｃは、フィルタオブジェクト１３が設定したエントリ関数群の個々の関数（ｙｙ＿ｒｅａｄやｙｙ＿ｗｒｉｔｅ）の中で、抽出したデバイスドライバ１２のエントリポイントのエントリ関数（ｘｘ＿ｒｅａｄやｘｘ＿ｗｒｉｔｅ）をカーネル（ＯＳ）１１から呼び出すことにより、要求元であるアプリケーションからの要求内容それぞれをデバイスドライバ１２に通知する。
【００４６】
［実施例１の効果］
上記したように、実施例１によれば、デバイスドライバ１２のインストール時において、デバイスドライバ１２がフィルタオブジェクト１３に予め定義されたエントリポイント通知関数を呼び出した場合に、フィルタオブジェクト１３がデバイスドライバ１２のエントリポイントを抽出し、エントリポイントが抽出された後に、フィルタオブジェクト１３が、自身のエントリポイントを引数に設定してカーネル（ＯＳ）１１のエントリポイント通知関数を呼び出して要求内容を抽出するので、要求元であるアプリケーション３０の仕様に依存することなく、要求元のアプリケーション３０からの要求内容を抽出することができるので、容易に要求内容を抽出することが可能になる。すなわち、デバイスドライバ１２を修正したり、要求元のアプリケーション３０のデバイス認識を変更したりするなど、要求元であるアプリケーション３０の仕様ごとにフィルタリング方法を設計する手間を排除できるので、容易に要求内容を抽出することが可能になる。
【００４７】
また、実施例１によれば、フィルタオブジェクト１３が、要求内容を抽出した際に、自身のエントリポイントへ渡された引数をそのまま設定して、抽出されたデバイスドライバ１２のエントリポイントのエントリ関数を呼び出すことにより、要求内容それぞれをデバイスドライバ１２に通知するので、デバイスドライバ１２はフィルタオブジェクト１３が無い時と全く同じように対象デバイス４０ａを制御することができる。そのため、例えば、業務を継続しながらも、円滑にデータを新しいデバイスへ移行するなどの付加価値の高いデバイスドライバを提供することが可能になる。
【００４８】
上記の実施例１において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動でおこなうこともでき（例えば、抽出した要求内容を自動的にデバイスドライバ１２に通知するのではなく、制御装置１０の管理者が、要求内容を参照したのちに、デバイスドライバ１２に通知するなど）、あるいは、手動的におこなうものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる（例えば、フィルタオブジェクト１３の設定を自動的に実行するなど）。この他、上記文章中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に更新することができる。
【００４９】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各処理部および各記憶部の分散・統合の具体的形態（例えば、図２の形態など）は図示のものに限られず、例えば、要求内容抽出部１３ｂと要求内容通知部１３ｃとを統合するなど、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００５０】
なお、本実施例で説明した要求内容抽出プログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【産業上の利用可能性】
【００５１】
以上のように、本発明に係る要求内容抽出プログラム、要求内容抽出方法および要求内容抽出装置は、デバイスドライバに結合するように設定され、かつ、エントリポイント通知関数およびエントリポイントを予め定義されたフィルタオブジェクトが設置され、当該フィルタオブジェクトが、アプリケーションから対象ドライバに対し行なわれる要求内容を抽出する場合に有用であり、特に、容易に要求内容を抽出することが可能になることに適する。
【図面の簡単な説明】
【００５２】
【図１】図１は、実施例１における制御装置の概要および特徴を説明するための図である。
【図２】図２は、実施例１における制御装置の構成を示すブロック図である。
【図３】図３は、実施例１における制御装置の処理を説明するための図である。
【図４】図４は、従来技術を説明するための図である。
【符号の説明】
【００５３】
１０  制御装置
１１  カーネル（ＯＳ）
１２  デバイスドライバ
１３  フィルタオブジェクト
１３ａ  エントリポイント抽出部
１３ｂ  要求内容抽出部
１３ｃ  要求内容通知部
１４  メモリ
１４ａ  エントリポイント記憶部
１４ｂ  要求内容記憶部
２０  管理部
３０  アプリケーション
４０  ディスク装置
４０ａ  対象デバイス