JP4818640B2 - サポートされていないデバイスのためのプラグアンドプレイ機能 - Google Patents

サポートされていないデバイスのためのプラグアンドプレイ機能 Download PDF

Info

Publication number
JP4818640B2
JP4818640B2 JP2005142844A JP2005142844A JP4818640B2 JP 4818640 B2 JP4818640 B2 JP 4818640B2 JP 2005142844 A JP2005142844 A JP 2005142844A JP 2005142844 A JP2005142844 A JP 2005142844A JP 4818640 B2 JP4818640 B2 JP 4818640B2
Authority
JP
Japan
Prior art keywords
operating system
application
event
devices
pos
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 - Fee Related
Application number
JP2005142844A
Other languages
English (en)
Other versions
JP2006012128A (ja
JP2006012128A5 (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 JP2006012128A publication Critical patent/JP2006012128A/ja
Publication of JP2006012128A5 publication Critical patent/JP2006012128A5/ja
Application granted granted Critical
Publication of JP4818640B2 publication Critical patent/JP4818640B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • G06F9/4413Plug-and-play [PnP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Cash Registers Or Receiving Machines (AREA)

Description

本発明は、オペレーティングシステムにサポートされていないデバイスのためのプラグアンドプレイ(PnP)機能を提供することに関する。
過去数十年間、小売業でデバイスを使用する方法は、ほとんど変化していない。今日における小売業向けデバイスをインストールする経験は、プラグアンドプレイ(plug and play)の出現以前におけるPCにデバイスをインストールする経験と同様である。
デバイスをインストールしようとするとき、デバイスのポートが、ネットワークカード、モデム、マウス、および他のネットワークカードの間で競合することがよくある。小売業者が、「箱を開き、デバイスを配置し、ジャンパ(jumper)設定を変更する」か、または何らかのユーザに分かりにくい同様の処置を行わなければならないことが大変に多い。これらのデバイスのインストールは、困難で時間がかかるものとなり得る。
簡潔に述べると、本発明は、オペレーティングシステムにサポートされていないデバイスのためのプラグアンドプレイ(PnP)機能を提供することに関する。
本発明の一態様では、サポートされていないデバイスは、インストールされるときにオペレーティングシステムに検出される。このインストールに応答して、オペレーティングシステムは、このイベントを、ユーザモードで常駐しているデバイスマネージャアプリケーションに送る。インストールイベントを受け取ると、デバイスマネージャアプリケーションは、追加されたデバイスを決定し、サポートのための構成エントリおよびソフトウェアを自動的にインストールする。例えば、デバイスマネージャアプリケーションは、自動的に、レジストリを更新し、そのデバイスに対するサポートバイナリ(support binary)をインストールする。デバイスがインストールされた後、小売業向けデバイスは、どんなプログラミング変更も必要とせずに、アプリケーションからアクセスすることができる。
本発明の他の態様では、PnPイベントは、共通コントロールライブラリ(common control library)(CCL)を介して、小売業向けアプリケーションに公開される。このライブラリは、ドライバにアクセスするためのジェネリックインターフェースを提供することを目的としている。登録されたアプリケーションは、CCLを使用して、デバイスに関連するイベントを受け取ることができる。
本発明のさらに別の態様では、小売業向けデバイスの制御に使用されるCCLは、カーネルモードではなくユーザモードにおいて動作する。
本発明は、オペレーティングシステムによってサポートされていない小売業向けデバイスならびに他のデバイスのユーザが、「プラグアンドプレイ」と同様の体験をできるようにすることを目的とする、サポートされていないデバイスがインストールされるとき、オペレーティングシステムは、ユーザモードで稼動しているデバイスマネージャアプリケーションに、PnPイベントなどのイベントを送り、それにより、共通制御ライブラリ(CCL)を介してアプリケーションがデバイスにアクセスすることを可能にする。CCLライブラリは、サポートされていないデバイスのためのアプリケーションおよびサービスオブジェクトを書くことを著しく単純化し、製品の互換性および品質を改善し、コストを削減することを目的としている。
本発明の一実施形態では、UPOS(POS統一規格(Unified Point of Service))V1.8の仕様書で定義された小売業向けデバイスの分類法に従う。その仕様書については、ウェブサイトから入手することができる(www.nrf-arts.org)。UPOSによってサポートされる小売業向けデバイスのうちには、バンプバー(bump bar)、自動釣り銭機(cash changer)、キャッシュドロワー(cash drawer)、CAT(credit authorization terminal)、コインディスペンサ(coin dispenser)、フィスカルプリンタ(fiscal printer)、ハードトータル(hard totals)、キーロック(keylock)、バーコードスキャナ(bar code scanner)、トーンインジケータ(tone indicator)、動作検出器(motion detectors)、ラインディスプレイ(line display)、MICR(磁気インクリーダ)(magnetic ink character recognition reader)、磁気ストライプリーダ(magnetic stripe reader)、PINパッド(PIN pad)、ポイントカード機(point card)、POSキーボード(POS keyboard)、POSプリンタ(POS printer)、リモートオーダーディスプレイ(remote order display)、秤(scale)、シグニチャキャプチャ(signature capture)、および、チェックイメージスキャナ(check image scanners)が含まれる。本発明は、小売業向けデバイスをサポートすることだけに限定されない。オペレーティングシステムのサポートされるPnPデバイスのリストに含まれない任意のデバイスが、サポートされ得る。
本明細書を通して、以下の用語は、はっきりと文脈において異なる規定をしなければ、次のように定義されているものである。用語「OPOS」は、POS(販売またはサービス時点管理)のためのOLEを指す。用語「UPOS」は、Unified POS(POS統一規格)(the Unified Specification for Point of Sale or Service)を指す。用語「POSクラス周辺機器(POS Class Peripheral)」または「OPOSデバイス」は、UPOS V1.8仕様書で定義された24の異なるデバイスの1つに該当するデバイスの集合体を指す。用語「デバイスクラス」は、整合的な1組のプロパティ、メソッド、およびイベントを共有するPOSデバイスのカテゴリを意味する。例えば、キャッシュドロワーおよびPOSプリンタがその例である。いくつかのデバイスは、2つ以上のデバイスクラスをサポートする。例えば、いくつかのPOSプリンタは、キャッシュドロワーを含む。用語「コントロールオブジェクト(CO)」は、ある特定のデバイスクラスについて、アプリケーションに、1組のプロパティ、メソッド、およびイベントを公開するオブジェクトを指す。用語「サービスオブジェクト(SO)」は、ある特定のデバイスについて、COによって呼び出され、UPOS規定の機能を実装するオブジェクトである。SOは、ネイティブコードを含むCLRによってサポートされる任意の言語で実装することができる。用語「サポートされないデバイス」または「非サポートデバイス」は、基本オペレーティングシステムによってデフォルトでサポートされていない、任意のデバイスを指す。
例示的動作環境
図1を次に参照すると、本発明を実装するための例示的システムは、コンピューティングデバイス100などのコンピューティングデバイスを含む。非常に基本的な構成では、一般に、コンピューティングデバイス100は、少なくとも1つの処理装置102、およびシステムメモリ104を含む。コンピューティングデバイスの正確な構成および型に応じて、システムメモリ104は、揮発性(RAMなど)、または不揮発性(ROM、フラッシュメモリなど)とすることができ、あるいは、この2つの何らかの組み合わせとすることもできる。システムメモリ104は、通常、オペレーティングシステム105、1つまたは複数のプログラムモジュール106を含み、プログラムデータ107を含むこともできる。小売業向けPnPアプリケーション120は、小売業向けデバイスに対するPnP機能を提供することを目的とする。この基本的な構成が、破線108の範囲内のそのコンポーネントによって示されている。
コンピューティングデバイス100は、さらに追加の特徴または機能を有することもできる。例えば、コンピューティングデバイス100は、例えば、磁気ディスク、光ディスク、またはテープなど(リムーバルおよび/または非リムーバルの)追加のデータストレージを含むこともできる。このような追加のストレージは、図1では、リムーバルストレージ109、および非リムーバルストレージ110によって示されている。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するための任意の方法または技術で実装される、揮発性および不揮発性のリムーバルおよび非リムーバルの媒体を含むことができる。システムメモリ104、リムーバルストレージ109、および非リムーバルストレージ110は、コンピュータ記憶媒体すべての例である。コンピュータ記憶媒体は、これだけに限定しないが、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリ技術、あるいは、CDROM、DVD(デジタル多用途ディスク)、または他の光ディスクストレージ、あるいは、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気ディスク記憶装置、あるいは、所望の情報を格納するために使用することができコンピュータ110によってアクセスすることができる他の任意の媒体を含む。このようなコンピュータ記憶媒体のいずれも、デバイス100の一部分となり得る。コンピューティングデバイス100はまた、小売業向けデバイス、キーボード、マウス、ペン、音声入力装置、およびタッチ入力装置などの入力装置112を有することもできる。表示装置、スピーカ、およびプリンタなどの出力装置114を含むこともできる。
コンピューティングデバイス100はまた、ネットワークなどを介して他のコンピューティングデバイス118との通信を可能にする通信接続116を含む。通信接続116は、通信媒体の一例である。通信媒体は、通常、搬送波または他の移送メカニズムなどの変調されたデータ信号として、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを具体化し、また任意の情報送達媒体を含む。用語「変調されたデータ信号」は、信号として情報を符号化するようにセットまたは変更された1つまたは複数の信号特性を有する信号を意味する。限定ではなく例として挙げると、通信媒体は、有線ネットワークまたは直接配線接続などの有線媒体、ならびに、音響、RF、赤外線、および他の無線媒体などの無線媒体を含む。本明細書で使用される用語のコンピュータ可読媒体は、記憶媒体と通信媒体の両方を含む。
小売業向けデバイスのためのプラグアンドプレイ(PnP)
図2は、本発明の態様による、小売業向けPnPシステムの概略的系統図を示す。
小売業向けデバイスに対するPnPサポートは、POSデバイスのインストールおよび保守の作業を単純化する。例えば、エンドユーザは、ユーザのマシンをリブートまたは再構成する必要なしに、単純にPOSデバイスのプラグを抜き、新しいPOSデバイスのプラグを差し込むことによって、新しいデバイスと相互に作用することができる。
一般に、ユーザが、小売業向けデバイス210など非サポートのデバイスをインストールするとき、そのインストールは、オペレーティングシステム220によりPnPイベントとして検出される。しかし、オペレーティングシステム220は、その小売業向けデバイスをサポートしておらず、そのデバイスをインストールするのに必要な知識を有していないため、そのデバイスのインストールを行わない。PnPイベントがあると、PnPマネージャ225は、そのイベントをデバイスマネージャアプリケーション230に送る。デバイスマネージャアプリケーション230は、オペレーティングシステムのカーネルモードではなくユーザモードで常駐するため、オペレーティングシステムに変更を加えることなく、デバイスマネージャ230を修正することができる。初期化の際、デバイスマネージャ230は、オペレーティングシステムから、他の入出力イベントと同様にPnPイベントを受け取るために登録を行う。
オペレーティングシステム220によってデバイスマネージャアプリケーション230に送達されるPnPイベントは、インストールされたデバイスのデバイスIDを含む。デバイスマネージャ230は、受け取ったデバイスIDからデバイスの識別を試みる。このデバイスが、デバイスマネージャ230によってサポートされている場合、デバイスIDは、コンポーネント、レジストリ設定、およびこのデバイスに関連する同様の構成オプションを記述するインストレーションINFファイルにマップを提供する。一実施形態では、デバイスに関連する構成の設定は、設定ファイル(245)に格納される。一実施形態では、構成ファイルは、XMLとして格納され、デバイスをどのように構成すべきかに関する命令を含む。この文脈における構成(configuration)は、どんなサービスオブジェクト(SO)が、どのデバイスにマップされるのかを示す識別情報を意味する。XMLファイルに含まれる情報は、デバイスID、デバイスクラス、IHV名、SO名、SO GUID、デバイスの特殊プロパティ(ポート速度、マルチヘッド(multi−headed)デバイスなど)、および、デバイス管理用のUIを立ち上げるためのエントリポイントなどを含む。デバイスの最終の既知の状態も、デバイス構成の一部として保存され得る。この最終の既知の状態は、デバイスのデバッグの際に役に立つことがある。
本発明の一実施形態では、サポートされていないデバイスクラスごとに、ソフトウェア開発キット(SDK)の一部として、テンプレートINFファイルが提供される。テンプレートINFファイルの目的は、共通コントロールライブラリ(CCL)をサポートするために必要な標準のレジストリおよび構成エレメント(configuration element)を識別することである。デバイスマネージャアプリケーション230が、管理されていないデバイスを小売業向けデバイスとして認識すると、CCL235が、小売業向けデバイス210に関与するPOSアプリケーション(240)に公開される。
オペレーティングシステムからイベントを受け取り、デバイスを識別すると、デバイスマネージャアプリケーション230は、自動的に、レジストリおよび関係する構成エントリを更新し、ユーザの干渉なしに、関連するINFファイルに基づいて、そのデバイスのためのサポートバイナリをインストールする。次いで、POSアプリケーション240は、CCL235内の関数を利用することにより、個々のデバイスに対するアクセスの特性について知る必要なく、小売業向けデバイス210にアクセスすることができる。
CCL235は、サポートされているデバイスに関連するプロパティ、メソッド、および、イベントを、アプリケーションに提供することを目的とする。一実施形態では、CCL235は、.NETクラスライブラリを介して、UPOS第1.8版に指定のサポートされている各デバイスクラスごとに、UPOSのプロパティ、メソッド、およびイベントを、マネージコード(managed code)として公開する。他のデバイスをサポートすることもできる。一般的に、オペレーティングシステムのPnPシステムによってサポートされていない任意のデバイスを、デバイスマネージャアプリケーション230を介して、ユーザモードコードでサポートすることができる。
図3は、本発明の態様による、PnPシステムについての高レベルアーキテクチャの図を示す。図に示すように、このアーキテクチャ図は、(直線335より下に示す)カーネルモードでオペレーティングシステムにより提供される機能、および、(直線335より上に示す)ユーザモードで提供される機能を含む。
入出力システム350は、オペレーティングシステムのカーネルモードで動作し、入出力管理(365)、パワーマネジメント(360)、およびPnP管理(355)を提供する。入出力マネージャは、標準入出力管理を提供する。パワーマネージャ360は、オペレーティングシステムによって管理されない電力イベントを、デバイスマネージャアプリケーション310に送る。PnPマネージャ355は、PnPイベントを検出し、デバイスマネージャアプリケーション310に送る。PnPイベントマネージャ320は、どのイベントがデバイスマネージャ310によってサポートされるデバイスに関係するかを決定し、POSアプリケーション305に、それが受け取ることを登録したどのイベントも提供する。
相互運用層(interoperability layer)315は、レガシ(legacy)のCOMベースの小売業向けデバイスを、CCLをターゲットとするアプリケーションによって使用できるようにするために用いられる。言い換えれば、相互運用層315は、同一のメソッドを使用して、PnPデバイスとレガシデバイスの両方にアクセスする統一された方法をPOSアプリケーション305に提供することを目的とする。一般に、レガシのOPOSデバイスは、それ自体に関する情報を格納し、通信経路を識別して、構成データを持続させる。例えば、システムレジストリが、この情報を格納するために使用される。通常、各デバイスの製造元が、そのデバイスの構成を管理するためのカスタムアプリケーションを提供する。
図4は、本発明の態様によるPnPシステムとCCLの間の対話を示す。図に示すように、システム400は、POSアプリケーション405、公開API(CCL)415、列挙子(enumerator)420、PnPシステム430、SOリポジトリ(repository)440、構成マネージャ450、ならびに、.NETフレームワークおよびWin32レベルを含む。
POSアプリケーション405は、CCLがサポートするデバイスと対話するために、API410と対話する。API410は、POSアプリケーション405に、このアプリケーションが受け取るように登録したPnPイベントを提供する。
ルートクラス415は、公開API410において公開され、すべての動作に対する単一のエントリポイントの役割をする。API410は、インストールされたPOSデバイスを列挙し、それらのデバイスに対するサービスオブジェクトをインスタンス化し、POSデバイスの接続または切断が行われたときにプラグアンドプレイイベントを受け取る機能を、POSアプリケーション405などのアプリケーションに提供する。
一実施形態では、ルートクラス415は、下記のメソッドを公開している。すなわち、マシンにインストールされたすべてのPOSデバイスのコレクションを返すGetDevices()、マシンにインストールされた所与のタイプのPOSデバイスのコレクションを返すGetDevices(string type)、所与のタイプのデフォルトデバイスに対するIDeviceインターフェースを返すGetDefaultDevice(string type)、および、要求されたサービスオブジェクトのインスタンス(IPOSControl interface)を返すOpenControl(IDevice device)を公開する。
ルートクラス415は、POSアプリケーション510に、OnDeviceAddedとOnDeviceRemovedの2つのプラグアンドプレイイベントを公開する。これらのイベントは、POSデバイスが、マシンに接続された/マシンから切断されたときに発行される。
OPOSは、サービスオブジェクトが発行する5つのイベント、すなわち、OnDataEvent、OnDirectIOEvent、OnErrorEvent、OnOutputCompleteEvent、およびOnStatusUpdateEventを定義する。異なるそれぞれのデバイスクラスは、これらのイベントのすべてを発行するか、一部を発行するか、またはどのイベントも発行しない。これらのイベントは、IPOSControlインターフェースに追加される。OPOS標準がサポートしないデバイスクラスに対する各SOは、これらのイベントの一部または全部を発行するか、あるいは、単にそれらのイベントを発行しない。
ルートクラスはまた、どんなサービスオブジェクトがマシンにインストールされたかを検出し、インストールされたSO(420)の内部列挙子により返される列挙子を介して、そのオブジェクトの情報をアプリケーションに提示する。インストールされたサービスオブジェクトによりサポートされる物理デバイスが、現時点で接続/オンにされた場合、ハードウェアIDによって決定を行うために、ルートクラス410は、ブロック420を介して、オペレーティングシステムのプラグアンドプレイシステム430と結合する。
ブロック420では、.NETサービスオブジェクトを探すために.NET SOリポジトリ440をスキャンする。一実施形態では、ブロック420で、HKLM\SOFTWARE\OLEforRetail.NET\ControlAssembliesレジストリキーで指定されるディレクトリをスキャンする。このキーは、複数の文字列の値を、スキャンするディレクトリにつき1つ含むことができる。.NET SOは、特殊なカスタム属性を有するdllアセンブリである。SOアセンブリ内のすべてのサービスオブジェクトクラスは、サービスオブジェクトのデバイスのクラス、名前、記述、およびバージョンを指定するPOSServiceObject属性を有する。例えば次のようなものである。
[POSServiceObjectAttribute("MSR","CommonMSR","Common service object for magnetic stripe reader","1.0.0")]
構成マネージャ450は、構成ファイルの読取りを行い、また、PnPハードウェアIDのレガシSOへのマッピング.NET SOメタデータに対する拡張、非PnPデバイスのSOへのマッピング、デバイスの無効化、および、セキュリティ設定のためのものである。
物理デバイスのハードウェアIDをSOにマップする、1つまたは複数のPOSHardwareId属性がある場合がある。このIDは、プラグアンドプレイサブシステムによっても使用されるハードウェアIDである。ハードウェアIDは、範囲の下端と上端のIDを指定することにより、その範囲が定義される。例えば、[POSHardwareId("USB\Vid_05d9&Pid_a794&Rev_0000","USB\Vid_05d9&Pid_a794&Rev_9999")]。
一実施形態では、レガシサービスオブジェクトについて、ルートクラス415が、HKLM\SOFTWARE\OLEforRetail\ServiceOPOSレジストリキーを読み取る。すべての登録されたOPOSサービスオブジェクトのNameおよびProgrammatic IDは、デバイスのタイプによってグループ化されるキーに基づいて定義される。レガシSOでのハードウェアIDは、専用のフォルダに入れられる構成XMLファイルによって定義される。
上述のように、一実施形態によれば、CCLは、UPOS仕様書で定義されたサポートされるデバイスクラスごとに、UPOS V1.8のプロパティ、メソッド、およびイベントをマネージコードとしてPOSアプリケーションに公開する。
CCL410は、各デバイスクラスごとのコントロールオブジェクト(CO)を表すアセンブリのコレクションである。CCLは、アプリケーションインターフェースを、POSアプリケーションなどのアプリケーションに提供する。サービスオブジェクトは、APIを実装し、COのクラスのデバイスをサポートする。次の表は、標準のプロパティ、メソッド、およびイベントの例示的リストである。
Figure 0004818640
一実施形態では、UPOS V1.8の定数が実装され、UPOSによって規定された分類法および命名規則に従っている。一実施形態では、CCLは、UPOSイベントを.NETデリゲート(delegate)の形式で公開する。さらに、ライブラリは、POSデバイスに関係するPnPイベントを公開する。
CCLは、インターフェースおよびそのデバイスクラス名を定義する。このライブラリはまた、追加のデバイスクラスの定義を可能にする。
IPhysicalDeviceインターフェースは、接続または除去が行われている特定のデバイスに関するいくつかのプロパティ、例えば、そのインストール状態、POSデバイスクラス、デバイスのフルパス、記述、および、ハードウェアIDなどを公開する。この情報は、アプリケーションがどのようにイベントを処理するか決定できるために必要なコンテキストを、アプリケーションに与える。
Figure 0004818640
PnPサポートは、PhysicalDevicelnfoクラスで実装される。一実施形態では、PhysicalDevicelnfoクラスは、System.Windows.Forms.Formから継承するマネージクラスである。ネイティブのオペレーティングシステムのイベントは、ウィンドウメッセージを介してアプリケーションに公開され、*.Formは、ネイティブウィンドウをラップするため、PhysicalDeviceInfoクラスは、*.Formから継承を行う。ネイティブウィンドウは、OSからのPnPイベントを捕捉するために使用されるが表示されない。
PhysicalDeviceInfoクラスは、インスタンス化されるとき、すべてのデバイスインターフェースクラスからのPnPイベントに対して登録を行い、したがって、(非POSデバイスを含めて)PnPをサポートする任意のデバイスが、システムに追加されるかまたはシステムから除去されるとき、イベントを公開することができる。PhysicalDeviceInfoはまた、システムに現在知られているすべてのデバイスの内部リストを作成し、どのデバイスが現在接続され有効になっているかを決定する。このクラスはまた、デバイスの完全なリストを返し、特定のデバイスにその現在のインストール状態を照会するために、デバイスの列挙中にCCO.Netによって使用されるヘルパメソッド(helper method)を含む。デバイス列挙およびデバイス情報は、プラットフォーム呼出し形式のinterop(P-Invoke style interop)で作成されWin32APIに対するネイティブAPIコールを介して実行される。
PhysicalDeviceInfoクラスは、ネイティブのオペレーティングシステムのPnPイベントを、ルートCCO.Netクラスにイベントとして公開する。これらのイベントは、IPhisicalDeviceインターフェースを実装するPhysicalDeviceオブジェクトを返す。PhysicalDeviceクラスは、単一のデバイスを表すクラスであり、そのデバイスに関するハードウェアIDや記述などいくつかのプロパティを公開する。これは、アプリケーションに最終的にはバブルアップ(bubbled up)される同じオブジェクトである。
メソッドおよびプロパティへのアクセス
ライブラリによりサポートされるデバイスにアクセスしようとするPOSアプリケーション405などのアプリケーションは、他のメソッドを呼び出すのに先立ち、まずそのデバイスをオープンにすべきである。一実施形態では、正常にデバイスをオープンにする前にメソッドの呼出しを試みることは、OPOSClosedExceptionを発生させる。排他使用のデバイスにアクセスするアプリケーションは、たいていのメソッドを呼び出す前に、デバイスを要求し有効にすべきである。共有可能デバイスにアクセスするアプリケーションは、たいていのメソッドを呼び出す前にデバイスを有効にしなければならない。正常にデバイスをオープンにする前には、そのデバイスに関連するほとんどのプロパティ値は初期設定されない。デバイスに関するプロパティが初期設定された後は、それに続くデバイスに対する要求およびデバイスの有効化では、プロパティの再初期化は行わない。デバイスがクローズされるまで、これらのプロパティは、初期設定のままとなる。
デバイスマネージャアプリケーションが受け取ったデータは、DataEventとしてキューに入れられる。データを受け取ったとき、AutoDisableプロパティがTRUEに設定されている場合、コントロールが、自動的に、DeviceEnabledプロパティをFALSEにして、それ自体の設定を無効にする。このことは、コントロールがさらに入力をキューに入れることを禁止し、可能な場合は物理的にデバイスを無効にする。
アプリケーションが、デバイスから入力を受け取る準備ができている場合、アプリケーションは、DeviceEventEnabledプロパティをTRUEに設定する。次いで、(通常、ハードウェアの割り込みの結果として)入力を受け取ると、コントロールは、DataEventをキューに入れ、イベントを要求したアプリケーションにそれを送達する。データが既にキューに入っている場合、DataEventは送達されることになる。このイベントは、数値パラメータによる入力状況情報を含むことができる。コントロールは、イベントを発行する直前に、入力データおよび必要に応じ他のデータを、デバイス固有のプロパティに収納する。
イベントを送達する直前に、コントロールは、DataEventEnabledプロパティをFALSEに設定することにより、追加のデータイベントを無効にする。このことにより、アプリケーションが現在の入力および関連するプロパティを処理する間に、後続の入力データがコントロールによってキューに入れられるようになる。アプリケーションが現在の入力について終了し、後続のデータに対する準備ができると、アプリケーションは、DataEventEnabledをTRUEに設定することによりイベントを再び有効にする。
入力デバイスが排他的使用デバイスの場合、アプリケーションは、デバイスが読取り入力を開始する前に、デバイスを要求し使用可能にする。共有可能入力デバイスの場合、読取り入力を開始する前に、1つまたは複数のアプリケーションが、デバイスをオープンにし有効にする。コントロールが、DataEventを使用してデータをアプリケーションに送る前に、アプリケーションは、ClaimDeviceメソッドを呼び出して、そのデバイスに対する排他的アクセスを要求する。イベント駆動の入力が受け取られるが、アプリケーションがデバイスを要求していない場合、アプリケーションがデバイスを要求する(また、DataEventEnabledプロパティがTRUEとなる)まで、入力はバッファに入れられる。この挙動は、複数のアプリケーション間のデバイスの順序立った共有を可能にし、それらの間で効率的に入力フォーカスを受け渡すことをできるようにする。
コントロールは、イベント駆動入力を収集し処理する際にエラーに遭遇した場合、その状態をエラーに変更し、エラー状態をアプリケーションにアラート通知するために1つまたは複数のErrorEventをキューに入れる。この1つ(または複数)のイベントは、DataEventEnabledプロパティがTRUEになるまで送達されず、したがって、アプリケーションの秩序立った手順がもたらされる。一実施形態では、エラーイベントおよび例外は、以下の座(loci)を用いて送達される。
InputWithData(OPOS_EL_INPUT_DATA)−これは、1つまたは複数のDataEventがキューに入れられている間にエラーが発生した場合に、キューに入れられる。これは、すべてのDataEventに先立ってキューに入れられる。典型的な実装は、このイベントをイベントキューの先頭に配置する。このイベントは、アプリケーションが、入力を直ちにクリアするか、または、任意選択で、ユーザにエラーのアラート通知を出し、バッファされた入力を処理することを可能にする。後者の事例は、スキャナコントロール(Scanner Control)に役立つことがあり、つまり、ユーザが即座にエラーのアラート通知を受け、そのエラーが解決するまで次のアイテムはスキャンされないようにすることができる。したがって、エラー回復が実行されるのに先立ち、以前にスキャンしたどのアイテムも正常に処理することができる。
InputNoData (OPOS_EL_INPUT)−これは、エラーが発生し利用可能なデータがないときに送達される。典型的な実装は、これを、イベントキューの末尾に置く。エラーが発生したとき、ある入力データが既にキューに入れられている場合、座が「InputWithData」のErrorEventが、まずキューに入れられ送達され、次いで、すべてのDataEventが発行された後に、このエラーイベントが送達される。「InputWithData」のイベントが送達され、アプリケーションイベントハンドラが「Clear」で応答した場合、その「InputNoData」のイベントは送達されない。
コントロールは、以下のいずれかが行われたときにエラー状態を終了する。(1)アプリケーションが、InputNoDataのErrorEventから戻る。(2)アプリケーションが、OPOS_ER_CLEARによりInputWithDataのErrorEventから戻る。(3)アプリケーションが、ClearInputメソッドを呼び出す。
いくつかのコントロールでは、アプリケーションが、イベント駆動入力を開始するためにメソッドを呼び出す。入力がコントロールによって受け取られた後、通常、入力を再初期化するためにメソッドが再び呼び出されるまで、追加の入力は受け取られない。この例は、MICRデバイス、およびシグニチャキャプチャデバイスを含む。イベント駆動入力のこのような変形形態は、「非同期入力(asynchronous input)」と呼ばれることがある。
DataCountプロパティは、コントロールによりキューに入れられたDataEventの数を取得するために読み取られることがある。コントロールによりキューに入れられたすべての入力は、ClearInputメソッドを呼び出すことにより削除されることがある。ClearInputは、共有可能デバイスでは、Openの後に呼び出され、排他使用デバイスでは、ClaimDeviceの後に呼び出されることがある。
一般的なイベント駆動入力モデルは、入力データを直接返すメソッドまたはプロパティを含むデバイスクラスの定義を定めていない。いくつかのデバイスクラスは、より直観的または柔軟な動作のために、このようなメソッドおよびプロパティを定義する。この例は、キーロックデバイスである。このタイプの入力は、「同期入力」と呼ばれることがある。
出力
OPOS出力モデルは、同期および非同期の出力からなる。デバイスクラスは、この一方または両方のタイプをサポートすることも、どちらのタイプもサポートしないこともある。
同期出力
デバイス出力が迅速に実行し得るときには、同期出力が好ましい。その長所は、単純さである。アプリケーションは、クラス固有のメソッドを呼び出して出力を実行する。コントロールは、出力が完了してから戻る。このタイプの出力の間にエラーが発生したとき、OPOSExceptionが送出される。
非対称出力
非対称出力は、先入れ先出し法をベースに行われる。このタイプの出力は、デバイス出力が低速のハードウェアの対話を必要とするときに好ましい。デバイスが出力を実行している間にアプリケーションが他の処理を実行することができることから、その長所は応答性として捉えられる。アプリケーションは、出力を開始するためにクラス固有のメソッドを呼び出す。コントロールは、プログラムメモリ内の要求を物理デバイスが受け取り処理することができるようになり次第その要求を物理デバイスに送達するためにバッファし、OutputIDプロパティをこの要求に対する識別子に設定し、可能な限り早く戻る。デバイスが、この要求を正常に完了させたとき、OPOSがOutputCompleteEventを発行する。このイベントのパラメータは、完了した要求のOutputIDを含む。
非同期の要求を実行しているときにエラーが発生した場合、ErrorEventが発行される。アプリケーションのイベントハンドラは、未処理の出力を再試行するかまたはクリアすることができる。コントロールは、ErrorEventの進行中にはエラー状態である。
非同期出力を含めて、バッファされたすべての出力データは、ClearOutputを呼び出すことによって削除することができる。クリアされた出力については、OutputCompleteEventは発行されない。このメソッドはまた、進行中であり得る任意の出力を(可能な場合に)停止させる。
エラー処理
ライブラリ内のエラー処理は、例外を介して実装される。エラーは、UPOS V1.8に定義されているHRESULTコード(ResultCodeおよびResultCodeExtendedの値)に基づいている。POSExceptionクラスは、System.ApplicationExceptionから派生し、基底例外(base exception)クラスである。このクラスは、OPOSエラーコードに関する定数を定義する。POSControlExceptionは、POSExceptionから派生し、サービスオブジェクトにより送出される。POSLibraryExceptionは、POSExceptionから発生し、ライブラリによって送出される。
一実施形態では、エラー処理は、System.ApplicationExceptionから派生する。この派生クラスは、UPOS仕様書によるResultCodeおよびResultCodeExtendedプロパティを実装する。
セキュリティ
CCL、プラグアンドプレイ機能、およびデバイス列挙機能は、サービスオブジェクトにアクセスするためにロールベースセキュリティ(role based security)を使用する。デバイス管理は、サービスオブジェクトに関係するロールのUIおよび関係する構成の要件を含む。
システムに付加されて接続および構成されたデバイスの列挙するヘルパクラスが公開される。このクラスは、アプリケーション開発者が、どんなデバイスにアクセス可能であるかを決定するためにCCLに照会することを可能にする公開メソッドを公開する。この列挙クラスはまた、(UPOS V1.8仕様書に定義されている)Device Statistics(デバイス統計値)を照会する能力も含む。
サービスオブジェクト開発者および小売業者のためのセキュリティを単純化するために、Owner、Integrator、 Manager、およびCashierを含めた追加のユーザタイプが追加される。既定では、Ownerは管理者グループのメンバであり、IntegratorおよびManagerはパワーユーザであり、Cashierはユーザである。
適切なロール権限なしにコントロールにアクセスが試みられると、「Access not authorized(アクセスが許可されていない)」例外が送出される。エラーが発生したことを示す標準のエラーメッセージが識別される。アプリケーションがこの標準エラーメッセージを取り扱わない場合、このメッセージを表示しないという選択肢があるはずである。ロールベースセキュリティが使用され、アプリケーションがこのメッセージを取り扱わない場合は、この標準メッセージは阻止されないことになる。
一実施形態では、CCLは、UPOSデバイスクラスによってグループ化された利用可能なPOSデバイスの列挙子を公開する。そのライブラリは、サービスオブジェクトのインスタンスのインスタンス化のためのファクトリ(factory)の役割をする。そのライブラリは、POSアプリケーションのライタ(writer)を、特定のサービスオブジェクトの実装から分離するものであり、アプリケーションがPOSデバイスと対話するための単一のエントリポイントである。
一実施形態では、エラーは、(例外を介して)標準の.NETのやり方で報告される。ライブラリ例外は、論理的継承階層を有する。標準のOPOSエラーコードは、それが可能であり道理にかなっている場合に使用される。
図5は、本発明の態様による、レガシデバイスを小売業向けPnPシステムに組み込むためのアーキテクチャを示す。
CCL510は、マネージプロキシクラスにより、COMベースのSOをラップ(wrap)する。このプロキシは、SOのコントロールオブジェクトをリフレクション(reflection)530を介してインスタンス化し、それにアプリケーションの呼出しを中継する。このプロキシは、実際のSO(570)とは直接対話しない。代わりに、そのCO(560)と対話する。
LegacyProxyクラスは、すべてのレガシプロキシに対する普遍的基底クラス(universal base class)である。LegacyProxyクラスは、24個の現在サポートされているOPOSデバイスクラス(ICashDrawer,、IMSR、IPOSPrinterなど)に対するインターフェースを実装し、したがって、そのインスタンスは、これらのインターフェースのいずれか1つにキャストすることができる。基本的に、LegacyProxyは、すべてのOPOSコントロールのスーパーセットである。LegacyProxyは、すべてのプラミング(plumbing)を取り扱う標準.NET−COM相互運用層を介して、COと対話し、実際の対話のためにIDispatchを使用する。IDispatchは、プロパティおよびメソッドを名前によって呼び出し、LegacyProxyクラスは、それらのプロパティおよびメソッドを、その基礎となるCOが実装している限り公開することができる。
一実施形態では、レガシコントロールからのイベントは、System.Runtime.InteropServicesネームスペースにあるUCOMIConnectionPointContainerおよびUCOMIConnectionPointインターフェースによってフック(hook up)される。イベントレシーバクラス(LegacyProxy)が、レガシコントロールの固有のイベントシンク(event sink)インターフェースを実装する場合、イベントハンドラは、UCOMIConnectionPointによって設定することができる。5つの標準OPOSイベントだけしかなくても、イベントシンクインターフェースは、すべてのコントロールオブジェクトに対してすべて異なる(それらは異なるインターフェースGUIDを有する)。レガシコントロールオブジェクトのインスタンスごとにLegacyProxyクラスをインスタンス化するのではなく、COが想定するイベントシンクインターフェースを追加的に実装するLegacyProxyから派生する、動的なメモリ内のクラスが、生成される。インターフェースのGUIDは、レガシCOインスタンスのイベントコネクションポイントから(UCOMIConnectionPointを介して)取り出される。生成されたクラスは、イベントハンドラを中継して呼出しをLegacyProxyクラスに送り、LegacyProxyクラスは、それらの呼出しを変換しアプリケーションに発行する。
1.アプリケーションは、レガシOPOSコントロールについてRoot.OpenControlを呼び出す。
2.Root.OpenControlは、AssemblyFinder.OpenControlを呼び出す。
3.AssemblyFinder.OpenControlは、この要求がレガシコントロールに関するものであることを理解し、AssemblyFinder.GenerateLegacyProxyを呼び出す。
4.AssemblyFinder.GenerateLegacyProxyは、COMクラスをインスタンス化し、次いで、UCOMIConnectionPointContainerおよびUCOMIConnectionPointを使用して、コネクションポイント(イベントシンク)インターフェースのGUIDを得る。
5.AssemblyFinder.GenerateLegacyProxyが、AssemblyFinder.EmitProxyを呼び出して、イベントシンクGUIDを有するインターフェースを実装するメモリ内プロキシクラスを生成する。
6.アプリケーションは、そのプロキシについてOpenを呼び出すことによってプロキシをオープンにする。
7.特にOpenメソッドにおいて、LegacyProxy(生成されたプロキシの親クラス)が、UCOMIConnectionPoint.Adviseを呼び出して、そのインスタンスをイベントハンドラとして設定する。
POSアプリケーションのサポート
OPOS.NET API
CCLは、以下の中核的な3つのアセンブリからなる。(1)POS.Interfaces.dllは、インターフェース、列挙体(emum)、および定数を定義し、SOとアプリケーションの両方から参照される。(2)POS.dllは、POS.Rootクラスを含み、アプリケーション(ISV)が、インストールされたPOSデバイスに対するサービスオブジェクトを、列挙し、インスタンス化するようにする。(3)GenericServiceObject.dllは、サービスオブジェクトの基底クラスである。サービスオブジェクトのライタ(IHV)は、それから派生を行い、イベントキューやグローバルクレーム(global claim)などの基本SO機能のデフォルトの実装を利用することが推奨される。
これら3つのアセンブリは、POSマシンハードドライブ上の複数の場所から参照されるので、これらのアセンブリは、Global Assembly Cacheにインストールされる。これは、それらのバイナリの1つのコピーだけをマシン全体にわたって使用すること、ならびに、それらのバイナリが1つの集中した場所でサービスされることが可能であることを保証するのに役立つ。
サービスオブジェクトインターフェース
いくつかのインターフェースは、マネージサービスオブジェクトを作成する目的で定義されている。これらのインターフェースは、POS1.8仕様書の規格をカプセル化し、また、(1)共通のPOS機能をモデリングするデバイスクラス独立インターフェースと(2)所与のデバイスクラスに固有の機能をモデリングするデバイス依存インターフェースの2つに分類される。
パブリックに公開されるPOSインターフェース(共通かつデバイス依存のインターフェース)は、別個のアセンブリPOS.Interfaces.dllで定義される。これらのインターフェースは、.NETサービスオブジェクトによって実装される。アプリケーションは、CCLから受け取ったSOインスタンスを、これらのインターフェースにキャストして、特定のデバイスクラスの固有機能にアクセスする。基底コントロールインターフェースは、POS.interface.Basicネームスペースで定義され、次のような階層を有する。IPOSControlは、.NETサービスオブジェクトのための基底インターフェースである。SOは、この基底インターフェースを直接または間接的に実装する。そのライブラリは、SOに対するこのインターフェースに対してポインタを使用し、アプリケーションは、IMSR、IPOSPrinterなど追加の特定のデバイス依存インターフェースにSOをキャストする。IPOSEventInputは、イベント駆動入力デバイスのためのSOに対して3つのプロパティを追加することにより、IPOSControlを拡張する。IPOSAsyncOutputは、非同期出力をサポートするデバイス(例えばプリンタ)のためのSOに対するOutputIDを追加することにより、IPOSControlを拡張する。
標準OPOSデバイスクラスに対するデバイス依存インターフェースは、POS.Interfaces.Specificネームスペースで定義される。これらのインターフェースは、上記の基底インターフェースのうち1つから派生し、それを、特定のデバイスクラスに固有の機能により拡張している。IHVは、これらのインターフェースから、それらのSOを実装するときに派生を行うべきである。インターフェースの例としては、キャッシュドロワーのためのICashDrawer、磁気ストライプリーダのためのIMSR、および、レシートプリンタのためのIPOSPrinterなどがある。
これらのインターフェースは、それぞれのOPOSインターフェースに緊密に合致する。同時に、COMの制限のためOPOSがUPOSから逸脱するいくつかの事例では、元のUPOSインターフェースが使用される。例えば、OPOSは、バイナリデータを受け渡しのためにBSTR文字列を使用するが、このことにより、バイナリからANSIへの変換に関して、いくらかの問題が生じる。CCLでは、バイナリデータにバイト配列が用いられる。
例として、MSR(磁気ストライプリーダ)のためのOPOSおよびLibraryインターフェースがどのようなものであるかを次に示す。
Figure 0004818640
Figure 0004818640
Figure 0004818640
Figure 0004818640
Figure 0004818640
Figure 0004818640
Figure 0004818640
Figure 0004818640
これらのインターフェースは、その親/祖父母(grandparent)としてIPOSControlを有し、したがって、任意のSOを、IPOSControlインターフェースにキャストすることができる。これらのライブラリクラスは、IPOSControlインターフェースと動作し、アプリケーションは、SOのインスタンスを、デバイス固有のインターフェースにキャストする。このことは、新しいデバイスクラスを、ライブラリを変更せずに導入することを可能にする。新しいデバイスクラスインターフェースがIPOSControlから派生する限り、そのライブラリは、新しいデバイスクラスに対するSOインスタンスを取り扱うことができる。
図6は、本発明の態様による、例示的ヘルパクラスおよびSOリポジトリを示す。
通常、ハードウェアベンダは、デバイス依存のサービスオブジェクト(SO)を実装し、このSOは、POS仕様書に記載のインターフェースを実装し、そのハードウェアと直接対話する。CCO.Netライブラリは、サービスオブジェクトをマネージコードとして書くためのサポート、および、ほとんどのサービスオブジェクトに共通のPOS機能のジェネリック実装(generic implementation)を含めた、SOの高品位の実装を実現するための負担を軽減するいくつかの技術を含む。これは、デバイスを要求し/有効にすること、イベント通知(eventing)、および、メッセージや統計値などをキューに入れることのためのインフラストラクチャを含む。IHVは、このオブジェクトを利用して、SOのPOS固有の側面を実装するための負担の大半を軽減し、したがって、IHVが、デバイス固有の詳細、および、パフォーマンスカウンタやデバイス統計値などに対するヘルパクラスのセットに専念することが可能になる。
一実施形態では、サービスオブジェクトは、.NETアセンブリとして書かれている。これらのアセンブリは、IPOSControlインターフェース、あるいは、IPOSControlから派生する定義されたデバイス固有インターフェースのうちの1つから派生する。これらのアセンブリは、デバイスクラス、POSバージョン、および、サポートされているデバイスのハードウェアIDを記述する、アセンブリレベルおよびクラスレベルの属性を含む。CCO.Netライブラリは、これらの属性を用いて、SOが実装するデバイスクラス、および、それが制御するハードウェアを決定する。アセンブリの属性を使用することにより、SOのインストールが大幅に単純化される。というのは、行う必要があるのは、CCO.Netがそれを発見することができたディレクトリにアセンブリをコピーすることだけだからである。
ジェネリックサービスオブジェクトクラスは、すべてのデバイスクラスのサービスオブジェクトに必要とされるデフォルトの機能を実装する抽象基底クラスである。典型的なシナリオでは、IHVは、ジェネリックサービスオブジェクト、およびデバイス固有インターフェースのうち1つから派生を行う。このことにより、IHVは、ジェネリックサービスオブジェクトに依拠して、多くのPOS固有の詳細を取り扱うことができ、SOのデバイス固有の側面に努力を集中することができる。
ジェネリックサービスオブジェクトクラスは、IPOSControlインターフェース上でのすべてのメソッドおよびプロパティのデフォルトの実装を含む。これは、イベントのキューイングと送達、デバイス状態管理(要求、有効化など)、および状態報告のためのメカニズムを含む。これは、抽象クラスのため、直接インスタンス化されず、もっぱら、IHVがそれらのSOの形態を派生するためのものである。すべてのメソッドおよびプロパティが仮想的にマーク付けされ、したがって、IHVは、デフォルトの実装を使用し、IHVが適切と見なす任意のメソッドにオーバーライドすることができる。
ジェネリックサービスオブジェクトは、POSイベント送達の詳細を、イベントキュー、イベントキューワーカスレッド(worker thread)、および様々な同期オブジェクトの形態で実装する。高レベルでは、イベント通知は、ジェネリックサービスオブジェクトにより以下のように取り扱われる。
1)スレッドがシグナル通知を受け、FreezeEventsプロパティがFALSEとなるまで待機する。
2)スレッドが終了しようとしているかを確認し、その場合は、イベントキューをクリアにし、スレッドを終了させる。
3)イベントキューから次のイベントを除去する。
4)PreFireEvent(EventArgs posEvent)を呼び出す。
5)ステップ4でPreFireEvent()がTRUEを返した場合、イベントをアプリケーションに発行する。
6)ステップ1に戻る。
QueueEvent(EventArgs posEvent)とPreFireEvent(EventArgs posEvent)の2つのヘルパメソッドが、イベント通知を駆動するために提供される。QueueEvent(EventArgs posEvent)は、イベントキューにイベントを追加し、新しいイベントが到着したことをイベントスレッドにシグナル通知するために使用される。PreFireEvent(EventArgs posEvent)は、イベントが発行される直前にジェネリックSOにより呼び出される。このメソッドは、特定のイベントが発行されるのに先立ち、SOの内部状態を更新する機会を与えるために提供される。
Open()メソッドが呼び出されるとき、イベントキューデータ構造体(event queuing data structure)が作成され初期化される。Close()メソッドは、デバイスを解放し、イベントスレッドを終了し、内部オブジェクトをクリーンアップする。IHVが、パフォーマンスカウンタおよびデバイス統計値を、単純かつ整合的に実装するのを支援するために、ヘルパクラスのセットが提供される。
デバイス統計値は、(1)デバイス統計情報(device information statistics)と、(2)デバイス統計値の2つのカテゴリに分類することができる。デバイス統計情報は、デバイスの名前、製造元、およびバージョンなどデバイスのプロパティである。デバイス統計値は、一般に、例えば電源が入れられていた時間数などデバイスの使用情報を反映する。UPOS1.8は、すべてのデバイスがサポートすべき一連の統計値を定義し、また、デバイスクラスごとの統計値を定義する。UPOSはまた、デバイスが、製造元固有のデバイス統計値をサポートすることができることを規定している。
DeviceStatisticsヘルパクラスは、UPOS仕様書第1.8版に定義されるようにデバイス統計値を実装する負担を軽減する。それには、GenericSOの実装が含まれ、したがって、GenericSOから派生するSOは、統計値をサポートするために最低限の分量のコードしか書く必要がない。一般に、顧客が書く必要があるコードだけが、与えられた統計値を適切な時間に増分するためにIncrementStatistic(string Name)メソッドを呼び出す。GenericSOは、残りの詳細を取り扱う。
DeviceStatisticsクラスは、ハードウェアまたはソフトウェアに格納された統計値をサポートする。ソフトウェアベースの統計値は、アプリケーションが定義可能な間隔で、自動的にXMLファイルに保存され、デバイスが要求したとき自動的にこのファイルからロードされる。DeviceStatisticsは、3つの各メソッド(resetStatistics、retrieveStatistics、およびupdateStatistics)、ならびに2つのプロパティ(CapStatisticsReporting、およびCapUpdateStatistics)を実装する。それはまた、統計値の作成、統計値の実装、および統計値のディスクからのロード/ディスクへの保存のための公開ヘルパメソッドを含む。デバイスそれ自体に格納される統計値をサポートするために、SOによって統計値を返すコールバック機能が指定される。DeviceStatisticsクラスは、クライアントアプリケーションがその統計値を要求する度にこの機能を呼び出す。
IHVは、必要な場合デバイスドライバと一緒にそのサービスオブジェクトをインストールするためのINFファイルを提供する。選択された1組のINFファイルがプレインストールされ、したがって、オペレーティングシステムは、新しいデバイスが接続されたとき、それらをインストールすることができる。
サービスオブジェクトのインストール
一実施形態では、.NETサービスオブジェクトは、そのアセンブリを、HKLM\SOFTWARE\OLEforRetail.NET\ControlAssembliesレジストリキーで指定されるフォルダにコピーすることによりインストールされる。.NET SOは、それ自体を物理デバイスにマップするのに必要な情報をそのアセンブリメタデータ内に有するので、単純な事例では、その他の情報は必要とされないことになる。追加のすべての設定は、XML設定ファイルを介して与えられる。この追加の設定の例は、既存のサービスオブジェクトにマップされる追加ハードウェアID、1つのクラスの複数のデバイスが接続される場合のためのデフォルトサービスオブジェクト、および、シリアルポートなどの非プラグアンドプレイデバイスに対する設定などの項目を含む。
上述のように、グローバル設定は、XML構成ファイルで保持される。それぞれのSO設定は、定義済みのフォルダに置かれる別個のXMLファイル内にある。ライブラリは、インストールされたサービスオブジェクトを列挙するとき、メイン構成ファイルと、定義済みフォルダにある構成ファイルの双方を読み取る。
IHVは、そのデバイスについてのINFファイルを有し、このファイルにより、そのドライバをインストールするとともに、SOアセンブリ、およびオプションのXML構成ファイルをそれぞれのフォルダにコピーする。ISVおよび管理者は、XML構成ファイルを編集することにより、これらの設定をカスタマイズすることができる。
CCLは、共通機能をデフォルトで実装する基底クラスを提供することにより、.NETベースのサービスオブジェクトを書くことを単純化する。IHVは、基底クラスから派生を行い、必要な場合は提供された実装をオーバーライドし、デバイス固有の特徴を追加することを推奨される。新しい.NETサービスオブジェクトは、ライブラリによって定義されるデバイスクラスインターフェースを実装する.NETクラスである。CCLは、これらのサービスオブジェクトの基底クラスとして使用することができるジェネリックサービスオブジェクトクラスを提供する。このクラスは、SOを書くことを単純化するために、できるだけ多くのデバイス独立機能を実装する。
CCLは、複数のベンダにより必要とされることが見込まれる機能に対するヘルパクラスのセットを提供する。これは、.NET SOを書くことを単純にすることを目的とする。
一実施形態では、ライブラリは、.NETサービスオブジェクトのドラッグアンドドロップ形式でのインストールをサポートする。SOアセンブリは、充分なメタデータ情報を含み、したがって、CCLは、追加の構成を必要とせずに、SOアセンブリを使用することができる。追加のXML構成ファイルが、アセンブリメタデータを拡張するために定義されることもある。
図7は、本発明の態様による、システムに接続されたPOSデバイスに関する情報を提供するための例示的表示を示す。
各デバイスは、有効または無効にすることが可能である。デバイスを無効/有効にするために、ドロップダウンリスト720が使用されても、アプリケーションがCCLを呼び出してもよい。無効にされたデバイスは、CCLによりアクセスすることができない。デバイスにアクセスを試みるのに先立ち、アプリケーションは、デバイスを有効にしなければならない。
各SOプロバイダは、このようなタイプの管理情報をそれぞれのデバイスごとに提供する。
全般タブおよびドライバタブは、デバイスに関する情報、すなわち、デバイスの名前および記述、(プラグアンドプレイデバイスについての)ハードウェアIDおよびパス、.NETまたはレガシのサービスオブジェクト、(.NETオブジェクトについての)アセンブリパス、フルネーム、バージョン、およびクラス名、ならびに、レジストリのProgId、ClsId、バイナリパス、バージョン、およびconfigパラメータを示す。
デバイスの状態(710)も、デバイスに関する表示を行う。
図8は、本発明の態様による、インストールされたPOSデバイスの例示的スクリーンショットを示す。図示のように、販売デバイスのインストールポイントがペイン810に示されている。
ペイン810は、マシンに現在接続されているデバイスクラスおよびデバイス、かつてマシンに接続されていたデバイスクラスおよびデバイス、インストールされた.NETのサービスオブジェクトのアセンブリ、クラス、およびそれらがコントロールする物理デバイス、インストールされたレガシサービスオブジェクトおよびそれらがコントロールする物理デバイス、ならびに、グローバルライブラリ構成などの項目を含む、インストールされたデバイスおよび構成についてのマルチビュー(multiple view)を示す。このインターフェースは、管理者が、例えば、どんなバイナリがどのサービスオブジェクトを実装しているかや、デバイスがインストールされている場所、バージョンについてなどの、デバイスに関する低レベルの詳細について掘り下げるのを支援することを目的とする。
別のペイン(820)は、選択されたツリー表示のノードに対する一連のコンテキスト依存コントロールをホストする。このペインは、選択されたノードに関する詳細情報を示し、選択可能な操作を提供する。例えば、プリンタについて、Open、Claim、Enable、PrintNormal、CutReceiptなどのメソッドを呼び出すためのコントロールがある場合がある。デバイスからのイベントを視覚化するためのコントロールがある場合もある。このタブは、管理者が、実際のPOSアプリケーションを実行せずに、接続されたハードウェアを速やかに検査することを可能にする。
セキュリティ設定も選択することができる。例えば、ある特定のサービスオブジェクトおよび/またはハードウェアのみをシステムがアプリケーションに使用可能にするように、デバイスをロックダウン(lock down)することを可能にするグローバルセキュリティ設定を公開することができる。また、統計値は、デバイス統計値に対する迅速な読取り/リセットアクセスを可能にする。
以上の詳細な説明、例、およびデータは、本発明の構成の製造品および使用の完全な説明を提供する。本発明の多数の実施形態は、本発明の趣旨および範囲から逸脱することなく構成することができることから、本発明は、添付の特許請求の範囲に属する。
一動作環境を示す図である。 小売業向けPnPシステムを示す概略的系統図である。 PnPシステムのための高水準のアーキテクチャを示す図である。 PnPシステムとCCLの間の対話を示す図である。 レガシデバイスを、小売業向けPnPシステムに組み込むためのアーキテクチャを示す図である。 例示的ヘルパクラスおよびSOリポジトリを示す図である。 システムに付加されたPOSデバイスに関する情報を提供するための例示的表示の集約を示す図である。 本発明の諸態様による、インストールされたPOSデバイスの例示的スクリーンショットを示す図である。

Claims (17)

  1. オペレーティングシステムにサポートされていないデバイスのためのプラグアンドプレイ(PnP)機能を提供するための方法であって、
    カーネルモードで動作中のオペレーティングシステムが、デバイスに関連するイベントを自動的に検出し、前記オペレーティングシステムにサポートされていない、かつ前記オペレーティングシステムによって保持されたPnPデバイスのリストに含まれていないデバイスに関連するイベントを検出すると、ユーザモードで動作中のデバイスマネージャアプリケーションへ前記デバイスのIDを含む前記イベントを送信すること、
    前記デバイスマネージャアプリケーションが、前記イベントから前記デバイスのIDを決定すること、
    前記デバイスマネージャアプリケーションが、決定された前記IDから前記デバイスを特定すること、
    前記デバイスマネージャアプリケーションが、前記デバイスを、当該デバイスがマップされるべきサービスオブジェクトを記述した情報ファイルにマップすること、
    前記デバイスマネージャアプリケーションが、前記デバイスを、ユーザモードコードで実装された当該デバイスをサポートする前記サービスオブジェクトにマップすること、および、
    前記デバイスマネージャアプリケーションが、POS統一規格(UPOS)のプロパティ、メソッド、およびイベントをマネージコードとして公開する共通コントロールライブラリ(CCL)であるジェネリックインターフェースをアプリケーションに公開し、前記サービスオブジェクトを介して前記デバイスの機能にアクセスするために前記ジェネリックインターフェースを使用するようにプログラムされた前記アプリケーションが当該ジェネリックインターフェースを介して前記デバイスにアクセスすることをできるようにすることを含むことを特徴とする方法。
  2. 前記イベントは、プラグアンドプレイ(PnP)イベントであることを特徴とする請求項1に記載の方法。
  3. 前記デバイスは、小売業向けデバイスであることを特徴とする請求項1に記載の方法。
  4. 前記小売業向けデバイスは、バンプバー、自動釣り銭機、キャッシュドロワー、CAT、コインディスペンサ、フィスカルプリンタ、ハードトータル、キーロック、バーコードスキャナ、トーンインジケータ、動作検出器、ラインディスプレイ、磁気インクリーダ、磁気ストライプリーダ、PINパッド、ポイントカード機、POSキーボード、POSプリンタ、リモートオーダーディスプレイ、秤、シグニチャキャプチャ、および、チェックイメージスキャナのうち少なくとも1つから選択されることを特徴とする請求項3に記載の方法。
  5. 前記イベントが、前記デバイスがインストールされたことを示すとき、前記デバイスを設定することをさらに含むことを特徴とする請求項1に記載の方法。
  6. 前記ジェネリックインターフェースを公開することは、前記デバイスに関連するプロパティ、メソッド、およびイベントを、前記アプリケーションに提供することをさらに含むことを特徴とする請求項1に記載の方法。
  7. 前記デバイスに関連するオペレーティングシステムにより前記デバイスがサポートされていないとき、前記デバイスを、ユーザモードコードで実装される前記サービスオブジェクトにマップすることは、前記デバイスがレガシデバイスであるとき、および、前記デバイスがPnPデバイスであるときを決定することをさらに含むことを特徴とする請求項1に記載の方法。
  8. オペレーティングシステムによってサポートされていないデバイスのためのプラグアンドプレイ(PnP)機能を提供するためのシステムであって、オペレーティングシステムと、デバイスマネージャアプリケーションと、アプリケーションとを備え、
    前記オペレーティングシステムは、当該オペレーティングシステムのカーネルモードで動作するイベントマネージャを含み
    前記オペレーティングシステムによってサポートされていない、かつ前記オペレーティングシステムによって保持されたPnPデバイスのリストに含まれていないデバイスに関連するイベントを自動的に検出し、
    前記オペレーティングシステムが前記オペレーティングシステムによってサポートされていないデバイスであると決定すると、前記オペレーティングシステムのユーザモードで常駐する前記デバイスマネージャアプリケーションに、当該デバイスに関連付けられたIDを含む前記イベントを提供するように構成され、
    前記デバイスマネージャアプリケーションは、
    前記イベントから前記ID前記デバイスを特定し、前記デバイスがマップされるべきサービスオブジェクトを記述した情報ファイルに前記デバイスをマップし、ユーザモードコードで実装された前記サービスオブジェクトに前記デバイスをマップするように構成され、
    前記デバイスに関連するプロパティ、メソッド、およびイベントを前記アプリケーションに提供するように構成されたジェネリックインターフェースとしての共通コントロールライブラリ(CCL)を含み、
    前記アプリケーションは、
    前記CCLを介して前記デバイスマネージャアプリケーションと対話し、前記デバイスに関連する前記プロパティ、メソッド、およびイベントを受け取り、前記CCLを使用して前記サービスオブジェクトを介して前記デバイスの機能にアクセスするようにプログラムされたことを特徴とするシステム。
  9. 前記デバイスは、バンプバー、自動釣り銭機、キャッシュドロワー、CAT、コインディスペンサ、フィスカルプリンタ、ハードトータル、キーロック、バーコードスキャナ、トーンインジケータ、動作検出器、ラインディスプレイ、磁気インクリーダ、磁気ストライプリーダ、PINパッド、ポイントカード機、POSキーボード、POSプリンタ、リモートオーダーディスプレイ、秤、シグニチャキャプチャ、および、チェックイメージスキャナのうち少なくとも1つから選択される小売業向けデバイスであることを特徴とする請求項に記載のシステム。
  10. 前記デバイスマネージャアプリケーションは、レガシデバイスが前記CCLを介して前記アプリケーションによって使用されることを可能にするように構成されたレガシ相互運用層をさらに含むことを特徴とする請求項8に記載のシステム。
  11. 前記デバイスマネージャアプリケーションは、前記オペレーティングシステムによってサポートされていないデバイスに関連するイベントを受け取ることを前記オペレーティングシステムに登録するようにさらに構成されることを特徴とする請求項8に記載のシステム。
  12. オペレーティングシステムによってサポートされていないデバイスのためのプラグアンドプレイ(PnP)機能を提供するためのコンピュータ実行可能命令を有するコンピュータ可読記録媒体であって、コンピュータ実行可能命令は、コンピュータ
    オペレーティングシステムのカーネルモードで常駐しデバイスに関連するイベントを提供する第1のコンポーネントと、
    前記オペレーティングシステムのユーザモードで常駐する第2のコンポーネントと
    として機能させ、
    前記第1のコンポーネントが、前記デバイスは前記オペレーティングシステムによって保持されたPnPデバイスのリストに含まれず、当該デバイスは前記オペレーティングシステムによってサポートされていないと決定し前記第1のコンポーネントが、前記デバイスは前記オペレーティングシステムによってサポートされていないと決定すると、前記デバイスに関連するIDを含むイベントを前記第2のコンポーネントへ提供
    前記第2のコンポーネントが、前記IDから前記デバイスを特定し、前記デバイスを当該デバイスがマップされるべきサービスオブジェクトを記述した情報にマップし、ユーザモードコードで実装された当該サービスオブジェクトに前記デバイスをマップし、POS統一規格(UPOS)のプロパティ、メソッド、およびイベントをマネージコードとして公開する共通コントロールライブラリ(CCL)であるジェネリックインターフェースをアプリケーションに公開して前記アプリケーションが前記ジェネリックインターフェースを介して前記デバイスにアクセスするとともに前記イベントを受信できるようにし、これにより前記アプリケーションは前記CCLを使用して前記サービスオブジェクトを介して前記デバイスの機能にアクセスする
    ことを特徴とするコンピュータ可読記録媒体。
  13. 前記イベントは、プラグアンドプレイ(PnP)イベントに関係することを特徴とする請求項12に記載のコンピュータ可読記録媒体。
  14. 前記ジェネリックインターフェースは、PnPデバイスおよびレガシデバイスと対話するための統一された方法を前記アプリケーションに提供するようにさらに構成されることを特徴とする請求項13に記載のコンピュータ可読記録媒体。
  15. 前記デバイスは、バンプバー、自動釣り銭機、キャッシュドロワー、CAT、コインディスペンサ、フィスカルプリンタ、ハードトータル、キーロック、バーコードスキャナ、トーンインジケータ、動作検出器、ラインディスプレイ、磁気インクリーダ、磁気ストライプリーダ、PINパッド、ポイントカード機、POSキーボード、POSプリンタ、リモートオーダーディスプレイ、秤、シグニチャキャプチャ、および、チェックイメージスキャナのうち少なくとも1つから選択される小売業向けデバイスであることを特徴とする請求項13に記載のコンピュータ可読記録媒体。
  16. 前記第2のコンポーネントは、前記デバイスがインストールされたことを前記イベントが示すとき、前記デバイスを設定するようにさらに構成されることを特徴とする請求項12に記載のコンピュータ可読記録媒体。
  17. 前記第2のコンポーネントは、インストールされた前記デバイスのタイプを決定し、構成ファイルに基づいて前記デバイスを構成するようにさらに構成されることを特徴とする請求項12に記載のコンピュータ可読記録媒体。
JP2005142844A 2004-05-14 2005-05-16 サポートされていないデバイスのためのプラグアンドプレイ機能 Expired - Fee Related JP4818640B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US57127104P 2004-05-14 2004-05-14
US60/571,271 2004-05-14
US10/947,616 US20050257226A1 (en) 2004-05-14 2004-09-22 PnP functionality for unsupported devices
US10/947,616 2004-09-22

Publications (3)

Publication Number Publication Date
JP2006012128A JP2006012128A (ja) 2006-01-12
JP2006012128A5 JP2006012128A5 (ja) 2008-12-18
JP4818640B2 true JP4818640B2 (ja) 2011-11-16

Family

ID=34979607

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005142844A Expired - Fee Related JP4818640B2 (ja) 2004-05-14 2005-05-16 サポートされていないデバイスのためのプラグアンドプレイ機能

Country Status (4)

Country Link
US (1) US20050257226A1 (ja)
EP (1) EP1603038A3 (ja)
JP (1) JP4818640B2 (ja)
KR (1) KR101150071B1 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7577769B2 (en) * 2005-03-01 2009-08-18 Microsoft Corporation Un-installation of inactive or removed peripheral device drivers
US7603484B2 (en) * 2005-04-21 2009-10-13 Microsoft Corporation Protocol for communication with a user-mode device driver
US20060242270A1 (en) * 2005-04-21 2006-10-26 Microsoft Corporation Isolation of user-mode device drivers
US20070005738A1 (en) * 2005-06-29 2007-01-04 Microsoft Corporation Automated remote scanning of a network for managed and unmanaged devices
US20070129860A1 (en) * 2005-12-06 2007-06-07 Hunter Engineering Company Vehicle Service Equipment Interface Drivers
US7861238B2 (en) * 2005-12-19 2010-12-28 Seiko Epson Corporation Configuration tool and method of updating an archive file property relating to at least one point-of-sale peripheral
KR100703804B1 (ko) * 2006-01-20 2007-04-09 삼성전자주식회사 플러그 앤 인스톨 시스템 및 방법
US20080215986A1 (en) * 2007-03-01 2008-09-04 Josephine Faith Bayang Device directed user interface elements for data handling system management console graphical user interface
US8418170B2 (en) * 2008-01-29 2013-04-09 Flexera Software Llc Method and system for assessing deployment and un-deployment of software installations
US8176499B2 (en) * 2008-05-30 2012-05-08 Microsoft Corporation Defining, distributing and presenting device experiences
US8001311B2 (en) 2008-06-27 2011-08-16 Microsoft Corporation Simulation of smartcard removal and reinsertion
US8086778B2 (en) * 2008-06-27 2011-12-27 Microsoft Corporation Filter driver to enumerate smartcard nodes for plug and play
US8943551B2 (en) 2008-08-14 2015-01-27 Microsoft Corporation Cloud-based device information storage
WO2011073822A1 (en) * 2009-12-16 2011-06-23 Koninklijke Philips Electronics N.V. Universal medical device driver adapter
US8554956B1 (en) * 2010-02-24 2013-10-08 Open Invention Network Llc Method for creation of a device driver for a peripheral device
US9396147B1 (en) 2010-02-24 2016-07-19 Open Invention Network Llc Interconnection of peripheral devices on different electronic devices
US8935434B1 (en) 2010-02-24 2015-01-13 Open Invention Network, Llc Interconnection of peripheral devices on different electronic devices
US8554957B1 (en) * 2010-02-24 2013-10-08 Open Invention Network, Llc Method for creation of device drivers and device objects for peripheral devices
US20110283276A1 (en) * 2010-05-11 2011-11-17 Carlton Andrews System and Method for Automated Information Handling System Network Device Discovery and Support
US9754247B2 (en) * 2010-12-06 2017-09-05 Ncr Corporation Standardizing point of sale services and leveraging instances of the PLU data
CN102130780A (zh) * 2010-12-13 2011-07-20 华为技术有限公司 一种网元的管理方法、装置和系统
JP5787606B2 (ja) 2011-05-02 2015-09-30 キヤノン株式会社 情報処理装置、情報処理方法、及びプログラム
EP2618272B1 (en) * 2011-08-02 2016-12-21 Huawei Technologies Co., Ltd. Method and apparatus for dynamic addition and dynamic removal of device
FR2996031B1 (fr) * 2012-09-24 2015-08-21 Banque Accord Methode et systeme d'amelioration des systemes d'encaissement
US9032106B2 (en) * 2013-05-29 2015-05-12 Microsoft Technology Licensing, Llc Synchronizing device association data among computing devices
GB201314732D0 (en) * 2013-08-16 2013-10-02 Sparkle Coupon Services Ltd A data transmission method and system
GB201314733D0 (en) 2013-08-16 2013-10-02 Sparkle Coupon Services Ltd A data processing method and system
WO2016018246A1 (en) * 2014-07-29 2016-02-04 Hewlett-Packard Development Company, L.P. A point of sale device
WO2016053310A1 (en) * 2014-09-30 2016-04-07 Hewlett-Packard Development Company, L.P. Managing access to peripheral devices
CN107765863A (zh) * 2016-08-17 2018-03-06 致伸科技股份有限公司 键盘装置
US12073415B2 (en) * 2020-09-28 2024-08-27 Arris Enterprises Llc Identification of unsupported device capability to service provider for enhancement and customer attraction
US12056501B2 (en) * 2022-09-21 2024-08-06 Ncr Voyix Corporation Peripheral device communication

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6263387B1 (en) * 1997-10-01 2001-07-17 Micron Electronics, Inc. System for automatically configuring a server after hot add of a device
WO1999039254A2 (en) * 1998-01-30 1999-08-05 3Com Corporation Providing low level hardware device driver from user mode under multi-tasking operating systems
US6598095B2 (en) * 1999-04-14 2003-07-22 Micron Technology, Inc. Method and system for identifying and configuring peripheral devices
US6728787B1 (en) * 2000-03-31 2004-04-27 Mitsubishi Electric Research Labs, Inc System and method for locating and installing device drivers for peripheral devices
US7194689B2 (en) * 2000-08-22 2007-03-20 Microsoft Corporation Generic user control point tool for universal plug and play (UPnP) devices
JP5055492B2 (ja) * 2001-05-07 2012-10-24 サイエンスパーク株式会社 電子計算機のインターフェースドライバプログラム及びその記録媒体
JP2003216378A (ja) * 2001-11-15 2003-07-31 Canon Inc 情報処理装置及び方法及びコンピュータプログラム及びコンピュータ可読記憶媒体
JP4200692B2 (ja) * 2002-05-31 2008-12-24 セイコーエプソン株式会社 デバイス状態監視システム、デバイス管理端末
JP2004046587A (ja) * 2002-07-12 2004-02-12 Fujitsu Ltd デバイスドライバ組込プログラム及びデバイスドライバ組込装置

Also Published As

Publication number Publication date
EP1603038A2 (en) 2005-12-07
EP1603038A3 (en) 2008-03-05
KR20060047889A (ko) 2006-05-18
JP2006012128A (ja) 2006-01-12
KR101150071B1 (ko) 2012-06-01
US20050257226A1 (en) 2005-11-17

Similar Documents

Publication Publication Date Title
JP4818640B2 (ja) サポートされていないデバイスのためのプラグアンドプレイ機能
US20070050751A1 (en) Automatic interoperation with legacy POS service and control objects
US5566346A (en) System for constructing hardware device interface software systems independent of operating systems including capability of installing and removing interrupt handlers
US6535976B1 (en) Initial program load in data processing network
US8656416B2 (en) Information processing apparatus for customizing printer driver program, and method of customizing printer driver program
US5893106A (en) Object oriented server process framework with interdependent-object creation
US6971090B1 (en) Common Information Model (CIM) translation to and from Windows Management Interface (WMI) in client server environment
US8266287B2 (en) Managing computer resources in a distributed computing system
US20040237051A1 (en) Dynamic menu reordering
US20090276269A1 (en) Software identifier based correlation
JP2001060180A (ja) 装置制御用オペレーションオブジェクトインタフェースを使用する周辺システム管理のためのシステムおよび方法
US8891111B2 (en) Adaptable printer driver
CA2348442A1 (en) Method and apparatus for new device driver installation by an operating system
JPH09503875A (ja) オブジェクト指向オペレーティング・システム
KR19990066737A (ko) 컴퓨터시스템의 호환성 오더의 발생방법 및그 시스템
HU220825B1 (hu) Eljárás számítógépes rendszer működtetésére és az eljárással működtetett számítógépes rendszer, továbbá eljárás és berendezés egy számítógépes rendszerben használatban lévő fájlmásolatok számának korlátozására
JP2003527654A (ja) 自動的デバイスドライバコンフィギュレーション用方法、システム及びコンピュータ読取可能格納媒体
JP5482407B2 (ja) 情報処理装置、画像処理装置、画像処理システム、画面カスタマイズ方法、画面カスタマイズプログラム、及びそのプログラムを記録した記録媒体
US6766457B1 (en) Method for controlling access to a multiplicity of objects using a customizable object-oriented access control hook
US20130125144A1 (en) Device Display Object Infrastructure
US11150911B2 (en) System and method for managing UEFI boot device path based on custom selection
US20110179364A1 (en) Methods, systems, and computer program products for automating operations on a plurality of objects
US20110179383A1 (en) Methods, systems, and computer program products for automatically selecting objects in a plurality of objects
US7143281B2 (en) Method and apparatus for automatically changing kernel tuning parameters
US20070055574A1 (en) Commonly available device statistics for POS devices

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080516

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081030

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101228

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: 20110826

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: 20110831

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

Free format text: PAYMENT UNTIL: 20140909

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

LAPS Cancellation because of no payment of annual fees