(57)【要約】【課題】  コンピュータシステムにおける問題の根本的な原因のプログラムによる診断を提供すること。【解決手段】  オペレーティングシステム内でイベントを監視し、ログファイルにこれらのイベントの少なくとも一部をログ記録する。エラー状態の検出に応答して、診断モジュールが呼び出される。診断モジュールは、ログファイルに問合せを行って、この問題の診断に関連するイベントを相関させ、問合せの結果を評価することによって根本的な原因を特定する。この問題の根本的な原因が診断されると、根本的な原因に対応する解決モジュールが呼び出されて、この問題をプログラムにより解決することができる。診断および解決モジュールの呼出しは、ポリシールールを条件とすることができる。さらに、必要に応じて、ログ記録、診断および解決モジュールを自動的に更新することができる。【選択図】  図２
2004334869.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステムを実行するコンピュータシステムにおいて、前記コンピュータシステムにおける問題の根本的な原因をプログラムにより診断する方法であって、
オペレーティングシステム内でイベントを生成する動作と、
前記イベントの少なくとも一部をログファイルにログ記録する動作と、
１または複数のエラー状態を検出する動作と、
該１または複数のエラー状態を検出する動作に応答して、診断モジュールを呼び出す動作であって、前記診断モジュールは、呼び出されると、
前記ログファイルに問合せを行って、前記１または複数のエラー状態によって明らかにされた前記問題の診断に関連するイベントを相関させる動作と、
前記問合せの結果を評価する動作と、
前記評価に応答して、前記１または複数のエラー状態の根本的な原因を特定する動作とを行うように構成されている動作と
を備えたことを特徴とする方法。
【請求項２】
前記１または複数のエラー状態を検出する動作の後で、
ルールを調べて、前記ルールに従って前記診断モジュールを呼び出すべきか否かを決定する動作をさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記ルールを設定するためにユーザ入力を受け取る動作をさらに含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記問合せの結果の少なくとも一部をエラー報告サービスに送信する動作をさらに含むことを特徴とする請求項１に記載の方法。
【請求項５】
１または複数の更新情報を受け取る動作であって、前記更新情報は、どのイベントをログ記録するかを改変する動作をさらに含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記更新情報は、前記診断モジュールがどのように診断するかをさらに改変することを特徴とする請求項５に記載の方法。
【請求項７】
１または複数の更新情報を受け取る動作であって、前記更新情報は、前記診断モジュールがどのように診断するかをさらに改変する動作をさらに含むことを特徴とする請求項４に記載の方法。
【請求項８】
前記１または複数のエラー状態の根本的な原因を特定する前記動作に応答して、解決モジュールを呼び出す動作であって、前記解決モジュールは、呼び出されると、
前記１または複数のエラー状態の根本的な原因を解決する動作を行うように構成されている動作をさらに含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記１または複数のエラー状態を検出する動作の後で、
ルールを調べて、前記ルールに従って前記解決モジュールを呼び出すべきか否かを決定する動作をさらに含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記ルールを設定するためにユーザ入力を受け取る動作をさらに含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記問合せの結果の少なくとも一部をエラー報告サービスに送信する動作をさらに含むことを特徴とする請求項８に記載の方法。
【請求項１２】
１または複数の更新情報を受け取る動作であって、前記更新情報は、どのイベントをログ記録するかを改変する動作をさらに含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記更新情報は、前記診断モジュールがどのように診断するかをさらに改変することを特徴とする請求項１２に記載の方法。
【請求項１４】
前記更新情報は、前記解決モジュールがどのように解決するかをさらに改変することを特徴とする請求項１３に記載の方法。
【請求項１５】
前記更新情報は、前記診断モジュールがどのように診断するかを改変することを特徴とする請求項１１に記載の方法。
【請求項１６】
前記更新情報は、前記解決モジュールがどのように解決するかをさらに改変することを特徴とする請求項１５に記載の方法。
【請求項１７】
前記更新情報は、前記解決モジュールがどのように解決するかを改変することを特徴とする請求項１１に記載の方法。
【請求項１８】
前記更新情報は、どのイベントをログ記録するかをさらに改変することを特徴とする請求項１７に記載の方法。
【請求項１９】
１または複数の更新情報を受け取る動作であって、前記更新情報は、前記診断モジュールがどのように診断するかをさらに改変する動作をさらに含むことを特徴とする請求項４に記載の方法。
【請求項２０】
前記１または複数のエラー状態の根本的な原因をプログラムにより解決することができないことを決定する動作と、
ユーザインタフェースモジュールを連動させて、前記診断または解決モジュールが用いる追加の情報を入力するようにユーザを促し、前記問題を特定または解決するように試みる動作と
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項２１】
前記ユーザインタフェースモジュールは、トラブルシューティングウイザードであることを特徴とする請求項２０に記載の方法。
【請求項２２】
オペレーティングシステムを実行するコンピュータシステムにおいて使用し、前記コンピュータシステムにおける問題の根本的な原因をプログラムにより診断する方法を実行し、コンピュータにより実行可能な命令を有し、前記コンピュータシステムの１または複数のプロセッサによって前記命令が実行されたときに、前記コンピュータシステムは、
オペレーティングシステム内でイベントを生成する動作と、
前記イベントの少なくとも一部をログファイルにログ記録する動作と、
１または複数のエラー状態を検出する動作と、
前記１または複数のエラー状態を検出する動作に応答して、診断モジュールを呼び出す動作であって、前記診断モジュールは、呼び出されると、
前記ログファイルに問合せを行って、前記１または複数のエラー状態によって明らかにされた前記問題の診断に関連するイベントを相関させる動作と、
前記問合せの結果を評価する動作と、
前記評価に応答して、前記１または複数のエラー状態の根本的な原因を特定する動作とを行うように構成されている動作と
を実行することを特徴とするコンピュータプログラム。
【請求項２３】
前記コンピュータプログラムは、物理的なメモリ媒体に格納されていることを特徴とする請求項２２に記載のコンピュータプログラム。
【請求項２４】
前記１または複数のプロセッサによって前記命令が実行されたときに、前記コンピュータシステムは、
前記問合せの結果の少なくとも一部をエラー報告サービスに送信する動作と、
どのイベントをログ記録するか、または前記診断モジュールがどのように診断するかの改変を行う１または複数の更新情報を受け取る動作と
を実行することを特徴とする請求項２２に記載のコンピュータプログラム。
【請求項２５】
前記１または複数のプロセッサによって前記命令が実行されたときに、前記コンピュータシステムは、
前記１または複数のエラー状態の根本的な原因を特定する前記動作に応答して、呼び出されると、前記１または複数のエラー状態の根本的な原因を解決するように構成される解決モジュールを呼び出す動作
を実行することを特徴とする請求項２２に記載のコンピュータプログラム。
【請求項２６】
前記１または複数のプロセッサによって前記命令が実行されたときに、前記コンピュータシステムは、
前記問合せの結果の少なくとも一部をエラー報告サービスに送信する動作と、
どのイベントをログ記録するか、前記診断モジュールがどのように診断するか、または前記解決モジュールがどのように解決するかの改変を行う１または複数の更新情報を受け取る動作と
を実行することを特徴とする請求項２２に記載のコンピュータプログラム。
【請求項２７】
前記１または複数のプロセッサによって前記命令が実行されたときに、前記コンピュータシステムは、
前記１または複数のエラー状態の根本的な原因をプログラムにより解決することができないことを決定する動作と、
ユーザインタフェースモジュールを連動させて、前記解決モジュールが用いる追加の情報を入力するようにユーザを促し、前記問題を特定または解決するように試みる動作と
を実行することを特徴とする請求項２２に記載のコンピュータプログラム。
【請求項２８】
オペレーティングシステムを実行するコンピュータシステムにおいて、前記コンピュータシステムにおける問題の根本的な原因をプログラムにより診断する方法であって、
オペレーティングシステム内でイベントを生成する動作と、
前記イベントの少なくとも一部をログファイルにログ記録する動作と、
１または複数のエラー状態を検出する動作と、
前記１または複数のエラー状態によって明らかにされた問題をプログラムにより診断するステップと
を備えたことを特徴とする方法。
【請求項２９】
前記１または複数のエラー状態によって明らかにされた問題をプログラムにより診断する前記ステップは、
１または複数のエラー状態を検出する前記動作に応答して、診断モジュールを呼び出す動作であって、前記診断モジュールは、呼び出されると、
前記ログファイルに問合せを行って、前記１または複数のエラー状態によって明らかにされた前記問題の診断に関連する各イベントを相関させる動作と、
前記問合せの結果を評価する動作と、
前記評価に応答して、前記１または複数のエラー状態の根本的な原因を特定する動作とを行うように構成されている動作
を含むことを特徴とする請求項２８に記載の方法。
【請求項３０】
コンピュータにより実行可能な命令を有するコンピュータ読取り可能媒体であって、コンピュータシステムの１または複数のプロセッサによって前記命令が実行されたときに、前記コンピュータシステムは、
ログファイル内にイベントをログ記録するように構成されたイベントロガーと、
１または複数のエラー状態が生じたときに問題を検出するように構成され、前記問題が検出されたときに、少なくとも一部の状況において解決モジュールが呼び出されるように構成された問題検出モジュールと、
前記ログファイルに問合せを行い、前記問合せの結果を評価し、前記評価に基づいて前記問題を診断するように構成された診断モジュールと
をメモリ内にインスタンス化することを特徴とするコンピュータ読取り可能媒体。
【請求項３１】
コンピュータにより実行可能な追加の命令を有し、前記１または複数のプロセッサによって前記命令が実行されたときに、前記コンピュータシステムは、
前記診断モジュールを呼び出すべき時点に関するルールを維持し、前記ルールが呼出しを許可する場合、前記問題を検出する前記問題検出モジュールに応答して前記診断モジュールを呼び出す監視モジュール
をメモリ内にさらにインスタンス化することを特徴とする請求項３０に記載のコンピュータ読取り可能媒体。
【請求項３２】
コンピュータにより実行可能な追加の命令を有し、前記１または複数のプロセッサによって前記命令が実行されたときに、前記コンピュータシステムは、
呼び出されると、前記問題を解決するように構成される解決モジュールをメモリ内にさらにインスタンス化し、
前記診断モジュールは、前記問題を診断した後で、少なくとも一部の状況において前記解決モジュールが呼び出されるように構成されていることを特徴とする請求項３０に記載のコンピュータ読取り可能媒体。
【請求項３３】
コンピュータにより実行可能な追加の命令を有し、前記１または複数のプロセッサによって前記命令が実行されたときに、前記コンピュータシステムは、
前記解決モジュールを呼び出すべき時点に関するルールを維持し、前記ルールが呼出しを許可する場合、前記問題を診断する前記診断モジュールに応答して前記解決モジュールを呼び出す監視モジュール
をメモリ内にさらにインスタンス化することを特徴とする請求項３２に記載のコンピュータ読取り可能媒体。
【請求項３４】
オペレーティングシステムを実行し、エラー報告サービスにネットワーク接続されたコンピュータシステムにおいて、前記コンピュータシステムにおける問題の根本的な原因を決定する方法であって、
オペレーティングシステム内でイベントを生成する動作と、
前記イベントの少なくとも一部をログファイルにログ記録する動作と、
１または複数のエラー状態を検出する動作と、
前記動作に応答して、
前記ログファイルに問合せを行って関連するイベントを相関させる動作と、
前記問合せの結果の少なくとも一部をエラー報告サービスに送信する動作と、
１または複数の更新情報を受け取る動作であって、前記更新情報は、どのイベントをログ記録するか、どの診断ステップを実行するか、またはどの解決ステップを前記コンピュータシステムのオペレーティングシステムによって実行するか、あるいはエンドユーザに推奨するかを改変する動作と
を備えたことを特徴とする方法。
【請求項３５】
オペレーティングシステムを実行し、エラー報告サービスにネットワーク接続されたコンピュータシステムにおいて使用し、前記コンピュータシステムにおける問題の根本的な原因を決定する方法を実行し、コンピュータにより実行可能な命令を有し、前記コンピュータシステムの１または複数のプロセッサによって前記命令が実行されたときに、前記コンピュータシステムは、
オペレーティングシステム内でイベントを生成する動作と、
前記イベントの少なくとも一部をログファイルにログ記録する動作と、
１または複数のエラー状態を検出する動作と、
前記動作に応答して、
前記ログファイルに問合せを行って関連するイベントを相関させる動作と、
前記問合せの結果の少なくとも一部をエラー報告サービスに送信する動作と、
１または複数の更新情報を受け取る動作であって、前記更新情報は、どのイベントをログ記録するか、どの診断ステップを実行するか、またはどの解決ステップを前記コンピュータによって実行するかを改変する動作と
を備えたことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、ソフトウェアに関し、より詳細には、パーソナルコンピュータを操作する際に生じる問題の根本的な原因をプログラムに基づいて判定し、プログラムによる解決および／またはこれらの問題に対処するユーザにとって貴重な診断データを提供するシステムおよび方法に関する。
【背景技術】
【０００２】
コンピューティング技術は、我々の仕事のやり方および余暇の楽しみ方を変えた。近年、コンピューティング技術はかなり複雑になっている。この複雑さにより、コンピュータシステムは、多種多様な複雑度の高い機能およびアプリケーションを行うことができ、それにより、コンピュータシステムの有用性が着実に向上している。一方、このような複雑さにより、最も熟練したソフトウェア技術者でさえ、可能なすべての状況において完全に適合し機能するソフトウェアを開発することがますます難しくなってもいる。従って、最新のコンピュータシステムでさえ、しばしば、クラッシュ、システムの停止または性能の低下などの問題が生じる。
【０００３】
現在、コンピュータシステムにおける多くの問題の根本的な原因を簡単に診断または特定することは難しいか、あるいは不可能である。コンピュータシステムのオペレーティングシステムは、典型的には、基本的なエラーメッセージの形で問題の存在を明らかにするある種の限定された仕組みを含む。しかし、エラーメッセージは、その問題の根本的な原因を診断し解決しようと試みるユーザ、または、その問題の回避策を特定しようと試みるユーザに十分な情報を提供することはできない。
【０００４】
所与の時点で、多くの異なるアプリケーションおよびデバイスがオペレーティングシステム上で動作することができ、このようなコンポーネント間の相互運用性により複雑な問題が生じ得るので、どのアプリケーション、デバイスドライバまたは構成が、表面化した問題の根本的な原因であるかをオペレーティングシステムが特定するのは難しいことが多い。相互に運用される様々なコンポーネントが異なる供給業者から提供される場合には、特に、相互運用性により、複雑な問題が生じ得る。これらの問題には、オペレーティングシステム、アプリケーションまたはデバイスドライバが関与し得るが、（システムクラッシュなどによって）問題が表面化した後では、その問題を解決するのに有用な情報を提供しても遅すぎよう。オペレーティングシステム上で動作するアプリケーションまたはデバイスドライバが、そのオペレーティングシステムのプログラム作成指針に適合していないと、この問題は悪化する。
【０００５】
さらに、問題を診断する十分な情報があっても、その問題の根本的な原因を診断し解決策を提供するためにかなりのユーザの労力が必要なことが多い。コンピュータシステムの問題を診断し解決するためにかなりのユーザの労力が必要とされると、コンピュータシステムを用いて仕事を行う際のユーザの体験が損なわれる恐れがある。ユーザがコンピュータシステムの問題をあまり想定していない場合は特にそうである。
【０００６】
さらに、多くのユーザは、コンピュータシステムの問題を自分で診断し解決するのに十分な経験を積んでいない。従って、こうしたユーザは、問題の是正を望む措置をとるが、その問題の診断または解決策が正しくないために、その措置によりその問題を解決することができない。実際、このような措置により、コンピュータシステムの性能または安定性がさらに低下することがある。また、ユーザは、その問題を診断し解決するために他の人たちの助けを求めることができるが、それにより、ユーザまたはその問題を解決する助けとなる関係者に時間的または金銭的に不必要なコストがかかる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
これらの理由から、オペレーティングシステムが、コンピュータシステムの問題の根本的な原因をより適切に特定することができるシステムおよび方法は有利となろう。さらに、特定された問題に対処するプログラムによる手段を提供するシステムおよび方法は有利となろう。
【課題を解決するための手段】
【０００８】
コンピュータシステムにおける問題の根本的な原因をプログラムにより診断するシステムおよび方法を対象とする本発明の原理によって、上記の従来技術の問題を克服する。一実施形態では、この方法は、オペレーティングシステム内の適切な手段によって生成されるイベントを監視することと、これらのイベントの少なくとも一部をログファイルにログ記録することと、１または複数のエラー状態を検出することとを含む。これに応答して、診断モジュールが呼び出される。診断モジュールは、問題の診断に関連するイベントに関してログファイルに問合せを行い、問合せの結果を評価することにより根本的な原因を特定する。この問題の根本的な原因が診断されると、この根本的な原因に対応する解決モジュールが呼び出されて、この問題をプログラムにより解決することができる。
【０００９】
ユーザ定義またはデフォルトのポリシールールにより、診断モジュールおよび／または解決モジュールを呼び出すか否か、またはそれらを呼び出す時点を管理し得る。従って、プログラムによりコンピュータシステムの問題を診断し解決することができ、それにより、ユーザの体験が向上し、依然として診断および解決プロセス全般に対するユーザ制御の余地を残すことができる。一実施形態では、少なくとも一部の問合せ結果を、エラー報告サービスに送信し、それが１または複数の更新情報をコンピュータシステムに返す。これらの更新情報により、どのイベントをログ記録するか、診断モジュールがどのように診断を行うか、および／または解決モジュールがどのように解決するかを更新する。
【００１０】
本発明の追加の特徴および利点を以下の説明で述べるが、それらは部分的に以下の説明から明らかであり、また本発明を実施することによってわかるであろう。本発明の特徴および利点は、添付の特許請求の範囲で具体的に示す装置およびそれらの組合せによって実施され、実現することができる。本発明の上記その他の特徴は、以下の説明および添付の特許請求の範囲からより詳細に明らかになり、また、以下に述べるように本発明を実施することによってわかるであろう。
【００１１】
本発明の上記その他の利点および特徴を実現することができる方法を説明するために、上記で簡単に説明した本発明のより具体的な説明を、添付の図面に示す本発明の特定の実施形態を参照することによって示す。これらの図面は、本発明の単なる典型的な実施形態を示し、従って、本発明の範囲を限定するとみなされるものではないことを理解し、次に、添付の図面を用いて具体性および細部をさらに加え、本発明を記述し説明する。
【発明を実施するための最良の形態】
【００１２】
本発明は、コンピュータシステムにおける問題の根本的な原因をプログラムにより診断する仕組みに関するものである。まず、適切な手段を追加して、診断すべきタスクの実行状態を記述するイベントを生成する。オペレーティングシステム内でこれらのイベントを監視し、これらのイベントの少なくとも一部をログファイルにログ記録する。エラー状態の検出に応答して、診断モジュールが呼び出される。診断モジュールは、問題の診断に関連するイベントに関してログファイルに問合せを行い、この問合せの結果を評価することによって根本的な原因を特定する。この問題の根本的な原因が診断されると、この根本的な原因に対応する解決モジュールが呼び出されて、この問題をプログラムにより解決することができる。診断および解決モジュールの呼出しは、ポリシールールの対象とすることができる。さらに、更新サービスにより、必要に応じて、検出、診断および解決モジュールを自動的に更新することができる。
【００１３】
図面に移ると、同じ参照数字は同じ要素を指し、本発明が適切なコンピュータ環境において実施されるように示されている。以下の説明は、図に示す本発明の実施形態に基づくものであるが、本明細書では明示的に説明しない代替実施形態に関して本発明を限定するものとみなすべきではない。
【００１４】
以下の説明では、特に指示しない限り、１または複数のコンピュータによって実行されるオペレーションの動作および記号表現を参照して本発明を説明する。従って、ときおりコンピュータにより実行されると称するこのような動作およびオペレーションは、コンピュータの処理装置によって、構造化形式のデータを表す電気信号を操作することを含むことを理解されたい。この操作により、データが変換されるか、あるいは、データがコンピュータのメモリシステム内の複数の場所に維持され、それによって、当業者ならよく理解している方式でコンピュータのオペレーションが再構成されるか、その他の方法で変更される。データを維持するデータ構造は、データフォーマットによって定義される特定の特徴を有するメモリの物理的な場所である。ただし、上記の状況において本発明を説明するが、これは限定的なものではなく、以下で説明する様々な作用および動作をハードウェアで実施することもできることが当業者には理解されよう。
【００１５】
図１を参照すると、本発明は、ソフトウェアアプリケーションおよびハードウェアの信頼性および可用性を監視することに関係している。これらのソフトウェアアプリケーションは、多くの異なるコンピュータアーキテクチャの１つを有し得るコンピュータ上に常駐する。説明のために、図１に、これらの装置に使用可能なコンピュータアーキテクチャの一例の概略図を示す。図示したアーキテクチャは、適切な環境の単なる一例であり、本発明の使用法または機能の範囲を限定するものではない。これらのコンピュータ装置が、図１に示す構成要素のいずれかまたはその組合せに関連する依存性または要件を有すると解釈すべきではない。
【００１６】
本発明は、多数の他の汎用または特殊用途のコンピュータまたは通信用の環境または構成で動作する。本発明とともに用いるのに適したコンピュータ用のシステム、環境および構成の周知の例は、これらに限定されないが、携帯電話、ポケットコンピュータ、パーソナルコンピュータ、サーバ、マルチプロセッサシステム、マイクロプロセッサベースのシステム、ミニコンピュータ、大型コンピュータおよび上記システムまたは装置のいずれかを含む分散コンピュータ環境を含む。
【００１７】
最も基本的な構成において、コンピュータシステム１００は、典型的には、少なくとも１つの処理装置１０２およびメモリ１０４を含む。メモリ１０４は、（ＲＡＭなどの）揮発性、（ＲＯＭ、フラッシュメモリなどの）不揮発性、またはこれら２つの何らかの組合せとすることができる。この最も基本的な構成を破線１０６で図１に示す。
【００１８】
記憶媒体装置は、追加の特徴および機能を有し得る。例えば、記憶媒体装置は、これらに限定されないが、ＰＣＭＣＩＡカード、磁気および光ディスクならびに磁気テープを含み、（取り外し可能および取り外し不能の）追加の記憶装置を含むことができる。このような追加の記憶装置を、取り外し可能記憶装置１０８および取り外し不能記憶装置１１０によって図１に示す。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールその他のデータなどの情報を記憶させる任意の方法または技術で実施する揮発性および不揮発性、取り外し可能および取り外し不能の媒体を含む。メモリ１０４、取り外し可能記憶装置１０８および取り外し不能記憶装置１１０は、すべてコンピュータ記憶媒体の例である。コンピュータ記憶媒体は、これらに限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリその他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多目的ディスクその他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置その他の磁気記憶装置、および所望の情報を記憶するのに使用することができ、コンピュータ装置がアクセスすることができる任意の他の媒体を含む。
【００１９】
本明細書で用いるとき、「モジュール」または「コンポーネント」という用語は、コンピュータシステム上で実行されるソフトウェアのオブジェクトまたはルーチンを指し得る。本明細書で説明する様々なコンポーネント、モジュール、エンジンおよびサービスを、コンピュータシステム上で実行されるオブジェクトまたはプロセスとして（例えば、別々のスレッドとして）実施することができる。本明細書で説明するシステムおよび方法は、ソフトウェアで実施することが好ましいが、ソフトウェアおよびハードウェアでの実施またはハードウェアでの実施も可能であり、企図されている。
【００２０】
コンピュータ装置１００は、ホストが他の装置と通信することができる通信チャネル１１２を含むことができる。通信チャネル１１２は、通信媒体の例である。通信媒体は、典型的には、コンピュータ可読命令、データ構造、プログラムモジュールその他のデータを搬送波その他の搬送機構などの変調データ信号形式で実施し、任意の情報送達媒体を含む。「変調データ信号」という用語は、その信号の１または複数の特徴を、信号に含まれる情報を符号化するように設定または変更した信号を意味する。例として、通信媒体は、有線ネットワークおよび直接有線接続などの有線媒体、ならびに音響、電波、赤外その他の無線媒体などの無線媒体を含むが、これらに限定されるものではない。本明細書で用いるコンピュータ読取り可能媒体という用語は、記憶および通信媒体をともに含む。
【００２１】
コンピュータ装置１００は、キーボード、マウス、ペン、音声入力コンポーネント、タッチ入力デバイスなどの入力コンポーネント１１４も有することができる。出力コンポーネント１１６は、スクリーンディスプレイ、スピーカ、プリンタなどと、それらを駆動するレンダリングモジュール（しばしば「アダプタ」と呼ぶ）とを含む。コンピュータ装置１００は、電源１１８を有する。これらすべてのコンポーネントは、当技術分野では周知のものであり、ここで詳しく論じる必要はない。
【００２２】
図２に、本発明の機能を実施するのに用いることができるより具体的な構成２００を示す。構成２００は、リモートコンピュータシステム２３６と通信するコンピュータシステム２０１を含む。ただし、コンピュータシステム２０１は、以下でさらに説明する更新サービス機能はなくなるが、リモートコンピュータシステム２３６の助けがなくても、本発明の機能を実施することができる。必要ではないが、コンピュータシステム２０１および２３６の各々は、コンピュータシステム１００に関して上述したように構成し得る。
【００２３】
図３に、本発明の原理に従ってコンピュータシステムにおける問題をプログラムにより診断し、潜在的に解決する方法３００の流れ図を示す。方法３００を、構成２００の文脈において実施することができるので、次に、図２および３を互いに頻繁に参照して説明する。
【００２４】
図３では、方法３００は、オペレーティングシステム内でイベントを監視する動作（動作３０１）を含む。図２を参照すると、本明細書では全体として「イベントプロバイダ２６２」とも称する、複数のＯＳ（オペレーティングシステム）のコンポーネント、ドライバ、アプリケーションおよびサービス２６２により、監視されるイベントを生成する。イベントプロバイダ２６２は、イベント２０２をロガー２０４に伝達する。一実施形態では、所与の任意の時点で集められるデータ量は、そのときに存在する環境によって制限される。従って、ロガー２０４は、より少ないイベントを処理するであろう。従って、所与の任意のイベントプロバイダは、それが感知するインタラクション（interaction）ごとにイベントを生成する必要はなく、問題の根本的な原因に関係したより関連の深いイベントだけを生成すればよい。例えば、ディスクドライブがセクタに書込みを行うたびにイベントを生成する必要はない。しかし、ディスクドライブが読取りまたは書込みコマンドに応答し損なったり、禁止セクタに書込みを試みようとした場合には、イベントを生成することになろう。
【００２５】
イベントプロバイダ２６２の一例は、電源、プラグアンドプレイ操作、メモリ管理、（ＰＣＩなどの）バス制御および他の低レベルＡＰＩ（Application Programming Interface）を管理するソフトウェアモジュールを含む。他のオペレーティングシステムコンポーネント（またはアプリケーションあるいはドライバ）も、ロガー２０４にイベントを伝達することができる。他のオペレーティングシステムコンポーネントの例は、ネットワークモジュール、グラフィックモジュール、オーディオモジュールおよび印刷モジュールを含む。
【００２６】
ロガー２０４に伝達されるイベント２０２の種類の例には、ユーザ要求、システムコール、デバイス接続、通信要求などを含む。例えば、１つのイベントは、ユーザがコンピュータシステム２０１を低電力または待機状態にする要求を出したことを記述し、後続のイベントは、ユーザ要求が成功しなかった場合に、ユーザまたはサポートエンジニアがこの待機障害を診断し解決するのを助ける。例えば、この待機障害は、アプリケーションまたはドライバが低電力状態において要求を拒否したものを含むことができる。しかし、オペレーティングシステムによって検出可能な任意の他のイベントを、イベントプロバイダ２６２からロガー２０４に提供することができる。
【００２７】
コンピュータシステム２０１（特にロガー２０４）がイベントを監視する（動作３０１）とき、ロガー２０４は、ログファイルにこれらのイベントの少なくとも一部をログ記録する（動作３０２）。例えば、イベント追跡ログファイル２４８は、このようなログファイルの例を表す。ロガー２０４は、イベント２０２のすべてまたは一部をログ記録するように構成される。任意選択で、ロガーは、問題を診断する助けとなる可能性がより大きいイベントをログ記録するように構成し得る。ロガー２０４は、診断ポリシーサービス２０８にこれらのイベントを通知することもできる。いくつかの実施形態では、診断ポリシーサービス２０８に流れるイベントのボリュームは、イベント追跡ログファイル２４８に流れるイベントのボリュームよりもはるかに少なくなり得る。例えば、ロガー２０４は、単に、トランザクションの開始または終了時に、あるいは、エラー状態が生じたときに診断ポリシーサービス２０８に通知することができる。
【００２８】
監視されるイベントの少なくとも一部をログ記録する（動作３０２）間の何らかの時点で、コンピュータシステム２０１は、１または複数のエラー状態を検出する（動作３０３）。図２を参照すると、診断ポリシーサービス２０８によってこれを実現することができる。診断ポリシーサービス２０８は、実際の問題が生じた時点を、例えば、所定の単一のエラー状態を検出することによって、または、所定の一連のエラー状態が生じたことを検出することによって決定する。
【００２９】
問題が検出されると、コンピュータシステム２０１は、これら１または複数のエラー状態によって明らかにされた問題をプログラムにより診断する機能的な結果指向ステップを実施する（ステップ３１０）。このステップは、このような結果を得るための任意の対応する動作を含み得る。ただし、図に示す実施形態では、このステップは、対応する動作３１１から３１４を含む。
【００３０】
診断モジュールを呼び出す（動作３１１）ことによって実際にプログラムによる診断を実施する前に、コンピュータシステム２０１は、ルールを調べて、そのルールに従って診断モジュールを呼び出すべきか否かを決定し得る（動作３０４）。ルールは、ユーザが入力した命令を受け取ることによって、または、おそらくはデフォルト値によって設定し得る。従って、診断ポリシーサービス２０８は、監視サービス２１２を介して間接的に診断モジュール２２０に接続される。
【００３１】
監視サービス２１２は、根本的な原因を明らかにするために、どのイベントを伝達して診断モジュール２２０を呼び出すかをフィルタ処理するポリシーを適用する。このようなイベントのフィルタ処理が望ましいことがある場合の一例は、ＩＴ（情報技術）マネジャーまたはシステム管理者が、ある種の自動的に根本原因を決定する動作および／または問題を解決する動作を、オペレーティングシステムが自動的に実施しないことを好ましいとする企業環境である。例えば、ＩＴマネジャーは、問題が生じたことの通知を受けたいが、自動的に根本原因の解析または解決が行われないようにしたいことがある。または、ＩＴマネジャーは、根本原因の解析が行われるようにしたいが、解決は行われないようにしたいことがある。
【００３２】
例えば、問題の根本原因の決定に応答してコンピュータシステム２０１が取り得る１つの動作は、最新のデバイスドライバを自動的にインストールすることであろう。場合によっては、最新のデバイスドライバが、予期せぬ動作上の変化を生じることがあるので、企業のＩＴマネジャーは、ポリシー２１４を入力して（２１６）、ユーザがデバイスドライバを更新することができないか、あるいはユーザにその権限を与えないように指定することができる。ＩＴマネジャーが監視サービス２１２に適用し得るポリシーの別の例は、問題解決動作が自動的に行われないようにすることである。こうすると、コンピュータシステム２０１にその措置を自動的に実施させる代わりに、ユーザまたはＩＴマネジャーが、その措置を実施するかどうかを決めることができる。
【００３３】
診断ポリシーサービス２０８がある特定の組の１または複数のエラー状態を検出したときに、監視サービス２１２は、それに記憶されたポリシーが呼出しを許可する場合、適切な診断モジュール２２０の１つを呼び出す（２１８）（動作３１１）。あるいは、適切な診断モジュールを、（例えば、監視サービス２１２を伴わない実施形態では）診断ポリシーサービス２０８、またはイベントプロバイダ２６２の１つが、直接呼び出すことができる。コンピュータシステム２０１は、複数の診断モジュールを含むことができ、それぞれが、所定のエラー状態または所定の一連のエラー状態の根本的な原因を診断する。
【００３４】
各診断モジュールは、起動されると、関連するデータソースに問合せを行い、それらを相関させるように構成され（２４２）、１または複数のエラー状態によって明らかにされた問題を診断し（動作３１２）、どのイベントおよび／または状態が問題のイベントに先行していたかについての情報を明らかにする。このような関連するデータソースは、例えば、イベント追跡ログ２４８、レジストリなどの構成データベース２５２、システム適合性マネジャー２５４、ＷＭＩプロバイダ２５６その他のデータソースならびにログファイル２５０を含むことができる。
【００３５】
個々のオペレーティングシステムの実施形態に応じて、図に示すデータソースに加えて、あるいはその代わりに、他のログファイル２５０（例えば、ネットワーク状態ログ）その他のデータソースに問合せを行うことができる。
【００３６】
システム適合性マネジャー２５４は、様々なサブシステム（例えば、ＰＣＩバスサブシステム、ＵＳＢサブシステムおよびＡＧＰサブシステム）ならびにシステム中の他のバスドライバおよびドライバスタックから、ステータスおよびエラーメッセージを受け取るサービスである。これらは、問題のハードウェアを正常に機能させるためにデバイス固有の回避策が必要な既知のハードウェアの異常に関する。このような回避策は、デバイスがどのように機能するかに影響を及ぼすことがあり、従って、エンドユーザが認識する問題の根本的な原因となることがある。ＷＭＩプロバイダは、システム上のハードウェアデバイスについての診断情報が明らかにする。
【００３７】
診断モジュールは、問合せの結果２４４を評価し（動作３１３）、この評価に応答して、１または複数のエラー状態の根本的な原因を特定する（動作３１４）。これは、エラー状態に対応する診断ルーチンを実行することによって行うことができる。これら診断モジュールの少なくとも一部（ならびに解決モジュール２２４の少なくとも一部および診断ポリシーサービス２０８）の各々は、対応する診断モジュールの比較的小規模な改変を許容できるプラグイン機能を有し得る。より具体的には、一実施形態では、診断モジュール２２０は、問合せ結果２４４を根本的な原因の関連性のリストと比較する。これにより、１または複数のエラー状態によって明らかにされた問題をプログラムにより診断するステップ（ステップ３１０）が完了する。
【００３８】
問合せ結果２４４が、ある特定された根本的な原因に関連する場合、呼び出された診断モジュール２２０は、適切な解決モジュール２２４を呼び出して（動作３０８）、特定された根本的な原因に対応する特定された解決策を実施することができる。ある問題に関して特定された根本的な原因は、存在することがわかっている何らかの問題である。問合せを行って、具体的に、この問題が存在するか否かを診断する。再度、監視サービス２１２は、記憶されたポリシーを考慮に入れて、ルールに従って解決モジュールを呼び出すべきか否かを決定することができる（動作３０７）。従って、診断モジュールは、まず、監視サービス２１２に根本的な原因を通知する（２２２Ａ）。監視サービス２１２は、記憶されたポリシーが呼出しを許可する場合、適切な解決モジュール２２４を呼び出す（２２２Ｂ）。１または複数の根本的な原因の異なる組合せに関連する複数の解決モジュール２２４が存在することもある。各解決モジュールは、必要に応じて比較的小規模な改変を行うことができるプラグイン機能も有し得る。
【００３９】
各解決モジュール２２４を、監視サービス２１２内のポリシーを条件として適切な診断モジュールによって呼び出されるエラー解決ルーチンにより構成することができる。エラー解決ルーチンの例は、新しいデバイスドライバを探し、および／またはインストールすること、あるいは、競合するデバイスドライバまたはアプリケーションを使用不可にするか、または再構成することを含む。一実施形態では、これらのルーチンの少なくとも一部を、自動的に（すなわち、ユーザの入力を必要とせずに）実施する。ただし、解決モジュールの中には、診断ユーザインタフェースモジュール２３２（例えば、「トラブルシューティングウイザード」）を呼び出すこと２２８によって得られるユーザ入力を利用することもできる。診断ユーザインタフェースモジュール２３２を連動させて、適切な解決モジュール（または、コンピュータシステム全体）が用いる追加の情報を入力するようにユーザを促し、それにより、問題を特定または解決するように試みることができる。これは、さらなるユーザの助けなしでは、１または複数のエラー状態の根本的な原因を、プログラムによって特定かつ／または解決できないときに特に有用となり得る。
【００４０】
解決モジュール２２４と診断ユーザインタフェース２３２のインタラクションを、双方向の矢印２２８Ａによって示す。診断モジュール２２０と診断ユーザインタフェース２３２のインタラクションを、双方向の矢印２２８Ｂによって示す。診断ユーザインタフェース２３２により、イベントプロバイダ２６２とのユーザインタラクション２２８Ｃも可能になり、どのイベントを生成するかが改変される。
【００４１】
トラブルシューティングアプリケーション２６４は、診断ポリシーサービス２０８が問題を検出するのを待つのではなく、ユーザが監視サービス２１２に問題を特別に報告することができるユーザインタフェースを提供する。診断モジュール２２０は、報告された問題の根本的な原因を診断し、その後、解決モジュール２２４がその問題を解決することになる。
【００４２】
ときおり、どのイベントをログ記録するか、診断モジュールがどのように診断を行うか、または解決モジュールが、ある問題の特定された根本的な原因をどのように解決するかを改変すると有利なことがある。例えば、診断モジュールが、ログ記録されたイベントに基づいて問題を診断することができないかもしれないし、解決モジュールが、改変なしではその問題を適切に解決することができないかもしれない。従って、診断ポリシーサービス２０８、診断モジュール２２０、解決モジュール２２４および／または診断ユーザインタフェースモジュール２３２からの情報を、活動ログ２３０に伝達して、エラー報告サービス２３８に報告することができる（動作３０５）。例えば、解決モジュールは、矢印２２６で示すように活動ログ２３０に報告する。
【００４３】
活動ログ２３０を、ユーザに対しても表示することができ、それにより、ユーザが検出された問題、診断結果は何か、診断された問題がどのように解決されたかを閲覧することができる。活動ログ２３０を、離れた場所にも提供することができ、それにより、テクニカルサポートが、ユーザからの関連する事実の提示に頼ることなく、関連する事実を閲覧することができる。活動ログ２３０は、エラー報告サービス２３８にも送信することができ、全体的にどんな問題がユーザのシステム上で生じているかに関する統計情報を形成する助けとなる。
【００４４】
更新サービス２４０を用いて、コンピュータシステム２０１のモジュールの１または複数に、コンピュータシステム２０１が受け取るべき更新情報を送信することができる（動作３０６）。例えば、更新サービス２４０は、追加のイベントまたはイベントシーケンスでロガー２０４を更新して、それらをイベント追跡ログファイル２４８に記憶させ、エラー報告サービス２３８またはユーザが経験した障害に関する他の情報源が検出した新しい問題の根本的な原因を分析する際の助けとなることができる。更新サービス２４０は、診断ポリシーサービス２０８を更新して、問題の検出方法を変更することもできる。更新サービス２４０を用いて、１または複数の診断モジュール２２０および解決モジュール２２４を更新し（既存のモジュールの変更、新しいモジュールの提供、あるいはプラグインの追加または改変）、特定の問題に対して決定された新しい解決策を反映させることもできる。一実施形態では、更新サービス２４０は、供給業者のコンピュータシステム２３６によって操作され、インターネットを介してコンピュータシステム２０１のモジュールに更新情報を送信する。あるいは、第三者が、カスタムの変更、または全く新しいモジュールおよび構成情報を提供することができる。
【００４５】
エラーイベントに、それに関連する既知の根本的な原因がない場合、診断モジュール２２０は、この情報を活動ログ２３０に報告し、活動ログ２３０はエラー報告サービス２３８にエラー報告２３４を送信する。
【００４６】
供給業者が、活動ログ２３０が送信した情報から根本的な原因を決定することができる場合、根本的な原因の関連性情報およびそれらに対応する問題解決情報が、更新サービス２４０を介してコンピュータシステム２０１に送信される。供給業者が、根本的な原因を決定することができない場合、供給業者は、更新サービス２４０を用いて、ロガー２０４に、追加のイベントまたは状態情報をイベント追跡ログファイル２４８に記憶するように命令することができる。同様に、解決モジュール２２４は、適切な解決が行われるようにするために追加のイベント２０２を記憶するようにロガーに命令する（２６０）ことができる。この問題が再発した後で、この追加の情報をエラー報告サービス２３８に送信すると、この追加の情報により、供給業者はこの問題の根本的な原因をより適切に特定することができる。
【００４７】
エラー報告２３４は、既知の根本的な原因を調べる前であっても送信することができる。この早い段階でエラーを報告すると、診断および解決が試みられる前に、更新サービス２４０が、更新するべき診断モジュール２２０および／または解決モジュール２２４を更新することができる。あるいは、診断を行った後、解決を行う前にこのエラーを報告することができる（２３４）。この場合には、更新サービス２４０は、この具体的に診断された問題を解決する専用の特定の解決モジュールを更新することができる。
【００４８】
診断ポリシーサービス２０８、診断モジュール２２０および解決モジュール２２４は、それらの活動（例えば、エラーが検出された、診断モジュールが呼び出された、診断モジュールが何らかの動作を行った、根本的な原因が見つかった、根本的な原因を決定することができなかった、解決モジュールが呼び出された、解決モジュールがこれらの動作を行った、問題が解決された、問題が解決されなかったなど）を活動ログ２３０に報告するように構成することができる。これは、供給業者に、システムが問題を診断しているかどうか、およびこの問題が解決されつつあるか否かに関する情報を提供する。この情報は、供給業者にとって貴重となり得る。何故ならば、これらの情報を用いて、診断モジュール２２０または解決モジュール２２４を更新する必要があるか否かを決定することができるからである。情報は、供給業者が、どの問題がエンドユーザのところで最も多発しているかを理解する際にも有用であり、それにより、供給業者は、その情報に対して措置を講ずることができる。例えば、供給業者は、今後、この多発する問題を回避するために新しいアーキテクチャを開発することによって対応することができよう。
【００４９】
エラー報告２３４は、既知の根本的な原因を調べる前であっても送信することができる。この早い段階でエラーを報告すると、診断および解決が試みられる前に、更新サービス２４０が、更新するべき診断モジュール２２０および／または解決モジュール２２４を更新することができる。あるいは、診断を行った後、解決を行う前にこのエラーを報告することができる（２３４）。この場合には、更新サービス２４０は、この具体的に診断された問題を解決する専用の特定の解決モジュールを更新することができる。
【００５０】
上述したように、更新サービス２４０を介して送信することができる更新情報の一例は、解決モジュール２２４の新しい問題解決策である。特定の種類のエラーが識別されたが、根本的な原因を決定するのが難しい場合、更新情報は、イベントプロバイダまたはロガーに命令して、より多くのイベント情報をイベント追跡ログファイル２４８に記憶することができる。これは、診断モジュール２２０が、より多くの詳細な情報を活動ログ２３０に送信することができ、活動ログは、より詳細な情報をエラー報告サービスに送信する。追加の情報は、供給業者のコンピュータシステム２３６が、根本的な原因およびその問題に対する解決策を決定する際の助けとなる可能性がある。次いで、新しい診断および解決モジュールをダウンロードして、その問題に対処することができる。
【００５１】
従って、内部ポリシーの制約を条件として、問題をプログラムにより診断し解決する仕組みを説明した。さらに、この仕組みは、エラー状態の根本的な原因をより適切に診断するために、必要に応じてそれ自体を更新し、その根本的な原因を解決する。
【図面の簡単な説明】
【００５２】
【図１】本発明の機能を実施することができる適切なコンピュータシステムを示す図である。
【図２】本発明の機能を実施するのに用いることができるより具体的な構成を示す図である。
【図３】本発明の原理に従ってコンピュータシステムにおける問題をプログラムにより診断し、潜在的に解決する方法を示す流れ図である。
【符号の説明】
【００５３】
１０２  処理装置
１０４  システムメモリ、揮発性メモリ、不揮発性メモリ
１０８  取り外し可能記憶装置
１１０  取り外し不能記憶装置
１１２  通信チャネル
１１４  入力コンポーネント
１１６  出力コンポーネント
１１８  電源
１２０  ネットワーク
２０４  ロガー
２０８  診断ポリシーサービス
２１２  監視サービス
２１６  ＩＴマネジャーによる入力およびデフォルトのＯＳポリシー設定
２２０  診断モジュール
２２４  解決モジュール
２３０  活動ログ
２３２  診断ユーザインタフェース
２３８  エラー報告サービス
２４０  更新サービス
２４８  イベント追跡ログファイル
２５０  他のログファイルおよびシステム状態情報源
２５２  構成データベース
２５４  システム適合性マネジャー
２５６  ＷＭＩプロバイダ
２６２  ベースＯＳコンポーネント、ドライバ、アプリケーションおよびサービス
２６４  トラブルシューティングアプリケーション
【図１】
2004334869.tif 000003
【図２】
2004334869.tif 000004
【図３】
2004334869.tif 000005