(57)【特許請求の範囲】
【請求項１】
コンピューティングデバイスを有するコンピューティング環境におけるシステムであって、
前記コンピューティングデバイスのバックアップ時に保持されたメタデータに基づいて物理ディスクを再生成する機構であって、前記メタデータが、仮想ディスクのネストレベルを見つけるための情報を含む、機構と、
前記物理ディスク上に仮想ディスクを再生成する機構と
を含む、復元機構を備え、
前記仮想ディスクは、ファイルがディスクデバイスとして使用されるのを可能にするフォーマットのファイルであり、
前記仮想ディスクを再生成することは、前記メタデータに基づき、
前記仮想ディスクが第１のネストレベルに関連付けられていると決定すること、および
前記仮想ディスクと、各仮想ディスクの関連付けられたレベルに基づいたレイヤの順序で第２のネストレベルの別の仮想ディスクとを再生成すること
を含むことを特徴とするシステム。
【請求項２】
バックアップ時に、仮想ディスクメタデータを含む前記メタデータを前記復元機構によってアクセスされる媒体にバックアップする、バックアップ機構をさらに備えたことを特徴とする請求項１に記載のシステム。
【請求項３】
前記コンピューティングデバイスは、前記復元機構によって復元される複数の仮想ディスクを含むことを特徴とする請求項１に記載のシステム。
【請求項４】
前記コンピューティングデバイスは、前記復元機構によって復元される仮想ディスク上にブートボリュームを含み、前記仮想ディスクは、物理システムパーティション上の仮想ディスクファイルと関連付けられていることを特徴とする請求項２に記載のシステム。
【請求項５】
前記コンピューティングデバイスは、前記復元機構によって復元される物理ボリュームを含み、前記物理ボリュームは、ブートボリュームを支援する仮想ディスクを含むことを特徴とする請求項２に記載のシステム。
【請求項６】
前記コンピューティングデバイスは、複数のボリュームを含む仮想ディスクファイル用のコンテナであるボリュームを含む、前記復元機構によって復元される単一の仮想ディスク上に複数のボリュームを含むことを特徴とする請求項２に記載のシステム。
【請求項７】
前記コンピューティングデバイスは、前記復元機構によって復元される複数のネストされた仮想ディスクを含み、当該複数のネストされた仮想ディスクは、ブートボリュームを支援するブート仮想ディスクと、別のボリュームを支援する別の仮想ディスクとを含む物理ボリュームを含むことを特徴とする請求項２に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想ディスクを含むコンピュータをリカバリすることに関する。
【背景技術】
【０００２】
現代のマイクロソフト（登録商標）Ｗｉｎｄｏｗｓ（登録商標）ベースのオペレーティングシステムでサポートされる仮想マシン技術により、単一の物理的なコンピューティングマシンが、例えば、複数のサーバ環境を提供することなど、複数のオペレーティングシステムを同時に実行することができる。このような技術において、仮想ディスクは、物理的なディスクドライブまたは別の仮想ディスクドライブに格納され得るファイルであり、さらに、この仮想ディスクは、そのファイルをディスクデバイスとして使用する（表現する（surface））ことができるフォーマットである。例えば、仮想ディスクは、マイクロソフト（登録商標）仮想ハードディスク（ＶＨＤ：Virtual Hard Disc）フォーマットとすることができ、これにより、ＶＨＤフォーマットを理解するドライバは全て、ＶＨＤファイルをディスクデバイスとして実装（mount）することができる。すなわち、仮想ディスクは、ＶＨＤドライバにＶＨＤファイルを実装させることによって生成されるディスクデバイスである。このような仮想ディスクを、物理マシン上で実行するＷｉｎｄｏｗｓ（登録商標）オペレーティングシステムにおいて生成して表現することもできる。このような仮想ディスクを使用して、重要な（critical）オペレーティングシステムファイル（例えば、ブートボリューム）を格納することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
このようなオペレーティングシステムは、自動システムリカバリ（ＡＳＲ：automated system recovery）と名付けられた技術などにより、ベアメタルリカバリサポート（bare metal recovery support）を提供することもできる。この技術により、バックアップされたコンピュータシステムデータ（状態を含む）を、例えば、新しい交換マシンや、新しいディスクを用いて修復されたマシンなどの異なる物理マシン上に再生成することができる。一般的に、ＡＳＲは、コンピュータのディスク構成をバックアップして復元（restore）する能力をバックアップ／復元アプリケーションに提供する。しかしながら、既存のＡＳＲ技術は、仮想ディスクに対応していない。
【課題を解決するための手段】
【０００４】
本概要の記載は、以下の発明を実施するための形態において詳述される代表的な概念の選択を、簡潔な形で紹介するために提供されるものである。本概要の記載は、特許請求される主題の主要な特徴または本質的な特徴を特定することは意図されておらず、特許請求される主題の範囲を限定するのに使用されることも意図されていない。
【０００５】
簡潔に言えば、本明細書で説明される主題の様々な態様は、コンピューングデバイスの仮想ディスクを、バックアップされたメタデータから復元する技術を対象としている。一般的に、仮想ディスクを復元するためには、物理ディスクを生成すること、およびその物理ディスクのパーティション上で仮想ディスクを生成することを含む。
【０００６】
一態様において、仮想ディスクはネスト（nest）され得る。そのようにネストされた仮想ディスクを復元するために、上位レベルの仮想レベルのディスクは、下位レベルにネストされた仮想ディスクよりも前に復元される。これによって、規則正しいファイルの復元およびブロックレベルの復元を提供する。
【０００７】
一態様において、仮想ディスクをバックアップすることも管理される。バックアップは、ディスクがバックアップに関して重要であるかどうかを評価することを必要とし、重要であるとき、バックアップする必要があるそのディスクのコンテナも重要であるとマークを付ける。バックアップはまた、基本ディスクおよび動的ボリュームに対して仮想ディスクのバックアップを区別する。
【０００８】
他の利点は、図面とともに以下の詳細な説明の記載から明らかになる。
【０００９】
本発明は、限定ではなく例示として添付の図面に図示されており、添付の図面において、同様の参照番号は同様の要素を示している。
【図面の簡単な説明】
【００１０】
【図１】仮想ディスクのバックアップおよび復元を含むバックアップおよび復元システムにおける例示的なコンポーネントを表すブロック図である。
【図２】仮想ハードディスク上の単一のボリュームを表す図である。
【図３】仮想ハードディスク上の複数のボリュームを表す図である。
【図４】ネストされた仮想ハードディスクを表す図である。
【図５】仮想ディスクを含むコンピュータを復元するために取ることができる例示的なステップを表すフロー図である。
【図６】本発明の様々な態様を組み込むことができる例示的なコンピューティング環境を示す図である。
【発明を実施するための形態】
【００１１】
本明細書で説明される技術の様々な態様は、一般的に、ディスクの１または複数が１つまたは複数の物理ディスクに格納された仮想ディスクである場合を含め、コンピュータのディスク構成をバックアップおよび復元する能力を提供するオペレーティングシステム（またはコンポーネントなど）を対象とする。このためには、本明細書で説明するように、バックアップ時に、物理ディスクまたは他の仮想ディスクのパーティションにおける仮想ディスクおよび仮想ディスクの依存性に関するメタデータ情報を、例えば「ディスク構成ファイル(disk-config-file)」などのファイルに格納することによって、上述の事項が達成される。
【００１２】
リカバリ時には、ディスク構成ファイルにアクセスして、ディスクレイアウトを再作成する。より具体的には、物理ディスクが最初に生成される。その後に、仮想ディスクが生成される。このプロセスをさらにネストして、仮想ディスクが他の仮想ディスクを含む状況にも対処することができる。仮想ディスクを用いたパーティションは、バックアップ時に使用できるように同じ名前空間に実装される。これにより、バックアップベンダなどは、仮想ディスクを生成した後、該仮想ディスクにデータを復元して、同じ名前空間に実装することができる。
【００１３】
言い換えれば、一例のプロセスは、物理ディスクを生成し、その物理ディスクに対してパーティション化してボリュームを生成する。次に、最初のネストレベル（レベル１）において任意の仮想ディスクが生成され、その後、このプロセスは、レベル１の仮想ディスクに対してボリュームをパーティション化して生成する。１つまたは複数のレベル２の仮想ディスクがある場合、それらを生成し後に、レベル２の仮想ディスクに対してパーティション化してボリュームを生成し、そして、これは最も深いネストレベルまで続く。保存されたメタデータは、（レベルごとに）レイヤ化された仮想ディスクを再生成するために、各仮想ディスクのネストレベルを見つけるのに十分な情報を含む。このように、レベルごとに仮想ディスクを再生成することによって、以下に説明するように、各レベル内におけるブロックレベルの動作が可能になる。
【００１４】
図１を参照すると、１つまたは複数の仮想ディスクを含むことができるディスク１０４を用いてコンピュータシステム１０２のベアメタルリカバリに使用されるコンポーネントを含む、例示的なブロック図が示されている。バックアップ機構１０６は、仮想ディスクバックアップ機構１０８を含み、これは、以下で説明するように、特定のファイルおよびメタデータをバックアップ／復元媒体１１０にバックアップする。
【００１５】
以下でも説明するが、仮想ディスク復元機構１１４を含む復元機構１１２は、点線で示されるように後に、対応する再生成ディスク１１８を用いてファイルおよびメタデータを再生成コンピュータシステム１１６に復元する。復元機構１１２は、メタデータを使用して物理ディスクを生成した後、任意のネストされた仮想ディスクを含む仮想ディスクを生成する。
【００１６】
一例示的なＷｉｎｄｏｗｓ（登録商標）ベースの実装では、バックアップ機構１０６および復元機構１１２は、自動システムリカバリＡＳＲコンポーネントに提供される。しかしながら、他の環境において、および／または他のファイルのフォーマットやメタデータを用いることを含め、本明細書で説明される技術を任意のプログラムが実装することもできる。そのため、本発明は、いずれかの特定の実施形態、態様、概念、構造、機能性または本明細書で説明される実施例に限定されることはない。むしろ、実施形態、態様、概念、構造、機能性または本明細書で説明される実施例のいずれも限定ではなく、本発明は、一般的にコンピューティングおよびデータストレージ／アクセスにおいて利益および利点をもたらす様々な方法に使用することができる。
【００１７】
システムは、複数の仮想ディスクを有することができる。一例のシナリオでは、ブートボリュームは、（物理的な）システムパーティション上に置かれた仮想ディスクファイルによって支援（back）される仮想ディスク上にある。この特定のシナリオに加え、一般的に、物理ボリューム上または仮想ディスクのボリューム上の仮想ディスクファイルによって支援される仮想ディスクがある。本明細書で説明するバックアップおよび復元（例えば、ＡＳＲ）は、このようなシナリオにおいてディスクレイアウトのバックアップおよび復元に対処する。
【００１８】
図２から図４は、様々な例示的なシナリオを図示している。図２は、仮想ディスク上の単一のボリュームを表しており、Ｅ：は、仮想ディスクのコンテナ（例えば、ブートボリューム、すなわち、この例では、ボリュームＣ：を支援するＶＨＤファイル、ｂｏｏｔ.ｖｈｄ）でもある物理ボリュームである。Ｃ：ボリュームは、該ボリューム上にインストールされた１つまたは複数のアプリケーションを有することもできる。
【００１９】
図３は、単一の仮想ディスク上の複数のボリュームを表す。図３において、Ｅ：は、Ｃ：（ブートボリューム）および別のボリュームであるボリュームＤを含む仮想ディスクファイル用のコンテナ（例えば、ＶＨＤブート）でもあるボリュームである。
【００２０】
図４は、ネストされた仮想ディスクを表す。図４において、Ｅ：は、ブートボリュームＣ：を支援する仮想ブートディスク（例えば、ＶＨＤブート）のコンテナでもある物理ボリュームである。仮想ブートディスクは、仮想アプリケーションディスク（例えば、Ａｐｐ．ｖｈｄ）も含み、ボリュームＤ：を支援して、１つまたは複数のアプリケーションを収容する。
【００２１】
以下に、自動システムリカバリ（ＡＳＲ：automated system recovery）がバックアップおよびリカバリ機構を提供する、Ｗｉｎｄｏｗｓ（登録商標）ベースの環境におけるバックアップおよび復元の例を説明する。この例において、仮想ディスクに対応するファイルは、ＶＨＤフォーマットのために取得および保持された適切なメタデータを用いて、ＶＨＤフォーマットで保持される。しかしながら、容易に理解され得るように、任意の環境において、例示される技術による利益を得ることができ、および／または適切なメタデータを用いて任意の適切なファイルフォーマットをＶＨＤフォーマットに使用できる。
【００２２】
実施例では、用語「パック(pack)」は、１つまたは複数の動的ディスク（動的ディスクは、周知の概念であり、一般的にディスクグループと関連付けられ、同じ構成データの複製を格納する）を備えたディスクグループ（ディスクのグループ化）を指す。
【００２３】
ＡＳＲ実装において、ＡｓｒＳｙｓｔｅｍは、ディスクのパーティションレイアウトおよび基本ボリューム用のＶｏｌｕｍｅ  ＧＵＩＤをバックアップして再生成するためのモジュールである。ＡｓｒＬｄｍは、パック、該パック内の動的ディスク、および該パック内の動的ボリュームをバックアップして再生成するためのモジュールである。ＡｓｒＦｍｔは、ボリュームをバックアップし、および再生成されたボリュームの復元とフォーマットを行うためのモジュールである。
【００２４】
仮想ディスクファイルは、複数の（例えば、ＶＨＤ）ファイルを備えることができる。このことは、いくつかの変更を有する、新しい仮想ディスクが、既存の仮想ディスクをベースにする必要があるときなどに有用である。これを差分（differencing）と呼ぶが、仮想ディスクの差分化のために、仮想ディスク全体のチェーン(chain)を再生成する必要があることに留意されたい。
【００２５】
ＡＳＲ環境におけるバックアップについて見ると、ＡＳＲは、仮想ディスクをバックアップする。一般的に、そのバックアップは、復元中に仮想ディスクを再生成するために十分な情報を含む。一例示的な実装では、ＡＳＲは、以下のｗｉｎ３２ＡＰＩおよびＩＯＣＴＬを使用して、バックアップ時に仮想ディスク情報を保存して、復元時に仮想ディスクを再生成する。  
＜バックアップ＞
１．GetStorageDependencyinformation
ａ．このＡＰＩは、バックアップ中に使用され、実装された仮想ディスクに関するメタデータ情報を見つけ出す。このＡＰＩは、例えば、（仮想ディスクを差分する場合には２以上の）仮想ディスクファイルのファイルパス、および仮想ディスクがスパース(sparse)か固定か否か、仮想ディスクのブロックサイズなどの仮想ディスクの他の属性などの情報を返す。  
ｂ．仮想ディスクに関して、このＡＰＩは、仮想ディスクフラグ、および差分ディスクチェーンのシーケンス情報などの付加的な情報を返すことができる。  
＜復元＞
２．CreateVirtualDisk
ａ．このＡＰＩを使用して、バックアップ時にGetStorageDependencyinformationによって返された情報に基づいて、仮想ディスクファイルを再生成する。  
ｂ．このＡＰＩは、各仮想ディスクファイルを再生成するために使用される。  
３．SurfaceVirtualDisk
ａ．仮想ディスクファイルを生成すると、このＡＰＩを使用して、その仮想ディスクファイルをディスクとして表現する。
４．仮想ディスク内のボリュームを再生成する。
【００２６】
ＶＳＳ（Volume Shadow (Copy) Service：ボリュームシャドウ（コピー）サービス）コンポーネントのバックアップに関して、物理ディスクおよびボリュームと同様に、ＡＳＲライタは、ＡＳＲにおいて仮想ディスクおよびボリュームをコンポーネントとして報告する。仮想ディスクのコンポーネントは、ＡＳＲメタデータを探している人に役立つ情報を伝達するために、「これは、仮想ディスクである(This is a virtual disk)」などのキャプションを含む。一例の実装において、このディスクコンポーネントは、以下の通りである。
<COMPONENT logicalPath="Disks"componentName="harddisk0"
componentType="filegroup"caption="This is a virtual disk"/>
【００２７】
ＡＳＲメタデータは、仮想ディスクを再生成するために、ディスクレイアウトに関する情報に加え、仮想ディスクのファイルパス等の付加的な情報も含むことができ、仮想ディスクのタイプも必要とされる。各仮想ディスクのレイアウトは、物理ディスクのレイアウトを保存する方法と同様に、＜ＭｂｒＤｉｓｋ＞または＜ＧｐｔＤｉｓｋ＞ノードに格納される。参考までに、ＭＢＲノードは、ここで再生されるが、そのフォーマットに変更はない。
【００２８】
＜ＭｂｒＤｉｓｋ＞または＜ＧｐｔＤｉｓｋ＞ノードは、物理ディスクのレイアウトが保存される方法と同様に保存される。参考までに、ＭＢＲノードは、ここで再生されるが、そのフォーマットに変更はない。
<MbrDisk NumPartitions="4" PartitionTableSize="4" BusKey="2"
DeviceNumber="1" IsCritical="1" MbrSignature="0x88eb9d23"…>
<MbrPartition PartitionIndex="0" PartitionFlag="0" BootFlag="0"
PartitionType="0x7" FileSystemType="0x0"
NumSymbolicNames="2" PartitionOffset="1048576"
PartitionLength="5368709120" IsCritical="1">
</MbrPartition>
…
</MbrDisk>
【００２９】
仮想ディスク用の追加の情報が新しいノードに格納される。
<VirtualDisk>  次の通りである。
<AsrVhd NumDisks="1">
<VirtualDisk DeviceNumber="1">
<VhdInfo File="＼＼?＼Volume{e77e0446-d428-11dc-815b-
000000000000}＼pl＼p2foo.vhd" BlockSize=0x200000
Flag=0x00000008
Sequence=0>
<VhdInfo File="＼＼?＼Volume{e77e0446-d428-11dc-815b-
000000000000}＼p1＼p2＼foo1.vhd" BlockSize=0x200000
Flag=0x00000008
Sequence=1>
...
</VirtualDisk>
...
</AsrVhd>
【００３０】
新しいノードは、一実装において、概してテストおよび開発を簡易に行うのに生成されたことに留意されたい。＜ＶｉｒｔｕａｌＤｉｓｋ＞ノード内のＤｅｖｉｃｅＮｕｍｂｅｒ属性を使用して、そのレイアウト情報を＜ＭｂｒＤｉｓｋ＞ノード内でルックアップする。さらに、シーケンス０を用いたＶｈｄＩｎｆｏノードは、仮想ディスクをＶＨＤフォーマットで表すＶＨＤファイルであることに留意されたい。０より大きいシーケンスを用いるＶｈｄＩｎｆｏノードは、このＶＨＤがリンクされるＶＨＤを差分することを表す。Ｆｌａｇ値は、ＶＨＤのタイプ、つまり動的または固定であるかを示す。ＢｌｏｃｋＳｉｚｅは、ＶＨＤファイル内部で使用されるデータブロックのサイズである。ＢｌｏｃｋＳｉｚｅは、ＶＨＤフォーマットの一部である。ＢｌｏｃｋＳｉｚｅは、バイトを単位にする。
【００３１】
仮想ディスク情報は、以下の通りである。  
ディスクのハンドルを開く。InfoLevelを２に設定し、GetParentsをＴＲＵＥに設定して、GetStorageDependencyinformationを呼び出す。  
返されたステータスが、STATUS_INVALID_DEVICE_REQUESTである場合は、仮想ディスクではない。そうでない場合は、成功であり仮想ディスクである。
ＩＯＣＴＬが返信される。
STORAGE_QUERY_DEPENDENT_DISK_RESPONSEは以下のように定義される。
【００３２】
BOOL WINAPI
GetStorageDependencyInformation(
_in     HANDLE hFile,
_in     BOOL  GetParents
_in     ULONG  InfoLevel,
_inout_opt  LPVOID StorageDependency,
_inout  ULONG *StorageDependencyLength
);
【００３３】
STORAGE_QUERY_DEPENDENT_DISK_LEV2_ENTRY構造のアレイを含み、アレイごとにディスクを差分する。
【００３４】
typedef struct_STORAGE_DEPENDENCY_INFO_LEVEL2{
ULONG              DependencyTypeFlags;
ULONG              ProviderSpecificFlags;  
VIRTUALDEVICETYPE        VirtualDeviceType;
GUID               CallerContext;
GUID               DiskContext;
LPWSTR             DependencyDeviceName;
LPWSTR             HostVolumeName;
LPWSTR             DependentVolumeName;
LPWSTR             DependentVolumeRelativePath;
}STORAGE_DEPENDENCY_INFO_LEVEL2,
*PSTORAGE_DEPENDENCY_INFO_LEVEL2;
【００３５】
このＡＰＩは、差分ディスクの仮想ディスクファイルの中のシーケンス情報を返す。ＡＳＲは、差分チェーン内の他の仮想ディスクファイルから最も枝の多い(leaf-most)仮想ディスクファイルを、例えば、依存グラフで表すなどして区別する。
【００３６】
ある特定のボリューム／ディスクは、「クリティカル／重要（critical）」と呼ばれ、そのようにマークされる。物理ディスクの場合のように、実装される仮想ディスク内部のボリュームがクリティカルであるとき、その仮想ディスクおよびそれに属するパックもクリティカルとマークされる。さらに、仮想ディスクが、物理ディスクまたは（仮想ディスクファイルがある）仮想ディスク上のボリュームに依存するとき、親仮想ディスクもクリティカルとマークする必要がある。
【００３７】
ここで、２つのケース、すなわち親ボリュームが基本ディスク上にあるとき、および親ボリュームが動的ボリュームであるとき（例えば、ソフトウェアＲＡＩＤを用いるときなど）を考慮する必要がある。親ボリュームが基本ディスク上にあるとき、実装される仮想ディスクはクリティカルとしてマークされ、実装されるパーティションも同様にマークされる。これは、親ボリュームが基本ディスク上にあるため、その親パーティションおよび親ディスクもクリティカルとマークされるからである。
【００３８】
親ボリュームが動的ボリュームであるとき（例えば、ソフトウェアＲＡＩＤを用いるなど）、実装される仮想ディスクは、クリティカルとマークされ、実装されるパーティションも同様にマークされる。一般的に、動的な親ボリュームは、それと関連付けられたパーティションを有しない。一般的に、親ボリュームを含むディスクと同じパック内にある動的ディスクはクリティカルとマークされる。例えば、クリティカルなボリューム情報は、そのパックおよびボリュームが「ＩｓＣｒｉｔｉａｌ」と適切にマークされた、＜ＡｓｒＬｄｍ＞ノード内にマークされる。
【００３９】
さらに、仮想ディスクは、バックアップ時に除外されるディスクに依存することがあり、そのような場合に、その仮想ディスクがクリティカルであるとき、バックアップは失敗することに留意されたい。そうでない場合、その仮想ディスクは、除外されるものとしてマークされ、その仮想ディスクが復元時に含まれていても復元時に再生成されない。
【００４０】
復元に関連する態様について、復元中に、ＡＳＲは、最初に仮想ディスクを再生成して実装した後に、ＡＳＲ内においてボリュームを再生成する。しかしながら、それを行う前に、仮想ディスクが依存するディスク、パーティション、およびボリュームを再生成する必要がある。このような依存性は、物理的または仮想的である場合がある。
【００４１】
したがって、ディスクの再生成は、レイヤごとに行われる必要がある。すなわち、物理ディスクから開始し、次いで、物理ディスクのみに依存する仮想ディスクを再生成し、その後、それまでに再生成されたディスクのみに依存する仮想ディスクを再生成する。従って、仮想ディスクを再生成するプロセス全体には３つのフェーズが含まれる。  
ａ）仮想ディスクのディスクレイアウトおよび依存情報をＡＳＲメタデータから抽出すること。  
ｂ）依存情報を使用して、依存性が再生成された仮想ディスクを特定すること。  
ｃ）ステップ（ｂ）で特定された仮想ディスクを再生成すること。  
ｄ）ステップ（ｃ）で生成された仮想ディスク内部のパーティションおよびボリュームを再生成すること。
【００４２】
ステップ（ｂ）、（ｃ）および（ｄ）は、すべてのＶＨＤが再生成されるまで、または、それ以上ＶＨＤを再生成することができなくなるまで繰り返される。ボリュームを画像として復元（「ブロックレベル復元」）するアプリケーションをバックアップする場合、そのアプリケーションは、ステップ（ｄ）の後ステップ（ｂ）、（ｃ）の前に、画像を復元する必要があり、次のネストレベルのために繰り返すことができる。
【００４３】
復元を要求する（リクエスタ）のに使用されるプログラム（または複数のプログラム）を選択すると、以下のようにSetRestoreOptionsを使用することにより仮想ディスクの再生成をスキップすることができる。
【００４４】
IVssBackupComponents::SetRestoreOptions (asrWriterId,
VSS_CT_FILEGROUP, NULL, L"ASR", L" …RecreateVHD=0…");
【００４５】
「ＲｅｃｒｅａｔｅＶＨＤ＝０」というサブストリングが復元オプションストリング内に表示された場合、ＡＳＲが、仮想ディスクファイルおよび仮想ディスクディスクを再生成することはない。
【００４６】
復元のための仮想ディスク情報の抽出に関して、＜ＭｂｒＤｉｓｋ＞および＜ＧｐｔＤｉｓｋ＞ノードは、他のディスクと同様に非シリアル化（de-serialize）され、これにより、仮想ディスクに関するレイアウト情報が認識される。この後、＜ＡｓｒＶｈｄ＞ノードが非シリアル化される。仮想ディスクファイルおよび任意の親仮想ディスクファイルに関する情報は、追加の情報として、以下の様に、既存のstruct ASR_DISK_INFO内に保持される。  
struct ASR_VHD_INFO
{
BOOL        fVirtual;
//
//＼＼?＼Volume{grid}＼p1＼p2＼foo.vhd
//
//ＶＨＤファイル名は<AsrVhd>内の「Sequence」よって順序付けされる
//
WCHAR        **rgwszVHDFilemanes;
DWORD        dwNumFiles;
DWORD        dwFlag;  //vhd flag―スパースまたは固定
};
struct ASR_VHD_INFO
{
…
//
//ディスクが仮想でない場合はNull
//
ASR_VHD_INFO*        m_pVirtualDiskInfo;
};
【００４７】
仮想ディスクは、その依存性がすべて生成された場合にのみ生成される。仮想ディスクは、仮想ディスクの仮想ディスクファイルがある各ボリュームに依存する。そのような各ボリュームが再生成された場合、仮想ディスクが再生成される。
【００４８】
仮想ディスク再生成段階は、既存のＡｓｒＳｙｓ、ＡｓｒＬｄｍおよびＡｓｒＦｍｔの事前復元(pre-restore)が完了した後に行われる。これは、仮想ディスクファイルがある物理ボリューム（基本ボリュームまたは動的ボリューム）がすでに再生成されることを確実にする。ＡｓｒＳｙｓは、ディスクの割り当て、再生成、およびクリティカルなボリュームがすべて再生成されたことを確認することに関して仮想ディスクを考慮しないように変更されている。
【００４９】
仮想ディスクの再生成中に、以下の例示的なステップを実行することができる。  
ａ．仮想ディスクを表すASR_DISK_INFO pVhdDiskごとに行う。  
ｂ．｛
ｃ．仮想ディスクファイルが再生成されるASR_VHD_IFO::rgwszVHDFilenamesを使用して、最後の仮想ディスクファイルから開始し、その結果、差分チェーンが適切に再生成される。  
・  仮想ディスクファイルが除外されるディスク上に存在する場合、仮想ディスクファイルは再生成されない。  
・  仮想ディスクファイルが存在する場合、その対応するファイル（例えば、ＶＨＤ）を最初に取り外して（dismount）、仮想ディスクファイルを削除する。  
ｄ．差分チェーンの枝であるASR_VHD_IFO::rgwszVHDFilenames[0]を使用して、仮想ディスクを実装する。  
ｅ．仮想ディスクを実装したあと、そのデバイスパス（device path）を返す。  
ｆ．そのデバイスパスを使用して、新しいASR_DISK_INFOオブジェクトであるpAssignedVHDを生成し、初期化して、そして復元中のシステム（AsrSystem::m_pDiskListDuringRestore）において利用可能なディスクのリストに追加する。  
ｇ．バックアップ中に特定の仮想ディスク用の仮想ディスクが生成されると、その機構は、直接ディスクの割り当てを実行する。すなわち、pVhdDisk->AssignedToを、pAssignedVHDに設定し、pAssignedVHD->AssignedToを、pVhdDiskに設定する。  
ｈ．実装された仮想ディスクは、物理ディスクが再生成されるように、再生成される。
ｉ．仮想ディスクがクリティカルである場合、この段階における失敗により全体の復元が失敗する。
ｊ．｝
【００５０】
以下のＡＰＩを使用して、仮想ディスクファイルを再生成する。  
Typedef struct _CREATE_VIRTUAL_DISK_PARAMETERS_LEVEL1 {
VIRTUALDEVICETYPE       VirtualDeviceType; // VHD or ISO - Is VHD for ASR.
GUID      UniqueId;
LARGE_INTEGER    MaximimSize;    //ディスクサイズ
ULONG      BlockSize;//ＶＨＤフォーマットで使用されるデータブロックのサイズ
ULONG      SectorSize;//５１２バイト
ULONG      ProviderSpecificFlags;
ULONG      Flags;//スパースまたは固定
LPWSTR    ParentPath;//ディスクを差分する場合のベースＶＨＤファイルパス
LPWSTR    SourcePath;
} CREATE_VIRTUAL_DISK_LEVEL1_PARAMETERS,
*PCREATE_VIRTUAL_DISK_L
EVEL1_PARAMETERS;
BOOL WINAPI
CreateVirtualDisk(
_in    ULONG      ParameterLevel,
_in    LPWSTR      Path,      //ＶＨＤファイルのパス
_in_opt LPVOID      Parameters,
_in_opt PSECURITY_DESCRIPTOR SecurityDescriptor,  //セキュリティオン
//実装されたデバイス
_in_opt VIRTUAL_DISK_PROGRESSROUTINE ProgressRoutine,
_in_opt LPVOID      ProgressRoutineContext
);
【００５１】
仮想ディスクを実装する（別名：表現する（surfacing））ためのＡＰＩ
typedef struct _SURFACE_VIRUTAL_DISK_LEVEL1_PARAMETERS {
GUID    CallerContext;
GUID    DiskContext;
PSECURITY_DESCRIPTOR  SecurityDescriptor;
ULONG   Timeout;  //すべての表現を特定するオプションのタイムアウト
ULONG   Flags; //ＶＨＤまたはＩＳＯ
ULONG   ProviderSpecificFlags;
USHORT   OutputDeviceNameLength;//実装されたデバイスパス
LPWSTR   OutputDeviceNameBuffer;
} SURFACE_VIRUTAL_DISK__PARAMETERS_LEVEL1, *PSURFACE_VIRUTAL_DISK_PARAMETERS LEVEL1;
BOOL WINAPI
SurfaceVirtualDisk(
_in  LPWSTR                             Path,
_in  VIRTUALDEVICETYPE                  VirtualDeviceType,
_in  ULONG                              ParameterLevel,
_in_opt  PVOID                          Parameters,
_in_opt  VIRTUAL_DISK_PROGRESSROUTINE   ProgressRoutine,
_in_opt  LPVOID                         ProgressRoutineContext
);
【００５２】
すでに実装された仮想ディスクを取り外すことに関して、仮想ディスクを再生成する前に、その仮想ディスクファイルがすでに存在し、実装されている場合、そのデバイスおよびファイルは除去される。以下は、仮想ディスクを取り外すための１つのＡＰＩである。
BOOL WINAPI
RemoveVirtualDisk(
_in  VIRTUALDEVICETYPE        VirtualDeviceType,
_in  GUID                     CallerContext,
_in  GUID                     DiskContext,
_in  ULONG                    Flags
);
【００５３】
デバイスを取り外すために、そのCallerContextおよびDiskContextが必要である。そのために、ＡＳＲは、ネイティブな仮想ディスクＡＰＩである、GetStorageDependencyinformationを使用して、所与のボリューム上に仮想ディスクファイルを有する実装された仮想ディスクを列挙する。
【００５４】
仮想ディスクの取り外しは、実装されたすべての仮想ディスクをその都度列挙する必要があるので、仮想ディスクごとに取り外しを行うのは非効率的である。そこで効率的にするために、仮想ディスクを再生成する前に、仮想ディスクの取り外しを一度の動作で行う。その動作は、以下の通りに行われる。
【００５５】
再生成する必要がある仮想ディスクファイルがあるボリューム名のリスト（リストでは複製されない）をコンパイルする。
【００５６】
１．GetParents=FALSEおよびInfoLevel=1で、ボリュームごとにGetStorageDependencyinformationを呼び出す。
２．返信されたSTORAGE_DEPENDENCY_INFO_LEVEL1ごとに、そのCallerContextおよびDiskContextを使用して仮想ディスクを取り外す。
３、検証のため、仮想ディスクの再生成段階の後に、ＡＳＲは、ＡＳＲメタデータ内のクリティカルなディスクの表示が再生成されたことを確認する。
【００５７】
ＶＨＤファイルの次のレベルを生成するためには、その前に、仮想ディスクの各レベルが生成されてパーティション化された後にブロックレベルの復元を起動する必要がある。
【００５８】
このようなアプリケーションは、SkipVHDRe-creationオプションを使用して、仮想ディスクの再生成を一切試みないようにＡＳＲに通知することもできる。
【００５９】
ネストされた仮想ディスクのレイヤごとの再生成について、仮想ディスクは、その仮想ディスクファイルを別の仮想ディスクまたは物理ボリューム上に有するなどして、仮想ディスクのレイヤをより多くすることができるので、仮想ディスクがレベルごとに生成され、図５で概ね表したように以下の通りになる。  
１）物理ディスク上のパーティションおよびボリュームを再生成する（ステップ５０１）。  
２）仮想ディスクのレベル１を再生成する（ステップ５０３）。すなわち、上記ステップ１で再生成されたボリューム上にある仮想ディスクファイルのすべてを有する、ＡＳＲメタデータを使用して仮想ディスクを見つける。  
−  仮想ディスクのファイルを再生成して（レベル１におけるステップ５０４）、その仮想ディスクファイルを仮想ディスクとして表して、仮想ディスク上のパーティションおよびボリュームを再生成し、そしてパーティション／ボリュームをフォーマットする（レベル１におけるステップ５０５）。  
３）仮想ディスクのレベル２を再生成する（ステップ５０９はレベルを増加させるが、ステップ５０９のレベルの増加は、ステップ５０７でブロックレベルの復元が行われる場合は、ステップ５０８でブロックレベルの復元の後に起こる）。すなわち、残りの仮想ディスクファイルがこれまでに再生成されたボリューム上に有する、残りのすべての仮想ディスクを見つける。どんな仮想ディスクファイルがどのボリューム上にあるかに関する情報は、ＡＳＲメタデータ内にある。  
−  仮想ディスクファイルを再生成して（レベル２におけるステップ５０４）、その仮想ディスクファイルを仮想ディスクとして表して、仮想ディスク上のパーティションおよびボリュームを再生成して、そしてパーティション／ボリュームをフォーマットする（レベル２におけるステップ５０５）。  
４）新しい仮想ディスクが再生成されなくなるまで、上記３を繰り返す（ステップ５０２）。
【００６０】
ブロックレベルの復元アプリケーションによるレイヤごとの再生成の利点の１つは、すべての仮想ディスクを一度に再生成することであるが、上述したように、ブロックレベルのリクエスタには適していない。ブロックレベルのリクエスタは、再生成された仮想ディスクが、仮想ディスクファイルが再生成されたボリュームを復元する場合に、再生成された仮想ディスクの破壊を避けることができない。
【００６１】
このことは、ＡＰＩをＡＳＲライタオブジェクトインタフェース−ＨＲＥＳＵＬＴに追加することによる、レイヤごとの再生成を使用して解決される。IVssAsrWriterRestoreEx::RecreateNextLayer（void（ボイド））によって、リクエスタは、次のレイヤを再生成すべきときをＡＳＲに伝えることができる。リクエスタは、仮想ディスクおよびそれらの依存性を認識する必要がない。
【００６２】
以下に説明するように、リクエスタは、ＡＳＲと対話的に動作することができる。  
１．リクエスタは、IVssBackupComponents::PreRestoreを呼び出す。
２．ＡＳＲは、物理ディスクを再生成する。
リクエスタは、バックアップしたボリュームから再生成されたボリュームのみを復元する。FindFirstVolume/findNextVolumeを呼び出すことによって、ボリュームを見つけることができる。  
３．リクエスタは、IvssAsrWriterRestoreEx::RecreateNextLayerを呼び出す。  
上記ステップ２で述べたように、ＡＳＲは、仮想ディスクを再生成することによって、さらなるボリュームを再生成する。それ以上再生成されるボリュームがない場合、ＡＳＲは、S_FALSEを返す。  
４．ＡＳＲがS_FALSEを返すまで、リクエスタは、ステップ２および３を再度繰り返す。
【００６３】
レイヤ化された仮想ディスクの再生成中に動的ボリュームを再生成することに関して、一般的に、動的パックは、一部の仮想ディスク、および一部の物理ディスク、または仮想ディスク全体から構成できる。このような動的な仮想ディスクを、他の仮想ディスク上に置くことができ、ネストすることもできる。レイヤごとの再生成中、ＡＳＲの以下の追加のロジックは、動的ディスクおよびボリュームの再生成にも対処する。  
１．物理ディスクの再生成の後に、これまでと同様にＡｓｒＬｄｍを使用して以下の変更により、物理パックを再生成する。  
ａ．パック用のすべてのディスクは、それらが仮想ディスクであることがあるため、すぐには使用できない。したがって、少なくともパック内のすべての物理ディスクが再生成されたとしてもパックを生成する。  
ｂ．レイヤのためのすべての仮想ディスクが特定され、表現されてパーティション化されると、そのディスクが動的ディスクであったかどうかを確認する（これは、ＡＳＲメタデータを調べることによって見つけることができる）。  
２．仮想ディスクが動的ディスクである場合、
ａ．物理ディスクの再生成中に再生成された動的パックに仮想ディスクを追加する。
ｂ．ＡｓｒＬｄｍメタデータから、パック内の（まだ再生成されていない）ボリュームを見つけ出して、すべてのボリュームをこれまでにパックに追加されたディスクのセット上に置く。それらのボリュームを再生成してフォーマットする。  
３．ＡＳＲの終了条件は、同じように継続する。すなわち、もはや新しいボリュームが再生成されなかった場合、これにより、ディスクの再生成が終了する。
【００６４】
以上のように、仮想化がますます使用されるようになり、仮想ディスクを実行するマシンのベアメタルリカバリが必要とされる。これは、仮想ディスクからブートする物理マシンのベアメタルリカバリ、およびマルチレベルの仮想ディスク（仮想ディスク内において実装された仮想ディスク）を有する物理マシンのベアメタルリカバリを含む。
【００６５】
さらに、バックアップおよび復元は、本明細書で説明した仮想化に関連する技術のほんの一例の使用にすぎない。この技術を用いて、別のマシンへの仮想環境のマイグレーションを同様に行うこともできる。さらに、ゲストとして仮想マシンを監督するハイパーバイザを実行するホストパーティションも検討される。例えば、仮想ディスクを用いたゲストを有するホストによる自動システムリカバリおよび／またはマイグレーションを、この技術を介して行うことができる。
【００６６】
例示的なオペレーティング環境
図６は、図１から図５で表された例および／または実施形態を実装できるのに適したコンピューティングシステム環境６００の例を図示している。コンピューティングシステム環境６００は、適切なコンピューティング環境のほんの一例にすぎず、本発明の使用または機能性の範囲に関していかなる限定を示唆することを意図しない。コンピューティングシステム環境６００は、この例示的なオペレーティング環境６００内に図示されたコンポーネントの任意の１つまたはその組み合わせに関連する任意の依存性または要件を有するものとして解釈されるべきでない。
【００６７】
本発明は、他の多数の汎用または専用コンピューティングシステム環境または構成による動作が可能である。本発明において適切に使用することができる周知のコンピューティングシステム、環境、および／または構成の例は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、タブレットデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家電、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などを含むが、これらには限定されない。
【００６８】
本発明を、コンピュータによって実行されるプログラムモジュールなどの、コンピュータ実行可能命令の一般的な文脈において説明できる。一般的に、プログラムモジュールは、特定のタスクを行うまたは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明を、通信ネットワークを介してリンクされるリモート処理デバイスによってタスクが行われる、分散コンピューティング環境において実施することもできる。分散コンピューティング環境において、プログラムモジュールを、メモリ記憶装置を含む、ローカルおよび／またはリモートコンピュータ記憶媒体に配置することができる。
【００６９】
図６を参照して、本発明の様々な態様を実装する例示的なシステムは、汎用コンピューティングデバイスをコンピュータ６１０の形式で含むことができる。コンピュータ６１０のコンポーネントは、処理ユニット６２０、システムメモリ６３０、およびシステムメモリを含め様々なシステムコンポーネントを処理ユニット６２０に接続するシステムバス６２１を含むことができるが、これには限定されない。システムバス６２１は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを使用するローカルバスを含む、いくつかのタイプのバス構造の任意のものとすることができる。例として、そのようなアーキテクチャは、ＩＳＡバス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ＶＥＳＡローカルバス、およびメザニンバスとしても知られる、ＰＣＩバスを含むが、これらには限定されない。
【００７０】
コンピュータ６１０は、典型的には、様々なコンピュータ読取可能媒体を含む。コンピュータ読取可能媒体は、コンピュータ６１０によってアクセスすることができ、揮発性および不揮発性媒体と、取外可能および取外不可能媒体の双方を含む、任意の利用可能な媒体とすることができる。例として、コンピュータ読取可能媒体は、コンピュータ記憶媒体および通信媒体を備えることができるが、これらには限定されない。コンピュータ記憶媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュールまたは他のデータなどの情報を記憶するための任意の方法または技術で実装される、揮発性および不揮発性媒体、取外可能および取外不可能媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは所望の情報を格納するために使用することができ、コンピュータ６１０によってアクセスすることができる他の媒体を含むが、これらには限定されない。通信媒体は、典型的に、コンピュータ読取可能命令、データ構造、プログラムモジュールまたは他のデータを、搬送波または他の移送機構などの変調データ信号で具現化し、任意の情報配信媒体を含む。用語「変調データ信号」は、信号内の情報を符号化するような方法で、その特性のうち１または複数を設定または変更する信号を意味する。例として、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体、および音響、ＲＦ、赤外線などの無線媒体および他の無線媒体を含むが、これらには限定されない。上記の任意の組み合わせも、コンピュータ読取可能媒体の範囲内に含まれるべきである。
【００７１】
システムメモリ６３０は、読み取り専用メモリ（ＲＯＭ）６３１およびランダムアクセスメモリ（ＲＡＭ）６３２など、揮発性および／または不揮発性メモリの形式のコンピュータ記憶媒体を含む。起動時などに、コンピュータ６１０内の要素間で情報を転送するのを助ける基本ルーチンを含む、基本入力／出力システム６３３（ＢＩＯＳ）は、典型的にＲＯＭ６３１に格納される。ＲＡＭ６３２は、典型的に、処理ユニット６２０によって、瞬時にアクセスでき、および／または動作されているデータおよび／またはプログラムモジュールを含む。限定ではなく例として、図６には、オペレーティングシステム６３４、アプリケーションプログラム６３５、他のプログラムモジュール６３６およびプログラムデータ６３７が図示されている。
【００７２】
コンピュータ６１０は、他の取外可能／取外不能、揮発性／不揮発性のコンピュータ記憶媒体を含むこともできる。単に例として、図６は、ノンリムーバブル不揮発性の磁気媒体との間で読み書きを行うハードディスクドライブ６４１と、リムーバブル不揮発性の磁気ディスク６５２との間で読み書きを行う磁気ディスクドライブ６５１と、ＣＤ−ＲＯＭまたは他の光媒体などのリムーバブル不揮発性の光ディスク６５６をとの間で読み書きを行う光ディスクドライブ６５５とが図示されている。例示的なオペレーティング環境において使用することができる他の取外可能／取外不能、揮発性／不揮発性のコンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭなどが含まれるが、これらには限定されない。ハードディスクドライブ６４１は、典型的に、インタフェース６４０などの取外不能メモリインタフェースを介してシステムバス６２１に接続され、磁気ディスクドライブ６５１および光ディスクドライブ６５５は、典型的に、インタフェース６５０などの取外可能メモリインタフェースによってシステムバス６２１に接続される。
【００７３】
上述して図６に図示されたドライブおよびそれらに関連付けられたコンピュータ記憶媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュールおよび他のデータのストレージをコンピュータ６１０に提供する。図６において、例えば、ハードディスクドライブ６４１は、オペレーティングシステム６４４、アプリケーションプログラム６４５、他のプログラムモジュール６４６およびプログラムデータ６４７を格納するものとして図示されている。これらのコンポーネントは、オペレーティングシステム６３４、アプリケーションプログラム６３５、他のプログラムモジュール６３６、およびプログラムデータ６３７と同じにしてもよいし、異なってもよいことに留意されたい。オペレーティングシステム６４４、アプリケーションプログラム６４５、他のプログラムモジュール６４６、およびプログラムデータ６４７は、本明細書では、最小限、それらが異なるコピーであることを図示するために異なる数字で示されている。ユーザは、タブレットもしくは電子デジタイザ６６４、リモートコントロール（Ｒ／Ｃ）６６３、キーボード６６２、および通常マウス、トラックボールもしくはタッチパッドと呼ばれるポインティングデバイス６６１などの入力デバイスを介して、コマンドおよび情報をコンピュータ６１０に入力することができる。図６に図示されていない他の入力デバイスには、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどが含まれうる。これらと他の入力デバイスは、しばしば、システムバスに接続されたユーザ入力インタフェース６６０を介して処理ユニット６２０に接続されるが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス（ＵＳＢ）などの他のインタフェースおよびバス構造によって接続することもできる。モニタ６９１または他の種類の表示デバイスも、ビデオインタフェース６９０などのインタフェースを介してシステムバス６２１に接続される。モニタ６９１は、タッチスクリーンパネルなどと一体化することもできる。モニタおよび／またはタッチスクリーンパネルを、コンピューティングデバイス６１０がタブレット型パーソナルコンピュータなどに組み込まれる、ハウジング(housing)に物理的に接続することができることに留意されたい。さらに、コンピューティングデバイス６１０などのコンピュータは、出力周辺インタフェース６９４などを介して接続することができるスピーカ６９５およびプリンタ６９６などの、他の周辺出力デバイスを含むこともできる。
【００７４】
コンピュータ６１０は、リモートコンピュータ６８０などの１つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク環境において動作できる。リモートコンピュータ６８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の共通ネットワークノードとすることができ、メモリストレージデバイス６８１のみが図６に図示されているが、典型的には、コンピュータ６１０に関連して上述した多くのまたはすべての要素を含む。図６に図示された論理接続は、１つまたは複数のローカルエリアネットワーク（ＬＡＮ）６７１および１つまたは複数のワイドエリアネットワーク（ＷＡＮ）６７３を含むが、他のネットワークを含むこともできる。そのようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいて一般的になってきている。
【００７５】
ＬＡＮネットワーキング環境において使用されるとき、コンピュータ６１０は、ネットワークインタフェースまたはアダプタ６７０を介してＬＡＮ６７１に接続される。ＷＡＮネットワーキング環境において使用されるとき、コンピュータ６１０は、典型的に、モデム６７２、またはインターネットなど、ＷＡＮ６７３を介して通信を確立する他の手段を含む。内蔵または外付けとすることができるモデム６７２は、ユーザ入力インタフェース６６０または他の適切な機構を介してシステムバス６２１に接続され得る。インタフェースおよびアンテナなどを備える無線ネットワーキングコンポーネント６７４は、アクセスポイントまたはピアコンピュータなどの適切なデバイスを介して、ＷＡＮまたはＬＡＮに接続され得る。ネットワーク環境において、コンピュータ６１０またはその一部に関連して図示されたプログラムモジュールは、リモートのメモリ記憶装置に格納することができる。限定でなく例として、図６では、リモートアプリケーションプログラム６８５がメモリデバイス６８１にあるように図示されている。示されるネットワーク接続は、例示であり、コンピュータ間で通信リンクを確立する他の手段を使用できることも認識されたい。
【００７６】
ユーザインタフェース６６０を介して（例えば、コンテンツの補助的な表示のための）補助サブシステム６９９を接続することにより、コンピュータシステムの主要部分が低電力状態にある場合も、プログラムコンテンツ、システム状態およびイベント通知などのデータをユーザに提供することができる。補助サブシステム６９９をモデム６７２および／またはネットワークインタフェース６７０に接続することによって、主処理ユニット６２０が低電力状態であってもこのシステム間で通信が可能になる。
【００７７】
結論
本発明をさまざまに変更して代替的に構成することが可能であるが、その一部の例示的な実施形態を図示し、上記で詳細に説明してきた。しかしながら、本発明を開示された特定の形態に限定することは意図しておらず、反対に、本発明は、本発明の精神および範囲内におけるすべての変更、代替的構成および同等物を網羅していることを理解されたい。
【図１】
0005572163.tif 000002
【図２】
0005572163.tif 000003
【図３】
0005572163.tif 000004
【図４】
0005572163.tif 000005
【図５】
0005572163.tif 000006
【図６】
0005572163.tif 000007