(57)【特許請求の範囲】
【請求項１】
通信バスを介して互いに通信する複数の制御実行可能ノードおよび少なくとも１つの装置を備えるシステムにおいて、少なくとも１つの装置の所有権を調停する方法であって、
第１の制御実行可能ノードが、第２の制御実行可能ノードが前記装置の所有権を有するか否かを判定するステップと、
前記第１の制御実行可能ノードが、前記第２の制御実行可能ノードが前記装置の所有権を有すると判定した場合、前記第１の制御実行可能ノードが前記第２の制御実行可能ノードに通知を受けるための登録を行うステップと、
前記第２の制御実行可能ノードが、通知を受けるための登録を行った前記第１の制御実行可能ノードに対し、前記所有権の割り当て優先順位を通知するステップと、
前記第１の制御実行可能ノードが前記第２の制御実行可能ノードに前記所有権を要求するステップと、
前記第１の制御実行可能ノードの前記優先順位が最上位である場合、前記第１の制御実行可能ノードが前記所有権の確立を試みるステップと、
を含むことを特徴とする方法。
【請求項２】
前記通信バスは１３９４準拠シリアル・バスであり、前記第２の制御実行可能ノードが前記装置の所有権を有するか否かを判定するステップは、前記第１の制御実行可能ノードが前記第２の制御実行可能ノードを確認するステップをさらに含むことを特徴とする請求項１記載の方法。
【請求項３】
前記第２の制御実行可能ノードが前記装置の所有権を有するか否かを判定するステップは、前記第２の制御実行可能ノードによる非排他的所有権を判定するステップをさらに含み、前記所有権を要求するステップは、前記第１の制御実行可能ノードが非排他的所有権を要求するステップであることを特徴とする請求項１記載の方法。
【請求項４】
前記第１の制御実行可能ノードが前記所有権の確立を試みるステップの前に、前記第２の制御実行可能ノードが、前記第１の制御実行可能ノードからの排他的所有権の要求の拒否を前記第１の制御実行可能ノードに通知するステップをさらに含み、
前記第１の制御実行可能ノードが前記所有権の確立を試みるステップは実行しないことを特徴とする請求項３記載の方法。
【請求項５】
前記第１の制御実行可能ノードが前記所有権の確立を試みるステップの前に、前記第２の制御実行可能ノードが、前記第１の制御実行可能ノードからの排他的所有権の要求の許諾を前記第１の制御実行可能ノードに通知するステップをさらに含むことを特徴とする請求項３記載の方法。
【請求項６】
前記第２の制御実行可能ノードが、前記第２の制御実行可能ノードの有する前記装置の所有権ステータスの変更を通知するステップをさらに含むことを特徴とする請求項１記載の方法。
【請求項７】
通信バスを介して互いに通信する複数の制御実行可能ノードおよび少なくとも１つの装置を備えるシステムにおいて、少なくとも１つの装置のうちのある装置の使用権を調停する方法であって、
第１の制御実行可能ノードが、第２の制御実行可能ノードが前記装置の所有権を有するか否かを判定するステップと、
前記第１の制御実行可能ノードが、前記第２の制御実行可能ノードが前記装置の所有権を有すると判定した場合、前記第１の制御実行可能ノードが前記第２の制御実行可能ノードに通知を受けるための登録を行うステップと、
前記第２の制御実行可能ノードが、通知を受けるための登録を行った前記第１の制御実行可能ノードに対し、前記所有権の割り当て優先順位を通知するステップと、
前記第１の制御実行可能ノードが、前記第２の制御実行可能ノードによる前記装置の所有権が終了したことを判定するステップと、
前記第２の制御実行可能ノードの前記装置の所有権が終了したことに応答して、第１の制御実行可能ノードが前記装置の所有権の確立を試みるステップと
を含むことを特徴とする方法。
【請求項８】
前記第２の制御実行可能ノードによる前記装置の所有権が終了したことを判定するステップが、
前記第２の制御実行可能ノードがもはや通信バスに結合されていないことを判定するステップをさらに含むことを特徴とする請求項７記載の方法。
【請求項９】
前記第２の制御実行可能ノードによる前記装置の所有権が終了したことを判定するステップが、
前記第２の制御実行可能ノードによる前記装置の所有権が終了したことを示す通知を、前記第１の制御実行可能ノードが前記第２の制御実行可能ノードから受信するステップをさらに含むことを特徴とする請求項８記載の方法。
【請求項１０】
前記第１の制御実行可能ノードによる前記装置の所有権の確立を試みるステップは、前記第１の制御実行可能ノードに割り当てられた前記優先順位が最上位である場合、前記第１の制御実行可能ノードが前記装置の所有権の確立を試みるステップであることを特徴とする請求項８記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、全般的には電子装置間の通信手段としてシリアル・バスを使用することに関し、特に、IEEE1394シリアル・バス規格に従って動作するシリアル・バスなどのシリアル・バスを介した、制御実行可能ノード間の装置の共用および所有権調停に関する。
【０００２】
【従来の技術】
当技術分野では、複数のコンピュータが通信バスを介して様々な装置にアクセスすることのできるコンピュータ・システムを構成することが知られている。たとえば、シリアル・バスを使用し、このシリアル・バスを介してプリンタに結合されたコンピュータ間でプリンタを共用することができる。ある種の装置、たとえば、テレビジョン受像機やラジオ受信機などの、情報を伝送するのみの装置の特性として、様々なコンピュータがこれらの装置を同時に共用することができる。コンピュータ・ハード装置のような他の装置は、共用することができず、任意の所与の瞬間に単一のコンピュータによって所有される（このコンピュータの指示および制御に従う）。上述のシナリオを実施することのできるシリアル・バス技術は、「FIREWIRE」と呼ばれることもある、いわゆるIEEE1394シリアル・バスである。
【０００３】
上述のシナリオは、ユーザ間において装置を共用できるようにすることによって顕著な利益をもたらすが、制御面の重大な問題も引き起こす。特に、任意の所与の瞬間にある装置をどのコンピュータが所有するか、ある装置の所有権ステータスが変更されたことを他のコンピュータにどのように通知すべきか、コンピュータがある装置の所有権の譲渡を要求できるようにするにはどうすべきかなどを決定するスキームを考案しなければならない。簡単に言えば、装置の共用を調停する技法を開発しなければならない。
【０００４】
このような調停を行うための1つの技法として、「The HAVI Specification：Specification of the Home Audio／Video Interoperability（HAVi） Architecture」バージョン1.0ベータ（1998年11月19日）（以下では「HAVI仕様」と呼ぶ）に記載されたいわゆる家庭オーディオ／ビデオ・インターオペラビリティ（HAVI）アーキテクチャがある。HAVI仕様は、家庭のネットワーク（すなわち、家庭または住居内で使用される通信インフラストラクチャ）が分散コンピューティング・プラットフォームとみなされるシステムについて説明したものであり、HAVIアーキテクチャの一次目標は、家庭のネットワークに結合された様々な装置を相互運用できるようにすることである。HAVIシステムは、IEEE1394シリアル・バスを組み込んでおり、このバスに基づいて動作する。このようなシステムの必要な構成要素には、制御される装置をコントローラが組織的に使用できるようにする資源管理、すなわち、装置の所有権の調停がある。HAVIでは、これをサポートするために、制御される装置自体が所有権調停プロセスに参加するように制御される装置自体をHAVIシステムに適合するように修正する必要がある。
【０００５】
HAVI手法は実現可能であるように思われるが、各装置を修正するための制御を行う必要がなく、かつ制御される装置が調停プロセスに参加する必要がない調停技法を開発すると有利である。このような技法は好ましくは、IEEE1394シリアル・バスを使用して実施可能であるべきである。
【０００６】
【発明が解決しようとする課題】
本発明は、装置を共用する、および調停するための方法および装置を提供することを課題とする。
【０００７】
【課題を解決するための手段】
本発明は、複数の制御実行可能ノードに通信バスを介して結合された装置を組織的に共用することのできる技法を提供する。特に、本発明は、1394準拠装置と制御実行可能ノードとを互いに結合する手段として1394準拠シリアル・バスを使用することを目的とする。制御実行可能ノードは、所与の装置の所有者ノードのIDを判定し、所有者ノードに、該装置の所有権ステータスの変更に関する通知を受けるための登録を行うことができる。その後、制御実行可能ノードは、所有者ノードに所有権を要求することができ、この要求は、許諾されることも、もしくは拒否されることもある。または、制御実行可能ノードは、所有者ノードによる所有権が終了したことを検出することができる。このような要求が許諾された場合、またはこのような終了が検出された場合、制御実行可能ノードは、すでに割り当てられている優先順位に従って装置の所有権の確立を試みる。制御実行可能ノード内の装置ドライバとバス・ドライバとの間の通信を可能にし、異なる制御実行可能ノードのバス・ドライバ間の通信を可能にする、このような動作をサポートする好ましいデータ構造が開示されている。さらに、異なる制御実行可能ノード上の装置ドライバ間の透過的な通信を可能にするためにこのデータ構造を使用することができる。このように、本発明は、制御される装置の修正も参加も必要としない装置調停技法を提供する。
【０００８】
本発明に係る媒体においては、（１）第1の制御実行可能ノードの第1のバス・ドライバと第2の制御実行可能ノードの第2のバス・ドライバとの間の通信で使用されるデータ構造が記憶されており、第1の制御実行可能ノード、第2の制御実行可能ノード、および装置が通信バスに結合されているコンピュータ可読媒体であって、該データ構造が、
第1および第2の制御実行可能ノードのうちの一方の通知ステータスを表わす少なくとも1つの通知登録インディケータを含み、
装置の所有権ステータスの変更が、少なくとも1つの通知登録インディケータに基づいて第1および第2の制御実行可能ノードのうちの一方に示されるコンピュータ可読媒体であることを特徴とする。
【０００９】
また、本発明に係る媒体においては、（２）データ構造が、データ構造が問合せデータ構造であるか、または通知データ構造であるかを表わすデータ構造ステータス・インディケータをさらに含む、上記(1)記載のコンピュータ可読媒体であることを特徴とする。
【００１０】
また、本発明に係る媒体においては、（３）データ構造が問合わせデータ構造であるときに少なくとも1つの通知登録インディケータが所望のアクセスおよび所望の通知を表わす、上記(2)記載のコンピュータ可読媒体であることを特徴とする。
【００１１】
また、本発明に係る媒体においては、（４）データ構造が通知データ構造であるときに少なくとも1つの通知登録インディケータが通知登録ステータスおよび割り当てられた優先順位を表わす、上記(2)記載のコンピュータ可読媒体であることを特徴とする。
【００１２】
また、本発明に係る媒体においては、（５）データ構造が、
第1および第2の制御実行可能ノードのうちの一方のIDを含むターゲット・ノードIDフィールドと、
第1および第2の制御実行可能ノードのうちの他方のIDを含むソース・ノードIDフィールドとをさらに含む、上記(1)記載のコンピュータ可読媒体であることを特徴とする。
【００１３】
また、本発明に係る媒体においては、（６）第1の制御実行可能ノードの第1のバス・ドライバと第2の制御実行可能ノードの第2のバス・ドライバとの間の通信で使用されるデータ構造が記憶されており、第1の制御実行可能ノード、第2の制御実行可能ノード、および装置が通信バスに結合されているコンピュータ可読媒体であって、該データ構造が、
第1および第2の制御実行可能ノードのうちの一方の譲渡ステータスを表わす少なくとも1つのアクセス権譲渡インディケータを含み、
装置の所有権が、少なくとも1つのアクセス権譲渡インディケータに基づいて第1および第2の制御実行可能ノードのうちの一方に譲渡されるコンピュータ可読媒体であることを特徴とする。
【００１４】
また、本発明に係る媒体においては、（７）データ構造が、
データ構造が問合せデータ構造であるか、または通知データ構造であるかを表わすデータ構造ステータス・インディケータをさらに含む、上記(6)記載のコンピュータ可読媒体であることを特徴とする。
【００１５】
また、本発明に係る媒体においては、（８）データ構造が問合せデータ構造であるときに少なくとも1つのアクセス権譲渡インディケータが、所望のアクセス、所望の通知、および割り当てられた優先順位を表わす、上記(7)記載のコンピュータ可読媒体であることを特徴とする。
【００１６】
また、本発明に係る媒体においては、（９）データ構造が通知データ構造であるときに少なくとも1つのアクセス権譲渡インディケータが、アクセス権譲渡ステータスを表わす、上記(7)記載のコンピュータ可読媒体であることを特徴とする。
【００１７】
また、本発明に係る媒体においては、（１０）データ構造が、
第1および第2の制御実行可能ノードのうちの一方のIDを含むターゲット・ノードIDフィールドと、
第1および第2の制御実行可能ノードのうちの他方のIDを含むソース・ノードIDフィールドとをさらに含む、上記(6)記載のコンピュータ可読媒体であることを特徴とする。
【００１８】
また、本発明に係る媒体においては、（１１）第1の制御実行可能ノードの第1のバス・ドライバと第2の制御実行可能ノードの第2のバス・ドライバとの間の通信で使用されるデータ構造が記憶されており、第1の制御実行可能ノード、第2の制御実行可能ノード、および装置が通信バスに結合されているコンピュータ可読媒体であって、データ構造が、
装置のアクセス・ステータスを表わす少なくとも1つのアクセス権通知インディケータを含み、
第1および第2の制御実行可能ノードの所有者ノードが、第1および第2の制御実行可能ノードのうちの他方に少なくとも1つのアクセス権譲通知インディケータを与えるコンピュータ可読媒体であることを特徴とする。
【００１９】
また、本発明に係る媒体においては、（１２）データ構造が、
第1および第2の制御実行可能ノードのうちの他方のIDを含むターゲット・ノードIDフィールドと、
所有者ノードのIDを含むソース・ノードIDフィールドとをさらに含む、上記(1)記載のコンピュータ可読媒体であることを特徴とする。
【００２０】
また、本発明に係る媒体においては、（１３）第1の制御実行可能ノードの第1のバス・ドライバと第2の制御実行可能ノードの第2のバス・ドライバとの間の通信で使用されるデータ構造が記憶されており、第1のバス・ドライバが、第1の制御実行可能ノード上に存在する第1の装置ドライバと通信し、第2のバス・ドライバが、第2の制御実行可能ノード上に存在する第2の装置ドライバと通信し、第1の制御実行可能ノード、第2の制御実行可能ノード、および装置が通信バスに結合されているコンピュータ可読媒体であって、該データ構造が、
第1および第2の装置ドライバのうちの対応する装置ドライバに直接供給すべき情報を該データ構造が含むことを、第1および第2のバス・ドライバのうちの一方に知らせる少なくとも1つの直接通信インディケータを含むコンピュータ可読媒体であることを特徴とする。
【００２１】
また、本発明に係る媒体においては、（１４）データ構造が、
第1および第2の制御実行可能ノードのうちの一方のIDを含むターゲット・ノードIDフィールドと、
第1および第2の制御実行可能ノードのうちの他方のIDを含むソース・ノードIDフィールドとをさらに含む、上記(13)記載のコンピュータ可読媒体であることを特徴とする。
【００２２】
また、本発明に係る媒体においては、（１５）装置ドライバからローカル制御実行可能ノード内のバス・ドライバへの通信で使用されるデータ構造が記憶されているコンピュータ可読媒体であって、該データ構造が、
装置とローカル制御実行可能ノードを含む複数の制御実行可能ノードとが通信バスに結合されている、該複数の制御実行可能ノードに関する装置の所有権ステータスを表わす少なくとも1つの所有権インディケータと、
複数の制御実行可能ノードに関する装置のアクセス・ステータスを表わす少なくとも1つのアクセス・インディケータとを含むコンピュータ可読媒体であることを特徴とする。
【００２３】
また、本発明に係る媒体においては、（１６）データ構造が、
データ構造が問合せデータ構造であるか、または通知データ構造であるかを表わすデータ構造ステータス・インディケータをさらに含む、上記(15)記載のコンピュータ可読媒体であることを特徴とする。
【００２４】
また、本発明に係る媒体においては、（１７）少なくとも1つの所有権インディケータが、複数の制御実行可能ノードのうちの、ローカル制御実行可能ノードによる所有権またはリモート制御実行可能ノードによる所有権のいずれかを表わす、上記(15)記載のコンピュータ可読媒体であることを特徴とする。
【００２５】
また、本発明に係る媒体においては、（１８）リモート制御実行可能ノードのIDを含むリモート所有者IDフィールドをさらに含む、上記(17)記載のコンピュータ可読媒体であることを特徴とする。
【００２６】
また、本発明に係る媒体においては、（１９）少なくとも1つのアクセス・インディケータが、複数の制御実行可能ノード間の共用アクセス、または複数の制御実行可能ノードのうちの1つに対する排他的なアクセスを表わす、上記(15)記載のコンピュータ可読媒体であることを特徴とする。
【００２７】
また、本発明に係る媒体においては、（２０）少なくとも1つのアクセス・インディケータが、複数の制御実行可能ノード間の共用読取りアクセス、共用書込みアクセス、またはその両方を表わす、上記(15)記載のコンピュータ可読媒体であることを特徴とする。
【００２８】
また、本発明に係る媒体においては、（２１）ローカル制御実行可能ノードの通知ステータスを表わす少なくとも1つの通知インディケータをさらに含む、上記(15)記載のコンピュータ可読媒体であることを特徴とする。
【００２９】
また、本発明に係る媒体においては、（２２）少なくとも1つの通知インディケータが、通信バス・イベントが起こった際の通知、または装置の所有権ステータスが変更された際の通知を表わす、上記(15)記載のコンピュータ可読媒体であることを特徴とする。
【００３０】
また、本発明に係る方法においては、（２３）通信バスを介して互いに通信する複数の制御実行可能ノードおよび少なくとも1つの装置を備えるシステムにおいて、少なくとも1つの装置のうちのある装置の使用権を調停する方法であって、
複数の制御実行可能ノードの第1の制御実行可能ノードによって、複数の制御実行可能ノードの第2の制御実行可能ノードによる該装置の所有権を判定する段階、および
第1の制御実行可能ノードによる該装置の所有権を要求する第1のメッセージを第1の制御実行可能ノードによって第2の制御実行可能ノードに送信する段階を含む方法であることを特徴とする。
【００３１】
また、本発明に係る方法においては、（２４）通信バスが1394準拠シリアル・バスであり、第2の制御実行可能ノードによる所有権を判定する段階が、第1の制御実行可能ノードによる第2の制御実行可能ノードを確認する（enumerate）段階をさらに含む、上記(23)記載の方法であることを特徴とする。
【００３２】
また、本発明に係る方法においては、（２５）第2の制御実行可能ノードによる所有権を判定する段階が、第2の制御実行可能ノードによる非排他的所有権を判定する段階をさらに含み、第1のメッセージが第1の制御実行可能ノードによる非排他的所有権を要求するメッセージである、上記(23)記載の方法であることを特徴とする。
【００３３】
また、本発明に係る方法においては、（２６）第1の制御実行可能ノードによって、第2の制御実行可能ノードに、装置の所有権ステータスに対する変更の通知を受けるための登録を行う段階をさらに含む、上記(23)記載の方法であることを特徴とする。
【００３４】
また、本発明に係る方法においては、（２７）第1のメッセージが、第1の制御実行可能ノードによる装置の排他的所有権を要求するメッセージである、上記(23)記載の方法であることを特徴とする。
【００３５】
また、本発明に係る方法においては、（２８）第1の制御実行可能ノードによって、第1のメッセージ内の排他的所有権の要求を拒否する第2のメッセージを第2の制御実行可能ノードから受信する段階をさらに含む、上記(27)記載の方法であることを特徴とする。
【００３６】
また、本発明に係る方法においては、（２９）第1の制御実行可能ノードによって、第1のメッセージ内の排他的所有権の要求を許諾する第2のメッセージを第2の制御実行可能ノードから受信する段階をさらに含む、上記(27)記載の方法であることを特徴とする。
【００３７】
また、本発明に係る方法においては、（３０）通信バスを介して互いに通信する複数の制御実行可能ノードおよび少なくとも1つの装置を備えるシステムにおいて、少なくとも1つの装置のうちのある装置の使用権を調停する方法であって、
複数の制御実行可能ノードの第2の制御実行可能ノードによる該装置の所有権が終了したことを、複数の制御実行可能ノードの第1の制御実行可能ノードによって判定する段階、および
第2の制御実行可能ノードによる所有権が終了したことに応答して、第1の制御実行可能ノードによる該装置の所有権を、第1の制御実行可能ノードによって確立する段階を含む方法であることを特徴とする。
【００３８】
また、本発明に係る方法においては、（３１）第2の制御実行可能ノードによる装置の所有権が終了したことを判定する段階が、
第2の制御実行可能ノードがもはや通信バスに結合されていないことを判定する段階をさらに含む、上記(30)記載の方法であることを特徴とする。
【００３９】
また、本発明に係る方法においては、（３２）第2の制御実行可能ノードによる装置の所有権が終了したことを判定する段階が、
第2の制御実行可能ノードによる装置の所有権が終了したことを示す第1のメッセージを第2の制御実行可能ノードから受信する段階をさらに含む、上記(30)記載の方法であることを特徴とする。
【００４０】
また、本発明に係る方法においては、（３３）第1の制御実行可能ノードによる所有権を確立する段階が、
割り当てられた優先順位に従って第1の制御実行可能ノードによる所有権を確立する段階をさらに含む、上記(30)記載の方法であることを特徴とする。
【００４１】
【発明の実施の形態】
本発明は、図1から4を参照してより詳しく説明することができる。図1は、本発明の様々な局面を実施するために使用できる従来型の汎用デジタル・コンピューティング環境の概略ブロック図である。コンピュータ100は、処理ユニット110と、システム・メモリ120と、システム・メモリを含め様々なシステム構成要素を処理ユニット110に結合するシステム・バス130とを含む。システム・バス130は、メモリ・バスまたはメモリ・コントローラと、周辺バスと、様々なバス・アーキテクチャのうちの任意のバス・アーキテクチャを使用するローカル・バスとを含む、数種のバス構造のうちの任意のバス構造でよい。システム・メモリ120は読取り専用メモリ（ROM）140およびランダム・アクセス・メモリ（RAM）150を含む。
【００４２】
立上げ時などにコンピュータ100内の要素間の情報転送を助ける基本ルーチンを含む基本入出力システム（BIOS）160は、ROM140に記憶される。コンピュータ100はまた、ハード・ディスク（図示せず）に対して読み書きを行うハード・ディスク・ドライブ170と、取外し可能な磁気ディスク190に対して読み書きを行う磁気ディスク・ドライブ180と、CD ROMもしくはその他の光学媒体などの取外し可能な光ディスク192に対して読み書きを行う光ディスク・ドライブ191とを含む。ハード・ディスク・ドライブ170、磁気ディスク・ドライブ180、および光ディスク・ドライブ191はそれぞれ、ハード・ディスク・ドライブ・インタフェース192、磁気ディスク・ドライブ・インタフェース193、および光ディスク・ドライブ・インタフェース194によってシステム・バス130に接続されている。ドライブおよびそれに関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、およびコンピュータ100用のその他のデータの非揮発性記憶領域を形成する。当業者には、磁気カセット、フラッシュ・メモリ・カード、デジタル・ビデオ・ディスク、ベルヌーイ(Bernoulli)カートリッジ、ランダム・アクセス・メモリ（RAM）、読取り専用メモリ（ROM）などの、コンピュータによってアクセスできるデータを記憶できる他の種類のコンピュータ可読媒体も例示的な動作環境において使用できることが理解されると思われる。
【００４３】
オペレーティング・システム195、1つまたは複数のアプリケーション・プログラム196、その他のプログラム・モジュール197、およびプログラム・データ198を含め、いくつかのプログラム・モジュールをハード・ディスク、磁気ディスク190、光ディスク192、ROM140、またはRAM150上に記憶させることができる。特に、RAM150は、当技術分野で知られているように様々な装置ドライバ（たとえば、完全なIEEE1394ドライバ・スタックを含む）をオペレーティング・システム195の一部として適時記憶する。さらに、本明細書で開示されるデータ構造はRAM150を用いて記憶され処理される。ただし、本明細書で開示される他の記憶装置を同様に使用することもできる。
【００４４】
ユーザは、キーボード101およびポインティング・デバイス102のような入力装置または選択装置によってコンピュータ100にコマンドおよび情報を入力することができる。ポインティング・デバイス102は、マウス、タッチ・パッド、タッチ・スクリーン、音声制御および作動装置、またはその他の同様な装置を備えることができる。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲーム・パッド、サテライト・ディッシュ、スキャナなどを含めることができる。これらおよびその他の入力装置は、システム・バスに結合されたシリアル・ポート・インタフェース106を通して処理ユニット110に接続されることが多いが、パラレル・ポート、ゲーム・ポート、または汎用シリアル・バス（USB）などの他のインタフェースによって接続させることができる。システム・バス130にはビデオ・アダプタ108のようなインタフェースを介してモニタ107またはその他の種類の表示装置も接続される。パーソナル・コンピュータは通常、モニタだけでなく、スピーカやプリンタなど他の周辺出力装置（図示せず）も含む。
【００４５】
IEEE1394インタフェース140の形の追加のシリアル・ポートを設けることもできる。IEEE1394インタフェース140は、IEEE1394準拠シリアル・バス145をシステム・バス130または同様の通信バスに結合させる。IEEE1394準拠シリアル・バス145は、当技術分野で知られているように、装置150およびその他のコンピュータ151が、高速シリアル・チャネルを使用してコンピュータ100と通信すると共に互いに通信することを可能にする。IEEE1394シリアル・バス規格は、引用によって本明細書にその開示が組み入れられている、国際的に採用されているISO／IEC13213（ANSI／IEEE1212）CSRアーキテクチャ仕様およびIEEE1394−1995シリアル・バス仕様に主として基づく規格である。IEEE1394規格アーキテクチャを有する典型的なシリアル・バスは、各々がシリアル・バスの単一のノードをシリアル・バスの他のノードに接続する、ケーブルのようなポイント・ツー・ポイント・リンクを介して相互接続された複数のノードにより構成されている。ノード自体は、独立にリセットし識別することのできるアドレス可能なエンティティである。各ノードは、コンピュータ・システム内に存在するソフトウェアからアクセスできるいわゆる構成ROM（読取り専用メモリ）または構成メモリおよび標準化された1組の制御レジスタを形成する。所与のノードの構成メモリは、該ノードの機能の記述を部分的に形成する。シリアル・バス上に存在する各ノードごとの構成メモリは他のすべてのノードからアクセスされる。構成プロセス中に、他のノードは各ノードの構成メモリにアクセスし（このプロセスは、「確認（enumerate）」と呼ばれることが多い）、適切なシステム構成を判定する。したがって、所与のノードの構成メモリの1つの機能は、所与のノードの機能に関して他のノードに指示し、それによって、他のノードがどの装置ドライバをロードすべきかを判定できるようにすることである。当技術分野で知られているように、各装置は、他の機能の中でも特に、その装置を構成し、かつその装置がシステム全域で動作できるようにする機能を持つ関連するドライバを有している。ドライバは通常、実行されたときに、対応する装置が動作するよう適切に構成されるように、該装置と通信を行うコンピュータのメモリにロードすることができるソフトウェア命令である。ドライバは、装置を、機能できるように初期設定することができ、装置の、コンピュータ内のより高いプロトコル・レベルとの通信を可能にすることもできる。
【００４６】
コンピュータ100は、リモート・コンピュータ109のような1つまたは複数のリモート・コンピュータとの論理接続を使用してネットワーク化環境で動作することができる。リモート・コンピュータ109は通常、コンピュータ100に関して上述した要素のうちの少なくともいくつかを含む。ただし、図1にはメモリ記憶装置111しか示されていない。図1に示されている論理接続は、ローカル・エリア・ネットワーク（LAN）112およびワイド・エリア・ネットワーク（WAN）113を含む。このようなネットワーク化環境は、事務所、企業全域のコンピュータ・ネットワーク、イントラネット、およびインタネットにおいて一般的に使用されている。
【００４７】
コンピュータ100は、LANネットワーク化環境で使用されるときには、ネットワーク・インタフェースまたはアダプタ114を通してローカル・ネットワーク112に接続される。コンピュータ100およびリモート・コンピュータ109は共に、WANネットワーク化環境で使用されるときには、インタネットのようなワイド・エリア・ネットワーク113を介して通信を確立するモデム115またはその他の手段を含むことができる。モデム115は、内蔵モデムでも、または外付けモデムでもよく、シリアル・ポート・インタフェース106を介してシステム・バス130に接続される。ネットワーク化環境では、コンピュータ100に関して示されたプログラム・モジュールまたはその一部をリモート・メモリ記憶装置に記憶させることができる。
【００４８】
図のネットワーク接続が例示的なものであり、コンピュータ間の通信リンクを確立する他の手段を使用できることが理解されると思われる。TCP／IP、「ETHERNET」、FTP、HTTPなど様々な周知のプロトコルのうちのどれかが存在することが仮定されており、システムは、ユーザがwebベースのサーバからwebページを検索できるようにするためにクライアント・サーバ構成で動作することができる。
【００４９】
後述の本発明の手順は、図1に示されているコンピュータ100の環境内で動作することができる。本発明は一般に、IEEE1394規格に従って動作するコンピュータに適用できるが、本発明はISO／IEC13213（ANSI／IEEE1212）CSRアーキテクチャ仕様に記載された制御およびステータス・レジスタ（CSR）構成ROMアーキテクチャを実現するあらゆるコンピュータ・システムにも適用することができる。より一般的には、本発明は、ピア・ツー・ピア通信を行うあらゆる通信バスに適用することができる。本発明を有効に適用させることのできる、シリアル・バスを介して通信する装置200の例示的なシステムを、図2に示す。
【００５０】
システム200は、シリアル・バスを介して結合されたいくつかのエンティティを備え、該エンティティは第1のコンピュータ201（図1のコンピュータ100など）、プリンタ202、デジタル・カメラ203、スキャナ204、デジタルVCR205、および（やはり図1のコンピュータ100のような）第2のコンピュータ206を含む。図のように、エンティティ201〜206は複数の相互接続部222〜226を介して互いに結合されている。相互接続部222〜226はそれぞれ、好ましくはIEEE1394規格に従って構成され、第1の信号を導く第1の差分信号対、第2の信号を導く第2の差分信号対、および一対の電力線を含む。特定の方法で相互接続された特定のエンティティが図2に示されているが、当業者には、広く様々な電気／電子装置を、同様に広く様々な相互接続部を使用してこのように互いに結合できることが認識されると思われる。全体的に、相互接続部222〜226はシリアル・バスのケーブルを構成し、複数のノード211〜216はシリアル・バスの機能を実現する。コンピュータ・システム200の各エンティティはシリアル・バスのノードに結合されている。一般に、ノードが結合されているエンティティはそのノード用の「ローカル・ホスト」として機能する。たとえば、第1のコンピュータ201は第1のコンピュータ・ノード211用のローカル・ホストであり、プリンタ202はプリンタ・ノード212用のローカル・ホストであり、デジタル・カメラ203はデジタル・カメラ・ノード213用のローカル・ホストであり、スキャナ204はスキャナ・ノード214用のローカル・ホストであり、デジタルVCR205はデジタルVCRノード215用のローカル・ホストであり、第2のコンピュータ206は第2のコンピュータ・ノード216用のローカル・ホストである。あらゆるノードがローカル・ホストを有する必要があるわけではなく、ローカル・ホストに常に電力を供給する必要があるわけではない。
【００５１】
ノード222〜226はそれぞれ、同一の構成を有することができる。ただし、いくつかのノードはその特定の機能のために簡略化することができる。したがって、ノードは特定のローカル・ホストのニーズを満たすように修正することができる。たとえば、各ノードは1つまたは複数のポートを有し、その数は、そのノードのニーズに依存する。図のように、第1のコンピュータ・ノード211は3つのポートを有し、それに対してデジタルVCRノード215は1つのポートしか有さない。
【００５２】
本発明では、2種類のエンティティ、すなわち、制御実行可能ノードおよび装置を通信バスに結合することができる。制御実行可能ノードとは、エンティティおよびそれに対応するノードであり、対応するノードは他のエンティティを所有することができる。これに対して、装置はそのような所有権を得ることができず、装置自体が制御実行可能ノードによって所有される。制御実行可能ノードは、装置の所有権を調停する際に互いに通信するが、装置とは通信しないという点で特に区別される。たとえば、図2に示されている第1および第2のコンピュータ201、206ならびにそれらに対応するノード211、216は通常、制御実行可能ノードを構成し、それに対してプリンタ202、デジタル・カメラ203、スキャナ204、およびデジタルVCR205は装置を構成する。しかし、当業者には、図2に示されているほぼあらゆるエンティティおよびそれらの等価物に、後述のように、制御実行可能ノードとして動作するのに十分な機能を与えることができることが認識されると思われる。制御実行可能ノードが本発明の調停方式を実施するので、装置には所有権および調停の処理を無視させることができる。
【００５３】
次に図3を参照すると、本発明による方法が示されている。制御実行可能ノードは、通信バスを介して通信しながら、本発明の装置調停手法を概略的に表わす図3に示された方法を実行する。この一般的なプロセスにおける特定の実施態様については以下に図4と関連させて説明する。段階301で、第1の制御実行可能ノードは、第2の制御実行可能ノードが現在、所与の装置の所有者であると判定する。このような所有権は排他的なものでも、または非排他的なものでもよい。非排他的な所有権の場合、第1の制御実行可能ノードは、1人または複数の所有者と装置のアクセス権を共用することができる。所有権を共用できる場合、一次所有者が指定され、他の所有者（または後述の潜在的な所有者）には、連続する所有権が確立されるように優先順位が割り当てられる。説明を簡単にするために、第2の制御実行可能ノードが単独の所有者であると仮定する。
【００５４】
第1の制御実行可能ノードは、第2の制御実行可能ノードがこの装置の所有権を有すると判定すると、段階302で、所有者ノード、すなわち、第2の制御実行可能ノードに、通知を受けるための登録を行う。所有者ノードに通知を受けるための登録を行うことによって、第1の制御実行可能ノードは、この装置の所有権ステータスのあらゆる変化を所有者ノードから通知される。したがって、所有権を他のノードに譲渡すると、第1の制御実行可能ノードは所有権の変更の通知を受信する。あるいは、第1の制御実行可能ノードに割り当てられた優先順位が変更されると、その旨が通知される。
【００５５】
通知を受けるための登録を行う段階の後で、図3に示すように少なくとも2つの可能な経路に従うことができる。第1の経路に沿って、第1の制御実行可能ノードは段階303で所有者ノードに所有権を要求することができる。たとえば、当該の装置が、一例として所有者ノードによって現在使用されている周辺ハード・ドライブである場合、第1の制御実行可能ノードは、該周辺ハード・ドライブの所有権を、第1の制御実行可能ノード自体へ譲渡するように求める要求を所有者ノードに直接送信することができる。段階304で、所有者ノードによって所有者要求が許諾された場合、第1の制御実行可能ノードはその後段階306で、所有権の確立を試みる。本発明の一態様において、所与のノードは、最高の優先順位が割り当てられている場合にのみ現在の所有者ノードからの所有権の譲渡を許可され、そうでない場合には、より高い優先順位を有するノードが最初に所有権の確立を試みることができる。
【００５６】
第2の経路に沿って、第1の制御実行可能ノードは段階305で、所有者ノードの所有権が終了したと判定することができる。このような終了によって、所有者ノードを通信バスから物理的に取り外すことができる。あるいは、所有者ノードは、ただちに所有権を放棄することができる、すなわち、所有者ノード自体がもはや所有者ではないことをバス上の他の制御実行可能ノードに通知することができる。所有権の終了がどのように行われるかとは無関係に、第1の制御実行可能ノードは、前述のように事前の優先順位割当てに従う段階306で、再び装置の所有権の確立を試みる。
【００５７】
上述の方法の特定の実施態様について図4に関してさらに論じる。特に、図4は、通信バス414を介して装置403に結合された少なくとも2つの制御実行可能ノード401〜402を備えたコンピュータ・システム400を示している。好ましくは、通信バス414はIEEE1394準拠シリアル・バスを備える。しかし、本発明を実施する際には、ピア・ツー・ピア通信をサポートできるあらゆる通信バスを使用できることを理解されたい。
【００５８】
制御実行可能ノード401〜402はそれぞれ、図のように同様のプロトコル・スタックを備える。特に、各制御実行可能ノード401〜402は、プロトコル・スタックの最下位にIEEE1394準拠ハードウェア層404を備える。ハードウェア層404の特定の実施態様は、当技術分野で周知であり、通常、実現される特定の装置、すなわち、コンピュータ、デジタル・カメラ、プリンタなどに依存する。
【００５９】
バス・ドライバ408は、ハードウェア層404を介して物理バス414と上位プロトコル層との間の通信を管理する。好ましい態様では、1394準拠バス・ドライバ408は、IEEE1394リンク層プロトコルのオープン・ホスト・コントローラ・インタフェース（OHCI）ドライバ406実施態様を備える。OHCIは、参照として本明細書に組み入れられるオープン・ホスト・コントローラ・インタフェース仕様に記載されている。
【００６０】
装置オブジェクト410も好ましくは、データ構造の形で提供される。物理装置403を表わす装置オブジェクト410を使用することは当技術分野において周知である。特に、装置オブジェクト406は、装置403がバス・ドライバ408によって確認(enumerate)され（すなわち、装置403の機能を確認するために装置403の構成メモリがアクセスされ）た後でバス・ドライバ408によって作成される。いわゆるプラグ・アンド・プレイ（PnP）サブシステムは、対応するノード401〜402のユーザと装置403との間の通信を容易にする上位装置ドライバ412を、装置オブジェクト410に基づいてロードする。したがって、装置オブジェクトは、単一のオペレーティング・システム内で確認(enumerate)された装置を追跡するためにPnPサブシステムによって使用される。プロトコル・スタックの最上位において、装置ドライバ412は通常、それらがロードされる制御実行可能ノードに代わって動作できるよう個別の装置と通信を行い、制御するソフトウェア命令である。さらに、装置ドライバ412は、IEEE1394プロトコルと、対応する装置が従う何らかのプロトコルとの間のプロトコル・ギャップを埋める。装置ドライバ412と通信する上位アプリケーションは示されていない。しかし、このような上位アプリケーションは、当技術分野で周知であり、たとえば、制御実行可能ノード401〜402のユーザと制御中の装置403との間のインタフェースを実現する手段としてしばしば機能することが多い。
【００６１】
図4においては、この図に示された様々な要素の間で渡される、本発明による様々なデータ構造（太い矢印）も示されている。これらのデータ構造は少なくとも、上記で図3に関して説明した方法を実施することを可能にする。図のように、装置オブジェクト410を介して装置ドライバ412からバス・ドライバ408にアクセス・データ構造が渡される。逆に、装置オブジェクト410を介してバス・ドライバ408から装置ドライバ412に通知データ構造が渡される。また、異なる制御実行可能ノード上に存在するバス・ドライバ408間の通信のためにトランザクション・パケットが提供される。したがって、アクセス・データ構造および通知データ構造ならびにトランザクション・パケットは、本発明にしたがって使用されたときに、装置ドライバ412が装置の調停に参加できるようにするピア・ツー・ピア通信経路を使用可能にする。さらに、後述のように、このようなデータ構造は、図4に太い点線で示すように、装置ドライバ間の直接アクセス通信も容易にする。以下の説明は、図4に示されるデータ構造の特定の実施態様と、そのようなデータ構造の、様々な状況での対応する使用法とを示すものである。しかし、本発明がこの点では制限されず、他の実施態様が可能であることを理解されたい。
【００６２】
本発明によるアクセス・データ構造の特定の実施態様を以下の表1に示す。表のように、アクセス・データ構造はいわゆるWindowsマネージメント・インストルメンテーション（WMI）方式に従って実現される。WMI方式により、「WINDOWS」ブランドのオペレーティング・システムで使用される標準化されたインタフェース／データ・パッシング技法が提供される。
【表１】
0004210042.tif 000002
【００６３】
Versionフィールドは、装置アプリケーション・プログラミング・インタフェースのバージョン、すなわち、調停方式のバージョンを示す。フラグ・フィールドは、所望の所有権ステータスまたは現在の所有権ステータスを示すように定義される。特に、DEVICE1394＿DESIREDフィールドは所望の（将来の）アクセス許可を指定するフィールドである。このフィールドは以下のフラグのうちの1つと組み合わせなければならない。DEVICE1394＿OWNERSHIP＿LOCAL＿NODEフィールドは、ローカル・ノードが装置の一次所有者であり、他のノードが、所有権およびアクセス許可を変更する場合にローカル・ノードと通信しなければならないことを示す。DEVICE1394＿OWNERSHIP＿REMOTE＿NODEフィールドは、リモート・ノードが装置の一次所有者であり、他のノードが、所有権およびアクセス許可を変更する場合にリモート・ノードと通信しなければならないことを示す。DEVICE1394＿ACCESS＿SHARED＿READ／WRITEフィールドは、装置グローバル・アクセスが現在共用されていることを示す。OWNERSHIP＿LOCAL＿NODEが設定された場合、一次／オリジナル所有者はローカル・ノードである。DEVICE1394＿ACCESS＿EXCLUSIVEフィールドは、装置が現在、排他的に所有されていることを指定するフィールドである。xx＿LOCAL＿NODEが設定された場合、ローカル・ノードは排他的アクセスが可能である。そうでない場合、ローカル・ノードは装置に対する所有権もアクセス権も有さない。
【００６４】
フラグ・フィールドは、装置に関する共用および所有権の変更に基づく現在の通知または所望の通知を示すように定義される。特に、DEVICE1394＿NOTIFY＿ON＿BUS＿EVENTフラグは、バス・イベント、たとえば、バス・リセットが行われたときにバス・ドライバがそのことを装置ドライバに通知することを示す。DEVICE1394＿NOTIFY＿ON＿ACCESS＿CHANGEフラグは、現在の装置所有者が変わるか、不在になるか、もしくは所有権を放棄したときか、または資源の所有権が変更された場合か、もしくは共用許可が変更された場合にバス・ドライバがそのことを装置ドライバに通知することを示す。このようなイベントの、他のドライバへの内部通知は、PnP非同期通知によって行われる。REMOTE＿OWNER＿EUIは、xx＿REMOTE＿NODEフラグが設定された場合に所有者の固有のIDを指定するフィールドである。DirectAccessAddressは、リモート所有者上のFIFO（先入れ先出し）バッファのアドレス・オフセットを指定するフィールドであり、プロトコル・ドライバによって直接通信のために使用される。
【００６５】
本発明による通知データ構造の特定の実施態様を以下の表2に示す。図のように、通知データ構造もWMI方式に従って実現される。
【表２】
0004210042.tif 000003
【００６６】
アクセス・データ構造の場合と同様に、Versionフィールドは、通知構造のバージョンを示す。BusGenerationフィールドは、通知が送信されたときのバス生成を示す。バス・リセット通知の場合、このフィールドはリセット後の新しい生成番号を反映する。Typeフィールドは、通知の種類、たとえば、送信中の通知がローカル・イベントの結果であるか、またはリモート・イベントの結果であるかを示す。他の種類の通知が可能であることを理解されたい。通知データ構造に定義されるOwnershipAccessFlagsは、上記のアクセス・データ構造に定義されたOwnershipAccessFlagsと同じ定義を有する。
【００６７】
トランザクション・パケットの特定の実施態様を以下の表3に示す。トランザクション・パケットは、（i）複数の制御実行可能ノードの間で装置所有者を識別し、（ii）リモート所有ノードに、通知を受けるための登録を行い、（iii）所有者が所有権を放棄したときに所有権の変更を一斉同報通信し、（iv）第1の制御実行可能ノード上のある装置ドライバから第2の制御実行可能ノード上の別の装置ドライバに非要求型メッセージを送信するために使用される。
【表３】
0004210042.tif 000004
【００６８】
この場合も、Versionフィールドはトランザクション・パケットのバージョンを示す。PacketTypeフィールドは送信中のパケットの種類を示す。パケット・タイプは登録要求、登録応答、アクセス権譲渡要求、アクセス権譲渡応答、アクセス権通知、および直接通信に関して定義される。これらは、本発明の制御方式を実施するために制御実行可能ノード同士が互いに交換し合うパケットである。これらの各パケット・タイプについては以下に論じる。当業者には、他のパケット・タイプが可能であることが認識されると思われる。トランザクション・パケットに定義されるFlagsは、上記のアクセス・データ構造および通知データ構造に定義されたOwnershipAccessFlagsと同じ定義を有する。SourceEUIフィールドは、トランザクション・パケットの送信元である制御実行可能ノードの固有のIDを指定するフィールドである。逆に、TargetEUIフィールドは、送信先の制御実行可能ノードの固有のIDを指定するフィールドである。TargetEUIフィールドは、特定の装置には結合されないプロトコル特有のパケットの場合はNULLに設定することができる。
【００６９】
トランザクション・パケット内では、各パケット・タイプに対応するように構造が定義される。登録要求の場合、DesiredAccessフィールドおよびNotificationフィールドを含むRegisterNotificationRequest構造が定義される。DesiredAccessフィールドは、要求側エンティティが必要とする所与の装置へのアクセスの種類を示すために定義されるOwnershipAccessFlagsと同じフラグを含む。Notificationフィールドは、通知構造に関して上述したTypeフィールド（表2）と同様の目的を果たす。登録要求を補足するものとして、StatusフィールドおよびAssignedPriorityフィールドを含むRegisterNotificationResponse構造によって登録応答が定義される。Statusフィールドは、応答側エンティティの動作のステータスを反映し、好ましくは、NTSTATUSタイプのフィールドであり、「WINDOWS」ブランドのオペレーティング・システムで使用される既存のステータス値におけるあらゆる値をとることができる。AssignedPriorityフィールドは、所有権の変更に関する通知を受けるためのライン上に他の制御実行可能ノードがいくつ存在するかを示す。所与の制御実行可能ノード用の装置ドライバに優先順位1が割り当てられている場合、その制御実行可能ノードは、現在の所有権が終了した場合に装置の所有権を得るうえで最高の優先順位を有する。
【００７０】
上述のAssignedPriorityフィールド、DesiredAccessフィールド、およびNotificationフィールドを含むAccessTransferRequest構造によってアクセス権譲渡要求が定義される。名前からわかるように、あるエンティティがある装置の現在の所有者からその装置のアクセス権を得る必要があるときに、アクセス権譲渡要求がそのエンティティによって使用される。この場合、AssignedPriorityフィールド、DesiredAccessフィールド、およびNotificationフィールドは上述と同じ目的を果たす。上述のStatusフィールドおよびGrantedAccessフィールドを含むAccessTransferResponse構造はアクセス権譲渡応答を定義するフィールドである。GrantedAccessフィールドは、OwnershipAccessFlagsと同じフラグを含み、所有者によって要求側エンティティに対して授与されるアクセスの種類を定義するフィールドである。
【００７１】
所与のノードの、所与の装置への現在のアクセス権について他のノードに知らせるために該所与のノードによって使用されるアクセス権通知は、AccessNotificationMessage構造によって定義され、CurrentAccessフィールドを含む。CurrentAccessフィールドは、OwnershipAccessFlagsと同じフラグを含み、ある装置に対する送信側ノードの現在のアクセス・ステータスを指定するために使用される。
【００７２】
最後に、ノード間の直接通信は、LengthフィールドおよびProtocolDataフィールドを含むProtocolMessage構造を使用することによって可能になる。ProtocolDataフィールドは、2つのノードの上位ドライバ間の直接通信（図4に太い点線で示されている）のペイロードであり、上位ドライバによって解析され理解されるあらゆるデータを含むことができる。下位層は、ProtocolMessageパケットにより、ProtocolDataを修正せずに直接上位ドライバに渡すべきであることを知る。Lengthフィールドは、ProtocolDataの予期される長さについて下位層に知らせる。
【００７３】
トランザクション・パケットは好ましくは、（すべての制御実行可能ノードで共通な）メモリ・マップされたアドレスを使用して、制御実行可能ノード間で交換されることに留意されたい。したがって、各制御実行可能ノードでは、その構成メモリにより、他のノードから要求パケットを受信するための少なくとも1つの位置、および他のノードから（制御実行可能ノード自体の要求に対する）応答パケットを受信するための少なくとも1つの位置がアクセス可能である。
【００７４】
上述のデータ構造およびトランザクション・パケットを使用して、所有権の調停を含む様々なシナリオを検討することができる。再び図4を参照するとわかるように、以下のシナリオでは、第1の制御実行可能ノード401（PCI）が、バス上の装置403（装置A）に接続されており、かつ装置Aの現在の所有者であると仮定されている。このシナリオでは、第2の制御実行可能ノード402（PC2）に関する様々な状況が扱われる。以下に列挙するシナリオでは、バス上のすべての制御実行可能ノードが上述のプロトコル・スタックおよびプロトコル・ドライバを使用すると仮定されている。適切であるかぎり、古いシステム（すなわち、本発明の技法をサポートしないシステム）と相互運用される例が各シナリオの下に列挙されている。
【００７５】
A．PC2が追加される；PC1は現在、装置Aを所有している
バスにPC2を結合すると、既知の技法によってバス・リセットが行われる。バス・リセットによって、PC1および装置AがPC2を確認（enumerate）し、PC2がPC1および装置Aを確認（enumerate）する。PC2が装置Aを確認（enumerate）すると、PC2で装置オブジェクトおよび装置ドライバが作成される。PC2上の装置ドライバは、プロトコル特有の手段（すなわち、装置Aに特有のプロトコル）を使用して、装置Aの所有権の獲得を試みる。このプロセスによって、PC2は、PC1が装置Aの排他的な所有者であるか、非排他的な所有者であるかを判定する。装置を使用するうえで排他的な所有権が必要とされない場合、PC2上の装置ドライバが正常に始動し、通知フラグでNOTIFY＿ON＿ACCESS＿CHANGEが表明され所有権／アクセス・フラグでACCESS＿SHARED＿READ／WRITE｜DEVICE＿OWNERSHIP＿REMOTE＿MODEが表明されたアクセス・データ構造を送信する。装置を使用するうえで排他的なアクセスが必要である場合、装置ドライバは、プロトコル・スタックが正常に始動したことを上位層に示すが、内部では、対応する装置オブジェクトをSTOPPED（停止中）と示し、オペレーティング・システムより送信されたすべての入出力要求にSTATUS＿ACCESS＿DENIED（ステータス・アクセス拒否）を返す。装置ドライバは次いで、通知フラグでNOTIFY＿ON＿ACCESS＿CHANGEが表明され、所有権／アクセス・フラグでACCESS＿EXCLUSIVE｜DEVICE＿OWNERSHIP＿REMOTE＿NODEが表明されたアクセス・データ構造をバス・ドライバに送信する。PC2上の装置ドライバはその後、適切に構成されたトランザクション・パケットを使用してPC1に、通知を受けるための登録を行う。
【００７６】
しかし、プロトコル特有の手段で、PC1が装置Aの所有者であることをPC2上の装置ドライバに確認させることができない場合、PC2上のバス・ドライバは、バス上のすべての制御実行可能ノードに登録要求トランザクション・パケットを一斉同報通信する。PC1は、登録要求を受信した後、登録応答トランザクション・パケットで応答し、それによって、PC2上のバス・ドライバは、PC1がリモート所有者であることを装置ドライバに知らせる通知データ構造を発行する。また、PC2上のバス・ドライバは、すべての制御実行可能ノードにアクセス通知トランザクション・パケットを一斉同報通信し、それによって、装置Aの所有権の現在のステータスをそれらのノードに知らせる。
【００７７】
PC1が古いシステムである場合、PC1に、通知を受けるための登録を行う試みは失敗する。しかし、PC2上のバス・ドライバは、それが装置ドライバに送信する通知データ構造によってこのことを装置ドライバから隠す。
【００７８】
B．PC1、PC2、および装置Aは動作中である；PC1が物理的に取り外される
PC1をバスから物理的に結合解除すると、バス・リセットが行われ、PC2がPC1を再確認（reenumerate）し、PC1が無いことを検出する。これに応答して、PC2上のバス・ドライバはそのローカル装置オブジェクトを検査し、PC1が、装置オブジェクトによって表わされている装置、および通知を受けるための登録がまだなされていない装置の所有者であるかどうかを判定する。通知を受けるための登録がなされている（すなわち、NOTIFY＿ON＿ACCESS＿CHANGEフラグが表明されている）装置オブジェクトの場合、PC2上のバス・ドライバは、適切なフラグが設定された装置ドライバ、およびWMI非同期通知を有する装置ドライバに通知データ構造を送信し、他の装置ドライバに警告する。
【００７９】
PC2（おそらく、すでに登録されている、所有権を得ることのできるノード）上に存在する対応している装置ドライバは、装置Aの所有者がもはや存在しないことを知ると、装置Aの所有権の確立を試みる。PC2上の装置ドライバは、通知を受けるための登録を行ったときに優先順位1が割り当てられた（すなわち、次に装置の所有権を得ることができるライン上に存在する）場合、バス・リセットの後でプロトコルによって許可された直後にアクセスを試みなければならない。PC2上の装置ドライバは、装置Aの所有権の確立を試みた後、このように確立されたアクセスの種類を反映するように適切なフラグが設定されたアクセス・データ構造をPC2のバス・ドライバに発行する。しかし、PC2上の装置ドライバに最高の優先順位が割り当てられていない場合、該装置ドライバは、再接続によるタイムアウトの間隔の持続時間が装置プロトコルによって指定されている場合にはその持続時間の間待つ。あるいは、好ましい態様において、装置ドライバは、それに割り当てられた優先順位番号（漸次低くなる優先順位を示す漸次大きくなる優先順位番号）に所定の間隔を乗じた値に等しい時間の間待たなければならない。たとえば、優先順位3および所定の間隔250msが割り当てられた装置ドライバの場合、3＊250msの間待たなければならない。これにより、より高い優先順位を有するノードがまず所有権の獲得を試みる。この期間内に一斉同報通信・パケットが送信されない場合、装置ドライバは、上記で指定されたようにアクセスを試みることができる。この場合も、あるアクセス・レベルが確立されていると仮定すると、PC2上の装置ドライバは、このように確立されたアクセスの種類を反映するように適切なフラグが設定されたアクセス・データ構造をPC2のバス・ドライバに発行する。
【００８０】
PC2上のバス・ドライバは、装置ドライバによって送信されたアクセス・データ構造に応答して、適切な通知タイプを反映する通知データ構造を該装置ドライバに送り返す。また、バス・ドライバは、PC2上の装置ドライバに現在許可されている現在のアクセスを反映するアクセス通知トランザクション・パケットを通信バス上の他のバス・ドライバに発行する。アクセス通知トランザクション・パケットによって、他の制御実行可能ノードが、新しい所有者（PC2）に、通知を受けるための再登録を行うことを可能にする。
【００８１】
PC1が古いシステムである場合、動作が上記のA節で述べたのと同様に動作が進行することに留意されたい。
【００８２】
C．PC1、PC2、および装置Aは動作中である；PC1が所有権を放棄する
このシナリオは、装置Aの現在の所有者ノード（PC1）がユーザの介入またはその他の方法によって所有権を放棄する状況に対処するシナリオである。この例では、PC1のユーザが、たとえばPnPアプレットまたは同様の機構を使用して装置Aを使用不能にする必要があるということを、装置Aに対応しているPC1の装置ドライバに示したものと仮定する。このような表示に応答して、装置ドライバは、装置Aのプロトコルに対して特有の手段を使用して装置Aを解放する。さらに、装置ドライバは、所有権／アクセス・フラグが表明されておらず、それによって所有権がないことを示すアクセス・データ構造をPC1のバス・ドライバに送信させる。バス・ドライバは、その装置ドライバによる所有権がないことを反映する通知データ構造によって該装置ドライバに応答する。さらに、バス・ドライバは、PC1がもはや所有権を保持していないことを示すアクセス通知トランザクション・パケットを通信バス上の他のすべての制御実行可能ノードに送信する。
【００８３】
PC1のバス・ドライバから送信されたアクセス通知トランザクション・パケットに応答して、PC2上のバス・ドライバは、装置Aの所有権ステータスが変更されたことをPC2上の適切な装置ドライバに示す通知データ構造を送信する。これに応答して、特に割り当てられる優先順位に関して上記のB節で述べたものと本質的に同じ方法でPC2上の装置ドライバは装置Aの所有権の確立を試みる。
【００８４】
古いシステムの場合、古いPCは所有権の放棄を通信することができない。PC1を物理的に取り外した場合にのみ、他の制御実行可能ノードが所有権の獲得を試みる。
【００８５】
D．PC1、PC2、および装置Aは動作中である；PC2が所有権譲渡を開始する。
このシナリオでは、PC2は、PC1からPC2自体への、装置Aの所有権の譲渡を積極的に試みる。この目的のために、PC2のユーザは、装置Aの譲渡を要求したいという信号を、装置Aに対応するPC2の装置ドライバに送る。一態様では、これは、PnP手順に従って装置を「取り外させる」既知のPnP方法を使用して行われる。これに応答して、装置ドライバは、ローカル所有権が必要であることが所有権／アクセス・フラグによって示された（すなわち、DESIRED＿ACCESSフラグおよびOWNERSHIP＿LOCALフラグがアサートされた）アクセス・データ構造をバス・ドライバに送信させる。このアクセス・データ構造に応答して、バス・ドライバは、アクセス権譲渡要求トランザクション・パケットを現在の所有者に発行する。
【００８６】
PC1（所有者ノード）上のバス・ドライバは、PC2のバス・ドライバからアクセス権譲渡要求トランザクション・パケットを受信すると、PC1上の装置ドライバに通知データ構造を発行し、それによって該装置ドライバにこの要求を通知する。次に装置ドライバは、上位アプリケーションにその要求を通知する。一態様では、装置ドライバは、上位アプリケーションの応答を追跡するタイマも開始する。たとえば、リモート制御実行可能ノードが装置Aの所有権を要求していることを示す（と共に、任意選択で、リモート制御実行可能ノードのIDを示す）ダイアログ・ボックスを表示させることによって、上位アプリケーションはPC1のユーザとの通信を容易にする。
【００８７】
ユーザが存在する場合、そのユーザは、所有権譲渡を許可することを決定することができる。この場合、本質的にはこの点で所有権が放棄され、プロセスは、上記のC節で述べたように進行する。所有権譲渡が許可されたが、要求側ノードの割り当てられた優先順位が1以外である場合、PC1上のバス・ドライバが、アクセスを拒否するアクセス権譲渡応答トランザクション・パケットを送信しなければならないことに留意されたい。次いでPC1は、上述のように所有権を放棄しなければならず、したがって、優先順位の高い方のノードが装置Aにアクセスできるようになる。優先順位の高い方のノードが応答しない場合、最初の要求側ノード（PC2）がアクセスを試みることができる。あるいは、ユーザが所有権譲渡を拒否することを決定した場合、PC1上のバス・ドライバは、アクセスを拒否するアクセス権譲渡応答トランザクション・パケットを送信しなければならない。ユーザが存在しないか、またはその他の理由で応答しない場合、タイマの満了により譲渡要求の拒否をトリガすることができる。あるいは、所有権を放棄するアクセス・データ構造をタイマの満了時に発行することができる。
【００８８】
所有者ノードが古いシステムである場合、譲渡要求は、要求側ノード上の要求側バス・ドライバによって内部で拒否されることに留意されたい。
【００８９】
本発明は、特にIEEE1394準拠システムに関する所有権放棄のための新規の方法を提供する。本発明は、分散機構を使用するので、既存の装置を変更する必要がない。さらに、ユーザの介入はほとんどあるいはまったく必要とされず、装置ドライバは、装置の所有権の変−＋更を自動的に検出し、それに応じて、登録されている潜在的な所有者に通知する。以上の説明は、本発明の原理の適用を例示したに過ぎない。当業者であれば、本発明の趣旨および範囲から逸脱せずに、他の構成および方法を実施することができる。特許請求の範囲は、ミーンズプラスファンクションした様式であると解釈すべきではない。
【００９０】
【発明の効果】
本発明により、装置を共用する、および調停するための方法および装置が提供され、制御される装置の修正も参加も必要としない装置調停のための技術が提供された。
【図面の簡単な説明】
【図１】  本発明の様々な局面を実施するために使用できる従来型の汎用デジタル・コンピューティング環境の概略ブロック図である。
【図２】  各装置と、シリアル・バスを介して互いに結合された対応するノードとから成るシステムの概略ブロック図である。
【図３】  本発明に係る方法を示すフローチャートである。
【図４】  本発明に係る通信バスを介して装置に結合された制御実行可能ノードを詳しく示すブロック図である。
【符号の説明】
１００  コンピュータ、１０１  キーボード、１０２  ポインティング・デバイス、１０６  シリアル・ポート・インタフェース、１０７  モニタ、１０８  ビデオ・アダプタ、１０９  リモート・コンピュータ、１１０  処理ユニット、１１１  メモリ記憶装置、１１２  ローカル・エリア・ネットワーク（LAN）、１１３  ワイド・エリア・ネットワーク（WAN）、１１４  アダプタ、１１５  モデム、１２０  システム・メモリ、１３０  システム・バス、１４０  読取り専用メモリ（ROM）、１４５  IEEE1394準拠シリアル・バス、１５０  ランダム・アクセス・メモリ（RAM）、１５１  コンピュータ、１６０  基本入出力システム（BIOS）、１７０  ハード・ディスク・ドライブ、１８０  磁気ディスク・ドライブ、１９０  磁気ディスク、１９１  光ディスク・ドライブ、１９２  光ディスク、１９３  磁気ディスク・ドライブ・インタフェース、１９４  光ディスク・ドライブ・インタフェース、１９５  オペレーティング・システム、１９６  アプリケーション・プログラム、１９７  プログラム・モジュール、１９８プログラム・データ、２００  システム、２０１  コンピュータ、２０２  プリンタ、２０３  デジタル・カメラ、２０４  スキャナ、２０５  デジタルVCR、２０６  コンピュータ、２１１  ノード、２１２  プリンタ・ノード、２１３デジタル・カメラ・ノード、２１４  スキャナ・ノード、２１５  デジタルVCRノード、２１６  コンピュータ・ノード、２２２  相互接続部、２２３  相互接続部、２２４  相互接続部、２２５  相互接続部、２２６  相互接続部、３０１  段階、３０２  段階、３０３  段階、３０４  段階、３０５  段階、３０６段階、４００  コンピュータ・システム、４０１  制御実行可能ノード、４０２  制御実行可能ノード、４０３  装置、４０４ａ  ハードウェア層、４０４ｂハードウェア層、４０６ａ  オープン・ホスト・コントローラ・インタフェース（OHCI）ドライバ、４０６ｂ  オープン・ホスト・コントローラ・インタフェース（OHCI）ドライバ、４０８ａ  バス・ドライバ、４０８ｂ  バス・ドライバ、４１０ａ  装置オブジェクト、４１０ｂ  装置オブジェクト、４１２ａ  装置ドライバ、４１２ｂ  装置ドライバ。
【図１】
0004210042.tif 000005
【図２】
0004210042.tif 000006
【図３】
0004210042.tif 000007
【図４】
0004210042.tif 000008