(57)【要約】【課題】  ドライバが、後のバージョンまたは共通の名前を持つ他のドライバによって上書きされることを回避する方法およびシステムを提供する。【解決手段】  ドライバが、後のバージョンまたは共通の名前を持つ他のドライバによって上書きされることを回避する方法およびシステムは、対象となるすべてのドライバパッケージに一意の識別を生成することを含む。そして、ドライバパッケージに含まれるドライバファイル、または全ドライバパッケージ自体が、一意の識別に基づいて共通ストレージのサブディレクトリ位置にインストールされる。ドライバファイルは、サブディレクトリ位置からメモリにロードすることができる。したがって、複数のドライバパッケージおよび同じ名前を持つドライバファイルを共存させてインストールし、ロードすることができる。【選択図】  図１
2005251204.tif 000002
【特許請求の範囲】
【請求項１】
ドライバパッケージを受け取るステップと、
前記ドライバパッケージのストロングネームを生成するステップと、
前記ストロングネームに基づいて、前記ドライバパッケージに関連付けられたドライバファイルに記憶場所を割り当てるステップと
を備えることを特徴とする方法。
【請求項２】
前記ドライバファイルは、ドライバイメージファイルを含み、
前記方法はさらに、前記ドライバイメージファイルを前記記憶場所からメモリにロードするステップを備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記ドライバファイルは、ドライバイメージファイルおよびサービスネームの少なくとも１つを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記ドライバパッケージのストロングネームを生成するステップは、前記ドライバパッケージに関連付けられた前記ドライバファイルの少なくとも１つのハッシュを計算するステップを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記少なくとも１つのドライバファイルは、ドライバカタログファイル、セットアップ情報ファイル、およびドライバイメージファイルのいずれかを含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記ドライバパッケージの前記ストロングネームを生成するステップは、前記少なくとも１つのドライバファイルの前記ハッシュを、前記ドライバパッケージに含まれるドライバカタログファイルおよび公開鍵の少なくとも１つに連結するステップを含むことを特徴とする請求項４に記載の方法。
【請求項７】
前記ストロングネームに従って前記ドライバパッケージのドライバファイルに記憶場所を割り当てるステップは、ドライバストアのサブディレクトリに、前記ドライバパッケージに関連付けられた少なくとも１つのドライバファイルを割り当てるステップを含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記ストロングネームに従って前記ドライバパッケージのデータに記憶場所を割り当てるステップは、サービスネームデータベースにサービスネームパラメータを割り当てるステップを含むことを特徴とする請求項１に記載の方法。
【請求項９】
共通の名前を持つドライバファイルが対応する個々のドライバパッケージに一意の識別を生成するステップと、
前記一意の識別に基づいて、前記個々のドライバパッケージに関連付けられたドライバファイルを、共通ストレージのサブディレクトリに割り当てるステップと
を備えることを特徴とする方法。
【請求項１０】
前記ドライバファイルはドライバを含み、
前記方法はさらに、前記サブディレクトリの１つからメモリに前記ドライバをロードするステップを備えることを特徴とする請求項９に記載の方法。
【請求項１１】
前記ドライバファイルは、ドライバイメージファイルおよびサービスネームの少なくとも１つを含むことを特徴とする請求項９に記載の方法。
【請求項１２】
共通の名前を持つドライバファイルが対応する前記個々のドライバパッケージの前記一意の識別を生成するステップは、前記ドライバパッケージに関連付けられた少なくとも１つのドライバファイルのハッシュを計算するステップを含むことを特徴とする請求項９に記載の方法。
【請求項１３】
共通の名前を持つドライバファイルが対応する前記個々のドライバパッケージの前記一意の識別を生成するステップは、ベンダのデジタル署名を前記ハッシュに付加するステップを含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記個々のドライバパッケージのドライバファイルを共通ストレージのサブディレクトリに割り当てるステップは、共通の名前を持つドライバファイルの以前のバージョンに上書きすることを回避することを特徴とする請求項９に記載の方法。
【請求項１５】
前記割り当てステップは、前記個々のドライバイメージファイルが対応する前記ドライバパッケージの前記一意の識別に基づいて、前記個々のドライバパッケージのドライバイメージファイルをドライバストアのサブディレクトリに割り当てるステップを含むことを特徴とする請求項１１に記載の方法。
【請求項１６】
前記割り当てステップは、前記ドライバファイルの１つに対応するサービスキーおよびイメージパスを含むサービスネームデータベースに、前記個々のドライバパッケージに含まれるサービスネームを割り当てるステップを含むことを特徴とする請求項１１に記載の方法。
【請求項１７】
１つまたは複数のプロセッサによって実行される１つまたは複数の命令を有するコンピュータ読み取り可能な媒体であって、前記１つまたは複数の命令は、前記１つまたは複数のプロセッサに、
ドライバパッケージのストロングネームを生成させ、
前記ストロングネームに基づいて、前記ドライバパッケージに関連付けられたドライバファイルに記憶場所を割り当てさせる
ことを特徴とするコンピュータ読み取り可能な媒体。
【請求項１８】
前記ドライバファイルは、ドライバイメージファイルであり、
前記１つまたは複数の命令は、前記１つまたは複数のプロセッサに、さらに、前記ドライバを前記記憶場所からメモリにロードさせることを特徴とする請求項１７に記載のコンピュータ読み取り可能な媒体。
【請求項１９】
前記ストロングネームは、前記ドライバパッケージに関連付けられた少なくとも１つのドライバファイルのハッシュであることを特徴とする請求項１７に記載のコンピュータ読み取り可能な媒体。
【請求項２０】
前記ストロングネームは、前記ドライバパッケージのベンダに対応するドライバカタログファイルおよび公開鍵の少なくとも１つを取り込むことを特徴とする請求項１７に記載のコンピュータ読み取り可能な媒体。
【請求項２１】
前記ドライバファイルは、ドライバイメージファイルおよびコインストーラの少なくとも１つであり、さらに、前記記憶場所は、ドライバストアのサブディレクトリであることを特徴とする請求項１７に記載のコンピュータ読み取り可能な媒体。
【請求項２２】
前記ドライバファイルはサービスネームであり、さらに、前記記憶場所は、前記サービスネームに対応するサービスキーとイメージパスを格納するデータベースであることを特徴とする請求項１７に記載のコンピュータ読み取り可能な媒体。
【請求項２３】
前記１つまたは複数のプロセッサに、前記ドライバパッケージに関連付けられた前記ドライバファイルの記憶場所を割り当てさせる前記１つまたは複数の命令は、すでに割り当てられた記憶場所を割り当てないようにすることを特徴とする請求項１７に記載のコンピュータ読み取り可能な媒体。
【請求項２４】
ドライバパッケージのストロングネームを生成するインストーラと、
前記ストロングネームに基づいて、前記ドライバパッケージに関連付けられたファイルをインストールするストレージと
を備えることを特徴とする装置。
【請求項２５】
前記ドライバパッケージに関連付けられた前記ファイルはドライバを含み、
前記装置はさらに、前記ドライバをメモリにロードするローダを備えることを特徴とする請求項２４に記載の装置。
【請求項２６】
前記インストーラは、前記ドライバパッケージに関連する少なくとも１つのドライバファイルのハッシュ関数として前記ストロングネームを生成することを特徴とする請求項２４に記載の装置。
【請求項２７】
前記インストーラは、前記ドライバパッケージに関連するデジタル署名および公開鍵の少なくとも１つを組み込むことにより、前記ストロングネームを生成することを特徴とする請求項２４に記載の装置。
【請求項２８】
前記ストレージは、前記ストロングネームに対応するサブディレクトリを含むことを特徴とする請求項２４に記載の装置。
【請求項２９】
前記ストレージはドライバストアであり、さらに、前記ファイルは、ドライバイメージファイルおよびコインストーラの少なくとも１つを含むことを特徴とする請求項２８に記載の装置。
【請求項３０】
前記ストレージはデータベースであり、さらに、前記ファイルは、対応するサービスキーおよびイメージパスを有するサービスネームを含むことを特徴とする請求項２８に記載の装置。
【請求項３１】
ドライバパッケージのストロングネームを生成する手段と、
前記ストロングネームに基づいて、前記ドライバパッケージに関連付けられたファイルを格納する手段と
を備えることを特徴とする装置。
【請求項３２】
前記ドライバパッケージに関連付けられた前記ファイルは、ドライバイメージファイルを含み、
前記装置はさらに、前記ドライバイメージファイルをメモリにロードする手段を含むことを特徴とする請求項３１に記載の装置。
【請求項３３】
前記生成手段は、前記ドライバパッケージに含まれる少なくとも１つのドライバファイルのハッシュを計算することを特徴とする請求項３１に記載の装置。
【請求項３４】
前記生成手段は、前記ドライバパッケージに関連するデジタル署名を前記ストロングネームに組み込むことを特徴とする請求項３１に記載の装置。
【請求項３５】
前記格納手段は、前記ストロングネームに対応するサブディレクトリを有することを特徴とする請求項３１に記載の装置。
【請求項３６】
前記格納手段は、ドライバパッケージ、ドライバイメージファイル、およびコインストーラの少なくとも１つを格納するサブディレクトリを有することを特徴とする請求項３４に記載の装置。
【請求項３７】
前記格納手段は、対応するサービスキーおよびイメージパスを有するサービスネームを格納することを特徴とする請求項３４に記載の装置。
【請求項３８】
前記格納手段は、オペレーティングシステムから特定デバイスのドライバファイルへのポインタを格納することを特徴とする請求項３４に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の共通の名前を有するドライバを同時にインストールおよびロードさせることを対象とする。
【背景技術】
【０００２】
ドライバイメージファイル（あるいは「ドライバ」）は、コンピューティングデバイスのオペレーティングシステムを周辺装置に連係するプログラムルーチンである。ドライバイメージファイルは、対応するプログラムコードによって要求される機能を行うために周辺装置によって利用される機械言語を含んでいる。コンピューティングデバイスと連携して使用することのできる周辺装置の場合、ドライバイメージファイルを含む、関連付けられたドライバファイルを含んだドライバパッケージがコンピューティングデバイスのハードドライブにインストールされ、インストール後、周辺装置は意図される機能を行うことができる。
【０００３】
コンピューティングデバイスのハードドライブにインストールされるドライバパッケージの数は、コンピューティングデバイスのオペレーティングシステムにサポートされる周辺装置の数に伴って増す。詳細には、コンピューティングデバイスとの関連で使用される周辺装置のほぼ大半では、常に継続的にドライバパッケージがコンピューティングデバイスのハードドライブにインストールされて、既存のドライバパッケージまたは既存のドライバパッケージに関連付けられたドライバファイルに取って代わるか、それらを更新する。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
不都合な点として、周辺装置とそれに対応するドライバパッケージのベンダは、しばしば、前述のドライバパッケージに関連付けられたドライバファイルの新バージョンおよび更新されたバージョンに同じ名前を使用する。通常、新しいドライバパッケージまたは更新されたドライバパッケージ、あるいはそれに関連付けられたドライバファイルがコンピューティングデバイスのハードドライブにインストールされる際には、共通の名前を持つドライバファイルが同じ周辺装置に関連するかどうかに関係なく、共通の名前を持つ関連付けられたドライバファイルを有する以前にインストールされたドライバパッケージの上に書き込まれる。したがって、ドライバファイル名を繰返し使用すると、当業者が称するところの「ドライバ衝突」を招く。ドライバファイル衝突が生じると、特定のドライバファイルを使用する周辺装置は、意図されるドライバファイルと同じ名前を持つ別のドライバファイルを実際に呼び出すか、あるいは、周辺装置は、後からインストールされた同じ名前を持つドライバファイルによって上書きされてしまったために単にもはや存在しないドライバファイルを呼び出す可能性がある。
【０００５】
ワシントン州レドモンドのマイクロソフトコーポレーションの研究者は、Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムの現在のバージョンでは１５７，０００個を超えるドライバファイルがサポートされているが、そのドライバファイルのうち一意の名前を持つものはおよそ２６，０００個に過ぎないことを明らかにした。すなわち、同オペレーティングシステムでサポートされている１３１，０００に近いドライバファイルは名前が重複している。さらに、この調査では、周辺装置のベンダから提出される、一意の名前を持つドライバファイルの数は、一日に少なくとも１２個ずつ増えているが、同オペレーティングシステムでサポートされる新しいドライバファイルの総数は、一日に１５０個を超える割合で増えていることが判明した。換言すると、繰り返し使用される名前を持つドライバファイルが、一日におよそ１３８個追加される。したがって、ドライバ衝突の率も増大する。
【０００６】
以下のシナリオで、冗長な名前を持つドライバファイルがオペレーティングシステムにロードされた結果生じる問題の典型例を説明する。この例では、コンピュータにプリンタをプラグで接続し、プリンタに対応するドライバパッケージをインストールするユーザを考える。ドライバパッケージは、そのドライバパッケージに含まれているファイルを示す情報ファイル「ＩＮＦ」を含む。通例、ＩＮＦファイルは、少なくとも、ユーザのコンピュータのハードドライブにインストールされるドライバイメージファイル（例えば「ｆｏｏ．ｓｙｓ」）の存在を示す。この例ではさらに、ユーザがその後コピー機をコンピュータにつなぎ、同じく「ｆｏｏ．ｓｙｓ」という名前のドライバイメージファイルを有する対応するドライバパッケージをインストールするものと考える。現在実施される解決法では、一番最近接続されたコピー機に対応するドライバイメージファイルｆｏｏ．ｓｙｓは、プリンタに対応する、より古いドライバイメージファイルｆｏｏ．ｓｙｓに上書きしてインストールされる。その結果、プリンタを使用しようとすると、対応するアプリケーションプログラムが使用するために、コピー機に対応するｆｏｏ．ｓｙｓをコンピュータのメモリにロードする試みがなされた時に、ドライバ衝突が発生する。そのため、ユーザのコンピュータでプリンタを操作することができない。
【０００７】
別の例示的なシナリオは、自社の周辺装置の異なるバージョンを、異なるバージョンのドライバイメージファイルで駆動させるようとするベンダに関する。しかし、ベンダが、前のバージョンのドライバイメージファイルを更新またはアップグレードする際に、ドライバイメージファイルのうち少なくとも１つのファイルの名前を変更しないと、コンピューティングデバイスのハードドライブにある古いバージョンのドライバイメージファイルが、更新されたドライバイメージファイルによって上書きされてしまう。その結果、新しいバージョンのドライバイメージファイルが、同じ名前を有する以前のバージョンのドライバイメージファイルに上書きされると、以前のバージョンのドライバファイルを必要とする周辺装置は、意図するドライバイメージファイルをメモリにロードすることができず、したがって、その周辺装置は、コンピューティングデバイス上で動作することができない。すなわち、以前のバージョンのドライバイメージファイルと同じ名前を有する新しいまたは更新されたドライバイメージファイルが、以前のバージョンのドライバイメージファイルに代わって、コンピューティングデバイスのハードドライブにインストールされてしまっている。
【課題を解決するための手段】
【０００８】
ドライバの共存した（ｓｉｄｅ−ｂｙ−ｓｉｄｅ）インストールおよびロードを本明細書で説明する。
【０００９】
コンピュータとの関連で使用することが可能な周辺装置を支援するために、ドライバパッケージが、コンピューティングデバイスのハードドライブにインストールされる。そのようなドライバパッケージに対しストロングネームを生成することができる。そして、ドライバパッケージとそれに関連するドライバファイルが他のドライバパッケージおよびそれに関連するドライバファイルと同じ名前を共有するかどうかに関係なく、ドライバパッケージとそれに関連するドライバファイルに共通ストレージの一意のサブディレクトリ位置を割り当てる基盤として、ストロングネームを使用することができる。
【００１０】
以下の詳細な説明では、当業者には以下のこの詳細な説明から各種の変更と修正が明らかになるであろうから、単なる例示として実施形態を説明する。図面では、参照符号の一番左の数字が、その参照符号が一番初めに現れる図を特定する。異なる図面で同じ参照符号が使用される場合は、同様または同一の項目を意味する。
【発明を実施するための最良の形態】
【００１１】
以下の説明は、関連付けられたドライバファイルを含むドライバパッケージをインストールおよびロードする技術を対象とする。少なくともドライバイメージファイルを含むドライバファイルは、対応するコンピューティングデバイスと有線または無線方式で協働することができる周辺装置をサポートするために、ドライバパッケージの一部としてコンピューティングデバイスのハードドライブにインストールされる。しかし、新しいバージョンおよび更新されたバージョンのドライバファイルは、しばしば、以前にインストールされたドライバファイルと同じ名前を持つので、各種の周辺装置を操作する際に頻繁にドライバ衝突が発生する。
【００１２】
ここで説明する実施形態は、共通の名前を持つドライバパッケージとそれに関連付けられたドライバファイルを共存させてインストールおよびロードすることを可能にする。すなわち、これらの実施形態は、共通の名前を持つ複数のドライバパッケージおよび／または関連付けられたドライバファイルを、処理上の衝突を招くことなく、同じハードドライブにインストールし、メモリにロードできるようにする。より詳細には、インストールすることは、個々のドライバパッケージとそれに関連付けられたドライバファイルを、共通ストレージの一意に割り当てられたサブディレクトリに格納することを含む。このサブディレクトリは、共通の名前を持つ他のドライバパッケージとそれに関連付けられたドライバファイルをインストールする他のサブディレクトリと、隣り合ってはいなくとも、近接している。各サブディレクトリは、個々のドライバパッケージのストロングネームに従って割り当てられる。ストロングネームは、ドライバパッケージの一意の識別（ｉｄｅｎｔｉｔｙ）であり、ストロングネームを使用して、どのコンピューティングデバイス上のドライバパッケージでも識別することができる。
【００１３】
図１に、共存インストーラ１１５を使用してドライバパッケージ１１０をインストールするコンピューティングデバイス１０５の一例を示す。ドライバファイルを含むドライバパッケージ１１０は、コンピューティングデバイス１０５のハードドライブにインストールされて、有線または無線方式でコンピューティングデバイス１０５と協働することができる周辺装置をサポートする。コンピューティングデバイス１０５と協働することが可能な周辺装置の例の、網羅的とは程遠いリストとして、コピー機１２０、プリンタ１２５、ゲームコンソール１３０、携帯情報端末（ＰＤＡ）１３５、無線電話機１４０、およびビデオカメラ１４５が挙げられる。図示しない他の周辺装置は、視聴覚データの入出力、データファイルの転送などに関連するかもしれない。そのような周辺装置は、コンピューティングデバイス１０５にインストールされ、または接続され、またはプラグで接続されると、あるいは、無線でコンピューティングデバイス１０５と通信するときコンピューティングデバイス１０５と協働することができる。
【００１４】
さらに、コンピューティングデバイス１０５は、デスクトップパーソナルコンピュータ（ＰＣ）、ワークステーション、メインフレームコンピュータ、インターネット機器、ゲームコンソールを含む各種従来のコンピューティングデバイスのいずれでよい。さらに、コンピューティングデバイス１０５は、これらに限定しないが、有線リンクおよび／または無線リンクでネットワークと通信することが可能な、ＰＤＡ、ラップトップコンピュータ、携帯電話１２０などを含む、ネットワークに関連するデバイスであってよい。クライアントデバイスまたはサーバデバイスの例示的実施形態は、下記で図６を参照してさらに詳しく説明する。
【００１５】
ドライバパッケージ１１０は、共存インストーラ１１５によりコンピューティングデバイス１０５のハードドライブにインストールすることができる。関連付けられたドライバファイルを含むドライバパッケージ１１０は、これらに限定しないがＣＤ−ＲＯＭ、フラッシュメモリ、フロッピー（登録商標）ディスクを含む、コンピュータによるアクセスが可能な媒体を介して、コンピューティングデバイス１０５の共存インストーラ１１５によって受け取られることができる。あるいは、ドライバパッケージ１１０と、関連付けられたファイルは、ウェブサイトあるいは中央のサーバデバイスから、オペレーティングシステムのアップデートあるいは他の種類のデータ転送の一部として、ネットワークを通じて、コンピューティングデバイス１０５の共存インストーラ１１５により受け取られることもできる。
【００１６】
図２に、ドライバパッケージ１１０の一例を示す。ただし、本明細書で説明する例に従い共存してインストールされるドライバパッケージまたはそれに関連付けられたドライバファイルは、図２の描写に限定されない。
【００１７】
周辺装置のベンダは、通常、コンピューティングデバイス１０５上の周辺装置の機能をサポートするために、ドライバパッケージ１１０とそれに関連付けられたドライバファイルを提供する。ドライバパッケージ１１０に関連付けることが可能なドライバファイルの例には、デバイスセットアップ情報ファイル（すなわちＩＮＦ）２１０、少なくとも１つのドライバイメージファイル（すなわち「．ｓｙｓ」）２１５、ドライバカタログファイル２２０、１つまたは複数のコインストーラ（ｃｏ−ｉｎｓｔａｌｌｅｒ）ファイル２２５、および、カスタムデバイスローディングアプリケーション、デバイスアイコン、ドライバライブラリファイルなどを含む他のファイル２３０、が挙げられる。
【００１８】
デバイスセットアップ情報（ＩＮＦ）ファイル２１０は、オペレーティングシステムが周辺装置に対するサポートをロードするために、セットアップコンポーネントによって利用される情報を含んでいる。
【００１９】
ドライバイメージファイル２１５は、ドライバのイメージファイルを含む。ドライバイメージファイルの拡張子の非限定的な例は、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムで使用される「．ｓｙｓ」である。ドライバイメージファイルは、オペレーティングシステムと、コンピューティングデバイス１０５と連携して使用される周辺装置との間のインタフェースを提供することから、しばしば「ドライバ」と総称される。
【００２０】
ドライバカタログファイル２２０は、周辺装置および／またはドライバパッケージのベンダに対応するデジタル署名を含む。ドライバカタログファイル２２０は、デジタル署名に組み込まれるか、またはデジタル署名に付加された、ベンダに対応する公開鍵または公開鍵トークンも含むことができる。
【００２１】
コインストーラ２２５は、コンピューティングデバイス１０５にインストールまたは接続される周辺装置のインストールと管理を助けるオプションのドライバファイルである。
【００２２】
図３に、ドライバファイルを共存させてインストールする例示的な処理の流れを実施する実施形態の機能コンポーネントを示す。
【００２３】
図３の例によると、周辺装置が有線または無線方式でコンピューティングデバイス１０５に関連付けられる前または後に、インストーラ１１５が、コンピューティングデバイス１０５上にドライバパッケージ１１０を受け取る。上述したように、ドライバパッケージ１１０は、例えばＣＤ−ＲＯＭ、フラッシュメモリ、フロッピー（登録商標）ディスクなどコンピュータによりアクセスできる媒体から、またはネットワークを通じてオンラインで受け取られることができる。
【００２４】
インストーラ１１５は、ドライバパッケージ１１０を受け取り、ドライバパッケージ１１０の「ストロングネーム」３０５を生成する、コンピューティングデバイス１０５に関連付けられたモジュールまたはコンポーネントである。ストロングネーム３０５は、少なくともコンピューティングデバイス１０５上のドライバパッケージ１１０の一意の識別である。さらに、ストロングネーム３０５を利用して、ドライバパッケージ１１０と、ドライバパッケージ１１０に関連付けられたドライバファイル２１０、２１５、２２０、２２５、および２３０のいずれかを一意に識別することができる。
【００２５】
インストーラ１１５は、ドライバパッケージ１１０に含まれるデータ、ドライバパッケージ１１０に関連するデータ、または付加されたデータの関数としてストロングネーム３０５を生成する。より詳細には、ストロングネーム３０５は、ドライバパッケージ１１０に関連付けられたドライバファイル２１０、２１５、２２０、２２５、および２３０に含まれるデータの任意の組み合わせのハッシュとして、そのようなデータの任意の連結として、またはハッシュと連結の可変の組み合わせとして生成することができる。一例として、ストロングネーム３０５は、ドライバカタログファイル２２０のＳＨＡ１ハッシュ（２０バイト）と、デバイスセットアップ情報ファイル（ＩＮＦ）２１０の少なくとも一部分と、デバイスセットアップ情報ファイル２１０のバージョン、日付け、アーキテクチャ、および言語の少なくとも１つとを使用して生成することができる。あるいは、ストロングネーム３０５は、例えばＩＮＦファイルの一部としてドライバパッケージ１１０に含めることができる。そのような情報は、ドライバファイルのバージョンまたは製造者名を含むことができる。したがって、ストロングネーム３０５の「生成」は、単に、ドライバパッケージ中の該当するファイルからストロングネームを抽出する機能である。
【００２６】
ストロングネーム３０５を生成することの望ましい効果は、ドライバパッケージ１１０とそれに関連付けられたドライバファイルを、後に行われる識別とサポートの目的で、ベンダに再度結びつけることである。したがって、ストロングネーム３０５はさらに、ベンダ名、ベンダの公開鍵または公開鍵トークン、ドライバパッケージのバージョン、およびドライバパッケージ１１０に関連付けられた他のドライバファイルの任意の組み合わせのハッシュおよび／または連結を含めることができる。このようなデータは、単なる例として提供しており、進化するドライバパッケージの性質を考えると、特に制限することを意図するものではない。
【００２７】
図３の例で、インストーラ１１５は、ストロングネーム３０５を利用して、ドライバファイル３１０に、ドライバストア３１５における一意の記憶場所を割り当てることができる。一意の記憶場所は、ドライバパッケージ１１０全体、またはドライバパッケージ１１０に関連付けられたドライバファイルの１つまたは複数に割り当てることができ、これらには、ドライバパッケージ１１０自体、または、デバイスセットアップ情報ファイル２１０、ドライバイメージファイル２１５、ドライバカタログファイル２２０、コインストーラ２２５、あるいは「その他の」ファイル２３０の任意の組み合わせを含めることができる。
【００２８】
ドライバストア３１５は、複数のサブディレクトリを含む、コンピューティングデバイス１０５に関連付けられた記憶コンポーネントまたはモジュールであり、各サブディレクトリは、ストロングネーム３０５が生成される個々のドライバパッケージまたはそれに関連する少なくとも１つのドライバファイルに割り当てられる。ドライバストア３１５の例示的実施形態は、下記で図４を参照してさらに詳しく説明する。
【００２９】
図３の例ではさらに、ドライバパッケージ１１０のドライバファイルの１つから抽出された特定のデータをストロングネーム３０５に基づいて格納することを検討する。特に、この例では、ドライバパッケージ１１０のドライバセットアップ情報（ＩＮＦ）ファイル２１０から抽出され、サービスネームデータベース３２５中に一意の記憶場所が割り当てられたサービスネーム３２０を示す。サービスネームとそれに関連付けられたパラメータは、周辺装置が、その周辺装置をサポートするドライバファイルへのイメージパスを確立するために、オペレーティングシステムによって利用される。サービスネームデータベース３２５の例示的実施形態は、下記で図５を参照してさらに詳しく説明する。
【００３０】
図４にドライバストア３１５の一例を示す。ドライバストア３１５は、コンピューティングデバイス１０５に関連付けられた記憶モジュールまたはコンポーネントである。ドライバストア３１５は、複数のサブディレクトリを含み、各サブディレクトリは、個々のドライバパッケージまたは少なくとも１つの関連付けられたドライバファイルのストロングネーム３０５に与えられる。したがって、各サブディレクトリは、ストロングネーム３０５に基づいて、ドライバパッケージ１１０またはそれに関連付けられたドライバファイルをインストールする。
【００３１】
ドライバストア３１５は、ドライバイメージファイルを含む、共通の名前を持つドライバパッケージまたは関連付けられたドライバファイルを共存させてインストールすることにより、システムが、ドライバイメージの衝突の発生を減らすことを可能にする。ベンダは、複数バージョンのドライバファイル、特にドライバイメージファイルに繰返し同じ名前を用いる。あるいは、異なるベンダが、異なる周辺装置に関連するドライバファイル（例えばドライバイメージファイル）に、しばしば共通の名前を使用する。そのため、ストロングネーム３０５などの一意の識別に基づいてドライバパッケージとそれに関連付けられたドライバファイルを格納する実施形態は、共通の名前を持つドライバファイルをドライバストア３１５に共存させてインストールできるようにする。
【００３２】
図４の例では、図３のドライバストア３１５にインストールされたドライバファイル３１０が、異なるドライバパッケージに対応するドライバイメージファイルであると仮定する。より詳細には、図４では、それぞれ異なるｆｏｏ．ｓｙｓという名前の３つのドライバイメージファイルが、ドライバストア３１５のサブディレクトリ４０５、４１０、４１５に共存してインストールされる。ｆｏｏ．ｓｙｓという名前の個々のドライバイメージファイルは、個々のドライバイメージファイルが得られた個々のドライバパッケージに対し生成されたストロングネーム「ｓｔｒｏｎｇｎａｍｅ．１」、「ｓｔｒｏｎｇｎａｍｅ．２」、および「ｓｔｒｏｎｇｎａｍｅ．３」に従って、サブディレクトリ４０５、４１０、および４１５にインストールされる。図４の例の結果、異なるドライバパッケージにあった共通の名前を持つドライバファイルを、コンピューティングデバイス１０５に共存させてインストールすることができる。さらに、コンピューティングデバイス１０５のハードドライブのドライバストア３１５にインストールされる順序に関係なく、ｆｏｏ．ｓｙｓという名前のドライバイメージファイルはいずれも、別のドライバイメージファイルを上書きしない。
【００３３】
図５に、ドライバファイルのロードを支援するために提供されるサービスネームデータベース３２５の一例を示す。詳細には、オペレーティングシステムが、周辺装置のドライバイメージファイルをドライバストア３１５からコンピューティングデバイス１０５のメモリにロードする際に、ドライバの衝突が回避される。詳細には、オペレーティングシステムは、サブディレクトリ４０５、４１０、４１５のどれが、コンピューティングデバイス１０５のオペレーティングシステムを周辺装置に連係する適切なドライバイメージファイルをインストールしているかを判定する。
【００３４】
図５で、サービスネームデータベース３２５は、コンピューティングデバイス１０５に関連付けられた記憶モジュールまたはコンポーネントである。サービスネームデータベース３２５は、ドライバパッケージとそれに関連付けられたドライバファイルのストロングネームに与えられた複数のサブディレクトリを識別する。したがって、サービスネームデータベース３２５の各サブディレクトリは、サービスキー、イメージパス、または、ドライバストア３１５にインストールされたドライバパッケージ１１０またはそれに関連付けられたドライバファイルに対応する他の情報などの、ドライバに関連するパラメータを格納する。サービスネームデータベースは、所与の周辺装置のための特定のドライバをオペレーティングシステムに指示するモジュールの一例に過ぎない。
【００３５】
サービスネームデータベース３２５は、図４のドライバイメージファイルに対応するサービスキー、イメージパス、およびサービスに関連する他の情報を含む。サブディレクトリモジュール５０５、５１０、および５１５はそれぞれ、図４のストロングネーム「ＳｔｒｏｎｇＮａｍｅ．１」、「ＳｔｒｏｎｇＮａｍｅ．２」、および「ＳｔｒｏｎｇＮａｍｅ．３」を有するドライバイメージファイルに対応するサービスキー、イメージパス、およびその他の情報を格納する。
【００３６】
例えば、図５で、サービスキー「ＳｅｒｖｉｃｅＮａｍｅ．ＳｔｒｏｎｇＮａｍｅ．ｌ」５０５は、ストロングネーム「ＳｔｒｏｎｇＮａｍｅ．１」を与えられたドライバパッケージから抽出されたサービスネームを含む。イメージパス「％ＤｒｉｖｅｒＳｔｏｒｅ％＼ＳｔｒｏｎｇＮａｍｅ．１＼Ｆｏｏ．Ｓｙｓ」５１０は、ドライバストア３１５のサブディレクトリ％ＤｒｉｖｅｒＳｔｏｒｅ％＼ＳｔｒｏｎｇＮａｍｅ．１  ４０５（図４参照）にインストールされたドライバイメージファイルｆｏｏ．ｓｙｓを周辺装置のプログラムコードに指示する。パラメータ「その他の情報」には、有線または無線方式でコンピューティングデバイス１０５と現在または今後協働する周辺装置をサポートするために利用できる、サービスネームに関連する任意の他のデータが含まれる。したがって、オペレーティングシステムは、サービスネームデータベース３２５にアクセスし、適切なサービスネームパラメータにより、ドライバストア３１５にインストールされた正しいドライバイメージファイルに誘導されて、周辺装置のためのプログラムコードをオペレーティングシステムに連係することができる。したがって、オペレーティングシステムは、ｆｏｏ．ｓｙｓという名前の正しいドライバイメージファイルを、コンピューティングデバイス１０５のメモリにロードして周辺装置を操作することができる。
【００３７】
例示的実施形態によれば、ドライバパッケージとそれに関連付けられたドライバファイルは、共存させてインストールされる。ただし、別のドライバファイルが同じ名前を共有している場合は、関連付けられたドライバファイル（例えばドライバイメージファイル）のすべてが、各自のドライバストアの場所からコンピューティングデバイスのメモリにロードされるわけではない。ＩＮＦファイルの代替実施形態は、ドライバパッケージに関連付けられたドライバファイルをドライバストア３１５からロードできることをオペレーティングシステムに知らせるフラグを含むことができる。後者に対応するコードの一例は、以下のように提供される。
#if_SETUPAPI_VER>= 0x0600
//
//(AddService) サービスを共存してインストールする
//
#define SPSVCINST_SIDE_BY_SIDE  (0x00000800)
#endif//_SETUPAPI_VER>= 0x0600
非限定的な例として提供されるフラグ「SPSVCINST_SIDE_BY_SIDE」は、ドライバストア３１５にインストールされたドライバパッケージのドライバイメージファイルをドライバストア３１５からコンピューティングデバイス１０５のメモリにロードして周辺装置を操作してよいことを確定する。
【００３８】
図６に、上記のようにドライバファイルを共存させてロードする技術を実施するために使用することができる一般的なコンピュータ環境６００を示す。コンピュータ環境６００は、コンピューティング環境の一例に過ぎず、このコンピュータおよびネットワークアーキテクチャの使用または機能の範囲について限定を示唆することを意図するものではない。また、コンピュータ環境６００は、例示的コンピュータ環境６００に図示する構成要素のいずれか１つまたは組み合わせに関連する依存性または必要性を有するものとも解釈すべきでない。
【００３９】
コンピュータ環境６００は、コンピュータ６０２の形態の汎用コンピューティングデバイスを含み、コンピュータ６０２は、コンピューティングデバイス１０５を含むことができる。コンピュータ６０２の構成要素には、これらに限定しないが、１つまたは複数のプロセッサあるいは処理装置６０４、システムメモリ６０６、およびプロセッサ６０４を含む各種のシステム構成要素をシステムメモリ６０６につなぐシステムバス６０８が含まれる。
【００４０】
システムバス６０８は、各種のバスアーキテクチャのいずれかを使用したメモリバスまたはメモリコントローラ、ペリフェラルバス、アクセラレーテッドグラフィックポート、およびプロセッサバスまたはローカルバスを含む数種のバス構造の１つまたは複数を表す。例として、そのようなアーキテクチャとしては、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、メザニンバスとも称されるＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔｓ）バス、ＰＣＩ  Ｅｘｐｒｅｓｓバス、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）バス、あるいは、ＩＥＥＥ１３９４バスすなわちＦｉｒｅＷｉｒｅバスが挙げられる。
【００４１】
コンピュータ６０２は、各種のコンピュータ読み取り可能な媒体を含むことができる。そのような媒体は、コンピュータ６０２によるアクセスが可能な任意の利用可能媒体でよく、揮発性および不揮発性、取り外し可能および固定の媒体を含む。
【００４２】
システムメモリ６０６は、ランダムアクセスメモリ（ＲＡＭ）６１０などの揮発性メモリ、および／または読み出し専用メモリ（ＲＯＭ）６１２またはフラッシュＲＡＭなどの不揮発性メモリの形態のコンピュータ読み取り可能な媒体を含む。起動時などにコンピュータ６０２内の要素間の情報転送を助ける基本ルーチンを含んだ基本入出力システム（ＢＩＯＳ）６１４は、ＲＯＭ６１２またはフラッシュＲＡＭに記憶される。ＲＡＭ６１０は通常、処理装置６０４から即座にアクセス可能な、かつ／または処理装置６０４によって現在操作されているデータおよび／またはプログラムモジュールを含んでいる。
【００４３】
コンピュータ６０２は、この他の取り外し可能／固定、揮発性／不揮発性のコンピュータ記憶媒体も含むことができる。例として、図６には、固定、不揮発性の磁気媒体（図示せず）の読み書きを行うハードディスクドライブ６１６、取り外し可能、不揮発性の磁気ディスク６２０（「フロッピー（登録商標）ディスク」など）の読み書きを行う磁気ディスクドライブ６１８、および、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光学媒体などの取り外し可能、不揮発性の光ディスク６２４の読み書きを行う光ディスクドライブ６２２を示す。ハードディスクドライブ６１６、磁気ディスクドライブ６１８、および光ディスクドライブ６２２はそれぞれ、１つまたは複数のデータ媒体インタフェース６２５によりシステムバス６０８に接続される。あるいは、ハードディスクドライブ６１６、磁気ディスクドライブ６１８、および光ディスクドライブ６２２は、１つまたは複数のインタフェース（図示せず）でシステムバス６０８に接続してもよい。
【００４４】
これらのディスクドライブとそれに関連付けられたコンピュータ読み取り可能な媒体は、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、および他のデータの不揮発性の記憶をコンピュータ６０２に提供する。この例ではハードディスク６１６、取り外し可能磁気ディスク６２０、および取り外し可能光ディスク６２４を例に挙げるが、磁気カセット、または他の磁気記憶装置、フラッシュメモリカード、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、または他の光学ストレージ、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、ＥＥＰＲＯＭ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）など、コンピュータからアクセス可能なデータを記憶することができる他の種類のコンピュータ読み取り可能な媒体も、この例示的コンピューティングシステムおよび環境を実施するために利用することができることは理解されよう。
【００４５】
ハードディスク６１６、磁気ディスク６２０、光ディスク６２４、ＲＯＭ６１２、および／またはＲＡＭ６１０には任意数のプログラムモジュールを記憶することができ、これには、例として、オペレーティングシステム６２６、１つまたは複数のアプリケーションプログラム６２８、他のプログラムモジュール６３０、およびプログラムデータ６３２が含まれる。そのようなオペレーティングシステム６２６、１つまたは複数のアプリケーションプログラム６２８、他のプログラムモジュール６３０、およびプログラムデータ６３２（またはそれらの何らかの組み合わせ）はそれぞれ、分散ファイルシステムをサポートする常駐（ｒｅｓｉｄｅｎｔ）コンポーネントのすべてまたは一部を実装することができる。
【００４６】
ユーザは、キーボード６３４およびポインティングデバイス６３６（例えば「マウス」）などの入力装置を介してコンピュータ６０２にコマンドと情報を入力することができる。他の入力装置６３８（具体的には図示せず）としては、マイクロフォン、ジョイスティック、ゲームパッド、衛星受信アンテナ、シリアルポート、スキャナなどが可能である。これらおよび他の入力装置は、システムバス６０８につながれた入出力インタフェース６４０を介して処理装置６０４に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）などの他のインタフェースおよびバス構造で接続してもよい。
【００４７】
モニタ６４２および他の種類の表示装置も、ビデオアダプタ６４４などのインタフェースを介してシステムバス６０８に接続することができる。モニタ６４２以外に、他の出力周辺装置には、Ｉ／Ｏインタフェース６４０を介してコンピュータ６０２に接続することができる、スピーカ（図示せず）やプリンタ６４６などのコンポーネントを含めることができる。
【００４８】
コンピュータ６０２は、リモートコンピューティングデバイス６４８などの１つまたは複数のリモートコンピュータとの論理接続を使用するネットワーク環境で動作することができる。例として、リモートコンピューティングデバイス６４８は、ＰＣ、携帯型コンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピアデバイス、または他の一般的なネットワークノードとすることができる。リモートコンピューティングデバイス６４８は、図では、コンピュータ６０２との関連で説明した要素および機能の多くまたはすべてを含むことができる携帯型コンピュータとして示している。あるいは、コンピュータ６０２は、非ネットワーク環境で動作することもできる。
【００４９】
コンピュータ６０２とリモートコンピュータ６４８間の論理接続は、図では、ローカルエリアネットワーク（ＬＡＮ）６５０および一般的なワイドエリアネットワーク（ＷＡＮ）６５２として示す。このようなネットワーキング環境は、オフィス、企業内のコンピュータネットワーク、イントラネット、およびインターネットに一般的に見られる。
【００５０】
ＬＡＮネットワーキング環境で実施される場合、コンピュータ６０２は、ネットワークインタフェースあるいはアダプタ６５４を介してローカルネットワーク６５０に接続される。ＷＡＮネットワーキング環境で実施される場合、コンピュータ６０２は通常、ワイドネットワーク６５２を通じて通信を確立するためのモデム６５６または他の手段を含む。モデム６５６は、コンピュータ６０２の内部にあっても外部にあってもよく、Ｉ／Ｏインタフェース６４０または他の適切な機構を介してシステムバス６０８に接続することができる。図のネットワーク接続は例であり、コンピュータ６０２と６４８の間に少なくとも１つの通信リンクを確立する他の手段を用いることができることは理解されるべきである。
【００５１】
コンピューティング環境６００で説明するようなネットワーク環境では、コンピュータ６０２に関連して図示したプログラムモジュール、またはその一部は、遠隔のメモリ記憶装置に記憶することができる。例として、リモートアプリケーションプログラム６５８がリモートコンピュータ６４８のメモリ装置に存在する。説明のために、アプリケーションまたはプログラム、およびオペレーティングシステムなどの他の実行可能プログラムコンポーネントは、ここでは別個のブロックとして図示するが、そのようなプログラムおよびコンポーネントは、様々なときに、コンピューティングデバイス６０２の様々な記憶コンポーネントに存在し、コンピュータの少なくとも１つのデータプロセッサによって実行されることが理解されよう。
【００５２】
ここでは、１つまたは複数のコンピュータまたは他のデバイスによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的なコンテキストで、各種のモジュールおよび技術を説明することができる。一般に、プログラムモジュールには、特定のタスクを実行するか、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。通常、プログラムモジュールの機能は、各種実施形態で必要に応じて組み合わせても、分散してもよい。
【００５３】
こうしたモジュールおよび技術の実装は、何らかの形態のコンピュータ読み取り可能な媒体に記憶するか、そうした媒体を通じて伝送することができる。コンピュータ読み取り可能な媒体は、コンピュータからのアクセスが可能な任意の利用可能媒体とすることができる。限定ではなく例として、コンピュータ読み取り可能な媒体は、「コンピュータ記憶媒体」と「通信媒体」を含むことができる。
【００５４】
「コンピュータ記憶媒体」には、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための方法または技術として実施された揮発性および不揮発性、取り外し可能および固定の媒体が含まれる。コンピュータ記憶媒体には、これらに限定しないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、または他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気記憶装置、または所望の情報を記憶するために使用することができ、コンピュータによるアクセスが可能な他の媒体が含まれる。
【００５５】
「通信媒体」は通常、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、あるいは他のデータを、搬送波や他のトランスポート機構などの変調されたデータ信号中に具現化する。通信媒体は、情報伝達媒体も含む。用語「変調されたデータ信号」とは、信号中に情報を符号化するような方式でその特徴の１つまたは複数を設定または変更させた信号を意味する。単なる非限定的な例として、通信媒体には、有線ネットワークや直接配線接続などの有線媒体と、音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体が含まれる。上記の媒体の組み合わせもコンピュータ読み取り可能な媒体の範囲に含まれる。
【００５６】
本発明の例示的な実施形態と応用例を例示し、説明したが、本発明は、上記の通りの構成およびリソースに限定されないことを理解されたい。特許権が請求される本発明の範囲から逸脱せずに、当業者には自明の各種の修正、変更、および変形を、本明細書に開示される本発明の方法およびシステムの構成、動作、および細部に行うことができる。
【図面の簡単な説明】
【００５７】
【図１】コンピューティングデバイスにプラグ接続または接続することが可能な複数の周辺装置の少なくとも１つをサポートするドライバパッケージをインストールする例示的コンピューティングデバイスの図である。
【図２】例示的実施形態によりインストールすることができる例示的なドライバパッケージの図である。
【図３】共存したドライバのインストールを実施する機能コンポーネントの例を示し、それに関連する、それらのコンポーネントを伴うプロセスフローを説明する図である。
【図４】図３の例に含まれる例示的記憶コンポーネントの図である。
【図５】図３の例の別の例示的記憶コンポーネントの図である。
【図６】ここに記載される技術を実施するために使用することができる一般的なコンピュータネットワーク環境の一例の図である。
【符号の説明】
【００５８】
１１０  ドライバパッケージ
１１５  共存ドライバインストーラ
６０４  処理装置
６０６  システムメモリ
６０８  システムバス
６２５  データ媒体インタフェース
６３４  キーボード
６３６  マウス
６４０  Ｉ／Ｏインタフェース
６４２  モニタ
６４４  ビデオアダプタ
６４６  プリンタ
６４８  リモートコンピューティングデバイス
６５２  インターネット
６５４  ネットワークアダプタ
６５６  モデム
【図１】
2005251204.tif 000003
【図２】
2005251204.tif 000004
【図３】
2005251204.tif 000005
【図４】
2005251204.tif 000006
【図５】
2005251204.tif 000007
【図６】
2005251204.tif 000008
【外国語明細書】
2005251204000001.pdf