JP4298817B2 - Hidデバイスとの通信を簡単化する方法およびアーキテクチャ - Google Patents

Hidデバイスとの通信を簡単化する方法およびアーキテクチャ Download PDF

Info

Publication number
JP4298817B2
JP4298817B2 JP22262998A JP22262998A JP4298817B2 JP 4298817 B2 JP4298817 B2 JP 4298817B2 JP 22262998 A JP22262998 A JP 22262998A JP 22262998 A JP22262998 A JP 22262998A JP 4298817 B2 JP4298817 B2 JP 4298817B2
Authority
JP
Japan
Prior art keywords
hid
report
usage
storage medium
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP22262998A
Other languages
English (en)
Other versions
JPH11194988A (ja
Inventor
ケネス・ディー・レイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JPH11194988A publication Critical patent/JPH11194988A/ja
Application granted granted Critical
Publication of JP4298817B2 publication Critical patent/JP4298817B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/038Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry

Description

【0001】
【発明の属する技術分野】
本発明は、ヒューマン・インターフェース・デバイス(Human Interface Device)と関連する動作のためのドライバ、並びにこのようなドライバおよびデバイスとの間で読み出しおよび書き込みを行う方法に関する。
【0002】
【従来の技術】
ユニバーサル・シリアル・バス(USB)は、単純な4線ケーブルを用いて種々のデバイスと相互接続する機能をパーソナル・コンピュータに与える通信アーキテクチャである。USBプロトコルは、起動時にあるいは実行時にデバイスを差し込んだとき、デバイスのコンフィギュレーションを設定することができる。これらのデバイスは、種々のデバイス・クラスに分類されている。各デバイス・クラスは、同様の機能を行うデバイスに対して、共通の振る舞いおよびプロトコルを定義している。
【0003】
以下に記述する本発明は、ヒューマン・インターフェース・デバイス(HID)のクラスと共に用いるものである。HIDクラスは、主に、人がコンピュータ・システムの動作を制御するのに用いるデバイスから構成されている(以後、HIDデバイスまたはHIDクラス・デバイスと記す)。HIDクラス・デバイスの典型的な例には、以下のデバイスが含まれる。
【0004】
・キーボードおよびポインティング・デバイス(例えば、標準的なマウス・デバイス、トラックボール、およびジョイスティック)。
【0005】
・フロント・パネル制御部。例えば、ノブ、スイッチ、ボタン、およびスライダ。
【0006】
・電話機、VCRのリモコン、ゲームまたはシミュレーションのデバイスのようなデバイス上において見ることができる制御部。例えば、データ・グローブ、スロットル、ハンドル、および方向舵ペダル。
【0007】
・人との対話は不要であるが、HIDクラス・デバイスと同様のフォーマットでデータを提供することができるデバイス。例えば、バーコード・リーダ、温度計、電圧計。
【0008】
現行のHID仕様は、USB−IFと称する非営利組織が公表しており、オレゴン州Hillsboroに所在するこの組織から入手可能である。尚、HID仕様は、この言及により本願に含めるものとする。また、この仕様には、インターネットを通じて、www.usb.orgにおいてもアクセスすることができる。HID仕様は進展する可能性があるが、その最も重要な特徴は、比較的明確に定義されており、そして現時点において受け入れられている。
【0009】
本発明が主に関係する、HIDデバイスの明確に定義されていてしかも受け入れられている特徴の1つは、このようなデバイスが、「レポート」と呼ぶデータ・パッケージ単位でデータの送信および受信を行うことである。デバイスには、このようなレポートをフォーマットするに当たり、かなりの柔軟性が与えられている。
【0010】
レポートは、ボタンおよび値という、HIDデバイスが発生する2つの異なった型のデータを含んでいる。ここでは、これらを総称してデータ項目と呼ぶ。各データ項目は、キー、スライダ、ジョイスティックの単一の軸等のような制御部(control)が発生する。ボタン型データ項目は、0または1という2つの値の一方を有する二進値である。ボタン型データ項目は、キーまたはスイッチのような物体が発生する。値型データ項目は、ある範囲の値を有し、通常、スライダ、ジョイスティックの軸、またはスロットルのような連続可変制御部のアナログ位置を示す。HIDデバイスは通常入力データ項目を発生するが、レポートはHIDデバイスが受け取ることができ、これによりコンピュータはHIDデバイス上のLED、スピーカの音量、およびその他の出力デバイスを制御できるようになっている。
【0011】
各制御部には、HIDデバイスの製造者が指定する「使用法(usage)」が関連付けられている。使用法は、異なった制御部が測定しているパラメータ、および制御部が発生したデータ項目(例えば、X,Y,およびZ入力)に対して行うべきことに関する情報を、コンピュータ・アプリケーション・プログラムに供給する。HID仕様自体は、キーボード、ジョイスティック、スライダ、およびその他のデバイスのような多数の異なったデバイスに対する、使用法の定義を含む。
【0012】
1つのHID使用法は、2つの構成要素、即ち、1つの使用法ページおよび1つの使用法インデックスを含む。使用法ページは、1つの特定のデバイスに対応している。恐らく、最も一般的な使用法ページは、「汎用デスクトップ(generic desktop)」ページおよび「キーボード」ページである。使用法インデックスは、ジョイスティック・キー、軸、スライダ、キーボードのキー等のような、当該ページ内の具体的な制御部に対応している。
【0013】
実際には、「使用法」という用語は、ときとして使用法インデックスを意味する場合がある。しかしながら、この文書の本文では(Appendixを除く)、「使用法」は、1つの使用法ページおよび1つの使用法インデックスから成る1対の値を意味する。「使用法仕様」という用語は、ここでは、より一般的に使用法の構成要素の内いずれか一方またはその双方を指すのに用いる。
【0014】
既に述べたように、HIDレポートの配列およびフォーマッティングは、デバイスによってかなり異なっている。通常、各レポートは、当該デバイスによって指定された任意の順序で発生する複数のデータ項目を含み、各データ項目は任意の数のビットおよびレポート内の任意のビット・アライメントを有している。更に、データ項目自体は、ビット・フィールド・フォーマットおよびインデックス・アレイ・フォーマットのような、異なったフォーマットで報告することができる。
【0015】
デバイスは、そのデータ項目を2つ以上のレポートに分離することもでき、この場合、各レポートはレポートIDで始まる。レポート自体は、その長さが様々で均一ではなく、そしてレポート内に含まれるデータ項目が変化したときにのみ、HIDがレポートを発生する。
【0016】
加えて、デバイスは、種々の制御部を異なった「集合体(collection)」にグループ化することができ、各集合体はそれ自体に指定された使用法を有する。各集合体は、異なったレポートに及ぶ場合がある。また、各集合体は、互いの中にネストすることも可能である。同じ使用法に対応するデータ項目は、異なった集合体において報告することができる。
【0017】
各HIDデバイスは、当該デバイスが発生するレポートを特定するHIDレポート記述子を発生する。各レポート毎に、レポート記述子は、当該レポートに含まれるデータ項目の配列およびフォーマッティング、並びに各データ項目と関連する使用法を記述する。
【0018】
HIDレポート記述子は、精巧なプロトコルを用いて符号化する。HIDレポート・データを使用するアプリケーション・プログラムはいずれも、最初に関連するレポート記述子を解析して、個々のレポートをどのように解釈するか、およびレポート内のデータ項目をどのように見つけるかについて判定を行わなければならない。レポート記述子の解析は、非常に複雑なタスクである。
【0019】
上述のHIDプロトコルは、帯域幅については非常に効率的である。加えて、HIDデバイスに実施するのは非常に単純である。しかしながら、この方式では、アプリケーション・プログラムの開発者には多数の難題がある。これらの難題は主に、HIDレポートにおいて許される柔軟性、およびHIDレポート記述子の複雑性に関係している。
【0020】
単一の既知のHIDデバイスのためにアプリケーション・プログラムを書くことは、難しいことではない。この場合、開発者は、全ての使用可能なデータ項目の正確な性質や、それらがHIDレポート内でどのように配列されフォーマットされるかについて、前もって分かっている。
【0021】
【発明が解決しようとする課題】
しかしながら、異なった周辺装置とで用いるためのプログラムを書こうとする際、その周辺装置が全てそれらのレポートを互いに異なった予測し得ない方法で実施する可能性がある場合、難題が発生する。ある周辺装置は単一のレポートのみを利用する場合があり、一方他の周辺装置はそのデータ項目を2つまたは3つのレポートに分割する場合もある。また、あるキーボードはキーストロークをビット・フィールドとして報告する場合があり、一方別のキーボードはインデックス・アレイを利用する場合がある。あるジョイスティックは、非常に基本的な制御部のみを有する場合があり、一方別のジョイスティックは、ハットスイッチ(hatswitch)および航空機のヨーク制御部のような、より洗練された制御部を備える場合もある。レポートのサイズさえも周辺装置毎に異なっており、これにより必要なバッファ・サイズを決めるのが困難となっている。各集合体も同様に、異なった周辺装置では、その実装が全く異なる可能性がある。
【0022】
上記の情報は全てレポート記述子から得ることができるが、情報の解析は非常に難しく、このように種々のフォーマットに対処しなければならない場合、実際のレポートのバッファリングおよび解析も同様に非常に複雑となる。
【0023】
このように、HID技術は、種々のデバイスまたは周辺装置に、所与のアプリケーション・プログラムとの互換性を与える潜在的可能性を有しているが、このような互換性は現在、アプリケーション・プログラムの開発において、アプリケーション・プログラムがHID周辺装置に使用可能な種々のレポート・フォーマットに適応できるようにするには、多大の投資によってしか実現できない。
【0024】
【課題を解決するための手段】
本発明は、送信元のHIDデバイスには無関係に、しかもクライアント・プログラムが複雑な解析を行う必要なく、クライアント・プログラムが一貫性をもってHIDデータ項目を受信できるようにする方法およびアーキテクチャを含む。例示の実施形態では、このアーキテクチャは、トランスポート・レイヤを含み、ここからHIDレポートおよびレポート記述子を得ることができ、更にこれらをトランスポート・レイヤに書き込むことができる。HIDクラス・ドライバは、トランスポート・レイヤの上に実装する。アプリケーション・プログラムおよびオペレーティング・システム・コンポーネントを含むクライアント・プログラムは、HIDクラス・ドライバを介して、HIDデバイスとのインターフェースを行う。
【0025】
本発明の一実施形態によれば、HIDクラス・ドライバは、レポートIDをまだ含んでいないあらゆるレポートにレポートIDを付加する。このステップは、HIDレポートに一貫性を加え、それらの読み取りおよび解析を一層容易にする。加えて、HIDクラス・ドライバは、HIDデバイスが発生した最も大きなレポートを判定し、そのHIDデバイスからの他の全てのレポートに詰め物をすることにより、所与のデバイスからのレポート全ての長さを均一化する。これによっても、再度一貫性を追加し、利用する側のアプリケーションがレポートをバッファし解析するのを一層容易にする。本発明の別の形態によれば、1組のインターフェースは、クライアント・プログラムが、それらの使用法のみによって指定したデータ項目を要求できるようにする。
【0026】
初期化フェーズの間、クライアント・プログラムは、通常のファイルI/Oコールによって、クラス・ドライバからレポート記述子を検索する。次に、このレポート記述子をパーザに提出し、パーザがこのレポート記述子を解析し、そして解析したレポート記述を含むデータ構造を返す。HIDデータ項目を読み出そうとする場合、クライアント・プログラムはまず最初にクラス・ドライバからHIDレポートを検索する。次に、引数を用いて、インターフェース関数をコールし、そしてその引数は、HIDレポート、解析レポート記述(parsed report description)を包含するデータ構造、および(使用法ページおよび使用法インデックスのような)使用法仕様を含む。インターフェース関数は、解析レポート記述をHIDレポート内へのインデックスとして用いて、HIDレポートを探索して指定した使用法に関連するデータ項目を求め、そしてこのデータ項目が当該レポートの中で発見した場合、要求元クライアントにそのデータ項目を返す。オプションとして、集合体識別子をインターフェース関数に対する引数の中で指定することができ、この場合、インターフェース関数は、集合体識別子によって指定したHID集合体内のデータ値に、その返すデータ値を制限する。
【0027】
【発明の実施の形態】
動作環境の一例
図1および以下の説明は、本発明を実施し得る適切な計算機環境についての、簡単でおおまかな説明を行うことを意図したものである。全体として、パーソナル・コンピュータによって実行するプログラム・モジュールのような、コンピュータ実行可能命令に関連して本発明を説明するが、必ずしもそれを必要とする訳ではない。通常、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、インターフェース、インターフェース関数等を含み、コンピュータ読取可能メモリに格納する。実行する際、これらのモジュールは特定のタスクを行い、特定の抽象データ型を実装し、種々のインターフェースおよびインターフェース関数を露出(expose)または実施する。更に、本発明は、ハンドヘルド・デバイス、マルチプロセッサ・システム、マイクロプロセッサをベースとするまたはプログラム可能な消費者の電子機器、ネットワークPC、ミニコンピュータ、メインフレーム・コンピュータ等を含む、その他のコンピュータ・システム・コンフィギュレーションを用いても実施可能であることは、当業者には分かるであろう。また、本発明は、通信ネットワークを通じて連結したリモート処理デバイスがタスクを実行する分散型コンピュータ環境においても実施可能である。分散型コンピュータ環境では、プログラム・モジュールは、ローカルおよびリモートのメモリ記憶デバイス双方に配置してもよい。
【0028】
図1を参照すると、本発明を実施するシステム例は、従来のパーソナル・コンピュータ即ちパーソナル・コンピュータ20の形態の汎用計算機を含み、処理ユニット21,システム・メモリ22,およびシステム・メモリを含む種々のシステム・コンポーネントを処理ユニット21に結合するシステム・バス23を含む。システム・バス23は、メモリ・バスまたはメモリ・コントローラ、周辺バス、および種々のバス・アーキテクチャのいずれかを用いたローカル・バスを含む、数種のバス構造のいずれかとすればよい。システム・メモリは、リード・オンリ・メモリ(ROM)24およびランダム・アクセス・メモリ(RAM)25を含む。起動中等に、パーソナル・コンピュータ20内部のエレメント間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム26(BIOS)が、ROM24に格納してある。パーソナル・コンピュータ20は、更に、図示しないハード・ディスクとの読み出しおよび書き込みを行うハード・ディスク・ドライブ27、リムーバブル磁気ディスク29との読み出しおよび書き込みを行う磁気ディスク・ドライブ28,およびCDROMまたはその他の光学媒体のようなリムーバブル光ディスク31との読み出しおよび書き込みを行う光ディスク・ドライブ30も含む。ハード・ディスク・ドライブ27、磁気ディスク・ドライブ28、および光ディスク・ドライブ30は、それぞれ、ハード・ディスク・ドライブ・インターフェース32、磁気ディスク・ドライブ・インターフェース33、および光ドライブ・インターフェース34を介して、システム・バス23に接続している。これらのドライブおよびこれらと関連するコンピュータ読取可能媒体は、コンピュータ読取可能命令、データ構造、プログラム・モジュール、およびパーソナル・コンピュータ20のためのその他のデータの不揮発性格納を行う。ここに記述する環境例は、ハード・ディスク、リムーバブル磁気ディスク29およびリムーバブル光ディスク31を採用しているが、磁気カセット、フラッシュ・メモリ・カード、デジタル・ビデオ・ディスク、ベルヌーイ・カートリッジ、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)等のような、コンピュータによるアクセスが可能なデータを格納可能なその他のタイプのコンピュータ読取可能記憶媒体も、本動作環境例において使用可能であることは、当業者には認められよう。
【0029】
オペレーティング・システム35、1つ以上のアプリケーション・プログラム36、その他のプログラム・モジュール37およびプログラム・データ38を含む多数のプログラム・モジュールは、ハード・ディスク、磁気ディスク29、光ディスク31、ROM24、またはRAM25上に格納することができる。ユーザは、キーボード40およびポインティング・デバイス42のような入力デバイスを通じて、パーソナル・コンピュータ20にコマンドや情報を入力することができる。他の入力デバイス(図示せず)には、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星パラボラアンテナ、スキャナ等が含まれよう。これらおよびその他の入力デバイスは、多くの場合、システム・バスに結合したシリアル・ポート・インターフェース46を介して処理ユニット21に接続するが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス(USB)のようなその他のインターフェースによって接続してもよい。ビデオ・アダプタ48のようなインターフェースを介して、モニタ47またはその他のタイプの表示デバイスもシステム・バス23に接続している。モニタに加えて、パーソナル・コンピュータは典型的には、スピーカやプリンタのようなその他の周辺出力デバイス(図示せず)を含む。
【0030】
パーソナル・コンピュータ20は、リモート・コンピュータ49のような、1つ以上のリモート・コンピュータへの論理接続を用いたネットワーク形環境において動作することができる。リモート・コンピュータ49は、別のパーソナル・コンピュータ、サーバ、ルータ、ネットワークPC、ピア・デバイスまたはその他の一般的なネットワーク・ノードとしてもよく、そして典型的には、パーソナル・コンピュータ20に関して先に述べたエレメントの多くまたは全てを含むが、図1には、メモリ記憶デバイス50のみを図示している。図1に示した論理接続は、ローカル・エリア・ネットワーク(LAN)51およびワイド・エリア・ネットワーク(WAN)52を含む。このようなネットワーキング環境は、オフィス、企業全域にわたるコンピュータ・ネットワーク、イントラネット、およびインターネットでは極く一般的である。
【0031】
LANネットワーキング環境において用いる場合、パーソナル・コンピュータ20は、ネットワーク・インターフェースまたはアダプタ53を介して、ローカル・ネットワーク51に接続する。WANネットワーキング環境において用いる場合、パーソナル・コンピュータ20は典型的に、モデム54、またはインターネットのようなワイド・エリア・ネットワーク52を通じて通信を確立するその他の手段を含む。モデムは、内蔵型でも外付けでもよく、シリアル・ポート・インターフェース46を介して、システム・バス23に接続する。ネットワーク形環境では、パーソナル・コンピュータ20に関連して示すプログラム・モジュールまたはその各部分は、リモート・メモリ記憶デバイスに格納してもよい。尚、図示のネットワーク接続は一例であり、コンピュータ間に通信リンクを確立するその他の手段を用いてもよいことは認められよう。
【0032】
図示のコンピュータは、Microsoft Corporationから入手可能なWindowsファミリのオペレーティング・システムのようなオペレーティング・システムを用いる。以下に記述する機能性は、Brockschmidt, Kraig; Inside OLE 2; Microsoft Press, 1994に記述されているような、OLEおよびCOMインターフェース並びにインターフェース関数の使用を含む、標準的なプログラミング技法を用いて実施する。上記の文書は、この言及により本願に含めるものとする。
【0033】
全体的なアーキテクチャ
図2は、HIDデバイス100と図示のクライアント・プログラム102のようなクライアント・プログラムとの間で通信を行うために、コンピュータ20内に実装したコンポーネントを示す。ここで用いる場合、「HIDデバイス」という用語は、HIDプロトコルの現在の形態または任意の改定形態を用いて、コンピュータ・コンポーネントと通信を行うあらゆるデバイスを意味するものとする。クライアント・プログラムとは、HIDデータ項目の利用側(consumer)である、オペレーティング・システム・コンポーネントを含むあらゆるプログラムまたはプログラム・コンポーネントのことをいう。
【0034】
図2によると、1つ以上のUSBデバイス・ドライバを含むトランスポート・レイヤ即ちドライバ・スタック104が、USB標準およびプロトコルにしたがって、HIDデバイスとの低レベルの通信を提供する。HIDクラス・ドライバ106は、トランスポート・レイヤ104の上に実装してあり、トランスポート・レイヤが列挙する(enumerate)物理的なデバイス・オブジェクト(USBデバイス・ドライバ・スタックのような)を制御する、機能的デバイス・オブジェクトを作成する。ドライバ・スタック104は、HIDレポート、およびこのHIDレポートを記述するHIDレポート記述子を与える。本明細書の従来の技術の項に記述したように、HIDレポートはサイズが異なっており、そしてHIDデバイス内に実装した制御部に対応するデータ項目を含む。HIDレポート記述子は、当該HIDレポート内にあるデータ項目の配列、フォーマッティング、および使用法仕様を指定する。HIDクラス・ドライバ106は、HIDレポートおよびHIDレポート記述子を要求し、これらをUSBデバイス・ドライバから受け取るように構成している。
【0035】
オペレーティング・システムのクライアントは、HIDクラス・ドライバをコールし、HIDデバイスからのHIDレポートおよびレポート記述子、並びにHIDデバイスが提供するその他の型のデータを読み取ることができる。このようなコンポーネントは、適切にフォーマットしたレポートを与えることによって、HIDデバイスに書き込むこともできる。アプリケーション・プログラムのクライアントも、HIDクラス・ドライバを介して、HIDデバイスと通信を行うが、間接的に行うだけである。即ち、アプリケーション・プログラムは、実際には、コンピュータ・オペレーティング・システムを通じて、ファイルI/Oコールを行うことによって、HIDデバイスと通信し、一方、コンピュータ・オペレーティング・システムは、HIDクラス・ドライバと直接通信を行う。
【0036】
レポートの正規化
HIDクラス・ドライバ106は、HIDレポートをクライアント・プログラムに供給
する前に、全てのHIDレポートを正規化するという重要な改良は除いて、概して従来の技術にしたがって実施する。この正規化を達成する1つの方法は、まだレポートIDを有していないあらゆるレポートに、HIDレポートIDを付加することである。HID仕様によれば、レポートには、1つのデバイスから発するレポートが2つ以上ある場合に、レポートIDを有することのみが要求される。1つのデバイスから得られるレポートが1つだけの場合、レポートIDはオプションである。
【0037】
HIDレポートを正規化する別のステップとして、クラス・ドライバが、所与のHIDデバイスからの全てのレポートを均一のサイズにする。即ち、クラス・ドライバは、特定のデバイスが発生した最も大きなレポートのサイズを判定し(任意の付加されたレポートIDを含む)、そして当該デバイスからのレポート全てに詰め物を行って、これらが、最も大きなレポートのサイズと等しくなるようにする。
【0038】
このように、本発明は、HIDレポートを正規化した後にのみ、HIDレポートを要求元のクライアント・プログラムに返す、HIDクラス・ドライバにより実行する方法を含む。このような方法は、HIDデバイスからHIDレポートを受け取るステップと、HIDレポートに(任意の値を有するバイトによって)詰め物を行いそれらのサイズを均一化することによって正規化するステップとを含む。
【0039】
図3には、このプロセスを示す。いくつかの異なったレポート108は、各々互いに異なった長さを有するが、1つの特定のHIDデバイスから検索する。それらを要求元プログラムに渡す前に、HIDクラス・ドライバ106はそれらに詰め物を行い、それらが全て同じ長さとなるようにする。正規化したレポートを、図3では、番号109で引用する。詰め物は波線で示す。同様に、異なった別のデバイスから単一のレポート110を検索する。レポート110は、トランスポート・スタックから検索したときには、レポートIDを有していない。したがって、HIDクラス・ドライバ106は、このレポートの最初のバイトとしてレポートIDを付加し、その結果正規化レポート111を得る。
【0040】
レポートを正規化することによって、重要な利点が得られる。最も意義深い利点の1つは、アプリケーション・プログラムにとって、クラス・ドライバ106からの各読み取りが1つのHIDレポートのみを返す、ということが確実となる点にある。例えば、長さが異なる2つの異なったHIDレポートを発生するHIDデバイスから生ずる状況について検討する。これらのレポートのいずれの1つも、いつでも発生可能である。要求元クライアントは、2つのレポートのどちらが次にくるのかは分からない。次のレポートを読み取るためのファイルI/Oを実行するとき、クライアントは、(正規化していないと)何バイト読み取るべきかが分からない。したがって、2回の読み取り動作が必要となったり、あるいは最初の読み取り動作が次のレポートの一部を検索する、という可能性がある。上述の正規化によって、全てのレポートの長さが同一となるので、この問題は解消する。クライアントは、1つのレポート全体またはレポート長のある整数倍のいずれでも読み取ることが選択可能となる。
【0041】
同様に、全てのレポートがレポートIDで始まるのを確実にすることは、後続のデータが常に特定の位置で開始することをクライアントが予期可能となることを意味する。
【0042】
この正規化手順の説明は、読み取り動作を参照して行ったが、書き込み動作においても用いる。HIDデバイスに書き込む場合、要求元クライアントはレポートを供給する。その各々は、均一なサイズであり、HIDデバイスに書き込むべきデータ項目を有する。クラス・ドライバがデバイスに書き込みを行う前に、正規化レポートから余分な長さを削ぎ落とし、デバイスがそのようなレポートIDを予期していない場合、そのIDを除去する。この場合も、クライアント・プログラムは、均一な長さのレポートおよびこれに対応するバッファを利用することができる。
【0043】
データ項目の検索の簡単化
図2のシステムは、パーザ・コンポーネント130を含み、これがクライアント・プログラムに解析サービスを提供する。パーザ130は、動的にロード可能なライブラリ、即ち、「DLL」を用いて実装する。パーザおよびそれに関連する関数は、コンピュータ・メモリ内に常駐する命令によって定めかつ実装するようにし、そしてコンピュータ・プロセッサによって実行する。
【0044】
本発明によるパーザの一例の特定のインターフェースおよびインターフェース関数については、本願の一部をなすAppendix Aに詳細に記述してある。Appendixは、“Windows NT HID Client Design Guide"の表題を有し、Windows NTオペレーティング・システム上における本発明の現在の実現例について記述している。これは、本発明の現実施形態に実装する種々の関数を含んでいる。本発明に最も関連深い関数については、図4を参照しながら、機能的および概念的にここで説明する。
【0045】
図4は、クライアント・プログラム102およびパーザ130を示す。パーザ130は、クライアント・プログラム102により従来の手段を通じてコールが可能な複数のインターフェース関数を定める即ち露出(expose)する。このような関数は、図4において、パーザ・ブロック130に至る線を付した円で示してある。これらの関数は、記述子解析関数132、1つ以上の項目検索関数133,および集合体識別関数134を含む。これらの関数は、Cのような高水準コンパイル言語でこれらの関数をプログラムするというように、標準的なプログラミング技法を用いて実装する。各関数は、1つ以上の引数を受け付け、1つ以上の値またはデータ項目を、コール元のプログラムに返す。図4は、本発明の最も関連深い引数を示す。Appendix Aは、関数の引数および返す値のより詳細な仕様を、本発明の実際の実施形態の1つに関連付けて示している。
【0046】
記述子解析関数132は、HIDクラス・ドライバ106から得た、実際のHIDレポート記述子を含む関数引数を受ける。この引数によってコールされたことに応答して、記述子解析関数132は、そのレポート記述子を解析し、そして解析レポート記述子を含むデータ構造を作成する。このデータ構造は、好ましくは、そのデータ構造へのポインタを渡すことによって、クライアント・プログラムに返す。
【0047】
通常、このデータ構造は、生のレポート記述子の拡張バージョンである。このデータ構造は、概略的に、個々のボタン型制御部、値型制御部、またはアレイ状データ項目に対応する、データ項目記述のアレイとして配列する。特定のデータ項目に対応するデータ項目記述は、そのデータ項目を得ることができるレポート、当該レポート内におけるその位置およびサイズ、並びにそのHID特性(物理的最小/最大、論理的最小/最大、単位等を含む)を示す。データ項目記述内のこれ以外の情報には、対応するデータ項目の使用法(ページおよびインデックス)、それがボタンまたは値のどちらに対応するのか、それを個々のデータ項目、ビット・フィールド、またはアレイの一部の内どれとして報告するのか、項目はある集合体の一部であるのか、もしそうであれば、どの集合体(群)か等を含む。
【0048】
解析レポート記述は、特定のデバイスが発生したレポートの最大長、およびレポートIDをそれぞれのレポートに付加すべきか否かについての指示も与える。この情報は、HIDクラス・ドライバ106がその正規化ステップを実行するために用いる。
【0049】
端的に言えば、データ構造の各エレメントは、ある制御部または制御部のアレイの完全な記述を含む。これは、生のレポート記述子とは劇的な対照をなし、生のレポート記述子では、制御記述は、(グローバル変数および状態セーブ/復元コマンドの潜在的な存在によって)それらが発生する前後関係に大きく依存するため、所与のデータ項目の包括的な記述を抽出するには、広範な解析が必要となる。記述子解析関数132が返すデータ構造に用いる正確な配列およびプロトコルは、それがレポートに関して必要な情報を簡潔かつ包括的に明記することを除いて、さほど重要ではない。
【0050】
更に、解析レポート記述において用いる特定の構造は、パーザ自体にのみ意味を有する。レポート記述子は、記述子解析関数132から要求元クライアントに返すが、本発明による項目検索ステップは、パーザ130が実行する関数を他にも必要とし、その中でパーザは解析レポート記述子を利用する。本発明によれば、コール元のクライアント・プログラムは、解析レポート記述を引数として項目検索関数に供給する以外は、解析レポート記述を用いる必要は全くない。
【0051】
項目検索関数133は、クライアント・プログラムがコールして、指定された使用法に対応するデータ項目を検索する。各検索関数133は、
・解析レポート記述(記述子解析関数132を用いて得た)、
・HIDレポート(HIDクラス・ドライバ106から得た)、
・HID使用法仕様、および
・レポート記述子内で参照するHID集合体を指定する、オプションの集合体ID
を含む引数を受け取る。
【0052】
これらの引数に応答して、項目検索関数は、指示されたHIDレポートを検査し、引数内に供給されているのと同じ使用法仕様を有する1つ以上のデータ項目を発見し、そしてそのデータ項目(群)を要求元クライアントに返す。解析レポート記述は、所与の使用法仕様に対応する項目を突き止めるのに使用する。集合体IDが引数に含まれている場合、項目検索関数は、返すデータ項目を、指定されている集合体内のものに限定する。
【0053】
Appendix Aは、“HidP_GetUsages"と名付けた、項目検索インターフェース関数を一例として記述している。これは、ボタン検索関数の一例である。この例におけるHID使用法仕様は、使用法ページのみを含む。この関数は、HIDレポートを探索して、所与の使用法ページ内にある使用法インデックスに対応する各データ項目を求め、そしてHIDレポートがインデックス・アレイを含むかあるいはビット・フィールドを含むかには無関係に、押圧されたHIDボタンに対応する使用法インデックスのアレイを返す。
【0054】
“HidP_GetUsageValue"は、Appendix Aに記述してある項目検索関数の別の例である。この関数では、使用法仕様は、使用法ページおよび使用法インデックス双方から成っている。この関数は、指示されたHIDレポート内を探索して、指定した使用法ページおよび使用法インデックスに対応するデータ項目を求め、そして当該レポート内において発見した場合、このようなデータ項目(この場合、マルチビット値)を返す。
【0055】
“HidP_GetUsageValueArray"は、項目検索関数の更に別の例である。この関数は、使用法ページおよび使用法インデックスを含む引数を受け取り、そして対応する値型データ項目のアレイを返す。この関数は、単一の使用法に対して多数のデータ項目を含む使用法と共に用いる。
【0056】
これらの項目検索関数は全て、正規化HIDレポートを受け取るように定めてある、ということに注意されたい。項目検索関数に渡す解析レポート記述は、正規化レポートに基づいている。また、各項目検索関数は、2つの異なったものの一方を返すことにも注意されたい。即ち、データ項目(群)、または受け取った使用法仕様を有する制御部が、指示したレポートを発生したデバイス上で利用可能か否かを示すエラー・コードの一方である。より具体的には、エラー・コードは、指定した使用法を有する制御部が対象のデバイス上では利用可能でないこと、または当該制御部はそのデバイス上で利用可能であるが、提出したレポートでは利用可能でない(後続のレポートにおいて利用可能である可能性はある)ことのいずれかを示す。
【0057】
パーザ130が露出するインターフェース関数は、更に、集合体識別関数134を含む。この関数は、HID集合体を扱う際にアプリケーション・プログラムを補佐するために設けたものである。先に注記したように、集合体IDは、項目検索関数に対するオプションのパラメータである。集合体IDは、集合体識別関数134を通じて獲得する。
【0058】
集合体識別関数134は、記述子解析関数132を用いることによって既に得ている、解析レポート記述から成る引数を受け取る。この記述に基づいて、本関数は、HID集合体、それらのHID使用法、およびそれらの関係を特定するデータ構造のアレイを返す。このアレイ内の集合体の順序は、各集合体毎に固有の集合体IDを示す。アレイ内の各データ構造は、1つの集合体を表し、そしてその使用法と、およびアレイ内において関連する集合体へのインデックスとを指定する。例えば、データ構造は、親集合体(1つの場合)、兄弟(sibling)の連結リストにおける次の兄弟、および子の連結リストにおける第1の子を参照する。これによって、クライアントはネスト状の集合体の構造を容易に判定することができ、更に、異なった制御部に関連する追加の意味を拾い集めることができる。二重データ項目が利用可能である場合、それらが属する集合体に基づいて、これらを識別することができる。集合体識別関数の具体的な例について、Appendix Aに記述した、“HidP_GetLinkCollectionNodes"関数および“HIDP_LINK_COLLECTION_NODE"構造を参照されたい。
【0059】
これらの関数は、HIDデバイスからデータ項目を検索するプロセスを大幅に簡単化する。本発明によるHIDデータを読み取る方法は、HIDレポート記述子を得、そしてこれを記述子解析関数132を通じてパーザ130に提出する初期ステップを含む。パーザは、その記述子を解析し、レポート記述子に基づいて、解析レポート記述を返すステップを実行する。これらのステップは、初期化シーケンスの間に実行する。
【0060】
HIDデバイスからデータを読み取るために、クライアント・プログラムは、HIDクラス・ドライバ106からHIDレポートを得るステップと、HIDレポート、解析レポート記述、使用法仕様、およびオプションの集合体IDから成る引数を用いて、項目検索関数133をコールするステップと、を実行する。項目検索関数(パーザ130によって実装する)は、指示されたHIDレポートを探索して、この関数に対する引数の中で指示したのと同じ使用法仕様を有する1つ以上のデータ項目を求め、そしてこれらの項目をコール元のクライアント・プログラムに返す。集合体IDを指定する場合、探索は指定されたデータ項目の集合体に限定する。このプロセスは、後続のHIDレポートについて繰り返し、後続の入力データを読み取る。
【0061】
書き込みも上記と同様に行う。パーザは、HIDデバイスに書き込むためのレポートを準備する、1つ以上の項目書き込みインターフェース関数を含む。各項目書き込み関数は、データ項目(または複数のデータ項目)、解析レポート記述、HIDレポート、使用法仕様、およびオプションの集合体IDを含む引数から成る。最初に、HIDレポートをオール・ゼロに初期化する。項目書き込み関数は、このレポート内の適切な場所を決定し、指定した使用法に基づいて、このレポート内にデータ項目を適切に位置付け、フォーマットを行う。集合体IDを指定する場合、データ項目は、その集合体に対して適切に位置付ける。また、項目書き込み関数は、指定した使用法が位置するレポートに対応して、適正なレポートIDをそのレポートに書き込む。次に、この関数はレポートを要求元のクライアント・プログラムに返し、そして要求元のクライアント・プログラムは、このレポートをクラス・ドライバ106を通じて、HIDデバイスに書き込む。多数の使用法を書き込む場合、クライアントは、レポートをHIDデバイスに書き込む前に、同じレポート(異なった使用法を指定する)を用いて項目書き込み関数を数回コールすることができる。但し、指定する使用法が同じレポート内にある場合に限る。それら使用法の内1つが異なったレポートからのものである場合、エラー・コードを返す。加えて、指定した使用法がいずれのレポート内でも利用可能でない場合、またはHIDレポート・フォーマットの制約によって、提出したレポート内に追加の指定した使用法を書き込むことができない場合にも、エラー・コードを返す。
【0062】
結論
本発明は、従来技術に対する著しい改良を与えるものである。従来は、アプリケーション・プログラムが、HIDレポート・データの解読を担当していた。異なったデバイスからのレポートは互いに非常に違っているため、これは非常に難しいタスクであった。しかしながら、本発明を用いれば、多数のHIDデバイスをサポートするために必要な作業は大幅に減少する。一旦初期化が完了したなら、要求元クライアントは、1つのHID使用法より少し多い指定を行うだけでよく、項目検索関数がHIDレポートを解析し、要求された使用法を返す。クライアントによるそれ以上の作業は全くない。クライアントは、データ項目がHIDレポート内においてインデックス・アレイとしてフォーマットされていようが、ビット・フィールドとしてフォーマットされていようが、同じ検索機構を用いる。
【0063】
この機能性の利点は相当なものである。比較的単純なゲーム・プログラムが、ジョイスティックのX値およびY値のみを利用する場合を想定する。従来では、ゲームは、単一のタイプのHIDジョイスティックと共に使用するように構成することができた。あるいは非常に複雑な解析コンポーネントを伴って設計し、いずれのHIDジョイスティックからもどのようにX値およびY値を読み取るのかについて判定を行うことができた。しかしながら、本発明を用いると、ゲームは単にレポートを検索し、次いで項目検索関数からX/Yジョイスティックの使用法を要求すればよい。ゲーム・プログラムの観点からは、今や次の可変のファクタは無関係となる。即ち、ジョイスティックが生成するレポート数、レポートのサイズ、レポートがレポートIDを含むか否か、並びにレポート内におけるデータ項目の配列およびフォーマッティングは無関係である。ゲーム・プログラムはこれらのファクタを全て無視することができ、しかもX/Yジョイスティックの使用法を有するあらゆるHIDジョイスティックを用いても機能する。これは、ジョイスティックが多数の追加制御部を有し、これらがゲーム・プログラムによって用いられない場合にも当てはまる。新しい使用法を備えた追加の制御部を有する新しいジョイスティックでも、このゲーム・プログラムと共に機能する(新しい制御部を利用しない場合でも機能する)。
【0064】
更に、本発明は、アプリケーション・プログラムが最適に利用する制御部よりも少ない制御部を有する新しいデバイスを、アプリケーション・プログラムが扱うための簡単で優雅な方法を提供する。このようなデバイスを接続する場合、項目検索関数は、当該デバイス内に存在しない使用法に対応するデータ項目に対するいずれのクエリにも応答して、エラー値を返す。このとき、アプリケーション・プログラムは、次に、異なった手段によってそれと同等の機能性を与える処置を講ずることができる。
【0065】
同様に、レポートの正規化は、クライアント・プログラムおよびパーザの双方に対して、大きな利点を与える。レポートの正規化のために、クライアントは単一のレポートを容易に読み出すことができる。加えて、このようなサイズ正規化は、データをパーザ関数に渡すのを一層容易にする。一貫性をもってレポートIDをレポートに付加することにより、レポート内のデータ項目のインデックス処理が簡単となり、データは常にレポートの2番目のバイトから始まることとなる。
【0066】
本発明の更に別の利点は、集合体記述が、容易に解読可能なアレイ・フォーマットで、クライアント・プログラムに利用可能となることである。これによって、クライアントは、集合体ノードの簡単化リストを、それらの各使用法と共に得ることができる。更に、これによって、クライアントは、項目検索関数に集合体をオプションとして指定して、要求するデータ項目を一層特定して記述することができる。
【0067】
以上、構造的特徴および/または方法論的ステップに特有の言語で本発明の説明を行ったが、特許請求の範囲で定めた本発明は、必ずしも上述の特定の構造およびステップに限定されるものではないことは理解されよう。これら特定の構造およびステップは、単に、特許を請求する発明を実施する形態の一例として開示したものである。
【図面の簡単な説明】
【図1】本発明のための動作環境の一例のブロック図。
【図2】本発明によるHIDデータ通信システムおよびアーキテクチャを示すブロック図。
【図3】本発明によるHIDレポートの正規化を示すブロック図。
【図4】本発明によるパーザ・インターフェース関数を示すブロック図。
【符号の説明】
20 パーソナル・コンピュータ
100 HIDデバイス
102 クライアント・プログラム
104 HIDトランスポート・レイヤ
106 HIDクラス・ドライバ
108,110 レポート
109,111 正規化したレポート
130 パーザ
132 記述子解析関数
133 項目検索関数
134 集合体識別関数

Claims (43)

  1. コンピュータ・システムであって、
    HIDレポートを与えるデバイス・ドライバであって、前記HIDレポートは、データ項目と、HIDレポート記述子とを含み、前記HIDレポート記述子は前記HIDレポート内のデータ項目の配列を記述し、前記HIDレポート内のデータ項目のフォーマッティングを記述し、前記HIDレポート内のデータ項目の使用法仕様を記述し、および前記HIDレポートを記述する、前記のデバイス・ドライバと、
    前記HIDレポートおよびHIDレポート記述子を要求し、前記デバイス・ドライバから受け取るように構成したHIDクラス・ドライバと、
    クライアント・プログラムによってコール可能な第1インターフェース関数であって、前記クライアント・プログラムから使用法仕様を受け取り、そしてそれに応答して、前記クライアント・プログラムから受け取ったのと同じ使用法仕様を有する1つ以上のデータ項目を、前記HIDレポートから発見して該データ項目を返す、前記の第1インターフェース関数と、
    から成ることを特徴とするコンピュータ・システム。
  2. 請求項1記載のコンピュータ・システムにおいて、前記第1インターフェース関数は、追加的に、前記クライアント・プログラムから前記HIDレポートを受け取ること、を特徴とするコンピュータ・システム。
  3. 請求項1記載のコンピュータ・システムにおいて、前記第1インターフェース関数は、追加的に、前記クライアント・プログラムから前記HIDレポートおよびデータ構造を受け取り、該データ構造は、前記HIDレポート記述子に基づく解析レポート記述を含むこと、を特徴とするコンピュータ・システム。
  4. 請求項1記載のコンピュータ・システムにおいて、前記第1インターフェース関数は、追加的に、集合体識別子を受け取り、そしてそれに応答して、前記集合体識別子が指定するHID集合体内のデータ項目に、前記データ項目を限定すること、を特徴とするコンピュータ・システム。
  5. 請求項1記載のコンピュータ・システムであって、更に、前記HIDレポート記述子を受け取り、そしてそれに応答して解析レポート記述を含むデータ構造を返す第2インターフェース関数を備えており、前記第1インターフェース関数は、追加的に、該データ構造を受け取り、該データ構造を用いて前記データ項目を発見すること、を特徴とするコンピュータ・システム。
  6. 請求項1記載のコンピュータ・システムであって、更に、前記クライアント・プログラムから前記HIDレポート記述子を受け取り、そしてそれに応答して、解析レポート記述を含むデータ構造を返す第2インターフェース関数を備えており、前記第1インターフェース関数は、追加的に、前記データ構造を受け取り、該データ構造を用いて前記データ項目を発見すること、を特徴とするコンピュータ・システム。
  7. 請求項1記載のコンピュータ・システムにおいて、前記HIDレポート内に、受け取った使用法仕様を有するデータ項目がない場合に、前記第1インターフェース関数はエラー・コードを返し、前記HIDレポートは、1つの特定のデバイスが発生したものであり、前記エラー・コードは、前記受け取った使用法仕様を有する制御部が、前記特定のデバイス上において利用可能であるか否かについて示すこと、を特徴とするコンピュータ・システム。
  8. 請求項1記載のコンピュータ・システムであって、更に、 前記クライアント・プログラムから前記HIDレポート記述子を受け取り、そしてそれに応答して、解析レポート記述を含むデータ構造を返す第2インターフェース関数を備えており、前記第1インターフェース関数は、追加的に、該データ構造を受け取り、該データ構造を用いて前記データ項目を発見し、
    前記HIDレポート内に、前記受け取った使用法仕様を有するデータ項目がない場合に、前記第1インターフェース関数はエラー・コードを返し、前記HIDレポートは、1つの特定のデバイスが発生したものであり、前記エラー・コードは、前記受け取った使用法仕様を有する制御部が、前記特定のデバイス上において利用可能であるか否かについて示すこと、を特徴とするコンピュータ・システム。
  9. 請求項1記載のコンピュータ・システムにおいて、前記HIDクラス・ドライバは、更に、特定のHIDデバイスからのHIDレポートのサイズを均一化することによって、該HIDレポートを正規化するように構成したこと、を特徴とするコンピュータ・システム。
  10. 請求項1記載のコンピュータ・システムにおいて、前記HIDクラス・ドライバは、更に、レポートIDをまだ有していないあらゆるHIDレポートにレポートIDを付加しかつ特定のHIDデバイスからのHIDレポートのサイズを均一化することによって、HIDレポートを正規化するように構成したこと、を特徴とするコンピュータ・システム。
  11. 請求項1記載のコンピュータ・システムにおいて、前記受け取った使用法仕様は、使用法ページを識別し、前記返すデータ項目は、前記HIDレポートがインデックス・アレイまたはビット・フィールドのどちらを含むかには無関係に、押圧されたHIDボタンに対応する使用法インデックスのアレイから成ること、を特徴とするコンピュータ・システム。
  12. 請求項1記載のコンピュータ・システムにおいて、前記返すデータ項目は、複数のHID値を含むこと、を特徴とするコンピュータ・システム。
  13. 請求項1記載のコンピュータ・システムであって、更に、HIDレポート記述子に基づいて、HID集合体およびそれらの相互関係を指定するデータ構造のアレイを返す第2インターフェース関数を備えること、を特徴とするコンピュータ・システム。
  14. 請求項1記載のコンピュータ・システムであって、更に、HIDレポート記述子に基づいて、HID集合体およびそれらの相互関係を指定するデータ構造のアレイを返す第2インターフェース関数を備えており、前記第1インターフェース関数は、追加的に、集合体識別子を受け取り、そしてそれに応答して前記集合体識別子が指定するHID集合体内において前記データ項目を発見すること、を特徴とするコンピュータ・システム。
  15. 請求項1記載のコンピュータ・システムにおいて、前記デバイス・ドライバは、HIDレポートのHIDデバイスへの書き込みも行い、更に、データ項目および使用法仕様を受け入れ、そしてそれに応答して、前記データ項目をHIDレポート内に位置付けしかつフォーマットし、HIDデバイスに書き込む第2インターフェース関数を備えていること、を特徴とするコンピュータ・システム。
  16. HIDデバイスを有するコンピュータ・システムにおいて、第1インターフェース関数を定めるコンピュータ実行可能な命令を備えるコンピュータ読取可能記憶媒体であって、前記HIDデバイスは、データ項目を含むHIDレポートと、HIDレポート記述子とを与え、前記HIDレポート記述子は、前記HIDレポート内のデータ項目の配列を記述し前記HIDレポート内のデータ項目のフォーマッティングを記述し前記HIDレポート内のデータ項目の使用法仕様を記述し、および前記HIDレポートを記述し、前記第1インターフェース関数は、1つのHIDレポートおよび1つの使用法仕様をクライアント・プログラムから受け取り、そしてそれに応答して、前記クライアント・プログラムから受け取ったのと同じ使用法仕様を有する1つ以上のデータ項目を前記HIDレポートから発見し、該データ項目を返すこと、を特徴とするコンピュータ読取可能記憶媒体。
  17. 請求項16記載のコンピュータ読取可能記憶媒体において、前記第1インターフェース関数は、追加的に、前記クライアント・プログラムからの前記HIDレポート記述子に基づく解析レポート記述を受け取ること、を特徴とするコンピュータ読取可能記憶媒体。
  18. 請求項16記載のコンピュータ読取可能記憶媒体において、前記第1インターフェース関数は、追加的に、集合体識別子を受け取り、そしてそれに応答して、前記集合体識別子が指定するHID集合体内のデータ項目に、前記返すデータ項目を限定すること、を特徴とするコンピュータ読取可能記憶媒体。
  19. 請求項16記載のコンピュータ読取可能記憶媒体において、前記命令は、前記HIDレポート記述子を受け取り、そしてそれに応答して、解析レポート記述を返す第2インターフェース関数を定め、前記第1インターフェース関数は、追加的に、前記解析レポート記述を受け取り、該解析レポート記述を用いて前記データ項目を発見すること、を特徴とするコンピュータ読取可能記憶媒体。
  20. 請求項16記載のコンピュータ読取可能記憶媒体において、前記第1インターフェース関数は、前記受け取ったHIDレポート内に、受け取った使用法仕様を有するデータ項目がない場合に、エラー・コードを返し、前記HIDレポートは、特定のデバイスが発生したものであり、前記エラー・コードは、前記受け取った使用法仕様を有する制御部が、前記特定のデバイス上において利用可能であるか否かについて指示すること、を特徴とするコンピュータ読取可能記憶媒体。
  21. 請求項16記載のコンピュータ読取可能記憶媒体において、前記命令は、前記HIDレポート記述子を受け取り、そしてそれに応答して、解析レポート記述を含むデータ構造を返す第2インターフェース関数を定め、該第1インターフェース関数は、追加的に、前記データ構造を受け取り、該データ構造を用いて前記データ項目を発見し、
    前記指定のHIDレポート内に、受け取った使用法仕様を有するデータ項目がない場合に、前記第1インターフェース関数はエラー・コードを返し、前記指定のHIDレポートは、特定のデバイスが発生したものであり、前記エラー・コードは、前記受け取った使用法仕様を有する制御部が、前記特定のデバイス上において利用可能であるか否かについて指示すること、を特徴とするコンピュータ読取可能記憶媒体。
  22. 請求項16記載のコンピュータ読取可能記憶媒体において、前記受け取った使用法仕様は、使用法ページを識別し、前記返すデータ項目は、前記指定のHIDレポートがインデックス・アレイまたはビット・フィールドのどちらを含むかには無関係に、押圧されたHIDボタンに対応する使用法インデックスのアレイから成ること、を特徴とするコンピュータ読取可能記憶媒体。
  23. 請求項16記載のコンピュータ読取可能記憶媒体において、前記返すデータ項目は、複数のHID値を含むこと、を特徴とするコンピュータ読取可能記憶媒体。
  24. 請求項16記載のコンピュータ読取可能記憶媒体において、前記命令は、HIDレポート記述子に基づいて、HID集合体およびそれらの相互関係を指定するデータ構造のアレイを返す第2インターフェース関数を定めること、を特徴とするコンピュータ読取可能記憶媒体。
  25. 請求項16記載のコンピュータ読取可能記憶媒体において、前記命令は、HIDレポート記述子に基づいて、HID集合体およびそれらの相互関係を指定するデータ構造のアレイを返す第2インターフェース関数を定め、前記第1インターフェース関数は、追加的に、集合体識別子を受け取り、そしてそれに応答して、前記集合体識別子が指定するHID集合体内のデータ項目に、返すデータ項目を限定すること、を特徴とするコンピュータ読取可能記憶媒体。
  26. 請求項16記載のコンピュータ読取可能記憶媒体において、前記命令は、データ項目および使用法仕様を受け入れ、そしてそれに応答して、HIDデバイスに書き込むため、前記データ項目をHIDレポート内に位置付けかつフォーマットする第2インターフェース関数を定めること、を特徴とするコンピュータ読取可能記憶媒体。
  27. HIDデータ項目を読み取る方法であって、
    HIDレポート記述子であって、関連するHIDレポートを記述し、このHIDレポート内のデータ項目の配列を記述し、HIDレポート内のデータ項目のフォーマッティングを記述し、およびHIDレポート内のデータ項目の使用法仕様を記述する前記のHIDレポート記述子を得るステップと、
    インターフェースを通じて前記HIDレポート記述子をパーザに提出するステップと、
    前記パーザが、前記HIDレポート記述子を解析し、そして前記HIDレポート記述子に基づく解析レポート記述を返すステップを実行するステップと、
    前記HIDレポート記述子が記述したデータ項目を含むHIDレポートを得るステップと、
    前記HIDレポート、前記解析レポート記述、および使用法仕様を含む引数を用いて、第1インターフェース関数をコールするステップと、
    前記第1インターフェース関数が、該第1インターフェース関数に対する引数において指定されたのと同じ使用法仕様を有する1つ以上のデータ項目を前記解析レポート記述に基づいて、前記HIDレポートから発見し、そして該データ項目を返すステップと、から成る方法。
  28. 請求項27記載の方法において、前記第1インターフェース関数は、前記HIDレポート内に前記1つ以上のデータ項目を発見できない場合、エラー・コードを返し、該エラー・コードは、前記使用法仕様を有する制御部が、前記HIDレポート記述子が記述するレポート内において利用可能であるか否かについて指示すること、を特徴とする方法。
  29. 請求項27記載の方法であって、更に、特定のHIDデバイスからのHIDレポートのサイズを均一化することによって、該HIDレポートを正規化するステップを含むこと、を特徴とする方法。
  30. 請求項27記載の方法であって、更に、レポートIDをまだ有していないあらゆるHIDレポートにレポートIDを付加し、特定のHIDデバイスからのHIDレポートのサイズを均一化することによって、HIDレポートを正規化するステップを含むこと、を特徴とする方法。
  31. 請求項27記載の方法において、前記第1インターフェース関数に対する引数は、集合体識別子を含み、前記方法が、更に、前記集合体識別子が指定するHID集合体内のデータ項目に、前記返すデータ項目を限定するステップを含むこと、を特徴とする方法。
  32. 請求項27記載の方法であって、更に、 前記解析レポート記述を含む引数を用いて、第2インターフェース関数をコールするステップと、
    前記第2インターフェース関数が、HID集合体およびこれらの相互関係を指定するデータ構造のアレイを返すステップと、
    を含み、
    前記第1インターフェース関数の引数は、更に、集合体識別子を含み、
    前記第1インターフェース関数は、前記集合体識別子が指定するHID集合体内のデータ項目に、前記返すデータ項目を限定すること、
    を特徴とする方法。
  33. 請求項27記載の方法において、前記使用法仕様は使用法ページであり、前記返すデータ項目は複数のHID値を含むこと、を特徴とする方法。
  34. 請求項27記載の方法において、前記使用法仕様はユーザ・ページであり、前記返すデータ項目は、HIDレポートがインデックス・アレイまたはビット・フィールドのどちらを含むかには無関係に、押圧されたHIDボタンに対応する使用法インデックスのアレイから成ること、を特徴とする方法。
  35. HIDデバイスを有するコンピュータ・システムにおいてコール可能な1組のインターフェース関数を定めるコンピュータ実行可能な命令を備えたコンピュータ読取可能記憶媒体であって、前記HIDデバイスは、データ項目を含むHIDレポートと、および該HIDレポートを記述し、該HIDレポート内のデータ項目の配列を記述し、該HIDレポート内のデータ項目のフォーマッティングを記述し、該HIDレポート内のデータ項目の使用法仕様とを記述するHIDレポート記述子とを提供し
    前記命令により定められる前記1組のインターフェース関数は、
    HIDレポート記述子を含む関数引数を受け取り、そしてそれに応答して、前記HIDレポート記述子を解析し、前記HIDレポート記述子に基づく解析レポート記述を返す記述子解析関数と、
    HIDレポート、前記解析レポート記述、および使用法仕様から成る関数引数を受け取る1つ以上の項目検索関数であって、該項目検索関数に対する引数内で供給したのと同じ使用法仕様を有する1つ以上のデータ項目を前記解析レポート記述に基づいて、前記HIDレポートから発見し、該データ項目を返す、前記1つ以上の項目検索関数と、から成ること、を特徴とするコンピュータ読取可能記憶媒体。
  36. 請求項35記載のコンピュータ読取可能記憶媒体において、前記項目検索関数は、ボタン検索関数を備えており、前記使用法仕様が使用法ページを含み、前記ボタン検索関数は、前記HIDレポートがインデックス・アレイまたはビット・フィールドのどちらを含むかには無関係に、押圧されたHIDボタンに対応する使用法インデックスのアレイを返すこと、を特徴とするコンピュータ読取可能記憶媒体。
  37. 請求項35記載のコンピュータ読取可能記憶媒体において、前記項目検索関数が値検索関数を備えており、前記使用法仕様が使用法ページおよび使用法インデックスを含み、前記値検索関数は、前記使用法仕様に対応するHID値を返すこと、を特徴とするコンピュータ読取可能記憶媒体。
  38. 請求項35記載のコンピュータ読取可能記憶媒体において、前記項目検索関数は、前記使用法仕様に対応するHID値のアレイを返すこと、を特徴とするコンピュータ読取可能記憶媒体。
  39. 請求項35記載のコンピュータ読取可能記憶媒体において、前記項目検索関数は、
    前記HIDレポートがインデックス・アレイまたはビット・フィールドのどちらを含むかには無関係に、押圧されたHIDボタンに対応する使用法インデックスのアレイを返すボタン検索関数と、
    1つ以上のHID値を返す値検索関数と、
    を備えること、を特徴とするコンピュータ読取可能記憶媒体。
  40. 請求項35記載のコンピュータ読取可能記憶媒体において、前記コンピュータ実行可能命令によって定めた前記1組のインターフェース関数は、更に、前記解析レポート記述を含む関数引数を受け取り、そしてそれに応答して、HID集合体およびそれらの相互関係を指定するデータ構造のアレイを返す集合体識別関数を定めること、を特徴とするコンピュータ読取可能記憶媒体。
  41. 請求項35記載のコンピュータ読取可能記憶媒体において、前記コンピュータ実行可能命令によって定めた前記1組のインターフェース関数は、更に、前記解析レポート記述子を含む関数引数を受け取り、そしてそれに応答して、HID集合体およびそれらの相互関係を指定するデータ構造のアレイを返す集合体識別関数を定め、
    前記項目検索関数が受け取った前記引数は、オプションの集合体識別子を含み、
    このような集合体識別子を与えた場合、前記項目検索関数は、前記集合体識別子が指定するHID集合体内のデータ項目に、前記返すデータ項目を限定すること、
    を特徴とするコンピュータ読取可能記憶媒体。
  42. 請求項35記載のコンピュータ読取可能記憶媒体において、前記コンピュータ実行可能命令が定める前記1組のインターフェース関数は、更に、1つ以上のデータ項目および使用法仕様を含む関数引数を受け取る1つ以上の項目書き込み関数を定め、前記1つ以上の項目書き込み関数は、HIDデバイスに書き込むため、前記データ項目をHIDレポート内に位置付けかつフォーマットすること、を特徴とするコンピュータ読取可能記憶媒体。
  43. 請求項35記載のコンピュータ読取可能記憶媒体において、前記項目検索関数は、サイズを正規化したHIDレポートを受け取るように定めたこと、を特徴とするコンピュータ読取可能記憶媒体。
JP22262998A 1997-08-06 1998-08-06 Hidデバイスとの通信を簡単化する方法およびアーキテクチャ Expired - Lifetime JP4298817B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US907200 1997-08-06
US08/907,200 US6311228B1 (en) 1997-08-06 1997-08-06 Method and architecture for simplified communications with HID devices

Publications (2)

Publication Number Publication Date
JPH11194988A JPH11194988A (ja) 1999-07-21
JP4298817B2 true JP4298817B2 (ja) 2009-07-22

Family

ID=25423683

Family Applications (1)

Application Number Title Priority Date Filing Date
JP22262998A Expired - Lifetime JP4298817B2 (ja) 1997-08-06 1998-08-06 Hidデバイスとの通信を簡単化する方法およびアーキテクチャ

Country Status (5)

Country Link
US (1) US6311228B1 (ja)
JP (1) JP4298817B2 (ja)
DE (1) DE19835647A1 (ja)
FR (1) FR2767210B1 (ja)
GB (1) GB2330225B (ja)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7116310B1 (en) * 1999-04-06 2006-10-03 Microsoft Corporation Application programming interface that maps input device controls to software actions
US6965368B1 (en) * 1999-04-06 2005-11-15 Microsoft Corporation Game control device having genre data
US6895588B1 (en) * 1999-04-09 2005-05-17 Sun Microsystems, Inc. Remote device access over a network
US6628607B1 (en) 1999-07-09 2003-09-30 Apple Computer, Inc. Method and apparatus for loop breaking on a serial bus
US6691096B1 (en) 1999-10-28 2004-02-10 Apple Computer, Inc. General purpose data container method and apparatus for implementing AV/C descriptors
US6959343B1 (en) 1999-11-01 2005-10-25 Apple Computer, Inc. Method and apparatus for dynamic link driver configuration
US6671768B1 (en) 1999-11-01 2003-12-30 Apple Computer, Inc. System and method for providing dynamic configuration ROM using double image buffers for use with serial bus devices
US6618750B1 (en) 1999-11-02 2003-09-09 Apple Computer, Inc. Method and apparatus for determining communication paths
US8762446B1 (en) * 1999-11-02 2014-06-24 Apple Inc. Bridged distributed device control over multiple transports method and apparatus
US6813663B1 (en) 1999-11-02 2004-11-02 Apple Computer, Inc. Method and apparatus for supporting and presenting multiple serial bus nodes using distinct configuration ROM images
US6631426B1 (en) 1999-11-02 2003-10-07 Apple Computer, Inc. Automatic ID allocation for AV/C entities
US6587904B1 (en) 1999-11-05 2003-07-01 Apple Computer, Inc. Method and apparatus for preventing loops in a full-duplex bus
US6636914B1 (en) * 1999-11-05 2003-10-21 Apple Computer, Inc. Method and apparatus for arbitration and fairness on a full-duplex bus using dual phases
US6457086B1 (en) 1999-11-16 2002-09-24 Apple Computers, Inc. Method and apparatus for accelerating detection of serial bus device speed signals
US7266617B1 (en) 2000-01-18 2007-09-04 Apple Inc. Method and apparatus for border node behavior on a full-duplex bus
US6639918B1 (en) 2000-01-18 2003-10-28 Apple Computer, Inc. Method and apparatus for border node behavior on a full-duplex bus
US7421507B2 (en) 2000-02-16 2008-09-02 Apple Inc. Transmission of AV/C transactions over multiple transports method and apparatus
US6831928B1 (en) 2000-02-17 2004-12-14 Apple Computer, Inc. Method and apparatus for ensuring compatibility on a high performance serial bus
US7050453B1 (en) 2000-02-17 2006-05-23 Apple Computer, Inc. Method and apparatus for ensuring compatibility on a high performance serial bus
US6643721B1 (en) * 2000-03-22 2003-11-04 Intel Corporation Input device-adaptive human-computer interface
US6618785B1 (en) 2000-04-21 2003-09-09 Apple Computer, Inc. Method and apparatus for automatic detection and healing of signal pair crossover on a high performance serial bus
US6718497B1 (en) 2000-04-21 2004-04-06 Apple Computer, Inc. Method and apparatus for generating jitter test patterns on a high performance serial bus
US20050078089A1 (en) * 2002-01-23 2005-04-14 Wen-Hsiu Kuo Computer mouse with multimedia hotkeys and processing method thereof
US20030204654A1 (en) * 2002-04-26 2003-10-30 Nathan Robert H. Keyboard lock data transfer
KR100464349B1 (ko) * 2002-08-08 2005-01-03 삼성전자주식회사 디바이스 드라이버 제어 공통화 방법
US7139761B2 (en) * 2002-12-11 2006-11-21 Leader Technologies, Inc. Dynamic association of electronically stored information with iterative workflow changes
US7222348B1 (en) 2002-12-16 2007-05-22 Unisys Corporation Universal multi-path driver for storage systems
US7417973B1 (en) 2002-12-31 2008-08-26 Apple Inc. Method, apparatus and computer program product for ensuring node participation in a network bus
US7457302B1 (en) 2002-12-31 2008-11-25 Apple Inc. Enhancement to loop healing for malconfigured bus prevention
JP2004213430A (ja) * 2003-01-06 2004-07-29 Sankyo Seiki Mfg Co Ltd Hid仕様のusb通信方法およびhid仕様のusb通信回線を有するコンピュータ・システム
US7194662B2 (en) 2003-02-28 2007-03-20 International Business Machines Corporation Method, apparatus and program storage device for providing data path optimization
US7668099B2 (en) 2003-06-13 2010-02-23 Apple Inc. Synthesis of vertical blanking signal
US7353284B2 (en) 2003-06-13 2008-04-01 Apple Inc. Synchronized transmission of audio and video data from a computer to a client via an interface
US8275910B1 (en) 2003-07-02 2012-09-25 Apple Inc. Source packet bridge
US7167934B1 (en) 2003-09-09 2007-01-23 Microsoft Corporation Peripheral device data transfer protocol
US8151280B2 (en) * 2003-10-27 2012-04-03 Microsoft Corporation Simple and dynamic configuration of network devices
US7788567B1 (en) 2003-11-18 2010-08-31 Apple Inc. Symbol encoding for tolerance to single byte errors
US7995606B1 (en) 2003-12-03 2011-08-09 Apple Inc. Fly-by and ack-accelerated arbitration for broadcast packets
US7237135B1 (en) 2003-12-29 2007-06-26 Apple Inc. Cyclemaster synchronization in a distributed bridge
US7308517B1 (en) 2003-12-29 2007-12-11 Apple Inc. Gap count analysis for a high speed serialized bus
US7660611B1 (en) * 2004-03-25 2010-02-09 Cypress Semiconductor Corporation Wireless human interface device packet compression system and method for reducing power consumption
US7356635B2 (en) * 2004-09-24 2008-04-08 Cypress Semiconductor Corp. Compressed report descriptors for USB devices
CN100409150C (zh) * 2006-09-07 2008-08-06 北京飞天诚信科技有限公司 一种提高hid设备通讯速度的方法
KR101355779B1 (ko) 2006-12-19 2014-01-24 엘지전자 주식회사 휴대용 단말기기 및 이의 호스트 제어방법
US20090037610A1 (en) * 2007-07-31 2009-02-05 Krancher Robort E Electronic device interface control system
US8260985B2 (en) * 2007-10-05 2012-09-04 Pano Logic, Inc. Universal serial bus assistance engine
CN101655823B (zh) * 2009-06-12 2012-12-19 中兴通讯股份有限公司 免安装数据卡驱动的实现方法、操作方法及系统
JP2012014426A (ja) 2010-06-30 2012-01-19 Optoelectronics Co Ltd データ送信方法及びデータ送信システム
US9787725B2 (en) 2011-01-21 2017-10-10 Qualcomm Incorporated User input back channel for wireless displays
US9413803B2 (en) * 2011-01-21 2016-08-09 Qualcomm Incorporated User input back channel for wireless displays
US10135900B2 (en) 2011-01-21 2018-11-20 Qualcomm Incorporated User input back channel for wireless displays
US8521942B2 (en) 2011-03-21 2013-08-27 Microsoft Corporation HID over simple peripheral buses
CN102331943B (zh) * 2011-09-08 2014-09-17 威盛电子股份有限公司 在线更新存储器系统与方法
US9106651B2 (en) * 2011-09-19 2015-08-11 Qualcomm Incorporated Sending human input device commands over internet protocol
US8725916B2 (en) * 2012-01-07 2014-05-13 Microsoft Corporation Host side implementation for HID I2C data bus
CN114253892B (zh) * 2021-12-20 2023-02-07 深圳市拔超科技股份有限公司 一种usb hid信号延长传输方法及系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5475836A (en) * 1987-04-01 1995-12-12 Lotus Development Corporation Interface for providing access to external data sources/sinks
EP0419064A3 (en) * 1989-09-22 1992-08-05 International Business Machines Corporation Computer system having apparatus for providing pointing device independent support in an operating environment
US5265252A (en) * 1991-03-26 1993-11-23 International Business Machines Corporation Device driver system having generic operating system interface
JPH0573195A (ja) * 1991-07-18 1993-03-26 Personal Joho Kankyo Kyokai 操作方法変換装置
FR2696258B1 (fr) * 1992-09-25 1994-10-28 Sextant Avionique Dispositif de gestion d'un système d'interaction homme-machine.
US5375241A (en) * 1992-12-21 1994-12-20 Microsoft Corporation Method and system for dynamic-link library
US5581461A (en) * 1993-02-08 1996-12-03 Itt Sheraton Corporation Computerized system and method for storage, processing and transfer of inventory and other data among a central processor/database and a number of remote locations
US5526358A (en) * 1994-08-19 1996-06-11 Peerlogic, Inc. Node management in scalable distributed computing enviroment
US5727212A (en) * 1995-04-12 1998-03-10 International Business Machines Corporation Object oriented device driver system for procedural device drivers
US5926636A (en) * 1996-02-21 1999-07-20 Adaptec, Inc. Remote procedural call component management method for a heterogeneous computer network
US5974234A (en) * 1997-04-15 1999-10-26 Xerox Corporation Centralized print server for interfacing one or more network clients with a plurality of printing devices
US6014511A (en) * 1997-08-29 2000-01-11 Intel Corporation O/S abstraction architecture for HID PC applications
US6085265A (en) * 1998-01-09 2000-07-04 Toshiba America Information Systems, Inc. System for handling an asynchronous interrupt a universal serial bus device

Also Published As

Publication number Publication date
GB2330225A (en) 1999-04-14
US6311228B1 (en) 2001-10-30
GB2330225B (en) 1999-09-29
JPH11194988A (ja) 1999-07-21
GB9816523D0 (en) 1998-09-30
FR2767210B1 (fr) 2005-05-27
DE19835647A1 (de) 1999-02-11
FR2767210A1 (fr) 1999-02-12

Similar Documents

Publication Publication Date Title
JP4298817B2 (ja) Hidデバイスとの通信を簡単化する方法およびアーキテクチャ
US9690554B2 (en) Unified data type system and method
US7849179B2 (en) System and program for managing devices in a network
US6738968B1 (en) Unified data type system and method
US7356546B2 (en) System and method for object persistence in a database store
US7475082B1 (en) Pluggable formatters
JP2000347873A (ja) マルチプラットフォーム環境における命令選択
JP5047621B2 (ja) 対話環境における構文への制約を入手し適用する機構
US20100146013A1 (en) Generalised self-referential file system and method and system for absorbing data into a data store
JP2008535081A (ja) 開発者がシステム上の周知のロケーションを容易に発見し、または拡張するための能力
JP2007519073A (ja) 管理用ツール環境
JP2007509407A (ja) コマンドライン命令への拡張機能を提供する機構
EP1652043B1 (en) System and method for common storage object model
US20120173575A1 (en) Record Based Code Structure
JP2007510203A (ja) 部分的に未解決の入力を分析する機構
US20080114735A1 (en) Systems and methods for managing information
US6708310B1 (en) Method and system for implementing user-defined codeset conversions in a computer system
Coupaye Wrapping SRS with CORBA: from textual data to distributed objects.
US8856731B2 (en) Scalable language infrastructure for electronic system level tools
Schiebel et al. The Glish 2.6 User Manual
WO2023249775A1 (en) System and method for scalable data processing operations
Deshev Pro Windows PowerShell
Rudd Practical usage of MVS REXX
Eng et al. Building CyberBroker in Digital marketplaces using Java and CORBA
HDF_SD_NAMETOINDEX Version History

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20050615

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050615

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20050615

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20050615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080516

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080818

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090324

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090416

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120424

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120424

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130424

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130424

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140424

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term