(57)【要約】【課題】デバイスの電源モードを、システム電源モードとは独立にパワーダウンモードに設定できるコンピューターシステムの電源管理装置及び電源管理方法を提供する。【解決手段】パケット監視機能を備えたフィルタドライバを用いてアイドル状態のデバイスを検出し(S51、S52)、そのアイドル時間をカウントする。フィルタドライバは、カウントされたアイドル時間の積算値が所定の値を超えた場合(S53)、デバイスの電源モードのパワーダウンモードへの変更を要求する擬似入出力要求パケットを生成してデバイスドライバに送り(S55)、デバイスドライバは、デバイスの電源モードをパワーダウンモードに設定する(S56)。これによって、アイドル状態のデバイスの電源モードを、システム電源モードとは独立にパワーダウンモードに設定でき、不要な電力消費を抑えてシステムの負荷を効率的に制御することができる。【選択図】  図４
2004152309.tif 000002
【特許請求の範囲】
【請求項１】
コンピューターシステムの電源モードを動作モード及びパワーダウンモードの少なくとも一つを含むように設定する基本システムと、
固有の機能及び動作を行う少なくとも一つのデバイスと、
前記デバイスに対する駆動を制御し、該デバイスの電源モードを動作モード及びパワーダウンモードの少なくとも一つを含むように可変設定するデバイスドライバと、
前記基本システムに結合され、前記デバイスのアイドル状態が予め設定された時間を超えて持続する場合、または前記アイドル状態が前記予め設定された時間を超えてもリセットされない場合のパワーダウン状態で動作信号を受け取り、該当するデバイスに送出して動作させ、前記動作信号を前記デバイスドライバに送出して前記動作信号を処理した後、前記該当するデバイスの電源モードをパワーダウンモードに変更するフィルタドライバと、
を含むことを特徴とするコンピューターシステムの電源管理装置。
【請求項２】
前記フィルタドライバは、前記基本システムと前記デバイスドライバとの間でやり取りされるパケットを監視して、アイドル状態にあるデバイスを検出することを特徴とする請求項１に記載のコンピューターシステムの電源管理装置。
【請求項３】
前記フィルタドライバは、前記基本システムが生成して出力する入出力要求パケット（ＩＲＰ）と同様の擬似入出力要求パケット（ＦＩＲＰ）を生成して出力し、前記該当するデバイスの電源モードを動作モードからパワーダウンモードに変更することを特徴とする請求項１に記載のコンピューターシステムの電源管理装置。
【請求項４】
前記デバイス及び前記デバイスドライバは、サウンドカード及びサウンドドライバを含むことを特徴とする請求項１に記載のコンピューターシステムの電源管理装置。
【請求項５】
コンピューターシステムの電源モードが動作モードである時に、アイドル状態にある少なくとも一つのデバイスを検出する第１ステップと、
前記アイドル状態にある検出されたデバイスのアイドル時間をカウントする第２ステップと、
前記カウントされたアイドル時間の積算値が、予め設定された基準時間を超えた場合、前記デバイスの電源モードを動作モードからパワーダウンモードに変更する第３ステップと、
を含むことを特徴とするコンピューターシステムの電源管理方法。
【請求項６】
前記第１ステップは、コンピューターシステムの基本システムとデバイスドライバとの間でやり取りされるパケットを監視して、デバイスのアイドル状態を検出することを含んでいる請求項５に記載のコンピューターシステムの電源管理方法。
【請求項７】
前記第３ステップは、コンピューターシステムの基本システムが生成して出力する入出力要求パケット（ＩＲＰ）と同様の擬似入出力要求パケット（ＦＩＲＰ）をフィルタドライバで生成し、該ＦＩＲＰを前記デバイスに送ることを含んでいる請求項５に記載のコンピューターシステムの電源管理方法。
【請求項８】
前記第３ステップは、前記アイドル時間の積算値が前記予め設定された基準時間を超えた場合、擬似入出力要求パケット（ＦＩＲＰ）をフィルタドライバで生成し、該ＦＩＲＰを前記デバイスに送ることを含んでいる請求項５に記載のコンピューターシステムの電源管理方法。
【請求項９】
前記第３ステップは、前記アイドル時間の積算値が前記予め設定された基準時間を超えていない場合、前記デバイスをこれまで設定されていた電源モードで動作させることを含んでいる請求項５に記載のコンピューターシステムの電源管理方法。
【請求項１０】
コンピューターシステムの電源モードが動作モードである時に、アイドル状態にある少なくとも一つのデバイスを検出する第１ステップと、
前記アイドル状態にある検出されたデバイスのアイドル時間をカウントする第２ステップと、
前記アイドル状態が、予め設定された基準時間の間にリセットされない場合、前記デバイスの電源モードを動作モードからパワーダウンモードに変更する第３ステップと、
を含むことを特徴とするコンピューターシステムの電源管理方法。
【請求項１１】
基本システムのパワーマネージャ（電源管理プログラム）が、デバイスのアイドル状態の検出と電源管理のために、タイマーを設定しかつ予め設定された時間の経過後にデバイスの電源状態を変更する関数（ＰｏＲｅｇｉｓｔｅｒＤｅｖｉｃｅＦｏｒＩｄｌｅＤｅｔｅｃｔｉｏｎ）を提供することを特徴とする請求項１０に記載のコンピューターシステムの電源管理方法。
【請求項１２】
デバイスの電源状態をパワーダウン状態に設定するステップと、
前記デバイスの使用時に生成される入出力要求パケット（ＩＲＰ）をデバイスドライバに送る前に、前記デバイスを動作状態に変更するパワーＩＲＰを送るステップと、
前記デバイスが動作状態に変更された後、受け取った前記ＩＲＰを前記デバイスドライバに送るステップと、
前記デバイスドライバが前記ＩＲＰの処理を完了した後、前記デバイスをパワーダウン状態に設定するステップと、
を含むことを特徴とするコンピューターシステムの電源管理方法。
【請求項１３】
複数の前記入出力要求パケット（ＩＲＰ）を連続して受け取った場合、最初の前記ＩＲＰで前記デバイスをパワーアップさせ、最後の前記ＩＲＰで前記デバイスをパワーダウンさせることを特徴とする請求項１２に記載のコンピューターシステムの電源管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデバイスを備えたコンピューターシステムにおいて、基本システム（ＯＳ）により設定されたシステム電源モードとは独立に、各デバイスの電源モードを動作モード又はパワーダウンモードに可変設定するためのコンピューターシステムの電源管理装置及び電源管理方法に関する。
【背景技術】
【０００２】
本明細書を通じて、パワーダウンモードとは、パワーオンモード（例えば、通常の動作モード）を除くあらゆる種類の電源モード（スタンバイ、サスペンド、パワーオフ、待機等）を表わすものとする。図１０は、一般のコンピューターシステムにおける電源管理装置の構成を示すブロック図である。このコンピューターシステムは、基本システム１０、デバイスドライバ２０、バスドライバ３０、及びデバイス４０を含んでなるが、例えば、ネットワークアダプタ、ディスプレーアダプタ、マウス、モニター、ディスクドライブ、デジタルカメラ、スキャナ、及びサウンドカードといった各デバイス４０の電源モードは、基本システム１０により設定されたシステム電源モードに従って一括して決定される。
【０００３】
例えば、基本システム１０がシステム電源モードをパワーダウンモードに設定した場合、デバイスドライバ２０は、それが駆動及び制御しているデバイスの電源モードをパワーダウンモードに設定する。一方、基本システム１０がシステム電源モードを動作モードに設定した場合、デバイスドライバ２０は、デバイスの電源モードを動作モードに設定し、通常の給電を行う。このようにして、デバイスドライバ２０は、基本システム１０により設定されたシステム電源モードに応じて、デバイスの電源モードを動作モード（Ｄ０）又はパワーダウンモード（Ｄ１、Ｄ２、Ｄ３）に可変設定する。
【０００４】
例えば、基本システム１０は、設定したシステム電源モードに対応する入出力要求パケット（ＩＲＰ：Ｉ／Ｏ  Ｒｅｑｕｅｓｔ  Ｐａｃｋｅｔ）を生成し、このＩＲＰをデバイスドライバ２０に出力する。デバイスドライバ２０は、そのＩＲＰを識別し、制御対象とするデバイス４０の電源モードを動作モード又はパワーダウンモードに設定するデバイス電源モードパケット（ＤＰＭＰ：Ｄｅｖｉｃｅ  Ｐｏｗｅｒ  Ｍｏｄｅ  Ｐａｃｋｅｔ）を生成し、このＤＰＭＰをドライバスタックの最上端に出力して、スタック内にある全てのドライバにデバイス電源モードの変更を通知する。
【０００５】
デバイス電源モードパケット（ＤＰＭＰ）に応答して、デバイス４０は、そのハードウェアを操作して電源モードをパワーダウンモード又は動作モードに変更し、電源モードパケットをバスドライバ３０に送る。バスドライバ３０は、制御対象とするバス（ＰＣＩ、ＵＳＢ、ＩＥＥＥ１３９４等）に接続された全てのデバイスがパワーダウンモードである場合、バスの電源モードをパワーダウンモードに変更する。従って、基本システム１０がシステム電源モードをパワーダウンモードに設定すると、各デバイスの電源モードがパワーダウンモードに変更され、言い換えれば、システム全体がパワーダウンモードに入ることになる。
【０００６】
このように、各デバイスの電源モードはシステム電源モードに従って一括して決定される。即ち、現在のシステム電源モードが動作モードである場合、所定の時間だけアイドル状態が持続したデバイスがあっても、そのデバイスの電源モードは動作モードに保持されるため、不要な電力の消費と共にシステム負荷が非効率的に発生するという不具合がある。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、上記の従来技術の問題点に鑑みてなされたもので、その目的は、コンピューターシステムを構成するデバイスのアイドル状態を、パケット監視機能を備えたフィルタドライバを用いて検出し、アイドル状態にあるデバイスの電源モードを、コンピューターシステムの基本システムにより設定されたシステム電源モードの状態とは独立に、パワーダウンモードに変更できるようにするためのコンピューターシステムの電源管理装置及び電源管理方法を提供することにある。
【課題を解決するための手段】
【０００８】
上述した目的を達成するために、本発明に係るコンピューターシステムの電源管理装置は、コンピューターシステムの電源モードを動作モード及びパワーダウンモードの少なくとも一つを含むように設定する基本システムと、固有の機能及び動作を行う少なくとも一つのデバイスと、前記デバイスに対する駆動を制御し、該デバイスの電源モードを動作モード及びパワーダウンモードの少なくとも一つを含むように可変設定するデバイスドライバと、前記基本システムに結合され、前記デバイスのアイドル状態が予め設定された時間を超えて持続する場合、または前記アイドル状態が前記予め設定された時間を超えてもリセットされない場合のパワーダウン状態で動作信号を受け取り、該当するデバイスに送出して動作させ、前記動作信号を前記デバイスドライバに送出して前記動作信号を処理した後、前記該当するデバイスの電源モードをパワーダウンモードに変更するフィルタドライバとを含むことを特徴とする。
【０００９】
本発明の別の態様では、本発明に係るコンピューターシステムの電源管理方法は、コンピューターシステムの電源モードが動作モードである時に、アイドル状態にある少なくとも一つのデバイスを検出する第１ステップと、前記アイドル状態にある検出されたデバイスのアイドル時間をカウントする第２ステップと、前記カウントされたアイドル時間の積算値が、予め設定された基準時間を超えた場合、前記デバイスの電源モードを動作モードからパワーダウンモードに変更する第３ステップとを含むことを特徴とする。
【００１０】
また、上記コンピューターシステムの電源管理方法において、前記第１ステップは、コンピューターシステムの基本システムとデバイスドライバとの間でやり取りされるパケットを監視して、デバイスのアイドル状態を検出することを特徴とする。
【００１１】
また、上記コンピューターシステムの電源管理方法において、前記第３ステップは、前記アイドル時間の積算値が前記予め設定された基準時間を超えた場合、コンピューターシステムの基本システムが生成して出力する入出力要求パケット（ＩＲＰ）と同様の擬似入出力要求パケット（ＦＩＲＰ）をフィルタドライバで生成し、該ＦＩＲＰを前記デバイスに送ること特徴とする。
【００１２】
本発明の別の態様では、本発明に係るコンピューターシステムの電源管理方法は、コンピューターシステムの電源モードが動作モードである時に、アイドル状態にある少なくとも一つのデバイスを検出する第１ステップと、前記アイドル状態にある検出されたデバイスのアイドル時間をカウントする第２ステップと、前記アイドル状態が、予め設定された基準時間の間にリセットされない場合、前記デバイスの電源モードを動作モードからパワーダウンモードに変更する第３ステップとを含むことを特徴とする。
【００１３】
本発明の別の態様では、本発明に係るコンピューターシステムの電源管理方法は、デバイスの電源状態をパワーダウン状態に設定するステップと、前記デバイスの使用時に生成される入出力要求パケット（ＩＲＰ）をデバイスドライバに送る前に、前記デバイスを動作状態に変更するパワーＩＲＰを送るステップと、前記デバイスが動作状態に変更された後、受け取った前記ＩＲＰを前記デバイスドライバに送るステップと、前記デバイスドライバが前記ＩＲＰの処理を完了した後、前記デバイスをパワーダウン状態に設定するステップとを含むことを特徴とする。
【発明の効果】
【００１４】
以上のように、本発明によれば、コンピューターシステムを構成する各デバイスのアイドル状態を、パケット監視機能を備えたフィルタドライバを用いて検出し、デバイスがアイドル状態にある場合には、コンピューターシステムの基本システムにより設定されたシステム電源モードの状態とは独立に、そのデバイスの電源モードをパワーダウンモードに設定することによって、アイドル状態にあるデバイスに対する不要な給電を実施することなく、コンピューターシステムの負荷をより効率的に制御することが可能となる。また、フィルタドライバをシステムに追加することによって、コンピューターシステム中のデバイスドライバを変更することなく、コンピューターシステムをより容易に開発及び拡張することが可能となる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明に係るコンピューターシステムの電源管理装置及び電源管理方法の好適な実施形態について、添付した図面を参照して詳細に説明する。図１は、本発明の好適な一実施形態であるコンピューターシステムにおける電源管理装置の構成を示すブロック図であり、このコンピューターシステムは、基本システム（ＯＳ）１０、デバイスドライバ２０、バスドライバ３０、及びデバイス４０を含み、更にフィルタドライバ１００を含んで構成されている。フィルタドライバ１００は、デバイスドライバ２０の機能を拡張、即ち追加又は修正するものである。
【００１６】
フィルタドライバ１００は、ドライバスタック内に少なくとも一つ含まれ、デバイスドライバ２０の機能を拡張する。例えば、デバイスドライバ２０の上位レベルに追加されたフィルタドライバ１００は、基本システム１０により設定されたシステム電源モードが動作モードである場合にそのシステム電源モードをデバイスドライバ２０に通知し、また、デバイス４０で生成されたデータを、デバイスドライバ２０を介して基本システム１０に転送即ち中継する。
【００１７】
図２は、コンピューターシステムの起動時におけるフィルタドライバのロード処理及びタイマーの開始を示すフローチャート、図３は、ユーザモード、カーネルモード（基本システムが行う処理）、フィルタドライバ１００、及びファンクションドライバ４５の間の相互作用を示す構成図である。
【００１８】
システムが起動すると、先ずデバイスドライバ２０がメモリにロードされ、次にフィルタドライバ１００がロードされて、図２に示すような初期化手順が実行される。先ず、ユーザによって設定されたタイムアウト値を読み取る（Ｓ３１）。次に、フィルタドライバの動作のための他の基本的な作業を実行する。即ち、入出力要求パケット（ＩＲＰ）を一時格納する空間の割当て、イベントコールバックルーチンの設定、キューの初期化、及び後に使用される内部変数であるサスペンドフラグの初期化を実行する（Ｓ３２、Ｓ３３、Ｓ３４）。その後、タイマーを開始する（Ｓ３５）。
【００１９】
図３に示すように、ユーザモードで実行されるアプリケーションプログラムでは、様々なサウンドストリームが発生し、図３のサウンドデータは、Ｉ／Ｏマネージャ（入出力管理プログラム）によって入出力要求パケット（ＩＲＰ）に変換され、サウンドデバイスドライバに送られる。サウンドデバイスドライバは、複数のディスパッチルーチンからなり、これらのディスパッチルーチンには、サウンドデバイスの使用時に生成されるＩＲＰを処理するＣｒｅａｔｅディスパッチ（ＩＯＣ）、デバイスの電源状態の変更や照会のためのパワーＩＲＰを処理するＰｏｗｅｒディスパッチ、デバイスの取付け、取外し、及び動作に関わるＩＲＰを処理するＰｎＰディスパッチが含まれる。
【００２０】
フィルタドライバがデバイスの動作モード及びパワーダウンモードを管理する方法には、次のような三通りの方法がある。
【００２１】
第１の方法を、図４を参照して説明する。フィルタドライバ１００は、デバイス４０の動作状態を持続的に監視し（Ｓ５１）、対象デバイス４０が動作していない時間が予め設定された時間を超え、アイドル状態となった場合、そのアイドル時間をカウントする（Ｓ５２、Ｓ５３）。カウントされたアイドル時間の積算値が予め設定された基準時間を超えた場合（Ｓ５３）、フィルタドライバ１００は、基本システム１０により設定されたシステム電源モードが動作モードであっても、対象デバイスの電源モードを動作モードからパワーダウンモードに移行させるための制御信号、例えば、基本システム１０が生成して出力する入出力要求パケット（ＩＲＰ）と同様の擬似入出力要求パケット（ＦＩＲＰ：Ｆａｌｓｅ ＩＲＰ）を生成し、デバイスドライバ２０に送る（Ｓ５５）。
【００２２】
デバイスドライバ２０は、擬似入出力要求パケット（ＦＩＲＰ）を受け取ると、基本システム１０が生成して出力する入出力要求パケット（ＩＲＰ）と同様に、対象デバイスの電源モードが変更されたと判断し、アイドル状態にある対象デバイスの電源モードをパワーダウンモードに設定する（Ｓ５６）。これによって、アイドル状態にあるデバイスへの不要な給電を防止することができる。ステップＳ５３において、アイドル時間の積算値が予め設定された値より大きくない場合、デバイスは、これまで設定されていた電源モードで動作する（Ｓ５４）。
【００２３】
図５は、上記ＦＩＲＰの生成手順を示すアルゴリズムである。同図に示すように、基本システムは、設定したシステム電源モードに対応する入出力要求パケットを生成し、対象デバイスに出力する（ＰｏＲｅｑｕｅｓｔＰｏｗｅｒＩｒｐ、ＤｅｖｉｃｅＯｂｊｅｃｔ）。このパワーＩＲＰの種類に応じて、デバイスの電源状態を変更又は照会し、所望の電源状態（例えば、Ｄ０、Ｄ１、Ｄ２、Ｄ３）を設定する（ＭｉｎｏｒＦｕｎｃｔｉｏｎ、ＰｏｗｅｒＳｔａｔｅ）。ここで、Ｄ０はパワーオン、Ｄ１はスタンバイ、Ｄ２はサスペンド、Ｄ３はパワーオフを表わす。電源状態の設定後、新たに設定された電源状態に従ってシステムが実行（ＣｏｍｐｌｅｔｉｏｎＦｕｎｃｔｉｏｎ）され、予め設定された時間を超えて持続する場合、ＦＩＲＰが出力される。
【００２４】
図５において、“ＤｅｖｉｃｅＯｂｊｅｃｔ”は、対象デバイスの物理ドライバを表わし、“ＭｉｎｏｒＦｕｎｃｔｉｏｎ”は、デバイスの電源状態の変更や照会といったパワーＩＲＰの種類を表わす。また、“ＰｏｗｅｒＳｔａｔｅ”は、Ｄ０、Ｄ１、Ｄ２、Ｄ３のような電源状態を表わす。“ＣｏｍｐｌｅｔｉｏｎＦｕｎｃｔｉｏｎ”は、電源状態の変更後に実行されるコールバックルーチンであり、“Ｃｏｎｔｅｘｔ”は、そのコールバックルーチンに送られるパラメータである。
【００２５】
次に、フィルタドライバによってデバイスの動作モード及びパワーダウンモードを管理するための第２の方法を説明する。図１及び図３に示すフィルタドライバ１００は、基本システムのパワーマネージャ（電源管理プログラム）７０が提供するアイドル状態検出関数を操作し、予め設定された時間が経過するまでタイマーがリセットされない場合、デバイスの電源状態を変更する。以下、この方法を、図６、図７、及び図８を参照して詳細に説明する。
【００２６】
図６は、アイドル状態検出のためのタイマー設定と、それによる電源モードの管理方法の第２の実施形態を示すものである。パワーマネージャは、各デバイスのアイドル状態の検出及び電源管理の実行のために、タイマーを設定しかつ予め設定さられた（即ち、予め登録された）時間の経過後にデバイスの電源状態を変更する関数（ＰｏＲｅｇｉｓｔｅｒＤｅｖｉｃｅＦｏｒＩｄｌｅＤｅｔｅｃｔｉｏｎ）を提供する。この関数には、パラメータとして、バッテリモードでのタイムアウト値、実行モードでのタイムアウト値、及びタイムアウト後のデバイスの電源状態が含まれる。即ち、対象デバイスを指定した場合、パワーマネージャは、予め登録された時間の経過後に、その対象デバイスの電源状態を登録された電源状態に変更するパワーＩＲＰを生成する。ここで、“ＤｅｖｉｃｅＯｂｊｅｃｔ”は対象デバイス、“ＣｏｎｓｅｒｖａｔｉｏｎＩｄｌｅＴｉｍｅ”はバッテリモードでのタイムアウト値、“ＰｅｒｆｏｒｍａｎｃｅＩｄｌｅＴｉｍｅ”はＡＣモードでのタイムアウト値、及び“Ｓｔａｔｅ”はタイムアウト後のデバイスの電源状態を表す。
【００２７】
一方、デバイスの動作時には、パワーマネージャが提供する関数（ＰｏＳｅｔＤｅｖｉｃｅＢｕｓｙ）を使用し、内部タイマーをリセットして再初期化する必要がある。
【００２８】
図７は、図３に示すユーザモードからのパケットデータをカーネルモードが受け取り、Ｉ／Ｏマネージャ５０からＩＲＰが送られた場合における対象デバイスの電源モードの変更手順を示すフローチャートである。
【００２９】
先ず、パケットがキューに入ると、対象デバイスが自動的に実行される（Ｓ８１）。このルーチンは、基本システムにおける優先順位が低く、基本システムが優先順位の高い他の処理を完了した後に実行されるため、キュー内に複数のＩＲＰが保持されることがある。システムがサスペンドモードに入る直前の状態（即ち、サスペンドフラグ＝１）である場合は、キュー内にＩＲＰがないため、このルーチンは実行されない。
【００３０】
ステップＳ８１でデバイスがパワーダウン状態である場合、デバイスをパワーアップさせ（Ｓ８２）、キューから一つのパケットを取り出し（Ｓ８３）、取り出したパケットを次の段階のデバイスドライバに渡す（Ｓ８４）。この時点でデバイスは使用状態であるため、タイマーをリセットしてデバイスがパワーダウン状態に戻らないようにする（Ｓ８５）。キュー内にパケットが残っている場合、ステップＳ８３から始まる手順を繰り返す。一方、パケットが残っていない場合はこのルーチンを終了し（Ｓ８６）、タイマーがタイムアウトになるまでの間に再びこのルーチンが実行されない場合、パワーマネージャは、パワーダウンのＩＲＰを送り、デバイスをパワーダウンモードに設定する。
【００３１】
図８に示すように、図３に示すカーネルモードのＩ／Ｏマネージャ５０からＩＲＰが送られると、ディスパッチルーチンによりルーチンが開始され、全ての種類のパケットを受け取る（Ｓ９１）。
【００３２】
受け取ったＩＲＰがパワーＩＲＰであるか否かを判別し（Ｓ９２）、それがパワーＩＲＰではない場合は、内部変数であるサスペンドフラグが1であるか否か、即ち、システムがサスペンドモードに入る直前の状態であるか否かを判別する（Ｓ９３）。この判別（Ｓ９２、Ｓ９３）の結果、受け取ったＩＲＰがパワーＩＲＰではなく、かつ内部変数であるサスペンドフラグが０である場合は、パケットをキューに入れてフィルタドライバを通常動作させる（Ｓ９４）。キューにパケットが入れられた後、基本システムの下でキュー処理ルーチンが実行される。
【００３３】
ステップＳ９２において、受け取ったパケットがパワーＩＲＰであると判別された場合は、更に、システムの電源状態を変更するためのシステムパワーＩＲＰであるか否かを判別する（Ｓ９５）。この結果、受け取ったＩＲＰがシステムパワーＩＲＰではないと判別された場合は、次の段階（デバイスドライバ）に進む（Ｓ９６）。
【００３４】
一方、ステップＳ９５において、受け取ったパワーＩＲＰがシステムパワーＩＲＰであると判別された場合は、このＩＲＰの情報のうち、新たな（変更後の）状態がＳ０であるか否かを判別する（Ｓ９７）。新たな状態がＳ０である場合は、システムが動作モードへ移行中であるため、内部変数をクリア、即ちサスペンドフラグを０にセットする。これは、フィルタドライバが通常の動作モードに戻ったことを意味する（Ｓ９８）。また、新たな状態がＳ０ではない場合は、システムがパワーダウンモードへ移行中であるため、内部変数であるサスペンドフラグを１にセットして、ＩＲＰがこれ以上キューに入らないようにする（Ｓ９８）。キュー内に残っているＩＲＰを全て削除し、このルーチンを終了する（Ｓ１００）。
【００３５】
上述したようなフィルタドライバ１００をシステムに追加することによって、コンピューターシステムに組込まれた通常のデバイスドライバ２０を変更することなく、アイドル状態にあるデバイスの電源モードを、システム電源モードとは独立にパワーダウンモードに設定することができる。
【００３６】
第３の方法として、フィルタドライバは、デバイスの動作モード及びパワーダウンモードを、タイマーを使用することなく管理することができる。
【００３７】
フィルタドライバ１００において、最初にデバイス４０の電源状態をパワーダウン状態にしておき、デバイス使用時のＩＲＰ処理ルーチンであるディスパッチルーチンで、ＩＲＰをデバイスドライバ２０に送る前に、対象デバイスを動作状態に移行させるパワーＩＲＰを生成して送出し、デバイスが動作状態になった時点で、受け取ったＩＲＰをデバイスドライバに転送する。
【００３８】
デバイスは、デバイスドライバがＩＲＰの処理を完了するまで、パワーダウンモードに戻らないことが好ましい。従って、複数のＩＲＰを連続して受け取った場合は、最初のＩＲＰでデバイスをパワーアップさせ、最後のＩＲＰでパワーダウンさせる。言い換えれば、最初のＩＲＰをキューから取り出す時にデバイスをパワーアップさせ、キューが空になる、即ちクリアされた時にパワーダウンさせるものである。
【００３９】
更に、上述した各々の方法において、キューを使用することも、又は使用しないこともできる。キューを使用しない場合、特にユーザモードのアプリケーションで使用されるデバイスがパワーダウンモードから動作モードに移行する際に、パワーＩＲＰが処理される時にデバイスが一時的にその動作を停止して再開する現象が現れることがある。
【００４０】
図９は、本発明に係るコンピューターシステムにおける電源管理装置の好適な一実施形態を示すブロック図である。図３を参照して前述したように、例えば、デバイスドライバ２０はサウンドドライバ２００であり、デバイス４０はサウンドカード４００である。フィルタドライバ１００は、基本システム１０からサウンドカード４００に対して任意のデータが送られると、サウンドカード４００の電源モードを確認する。
【００４１】
サウンドカード４００の電源モードが動作モードである場合、フィルタドライバは、この動作モードを維持しながら、基本システム１０から受け取ったデータをサウンドドライバ２００を経由してサウンドカード４００に送り、サウンドカードは、対応する一連の機能及び動作を実施する。
【００４２】
しかし、サウンドカード４００の電源モードがパワーダウンモードである場合は、基本システムから受け取ったデータを一時格納した後、サウンドカードの電源モードをパワーダウンモードから動作モードに変更するための制御信号、例えば擬似入出力要求パケット（ＦＩＲＰ）を生成し、その後、このＦＩＲＰをサウンドドライバ２００に送る。このようにして、サウンドカードの電源モードは、パワーダウンモードから動作モードに変更される。
【００４３】
上記手順に続いて、サウンドカードの電源モードが動作モードに変更された後、一時格納されたデータをサウンドドライバ２００を介してサウンドカード４００に送り、サウンドカードは、対応する一連の機能及び動作を実施する。
【００４４】
一方、フィルタドライバ１００は、サウンドカードの動作状態を持続的に監視し、サウンドカードが所定の時間を超えてアイドル状態にある場合、そのアイドル時間をカウントする。カウントされたアイドル時間の積算値が予め設定された基準時間を超えた場合、基本システム１０により設定されたシステム電源モードとは独立に、サウンドカード４００の電源モードをパワーダウンモードに変更するための擬似入出力要求パケット（ＦＩＲＰ）を生成し、サウンドドライバ２００に送る。このＦＩＲＰに基づいて、サウンドドライバ２００は、アイドル状態のサウンドカード４００の電源モードをパワーダウンモードに変更し、これによって、アイドル状態にあるサウンドカードへの不要な給電を防止することができる。
【００４５】
従って、このようなフィルタドライバ１００を追加することによって、コンピューターシステムに組込まれたサウンドドライバ２００を変更することなく、アイドル状態にある各サウンドカードの電源モードを、システム電源モードとは独立にパワーダウンモードに変更することができる。
【００４６】
一方、サウンドカード４００の電源モードがパワーダウンモードである時に基本システム１０からサウンドカード４００に対してデータが送られた場合、フィルタドライバ１００は、そのデータを一時格納して、サウンドカードの電源モードをパワーダウンモードから動作モードに変更することを要求する擬似入出力要求パケット（ＦＩＲＰ）を生成し、サウンドドライバ２００に送る。サウンドカード４００の電源モードがパワーダウンモードから動作モードに変更されると、フィルタドライバ１００は、一時格納したデータをサウンドドライバ２００を介してサウンドカード４００に送り、サウンドカード４００は、対応する一連の機能及び動作を実施する。
【００４７】
例えば、フィルタドライバ１００は、パケット監視機能を用いて、ネットワークアダプタ、ディスプレーアダプタ、マウス、モニター、ディスクドライブ、デジタルカメラ、スキャナ、及びサウンドカードといった様々なデバイスと基本システムとの間でやり取されるデータパケットを持続的に監視し、対応するデバイスのアイドル状態を検出して、そのアイドル時間をカウントするものである。
【００４８】
以上、上述した本発明の好適な実施形態は、例示の目的のために開示されたものであって、当業者であれば、添付された特許請求の範囲に開示された本発明の技術的思想及びその技術的範囲内において、改良、変更、代替、又は付加による多様な他の実施形態を実施することが可能である。従って、上述した実施形態により本発明の範囲が限定されるものではない。
【図面の簡単な説明】
【００４９】
【図１】本発明に係るコンピューターシステムにおける電源管理装置を示すブロック図である。
【図２】コンピュータシステムの起動時におけるフィルタドライバのロード処理及びタイマーの開始を示すフローチャートである。
【図３】ユーザモード、カーネルモード、フィルタドライバ、及びファンクションドライバの間の相互作用を示す構成図である。
【図４】フィルタドライバがデバイスの動作モードとパワーダウンモードを管理する方法の第１の実施形態を示す図である。
【図５】ＦＩＲＰを生成する手順を示すアルゴリズムである。
【図６】アイドル状態検出のためのタイマーを設定し、それによって電源モードを管理する方法の第２の実施形態を示す図である。
【図７】図３に示すような、ユーザモードからのパケットデータを基本システムが受け取り、Ｉ／ＯマネージャからＩＲＰが送られた場合に、対象デバイスの電源モードを変更する手順を示すフローチャートである。
【図８】フィルタドライバにおいて、送られたＩＲＰを処理する手順を示すフローチャートである。
【図９】本発明に係るコンピューターシステムにおける電源管理装置の好適な一実施形態を示すブロック図である。
【図１０】一般のコンピューターシステムにおける電源管理装置を示すブロック図である。
【符号の説明】
【００５０】
１０  基本システム
２０  デバイスドライバ
３０  バスドライバ
４０  デバイス
１００  フィルタドライバ
２００  サウンドドライバ
４００  サウンドカード
【図１】
2004152309.tif 000003
【図２】
2004152309.tif 000004
【図３】
2004152309.tif 000005
【図４】
2004152309.tif 000006
【図５】
2004152309.tif 000007
【図６】
2004152309.tif 000008
【図７】
2004152309.tif 000009
【図８】
2004152309.tif 000010
【図９】
2004152309.tif 000011
【図１０】
2004152309.tif 000012