(57)【要約】  ドライバをインポートし、管理し、展開する技術が提供されている。あるマシンが再イメージングされるとき、そのマシン上のプロセスは、そのマシン上のハードウェアデバイスをスキャンし、スキャンした各々のハードウェアデバイスに対するハードウェアデバイスＩＤおよび互換性のあるハードウェアデバイスＩＤのリストを生成する。その後、プロセスは、ハードウェアと互換性のあるデバイスドライバおよび互換性のあるハードウェアデバイスＩＤに対応するデバイスドライバパッケージＩＤに対する要求を作成し、その要求を管理サーバに送信する。プロセスは、その要求に応答して互換性のあるデバイスドライバパッケージＩＤのリストを受け取り、該当するコンテンツサーバからデバイスドライバファイルにアクセスする。
2009514121.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムにおいてデバイスドライバを追加する方法であって、
プリインストール環境を前記コンピュータシステム上に作成するように動作可能である最低限のオペレーティングシステムを、前記コンピュータシステム上にインストールするステップと、
前記プリインストール環境を前記コンピュータシステム上に作成するステップと、
前記プリインストール環境内において、
前記コンピュータシステム上のハードウェアコンポーネントをスキャンするステップと（５０２）、
前記スキャンしたハードウェアコンポーネントについてのハードウェアデバイスＩＤのリストを生成するステップと（５０４）、
前記ハードウェアデバイスＩＤのリスト内の前記ハードウェアデバイスＩＤと互換性のあるデバイスドライバパッケージのリストを取得するステップと（５０６）、
前記デバイスドライバパッケージ内の前記デバイスドライバの使用を考慮するように、前記コンピュータシステム上のオフラインオペレーティングシステムを構成するステップと（５１０）
を備えたことを特徴とする方法。
【請求項２】
前記互換性のあるデバイスドライバＩＤのリストは、リモートサーバから取得されることを特徴とする請求項１に記載の方法。
【請求項３】
前記デバイスドライバパッケージは、コンテンツサーバから取得されることを特徴とする請求項１に記載の方法。
【請求項４】
前記ハードウェアデバイスＩＤのリストは、互換性のあるハードウェアデバイスＩＤを含んでいる（５０４）ことを特徴とする請求項１に記載の方法。
【請求項５】
前記プリインストール環境内において、
前記取得したデバイスドライバパッケージがブートクリティカルなドライバに対するものであるかどうかを判定するステップと、
前記取得したデバイスドライバパッケージがブートクリティカルなドライバに対するものであると判定した上で、前記ブートクリティカルなドライバを前記オフラインコンピュータシステム上にインストールするステップと
をさらに備えたことを特徴とする請求項１に記載の方法。
【請求項６】
前記ハードウェアデバイスＩＤのリストは、ランク付けされていることを特徴とする請求項１に記載の方法。
【請求項７】
前記オフラインオペレーティングシステムは、プラグアンドプレイプロセスにおいて前記デバイスドライバの使用を考慮するように構成されていることを特徴とする請求項１に記載の方法。
【請求項８】
前記デバイスドライバパッケージの少なくとも１つは、ＷＩＮＤＯＷＳ（登録商標）ドライバパッケージであることを特徴とする請求項１に記載の方法。
【請求項９】
前記最低限のオペレーティングシステムは、ネットワーク上にインストールされることを特徴とする請求項１に記載の方法。
【請求項１０】
コンピュータシステムにおいてデバイスドライバをドライバカタログに追加する方法であって、
デバイスドライバに対する製造業者のデバイスドライバパッケージを受け取るステップと（２０２）、
前記デバイスドライバパッケージで提供されたインストール命令を解析して、前記デバイスドライバパッケージに関連付けられたメタデータを判定するステップと（２０４）、
前記デバイスドライバパッケージに関連付けるための任意の追加のメタデータを取得するステップと（２０６）、
前記デバイスドライバパッケージに関連付けられたメタデータをドライバカタログに保存するステップと（２１０）、
前記デバイスドライバパッケージを少なくとも１つのコンテンツサーバに割り当てるステップと（２１２）
を備えたことを特徴とする方法。
【請求項１１】
前記デバイスドライバパッケージは、ＷＩＮＤＯＷＳ（登録商標）ドライバパッケージであることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記メタデータおよび前記追加のメタデータは、前記デバイスドライバパッケージをターゲットマシンにダウンロードすべきかどうかを判定するために使用されることを特徴とする請求項１０に記載の方法。
【請求項１３】
前記追加のメタデータはアドミニストレータから取得されることを特徴とする請求項１０に記載の方法。
【請求項１４】
前記追加のメタデータは、前記デバイスドライバパッケージに適切なターゲットマシン製造業者に指示を含むことを特徴とする請求項１０に記載の方法。
【請求項１５】
前記追加のメタデータは、前記デバイスドライバパッケージに適切なターゲットマシンモデルの指示を含むことを特徴とする請求項１０に記載の方法。
【請求項１６】
コンピュータシステムにおいてハードウェアデバイスＩＤと互換性のあるデバイスドライバパッケージＩＤを提供する方法であって、
ハードウェアデバイスＩＤのリスト内のハードウェアデバイスＩＤと互換性のあるデバイスドライバパッケージに対する要求を受け取るステップであって、前記要求はターゲットマシンの記述を含むステップと（４０２）、
前記ハードウェアデバイスＩＤの前記リスト内の各々のハードウェアデバイスＩＤについて（４０４）、
前記ハードウェアデバイスＩＤと互換性のあるデバイスドライバパッケージを取得するステップと（４０６）、
前記取得したデバイスドライバパッケージに対応するデバイスドライバパッケージＩＤを互換性のあるデバイスドライバパッケージＩＤのリストに追加するステップと（４０８）、
前記互換性のあるデバイスドライバパッケージＩＤのリストを、前記要求に対する応答として提供するステップと（４１２）
を備えたことを特徴とする方法。
【請求項１７】
前記互換性のあるデバイスドライバＩＤのリストはランク付けされていることを特徴とする請求項１６に記載の方法。
【請求項１８】
前記デバイスドライバＩＤはデータベースをクエリすることによって取得されることを特徴とする請求項１６に記載の方法。
【請求項１９】
前記前記データベースはドライバカタログであることを特徴とする請求項１８に記載の方法。
【請求項２０】
前記データベースは、デバイスドライバＩＤに対応するデバイスドライバパッケージに関連付けられたメタデータを備えたことを特徴とする請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
ある組織がパーソナルコンピュータ、ワークステーション、サーバ、クライアントなどのように、数千といわなくても、数百のマシンを所有していることはめずらしいことではない。これらのマシンの一部は同じであること（つまり、同一製造業者からの同じコンピュータモデルであること）があるが、マシンの多くが異なっていること（つまり、多数の異なる製造業者からの異なるコンピュータモデルであること）はめずらしいことではない。さらに、同一モデルのマシン（つまり、同一モデルラインに属するマシン）は、ハードウェアおよびハードウェア構成の差異のために異なるかもしれない。
【０００２】
一般的に、マシンのビデオカード、サウンドカード、キーボード、マウスなどの、ハードウェアコンポーネントにアクセスして使用するには、デバイスドライバが必要である。例えば、マシン内に収められたビデオカードを使用するには、ビデオドライバが通常、必要となる。デバイスドライバは、マシン上で実行されているオペレーティングシステムおよび他のソフトウェアプログラムがマシンのハードウェアコンポーネントと通信して利用できるようにする。従って、異なるマシンのそれぞれについて（つまり、異なるハードウェア構成を有するマシン）、異なるセットのデバイスドライバが必要になることになる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
異なるデバイスドライバまたは異なるセットのデバイスドライバを管理し、組織内の非常に多数のマシン上に展開することは大きな課題でとなっている。システムアドミニストレータは、組織内のマシンによって必要とされる可能性のあるシングルデバイスドライバのすべてを収めたモノリシックイメージ（ｍｏｎｏｌｉｔｈｉｃ  ｉｍａｇｅ）を作成するのが一般である。その後、モノリシックイメージは、組織内のすべてのマシンに展開され、モノリシックイメージ内のドライバのどれをマシン上にロードする必要があるかを判定するタスクは、各マシン上のオペレーティングシステムの負荷となっている。新しいデバイスドライバを必要とする新しいマシンが追加されたときは、その新しいデバイスドライバを含むようにモノリシックイメージを作り直す必要がある。上記のようにモノリシックイメージを使用してデバイスドライバを管理し、展開する処理は非常に時間を消費し、コストがかかる。
【課題を解決するための手段】
【０００４】
ドライバをインポートし、管理し、展開するための技術が提供されている。あるマシンが再イメージングされるとき、そのマシン上のプロセスは、マシン上のハードウェアデバイスをスキャンし、スキャンしたハードウェアデバイスごとにハードウェアデバイスＩＤおよび互換性のあるハードウェアデバイスＩＤのリストを生成する。次に、プロセスは、ハードウェアと互換性のあるデバイスドライバおよび互換性のあるハードウェアデバイスＩＤに対応するデバイスドライバパッケージＩＤに対する要求を形成し、この要求を管理サーバに送信する。プロセスは、この要求に対する応答として互換性のあるデバイスドライバパッケージＩＤのリストを受け取り、該当するコンテンツサーバからデバイスドライバファイルにアクセスする。
【０００５】
ここでの概要は、以下の詳細に説明されたでの簡単な形態における概念の選択を紹介するために提供される。ここでの概要は、特許請求された対象の重要な特徴または基本的特徴を特定することを意図せず、また特許請求された対象の範囲を決定する一助として使用されることも意図しない。
【発明を実施するための最良の形態】
【０００６】
以下には、デバイスドライバなどのドライバをインポートし、管理し、展開するための種々の技術が開示されている。いくつかの実施形態では、システムアドミニストレータは、ターゲットコンピュータシステム（以下では、「マシン」とも呼ばれる）上のイメージ展開の中で考慮に入れられるデバイスドライバを含んでいるデバイスカタログにデバイスドライバをインポートする。管理サーバなどのサーバには、例えば、システムアドミニストレータのコンソールからアクセス可能で、ＷＩＮＤＯＷＳ（登録商標）デバイスドライバパッケージなどのドライバ製造業者のデバイスドライバパッケージをドライバカタログにインポートして、操作するために使用できるＵＩ（user interface ：ユーザインタフェース）が用意されていることがある。例えば、新しいデバイスドライバを必要とするマシンが購入されたときや、新バージョンのデバイスドライバがリリースされたとき、アドミニストレータはＵＩを使用してデバイスドライバをドライバカタログにインポートすることができるので、インポートされたデバイスドライバは、オペレーティングシステム（ＯＳ）の展開タスクのように、ドライバカタログを利用する将来のイメージ展開タスクで考慮されることになる。いくつかの実施形態では、ドライバカタログには、ＡＰＩ（application program interface ：アプリケーションプログラムインタフェース）のように、サードパーティのツール（例えば、サードパーティのデバイスドライバプロバイダ）がデバイスドライバをドライバカタログにインポートするのを可能にするインタフェースが用意されていることがある。
【０００７】
いくつかの実施形態では、管理サーバには、ＷＩＮＤＯＷＳ（登録商標） Ｉｍｐｏｒｔ Ｄｒｉｖｅｒ Ｗｉｚａｒｄなどの、ドライバをドライバカタログに追加する処理を介して、アドミニストレータなどのユーザにガイドするツールが用意されていることがある。例えば、このツールは、ドライバパッケージディスク、ディレクトリ、コンパクトディスク（ＣＤ）などの製造業者のドライバパッケージを提供するようにアドミニストレータに指示することがある。このツールは、製造業者のドライバパッケージで提供されたインストール命令を解析して、そのドライバパッケージに関連付けられたメタデータを判定する。ＷＩＮＤＯＷＳ（登録商標） Ｉｍｐｏｒｔ Ｄｒｉｖｅｒ Ｗｉｚａｒｄの場合には、このツールは関連の情報（.inf）ファイルを解析して、ＷＩＮＤＯＷＳ（登録商標） Ｉｍｐｏｒｔ Ｄｒｉｖｅｒ Ｗｉｚａｒｄに関連付けられたメタデータを判定することができる。このツールによると、アドミニストレータは、ドライバパッケージに関連付けようとする追加のメタデータを用意することができる。このツールは、ドライバパッケージに関連付けられたメタデータをドライバカタログに保存する。このツールは、製造業者のドライバパッケージに関連付けられたドライバファイルをドライバカタログのドライバパッケージ内にカプセル化し、そのドライバカタログのドライバパッケージを１または２以上のコンテンツサーバに割り当てる。
【０００８】
いくつかの実施形態では、管理サーバはドライバマッチング要求に応答する。例えば、ターゲットマシンは、ハードウェアＩＤのリストと互換性のあるドライバＩＤの要求を管理サーバに送ることができる。この要求には、ターゲットマシンの記述および見つけようとするドライバＩＤに対応するハードウェアデバイスＩＤが含まれている。これを受けて、管理サーバは、ドライバカタログなどのデータベースをクエリして、指示されたハードウェアデバイスＩＤと互換性のあるドライバをそのデータベースから判定することができる。ハードウェアデバイスＩＤのほかに、管理サーバは、ターゲットマシンの製造業者、モデル、ＯＳ、プロセッサアーキテクチャなどの要素を使用してデータベースをクエリし、互換性のあるドライバのセットを判定することができる。その後、管理サーバは、ハードウェアデバイスＩＤと互換性のあるドライバに対応するドライバＩＤを判定し、ターゲットマシンに対する応答として互換性のあるドライバパッケージＩＤのリストを返す。ドライバパッケージＩＤは、ドライバカタログ内のドライバカタログドライバパッケージ（例えば、ドライバメタデータとソース）を一意に識別している。いくつかの実施形態では、管理サーバは、指示されたハードウェアデバイスＩＤと互換性のあるドライバをランク付けし、ランク付けした互換性のあるドライバパッケージＩＤのリストを提供する。
【０００９】
いくつかの実施形態では、最低限のＯＳを実行しているターゲットマシンは管理サーバのサービスを使用して、デバイスドライバをターゲットマシンに追加する。例えば、最低限のＯＳは、ターゲットマシン上でＯＳ展開タスク（OS deployment task）期間に実行されることがあり、最低限のＯＳが実行されると、ターゲットマシンがプリインスール環境またはプリインスール状態に置かれるか、あるいはプリインスール環境またはプリインスール状態がターゲットマシン上に作成されることになる。このプリインスール環境が存在するのは、イメージ（例えば、最低限のＯＳイメージ）がターゲットマシンに適用されていたときで、ターゲットマシンがリブート（reboot）されて完全ＯＳになる前である。いくつかの実施形態では、プリイントール環境にある間、ターゲットマシン上のソフトウェア機能（以下「機能」と言う）は、マシン上にあるハードウェアデバイスをスキャンし、スキャンしたハードウェアデバイスのハードウェアＩＤのリストを生成する。その後、この機能はハードウェアＩＤのリスト内のハードウェアＩＤと互換性のあるドライバパッケージＩＤのリストを取得する。例えば、この機能は、ハードウェアＩＤのリスト内のハードウェアＩＤと互換性のあるドライバパッケージに対する要求を作成して管理サーバに送信し、互換性のあるドライバパッケージＩＤのリストを管理サーバから受け取ることができる。いくつかの実施形態では、この機能は、ターゲットマシン上のオフラインＯＳを、ドライバパッケージ内のドライバの使用を考慮に入れるように構成することができる。例えば、このオフラインＯＳは、そのプラグアンドプレイパス（plug-and-play pass）の中でドライバを考慮するように構成することができる。いくつかの実施形態では、ドライバカタログ機能（デバイスドライバをターゲットマシンに追加する管理サーバの機能）は、新しいＯＳのインスール（例えば、与えられたデバイスドライバのセットを使用するようにオペレーティングシステムのスクリプトによるインストールを構成する）時にドライバを利用可能にするために使用することができる。
【００１０】
いくつかの実施形態では、この機能は、スキャンしたハードウェアデバイスの互換性のあるハードウェアＩＤも取得し、その中には、ハードウェアＩＤのリスト内の互換性のあるハードウェアＩＤが含まれている。従って、互換性のあるドライバＩＤのリストには、互換性のあるハードウェアＩＤと互換性のあるドライバＩＤも含まれている。いくつかの実施形態では、この機能は、取得したドライバパッケージが「ブートクリティカルなドライバ（boot critical driver）」についてのものであるかをチェックして判定する。そうであれば、この機能はそのブートクリティカルなドライバをターゲットマシン上にインストールする。いくつかの実施形態では、この機能はハードウェアＩＤのリスト内のハードウェアＩＤをランク付けする。
【００１１】
これらの種々の技術を使用すると、ターゲットマシンは必要とするドライバ（例えば、ターゲットマシン上にあるハードウェアデバイスと互換性のあるドライバ）だけを取得すること（例えば、ダウンロードすること）ができるので、必要とするネットワークバンド幅が節減され、イメージ展開プロセスが高速化されることになる。
【００１２】
ある実施形態では、ここで説明しているドライバをインポートし、管理し、展開するための種々な技術は、本願特許出願人のＳＭＳ（System Management Server ：システム管理サーバ）などの、ソフトウェア配布システムの一部として実現することができる。ＳＭＳには、ＷＩＮＤＯＷＳ（登録商標）ベースのコンピュータシステムの大きなグループを管理するためのアーキテクチャが用意されている。ＳＭＳによると、アドミニストレータは、ネットワーク上のマシンを管理し、中心となる場所からソフトウェアをこれらのマシンに配布し、ネットワーク上のマシンを検出し、ソフトウェア構成とハードウェア構成をトラッキングし、マシン上の他のタスクを離れた場所から実行することができる。
【００１３】
ＳＭＳアーキテクチャおよびＳＭＳ環境では、ここで説明しているドライバをインポートし、管理し、展開する技術の実現を可能にする適当なパラダイムが１つだけ構成されている。種々の周知ソフトウェア構成およびリリース管理システムのいずれかに用意されている他のパラダイムを利用すると、ここに説明しているデバイスをインポートし、管理し、展開する技術を実現することも可能であることを当業者は理解されたい。
【００１４】
図１は、ドライバをインポートし、管理し、展開する技術を実装するドライバ管理システムが動作することのできる例示環境を示すハイレベルブロック図である。この動作環境は適当な動作環境の単なる一例であり、ドライバ管理システムの使用または機能の範囲に関してなんらの制限があることを示唆するものではない。図示のように、この環境は、ターゲットマシン１０２、管理サーバ１０４、および各々がネットワーク１０８に結合された複数のコンテンツサーバ１０６ａ−ｎを含んでいる。管理サーバはドライバカタログ１１０にも結合されている。図１には、単純化のためターゲットマシンは１つだけが示されているが、２つ以上のターゲットマシンが存在することも可能である。本明細書には、「接続（connected）」、「結合（coupled）」という用語またはその変形が用いられているが、これは、２またはそれ以上の要素間が直接的にも、間接的にも接続または結合されていることを意味し、要素間の結合または接続は、物理的にも、論理的にも、それらを組み合わせたものでもあることができることを、当業者は理解されたい。
【００１５】
例えば、ある会社が新しいデバイスドライバを必要とするマシンまたは周辺デバイスを購入したときのように、新しいデバイスドライバを取得したときは、アドミニストレータは、インポートドライバウィザード（Import Driver Wizard）などの管理サーバに用意されているツールを起動して、そのデバイスドライバをドライバカタログに追加する。この処理の一部として、アドミニストレータは、追加されたデバイスドライバに関連付けようとする追加のメタデータを用意することができる。その後、管理サーバは、提供されたデバイスドライバおよびそのデバイスドライバに関連付けられたメタデータ（この中には、アドミニストレータが用意した追加のメタデータがあれば、それも含まれている）からデバイスドライバパッケージを作成し、そのデバイスドライバパッケージをドライバカタログに追加する。管理サーバは、新しく追加されたデバイスドライバパッケージを１または２以上のコンテンツサーバに配布する。ＳＭＳのコンテキスト内では、コンテンツサーバはコンテンツサーバを提供し、コンテンツサーバは地理的に分散された共有ファイルの役割を果たし、個々のマシンがデバイスドライバパッケージを取得できる。ドライバカタログ内のデバイスドライバパッケージはその後、ターゲットマシン上の将来のＯＳ展開タスクで考慮に入れられる。例えば、ターゲットマシンが再イメージングされるとき（例えば、ブートイメージがターゲットマシン上で再イメージングされるとき（再インストールされるともいう））は、ターゲットマシン上で実行されているこの機能は、ターゲットマシンがプリイントール状態にある間、ターゲットマシン上のハードウェアデバイスをスキャンし、各ハードウェアデバイスのハードウェアＩＤおよび互換性のあるハードウェアＩＤのリストを取得する。その後、この機能はドライバカタログ要求を形成し、その要求を管理サーバに送信する。その要求をターゲットマシンから受け取ると、管理サーバはドライバカタログをクエリして、ドライバカタログ内に利用可能な互換性のあるハードウェアドライバパッケージＩＤのセットを判定する。管理サーバはその後、その互換性のあるハードウェアドライバパッケージＩＤのセットを、ターゲットマシンに対する応答として返す。いくつかの実施形態では、管理サーバは、ターゲットマシンに戻された互換性のあるドライバパッケージＩＤのセットをランク付けすることがある。例えば、互換性のあるドライバパッケージＩＤは、ＭＩＣＲＯＳＯＦＴ社の標準プラグアンドプレイマッチングアルゴリズムを用いてランク付けされることがあるが、これは、当業者に周知である。この機能は互換性のあるハードウェアドライバＩＤのセットを受け取り、ハードウェアドライバＩＤに対応するデバイスドライバパッケージをそれぞれのコンテンツサーバから取得する。取得したデバイスドライバパッケージが大容量ストレージに対するものであれば、この機能はドライバをターゲットマシン上にインストールする。そうでない場合は、この機能は取得したデバイスドライバパッケージを、例えば、ターゲットマシンのデバイスドライバストアにコピーし、ターゲットマシン上のオフラインＯＳを、そのデバイスドライバパッケージに対応する���バイスドライバを考慮に入れるように構成する。この機能は、対応するデバイスドライバパッケージが取得されなかったハードウェアドライバＩＤがあると、警告（例えば、警告メッセージ）をログに記録することがある。
【００１６】
いくつかの実施形態では、この機能はターゲットマシンのローカルデバイスドライバストアをクエリして、ターゲットマシン上の互換性のあるデバイスのランク付け順序を判定することもある。その後、この機能は、管理サーバから受け取られた応答とターゲットマシンのローカルデバイスドライバストアをマージして、最良適合（best match）の（すなわち、最も適切な）デバイスドライバを選択することができる。例えば、この機能は、ローカルマシンのドライバキャッシュ内のすべてのデバイスドライバを列挙し、各デバイスドライバのドライバランク（例えば、0x0000から0xFFFFまでの数）を計算することができる。この機能はその後、ローカルドライバキャッシュ内の最も高くランク付けされたデバイスドライバを、ドライバカタログ内の最も高くランク付けされたデバイスドライバと比較して、そのうちのランク付けが低いほうを選択することができる。同じランクのときは、この機能は、バージョン番号が高いほうのデバイスドライバを選択することができる。
【００１７】
一般的に、ネットワークは、例えば、接続されたターゲットマシン、管理サーバおよびコンテンツサーバの間で電子コンテンツの転送を容易にする通信リンクである。いくつかの実施形態では、ネットワークにはインターネットが含まれている。ネットワークは、ローカルエリアネットワーク、ワイドエリアネットワーク、ポイントツーポイントのダイアルアップ接続などのように、１または２以上の他のタイプのネットワークで構成できることを理解されたい。
【００１８】
ターゲットマシン、管理サーバおよびコンテンツサーバを含むドライバ管理システムが実現されているコンピューティングデバイスは、ＣＰＵ、メモリ、入力デバイス（例えば、キーボードおよびポインティングデバイス）、出力デバイス（例えば、ディスプレイデバイス）、およびストレージデバイス（例えば、ディスクドライブ）を備えていることがある。メモリとストレージデバイスは、ドライバ管理システムを実現する命令を収めているコンピュータ可読記憶媒体である。さらに、データ構造とメッセージ構造は、通信リンク上の信号などのデータ伝送媒体を通して、格納またはあるいは伝送できる。種々の通信リンクが使用されることがあり、その中には、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、ポイントツーポイントダイアルアップの接続、セル電話ネットワークなどが含まれる。
【００１９】
システムの実施形態は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラマブル家電、デジタルカメラ、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記システムまたはデバイスのいずれかを含む分散コンピューティング環境などを含む、種々の動作環境で実現することができる。コンピュータシステムは、セル電話、パーソナルデジタルアシスタント、スマート電話、パーソナルコンピュータ、プログラマブル家電、デジタルカメラなどであることができる。
【００２０】
システムは、プログラムモジュールのように、１または２以上のコンピュータまたは他のデバイスによって実行されるコンピュータ実行可能命令の一般的コンテキストの中で説明することができる。一般的に、プログラムモジュールの中には、特定のタスクを実行し、あるいは特定の抽象データ型を実現するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれている。代表例として、プログラムモジュールの機能は、種々の実施形態において必要に応じて組み合わせることも、分散させることもできる。
【００２１】
図２は、いくつかの実施形態に従ってデバイスドライバをドライバカタログに追加することを示すフロー図である。例を挙げると、ある組織は、ハードウェアデバイスに対する新バージョンまたはリリースのデバイスドライバのデバイスドライバパッケージを、製造業者（例えば、ハードウェアデバイスの製造業者および／またはデバイスドライバの開発者）から受け取ることがある。この新バージョンのデバイスドライバが、組織のマシン上の将来のＯＳ展開の中で考慮に入れられるようにするために、組織のアドミニストレータは、管理サーバを利用してデバイスドライバパッケージをドライバカタログに追加またはインポートすることができる。ブロック２０２において、管理サーバは製造業者のデバイスドライバパッケージを受け取る。ブロック２０４において、管理サーバはそのデバイスドライバパッケージと共に提供されたインストール命令を解析し、デバイスドライバに関連付けられたメタデータを判定する。ブロック２０６において、管理サーバは、デバイスドライバに関連付けられる追加のメタデータがあれば、それを取得する。例えば、管理サーバは、そこを通してアドミニストレータが追加のメタデータを提供し、および／またはデバイスドライバに関連付けられたメタデータを編集することができるＵＩを備えていることがある。ブロック２０８において、管理サーバは、メタデータ（すなわち、インストール命令から解析されたメタデータ（ブロック２０４））およびアドミニストレータが用意した追加のメタデータがあれば（ブロック２０６）、そのメタデータを保存する。ブロック２１０において、管理サーバは、デバイスドライバファイルをドライバカタログのデバイスドライバパッケージにカプセル化する。デバイスドライバファイルは、製造業者のデバイスドライバパッケージの一部として受け取られたファイルである。管理システムは、ドライバカタログのデバイスドライバパッケージをドライバカタログまたは他の適当なストレージデバイスに格納することもある。ブロック２１２において、管理サーバは、将来のターゲットマシンへの展開に備えて、ドライバカタログのデバイスドライバパッケージをコンテンツサーバまたは複数のコンテンツサーバにコピーしておく。
【００２２】
ここで開示されている上記および他のプロセスおよび方法について、その処理および方法の中で実行される機能は異なる順序で実現されることがあることを、当業者は理解されたい。さらに、概説した段階は単なる例示であり、これらの段階の一部は、オプションにすることも、より少数の段階と結合することも、追加の段階に拡張することもできる。
【００２３】
図３は、いくつかの実施形態に従ってドライバカタログのデバイスドライバパッケージに関連付けられたメタデータを示すブロック図である。ドライバカタログのデバイスドライバパッケージのメタデータ３０２は、デバイスドライバパッケージのメタデータ３０４および追加のデバイスドライバメタデータ３０６を組み合わせたものから作成される。このデバイスドライバパッケージのメタデータは、例えば、ブロック２０４に関連して上述したように、そのデバイスドライバパッケージと共に提供されたインストール命令から解析されたメタデータである。図示のように、このメタデータには、例を挙げると、適用されるデバイスドライバの対象となるハードウェアデバイスの製造業者、デバイスドライバのプロバイダ（例えば、デバイスドライバの開発者）、デバイスドライバのクラス（例えば、ＳＣＳＩデバイスドライバ、ビデオデバイスドライバなど）、デバイスドライバの記述、デバイスドライバによってサポートされるオペレーティングシステム、デバイスドライバと互換性のあるハードウェアデバイスのハードウェアデバイスＩＤ、およびデバイスドライバとも互換性のある互換性のあるハードウェアデバイスの互換性のあるハードウェアＩＤが含まれていることもある。追加のデバイスドライバメタデータは、例えば、ブロック２０６に関連して上述したように、デバイスドライバパッケージに関連付けられる追加のメタデータである。図示のように、追加のメタデータには、例を挙げると、マシン製造業者のリストおよびマシンモデルのリストが含まれていることがある。マシン製造業者のリストには、適用されるデバイスドライバパッケージの対象となる、０、１または２以上のマシン製造業者を含めることができる。マシンモデルのリストには、適用されるデバイスドライバパッケージの対象となる、０、１または２以上のマシンモデルを含めることができる。その後、このドライバカタログのデバイスドライバパッケージのメタデータは、特定のドライバカタログのデバイスドライバパッケージがターゲットマシン上に展開（例えば、インストール）するのに適したものかどうかを判定するために使用されることもある。例えば、アドミニストレータは、ＸＹＺ社からのビデオカードＡＢＣに対するデバイスドライバＫＬＭがＡＣＭＥ社製のマシン上に展開するのに適していると指示していることがある。この場合、ＡＣＭＥはマシン製造業者のリストに含まれている。その後、ビデオカードＡＢＣと共に構成されたＡＣＭＥマシンが互換性のあるデバイスドライバＩＤのリストを要求したときは、管理サーバはその応答の中にデバイスドライバＫＬＭを含めることになる。他方、ＡＣＭＥ製ではないが、ビデオカードＡＢＣと共に構成されたマシンが互換性のあるデバイスドライバＩＤのリストを要求したときは、管理サーバは、たとえデバイスドライバＫＬＭがビデオカードＡＢＣと互換性がある場合であっても、その要求したマシンがＡＣＭＥ製でなかったので、デバイスドライバＫＬＭをその応答の中に含めない。従って、追加のメタデータが存在するときは、その追加のメタデータは、デバイスドライバパッケージをターゲットマシン上に展開すべきかどうかを判定する際に、製造業者から受け取ったデバイスドライバパッケージで提供されたメタデータに対して一種の「指定変更（オーバライド）」の形式の役割をすることができる。
【００２４】
図４は、いくつかの実施形態に従ってドライバパッケージＩＤのリストに対する要求を受け取る管理サーバのコンポーネントの処理を示すフロー図である。例を挙げると、ターゲットマシンは、必要とする互換性のあるデバイスドライバに対応するハードウェアデバイスのリストを判定していることがある。ターゲットマシンはその後、これらのハードウェアデバイスのハードウェアデバイスＩＤのリストを作成し、ハードウェアデバイスＩＤのリストの中で特定されたハードウェアデバイスと互換性のあるデバイスドライバパッケージに対する要求を管理サーバに送信するかもしれない。ブロック４０２において、管理サーバは、ターゲットマシン上のハードウェアデバイスのハードウェアデバイスＩＤのリストと互換性のあるデバイスドライバパッケージＩＤに対する要求を受け取る。いくつかの実施形態では、この要求には、ターゲットマシンのタイプの指示（例えば、ターゲットマシンの製造業者、ターゲットマシンのモデルなど）、ターゲットマシン上のＯＳ、ターゲットマシン上のプロセッサアーキテクチャなどが含まれていることもある。その後、ハードウェアデバイスＩＤのリスト内のハードウェアデバイスＩＤごとに（ブロック４０４）、管理サーバは、そのリスト内のすべてのハードウェアデバイスＩＤが処理されるまで（ブロック４１０）、ブロック４０６−４１０を実行する。ブロック４０６において、管理サーバは、ハードウェアデバイスＩＤをサポートする、または互換性のあるデバイスドライバパッケージを得るためにドライバカタログをクエリする。例えば、管理サーバは、デバイスドライバが互換性があるかどうかを、そのデバイスドライバのドライバカタログのデバイスドライバパッケージに関連付けられたメタデータから判定することができる。ブロック４０８において、管理サーバは互換性のあるデバイスドライバパッケージを、互換性のあるデバイスドライバパッケージのリストに追加する。例えば、管理サーバは、互換性のあるデバイスドライバパッケージに対応するデバイスドライバパッケージＩＤを互換性のあるデバイスドライバパッケージＩＤのリストに追加することができる。リスト内のすべてのハードウェアデバイスドライバＩＤを処理した後、管理サーバは、ブロック４１２において、例えば、ターゲットマシンに対する要求に応答して互換性のあるデバイスドライバパッケージＩＤのリストを返す。
【００２５】
図５は、プリインストール環境においてデバイスドライバパッケージをダウンロードするターゲットマシンの処理を示すフロー図である。例を挙げると、この機能のようなクライアントプロセスは、ＯＳイメージがターゲットマシンに適用されたあとで、ターゲットマシンが「ミニセットアップ（mini setup）」にリブートされる前にＯＳ展開タスクを実行しているかもしれない。この状態にあるとき、ターゲットマシンはプリインストール環境に置かれている。このプリインストール環境では、ＭＩＣＲＯＳＯＦＴ社のＷｉｎＰＥ（商標）などの最低限のＯＳまたはＯＳのサブセットが、ターゲットマシンのハードディスクにインストールされ、ターゲットマシンをプリインストール環境に置くようにリブートされている。最低限のＯＳは、例を挙げると、ＣＤ−ＲＯＭ、ＲＡＭディスク、ＰＸＥなどのメカニズムを通して提供されることがある。周知であるように、ミニセットアップが実行されると、ＯＳイメージに対応するＯＳが初期化されて始動され、以前に保存されていたマシン設定状態があれば、その設定状態はターゲットマシン上に再格納される。このプリインストール環境は、この分野の通常の知識を有するものに広く知られている。
【００２６】
ブロック５０２において、ターゲットマシン上で実行されているこの機能は、ターゲットマシン上にあるハードウェアコンポーネントを判定するためにターゲットマシンをスキャンする。ブロック５０４において、この機能は、スキャンしたハードウェアコンポーネントに対するハードウェアデバイスＩＤおよび互換性のあるハードウェアデバイスＩＤのリストを生成する。ブロック５０６において、この機能は、ハードウェアデバイスＩＤおよび互換性のあるハードウェアデバイスＩＤのリストと互換性のあるデバイスドライバパッケージＩＤのリストを、管理サーバから取得する。その後、デバイスドライバパッケージＩＤのリスト内のデバイスドライバパッケージごとに（ブロック５０８）、この機能は、リスト内のすべてのデバイスドライバパッケージＩＤが処理されるまで（ブロック５１２）ブロック５１０を実行する。ブロック５１０において、この機能はドライバカタログのデバイスドライバパッケージを、マシン上のオフラインＯＳが使用できるようにする。例えば、この機能はマシン上のオフラインＯＳを、ドライバカタログのデバイスドライバパッケージに対応するデバイスドライバを考慮するように構成する。いくつかの実施形態では、この機能は、そのドライバカタログのデバイスドライバパッケージがブートクリティカルなドライバに対するものであるかどうかを判定するためにドライバカタログのデバイスドライバパッケージをチェックする。そのドライバカタログのデバイスドライバパッケージがブートクリティカルなドライバに対するものであれば、この機能はブートクリティカルなドライバをターゲットマシン上にインストールする。
【００２７】
いくつかの実施形態では、ターゲットマシン上のこの機能は、ターゲットマシンがプリインストール環境にない間に、デバイスドライバパッケージをターゲットマシンにダウンロードすることができる。
【００２８】
構造上の特徴および／または方法的振る舞いに特有の表現で本発明の対象を説明してきたが、請求項に明確化されている本対象は上述した特定の特徴または振る舞いに必ずしも限定されないことを理解されたい。むしろ、上述した特定の特徴および振る舞いは、特許請求の範囲を実現する形態の例として開示されている。
【図面の簡単な説明】
【００２９】
【図１】ドライバに、インポート、管理および展開する技術を実装するドライバ管理システムが動作できる例示環境を示すハイレベルブロック図である。
【図２】いくつかの実施形態に従って、ドライバカタログへのデバイスドライバの追加を示すフロー図である。
【図３】いくつかの実施形態に従って、ドライバカタログのデバイスドライバパッケージに関連付けられたメタデータを示すブロック図である。
【図４】いくつかの実施形態に従って、ドライバパッケージＩＤのリストに対する要求を受信する管理サーバのコンポーネントの処理を示すフロー図である。
【図５】いくつかの実施形態に従って、デバイスドライバパッケージを追加するためにプリインストール環境内のターゲットマシンの処理を示すフロー図である。
【図１】
2009514121.tif 000003
【図２】
2009514121.tif 000004
【図３】
2009514121.tif 000005
【図４】
2009514121.tif 000006
【図５】
2009514121.tif 000007
【国際調査報告】
2009514121.tif 000008
2009514121.tif 000009