(57)【要約】【課題】  ユーザが意図するデバイスドライバを特定するデバイス情報を画像形成装置に保管することで、ユーザが必要としないデバイスドライバを情報処理装置にインストールしてしまうことを防止することである。【解決手段】  コンピュータ２０１から送信されて保管デバイスに保管されるデバイス構成データで指定されるデバイスに対応するＰＤＬ処理デバイスがアクティブ状態となるデバイス情報が作成して、保管デバイスに転送する。そして、デバイス再構成ステップ２０４では、コンピュータ２０１で作成されたデバイス構成データを取得し、当該取得したデバイス構成情報に基づいて、複合装置２０６のComposite USBを構成するデバイスの再構成を行う。【選択図】  図２
2010039684.tif 000002
【特許請求の範囲】
【請求項１】
複数のデバイスドライバを備える画像形成装置であって、
情報処理装置と通信する通信手段と、
前記情報処理装置から取得する情報を保管する保管デバイスと、
前記通信手段の通信状態が変化することに応じて、前記保管デバイスに基づくデバイス情報を構成するデバイス構成手段と、を備え、
前記デバイス構成手段は、前記複数のデバイスドライバの中からユーザにより選択されるデバイスドライバで特定されるデバイス構成データを前記情報処理装置から取得して、前記デバイス情報を再構成することを特徴とする画像形成装置。
【請求項２】
前記デバイス構成手段は、
前記通信手段の通信状態が非通信状態から通信状態に変化したことを認識した後、通信状態が通信状態から非通信状態に遷移した場合に、前記保管デバイスに基づくデバイス情報を再構成することを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記デバイス構成手段が前記保管デバイスに基づくデバイス情報を再構成する場合、前記保管デバイスに保管されていた前記デバイス構成データを非表示属性にして前記保管デバイス上で管理する管理手段を備えることを特徴とする請求項２に記載の画像形成装置。
【請求項４】
前記デバイス構成データは、前記情報処理装置のオペレーティングシステムを識別するための識別情報を含むことを特徴とする請求項１又は３に記載の画像形成装置。
【請求項５】
前記識別情報は、所定の疑似乱数に基づいて生成されることを特徴とする請求項４記載の画像形成装置。
【請求項６】
前記通信手段は、前記情報処理装置と無線又は有線のインタフェースを介して通信することを特徴とする１又は２に記載の画像形成装置。
【請求項７】
前記デバイスドライバは、印刷処理を行うプリンタドライバ、原稿読み取りを行うスキャナドライバを含むことを特徴とする請求項１に記載の画像形成装置。
【請求項８】
複数のデバイスドライバを備える画像形成装置と通信可能な情報処理装置であって、
前記複数のデバイスドライバの中から使用するデバイスドライバを選択する選択手段と、
前記選択手段により選択されたデバイスドライバにより特定されるデバイス構成データを作成する作成手段と、
前記作成手段により作成されたデバイス構成データを前記画像形成装置の保管デバイスに転送する転送手段と、
前記保管デバイスに保管されるデバイス情報に基づいて前記複数のデバイスドライバの中から特定されるいずれかのデバイスドライバをインストールするインストール手段と、
を備えることを特徴とする情報処理装置。
【請求項９】
前記作成手段により作成されたデバイス構成データに一致するデバイス構成データが前記保管デバイスに保管されているかどうかを判別する判別手段と、
前記判別手段が保管されていると判別した場合、前記保管デバイスに保管されている前記デバイス構成データを削除する削除手段とを備え、
前記転送手段は、
前記削除手段による削除が終了した後、前記作成手段が作成したデバイス構成データを前記保管デバイスに転送することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記作成手段により作成されたデバイス構成データに一致するデバイス構成データが前記保管デバイスに保管されているかどうかを判別する判別手段と、
前記判別手段が保管されていると判別した場合、前記保管デバイスに保管されていた前記デバイス構成データを取得して一時保管する一時保管手段とを備え、
前記転送手段は、
前記一時保管手段に前記デバイス構成データを保管した後、前記作成手段が作成したデバイス構成データを前記保管デバイスに転送することを特徴とする請求項８に記載の情報処理装置。
【請求項１１】
前記作成手段は、前記デバイス構成データの名称に、転送元の情報処理装置のオペレーティングシステムを識別する識別情報を設定することを特徴とする請求項８乃至１０のいずれか１項に記載の情報処理装置。
【請求項１２】
前記識別情報は、所定の疑似乱数に基づいて生成されることを特徴とする請求項１１記載の情報処理装置。
【請求項１３】
情報処理装置との通信で取得する情報を保管する保管デバイスと、複数のデバイスドライバとを備える画像形成装置におけるデータ処理方法であって、
前記情報処理装置との通信状態が変化することに応じて、前記保管デバイスに基づくデバイス情報を構成するデバイス構成ステップを備え、
前記デバイス構成ステップは、前記複数のデバイスドライバの中からユーザにより選択されるデバイスドライバで特定されるデバイス構成データを前記情報処理装置から取得して、前記デバイス情報を再構成することを特徴とするデータ処理方法。
【請求項１４】
前記デバイス構成ステップは、
前記情報処理装置との通信状態が非通信状態から通信状態に変化したことを認識した後、通信状態が通信状態から非通信状態に遷移した場合に、前記保管デバイスに基づくデバイス情報を再構成することを特徴とする請求項１３に記載のデータ処理方法。
【請求項１５】
前記デバイス構成ステップが前記保管デバイスに基づくデバイス情報を再構成する場合、前記保管デバイスに保管されていた前記デバイス構成データを非表示属性にして前記保管デバイス上で管理する管理ステップを備えることを特徴とする請求項１４記載のデータ処理方法。
【請求項１６】
前記デバイス構成データは、前記情報処理装置のオペレーティングシステムを識別するための識別情報を含むことを特徴とする請求項１３又は１５に記載のデータ処理方法。
【請求項１７】
前記識別情報は、所定の疑似乱数に基づいて生成されることを特徴とする請求項１６記載のデータ処理方法。
【請求項１８】
前記デバイスドライバは、印刷処理を行うプリンタドライバ、原稿読み取りを行うスキャナドライバを含むことを特徴とする請求項１３記載のデータ処理方法。
【請求項１９】
複数のデバイスドライバを備える画像形成装置と通信可能な情報処理装置におけるデータ処理方法であって、
前記複数のデバイスドライバの中から使用するデバイスドライバを選択する選択ステップと、
前記選択ステップにより選択されたデバイスドライバにより特定されるデバイス構成データを作成する作成ステップと、
前記作成ステップにより作成されたデバイス構成データを前記画像形成装置の保管デバイスに転送する転送ステップと、
前記保管デバイスに保管されるデバイス情報に基づいて前記複数のデバイスドライバの中から特定されるいずれかのデバイスドライバをインストールするインストールステップと、
を備えることを特徴とするデータ処理方法。
【請求項２０】
前記作成ステップにより作成されたデバイス構成データに一致するデバイス構成データが前記保管デバイスに保管されているかどうかを判別する判別ステップと、
前記判別ステップが保管されていると判別した場合、前記保管デバイスに保管されている前記デバイス構成データを削除する削除ステップとを備え、
前記転送ステップは、
前記削除ステップによる削除が終了した後、前記作成ステップが作成したデバイス構成データを前記保管デバイスに転送することを特徴とする請求項１９記載のデータ処理方法。
【請求項２１】
前記作成ステップにより作成されたデバイス構成データに一致するデバイス構成データが前記保管デバイスに保管されているかどうかを判別する判別ステップと、
前記判別ステップが保管されていると判別した場合、前記保管デバイスに保管されていた前記デバイス構成データを取得して一時保管する一時保管ステップとを備え、
前記転送ステップは、
前記一時保管ステップに前記デバイス構成データを保管した後、前記作成ステップが作成したデバイス構成データを前記保管デバイスに転送することを特徴とする請求項１９記載のデータ処理方法。
【請求項２２】
前記作成ステップは、前記デバイス構成データの名称に、転送元の情報処理装置のオペレーティングシステムを識別する識別情報を設定することを特徴とする請求項１９乃至２１のいずれか１項に記載のデータ処理方法。
【請求項２３】
前記識別情報は、所定の疑似乱数に基づいて生成されることを特徴とする請求項２２に記載のデータ処理方法。
【請求項２４】
請求項１３乃至２３のいずれか１項に記載のデータ処理方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデバイスドライバを備える画像形成装置と通信可能な情報処理装置におけるデータ処理に関するものである。
【背景技術】
【０００２】
例えばデバイスとして、スキャナ装置や複数のPDL印刷装置を搭載した複合装置において、クライアントコンピュータ（以下、コンピュータと呼ぶ）との接続形態としてComposite USBを採用する製品がある。つまり、ＵＳＢケーブルを介して情報処理装置と複合装置とが接続されるシステム形態となる製品は、デバイス内部にUSB Hubを搭載しないで複数の機能を搭載できることから、主に低価格の複合デバイスで採用される傾向にある。なお、ここで、ＵＳＢとは、双方向通信可能なインタフェースであるところのUniversal Serial Busの略である。また、ＰＤＬとはPage Description Languageの略である。
【０００３】
また、Composite USBを採用したデバイスは、その特性上、クライアントコンピュータと接続してPlug and Playを実行すると、デバイス内部に定義された全ての論理デバイスが順次出現してくる。
【０００４】
従って、全てのドライバをInstallしないと、不明なデバイスが残ってしまうという特徴がある。
【０００５】
また、デバイスが複合装置が情報処理装置に接続される場合、複数PDLを搭載したデバイスの複数PDL分のドライバが情報処理装置にInstallされてしまうと、複数のプリンタアイコンが表示されてしまうことになる。
【０００６】
さらに、初心者のユーザなどでは、複数のプリンタアイコンが情報処理装置に表示されてしまうと、どのPDLデバイス（プリンタアイコン）を使うべきか迷ってしまうこともあった。
【０００７】
このような複数のPDLを搭載したデバイスから、所望のPDLを選択する方法が下記特許文献１に記載されている。特許文献１では、PDLオプションを追加した結果、複数PDLが混在するようになった環境でPlug and Playを正常に動作させる為にPlug and PlayでIEEE1284のCMDも参照することが記載されている。
【特許文献１】特開２００５−２５８６６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
なお、下記特許文献１では、デバイスに搭載されているPDLをPlug and PlayでＯＳが検出しないようにする手段については記載されていない。
【０００９】
また、Composite USBを採用した製品の正しいドライバのInstall手順は複合デバイスをクライアントコンピュータに接続する前に、クライアントコンピュータ上にドライバをInstallしてから接続するというが操作手順である。
【００１０】
しかし、初心者のユーザなどは製品を購入した後、デバイスドライバをInstallすることなしに、デバイスを付属するＵＳＢケーブルを用いてクライアントコンピュータに接続する操作を行う傾向がある。このような接続処理が実行された場合には、結果として不明なデバイスが残ってしまうという場合があり、ユーザの望むドライバ環境とは異なる状態になっていた。この結果、ユーザが意図するドライバを選択するための操作を難しくしてしまっていた。
【００１１】
本発明は、上記の課題を解決するためになされたもので、本発明の目的は、ユーザが必要としないデバイスドライバを情報処理装置にインストールしてしまうことを防止する仕組みを提供することである。
【課題を解決するための手段】
【００１２】
上記目的を達成する本発明の複合装置は以下に示す構成を備える。
【００１３】
複数のデバイスドライバを備える画像形成装置であって、情報処理装置と通信する通信手段と、前記情報処理装置から取得する情報を保管する保管デバイスと、前記通信手段の通信状態が変化することに応じて、前記保管デバイスに基づくデバイス情報を構成するデバイス構成手段と、を備え、前記デバイス構成手段は、前記複数のデバイスドライバの中からユーザにより選択されるデバイスドライバで特定されるデバイス構成データを前記情報処理装置から取得して、前記デバイス情報を再構成することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、ユーザが意図するデバイスドライバを特定するデバイス情報を画像形成装置に保管することで、ユーザが必要としないデバイスドライバを情報処理装置にインストールしてしまうことを防止できる。
【発明を実施するための最良の形態】
【００１５】
次に本発明を実施するための最良の形態について図面を参照して説明する。
【００１６】
＜システム構成の説明＞
〔第１実施形態〕
図１は、本実施形態を示す情報処理装置と画像形成装置を含む印刷システムの構成を説明するブロック図である。本例は、情報処理装置と画像形成装置とが双方向通信可能なＵＳＢインタフェースで接続される印刷システム例である。
【００１７】
また、本実施形態を示す情報処理装置は、通信手段としてＵＳＢインタフェースを介して複合装置が接続された場合に、複合装置が備えるメモリを自身のメモリとして参照可能に管理する。そして、情報処理装置は、複合装置が備えるメモリを保管デバイスと認識できるように構成されている。
【００１８】
この保管デバイスとは、後述するStorageデバイスに対応し、本実施形態では、複合装置が備える外部メモリ、ＲＡＭ等を用いて構成される例を示す。保管デバイスには、情報処理装置から転送される印刷データ、あるいはユーザが選択するデバイスドライバに対応するデバイス構成データを保管可能に構成されている。
【００１９】
複合装置は、複数のデバイスドライバ、例えばページ記述言語データを処理するプリンタドライバを備える。そして、情報処理装置から取得する保管デバイスに保管されたデバイス構成データに従って、デバイス情報を構成する処理を行う。
【００２０】
また、デバイス構成データには、後述するような所定の疑似乱数で生成される情報処理装置のＯＳを特定するための識別情報が設定されている。さらに、本実施形態では、ＵＳＢインタフェースとして機能するＵＳＢケーブルの状態が接続状態となっているのか、非接続状態となっているかを認識して監視する処理を行う。
【００２１】
なお、本実施形態では、インタフェースとして有線のＵＳＢインタフェースの一例を示すが、無線インタフェースで接続される印刷システムにも適用可能である。同様に、デバイスドライバとして、ＰＤＬドライバの例を示すが、デバイスドライバは、ＰＤＬドライバに限定されず、原稿読み取りを行うスキャナドライバ、ファクシミリ送受信処理を行うファクシミリドライバ等の各種のドライバが含まれる。なお、ここで、デバイスドライバは、ＯＳのPlug and Play機能で、かつ後述するデバイスの保管デバイスに保持されるデバイスの構成に従いインストールされる。
【００２２】
図１において、２０１はクライアントコンピュータ（コンピュータ）で、ＣＰＵ１が外部メモリ１１に記憶されるオペレーティングシステム（ＯＳ）をＲＡＭ２にロードした後、所定のアプリケーションをＲＡＭ２にロードすることで各種の情報処理を行う。
【００２３】
３はＲＯＭで、プログラム用ＲＯＭあるいは外部メモリ１１に記憶された文書処理プログラム等に基づいて図形、イメージ、文字、表（表計算等を含む）等が混在した文書処理を実行する。なお、ＣＰＵ１は、システムバス４に接続される各デバイスを総括的に制御する。ＲＡＭ２は、ＣＰＵ１の主メモリ、ワークエリア等として機能する。
【００２４】
また、このＲＯＭ３のプログラム用ＲＯＭあるいは外部メモリ１１には、ＣＰＵ１の制御プログラムであるＯＳ等を記憶し、ＲＯＭ３のフォント用ＲＯＭあるいは外部メモリ１１には上記文書処理の際に使用するフォントデータ等を記憶する。更に、ＲＯＭ３のデータ用ＲＯＭあるいは外部メモリ１１には上記文書処理等を行う際に使用する各種データを記憶する。
【００２５】
５はキーボードＩ／Ｆで、キーボード９や不図示のポインティングデバイスからのキー入力を制御する。６はディプレイＩ／Ｆで、ディスプレイ１０の表示を制御する。
【００２６】
７は外部メモリＩ／Ｆで、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、プリンタドライバ等を記憶する外部メモリ１１とのアクセスを制御する。外部メモリ１１には、ハードディスク（ＨＤ）、フレキシブルディスク（ＦＤ）、コンパクトディスク(ＣＤ)等が含まれる。
【００２７】
８はプリンタＩ／Ｆで、所定の双方向インタフェース（ＵＳＢ）２１を介して複合装置２０６に接続されて、複合装置２０６との通信制御処理を実行する。なお、ＣＰＵ１は、例えばＲＡＭ２上に設定された表示情報ＲＡＭへのアウトラインフォントの展開（ラスタライズ）処理を実行し、ディスプレイ１０上でのＷＹＳＩＷＹＧを可能としている。
【００２８】
また、ＣＰＵ１は、ディスプレイ１０上の不図示のマウスカーソル等で指示されたコマンドに基づいて登録された種々のウインドウを開き、種々のデータ処理を実行する。ユーザは印刷を実行する際、印刷の設定に関するウインドウを開き、プリンタの設定や、印刷モードの選択を含むプリンタドライバに対する印刷処理方法の設定を行える。
【００２９】
複合装置２０６において、１２はプリンタＣＰＵ（ＣＰＵ）で、ＲＯＭ１３のプログラム用ＲＯＭ又は外部メモリ１４に記憶された制御プログラムをＲＡＭ１９にロードして実行する。ＣＰＵ１２はロードしたプログラム等に基づいてシステムバス１５に接続される印刷部（プリンタエンジン）１７に出力情報としての画像信号を出力する。
【００３０】
また、このＲＯＭ１３のプログラムＲＯＭには、ＣＰＵ１２の制御プログラム等を記憶する。ＲＯＭ１３のフォント用ＲＯＭには上記出力情報を生成する際に使用するフォントデータ等を記憶する。さらに、ＲＯＭ１３のデータ用ＲＯＭにはハードディスク等の外部メモリ１４がないプリンタの場合には、クライアントコンピュータ上で利用される情報等を記憶している。
【００３１】
ＣＰＵ１２は、入出力部１８を介してコンピュータ２０１との通信処理が可能となっており、複合装置２０６内の情報等をコンピュータ２０１に通知することが可能に構成されている。
【００３２】
１９はＲＡＭで、ＣＰＵ１２の主メモリ、ワークエリア等として機能する。ＲＡＭ１９は図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。なお、ＲＡＭ１９は、出力情報展開領域、環境データ格納領域、ＮＶＲＡＭ、Storageデバイス等に用いられる。前述したハードディスク（ＨＤ）、ＩＣカード等の外部メモリ１４は、メモリコントローラ２０によりアクセスを制御される。なお、Storageデバイスとは、後述するデバイス構成データを保管する保管デバイスであり、本実施形態では、コンピュータ２０１からは、自分の外部メモリとして認識されるように構成されている。
【００３３】
外部メモリ１４は、オプションとして接続され、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。また、２２は操作部で、複合装置２０６の操作のためのスイッチおよびＬＥＤ表示器等が配され、大型液晶表示装置を備えたタッチパネルを備えている。
【００３４】
また、前述した外部メモリ１４は、１個に限らず、少なくとも１個以上備える構成としてもよい。また、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラムを格納した外部メモリ１４を複数接続できるように構成されていてもよい。
【００３５】
さらに、外部メモリ１４は、プリンタ本体内部のＲＡＭ１９上に格納されているデータをコピーして格納できるようになっていても良い。また、図示しないＮＶＲＡＭを有し、操作部２２からのプリンタモード設定情報を記憶するようにしてもよい。
【００３６】
読み取り部２４は、スキャナインターフェース２３、システムバス１５を介して、読み込んだデータをＲＡＭ１９に転送する。
【００３７】
図２は、図１に示した印刷システムにおけるデータ処理ステップを説明する概念図である。本例は、複合装置２０６とコンピュータ２０１とがＵＳＢインタフェースを介して通信可能な印刷システムの例を示す。
【００３８】
図２において、２０１は複合装置で、Scannerとして機能する読み取り部２４や種別の異なるPDLデータを解析して印刷データを生成するためのＰＤＬ処理デバイスを備える。ここで、ＰＤＬ処理デバイスは、モジュールとして記憶され、ＣＰＵ１２が当該ＰＤＬ処理デバイスを実行することでＰＤＬデータの処理が実現される。
【００３９】
なお、本実施形態において、PDLとはページ記述言語（Page Description Language）の略で、プリンタが解釈できる、印刷データ用の言語のことである。広く知られているところでは、Hewlett-Packard社のPCLやアドビ社のＰｏｓｔＳｃｒｉｐｔなどが上げられる。以下の説明において、印刷データ用の言語をPDLと略する。
【００４０】
複合装置２０６は、PDLデバイス監視ステップ２０２、データ印刷ステップ２０３、デバイス再構成ステップ２０４、USB/Storageデバイス監視ステップ２０５から成る。
【００４１】
PDLデバイス監視ステップ２０２では、コンピュータ２０１からUSBインタフェース経由で複合装置２０６に送られてきた印刷用データの監視を行うステップである。PDLデバイス監視ステップ２０２では、印刷用データが送信されてくるのを監視し、印刷データがコンピュータ２０１から送信された場合に、そのデータをデータ印刷ステップ２０３に送信する。
【００４２】
データ印刷ステップ２０３では、コンピュータ２０１からUSBインタフェース経由で複合装置２０６に送られてきた印刷用データを解釈し印刷部１７で印刷する印刷制御ステップである。
【００４３】
複合装置２０６に複数のPDLデータを解析して印刷データを生成する複数のＰＤＬ処理デバイスが搭載されている場合、コンピュータ２０１から送られてくる印刷情報の形式(PDL)に応じて、最適なＰＤＬ処理デバイスでラスタ変換処理を行い、印刷を行う。本実施形態では、ＰＤＬ処理デバイスとして、複数のページ記述言語に基づく印刷情報を処理可能に構成されている。ここで、ページ記述言語には、ＰＣＬ５ｅ、ＰＣＬ６等が含まれる。また、複数のＰＤＬ処理デバイスは、コンピュータ２０１から保管デバイスに保管されるデバイス構成データに従い、いずれかのＰＤＬ処理デバイスがアクティブ状態となるようにデバイス構成処理が実行される。これにより、ユーザがコンピュータ２０１で選択した以外のデバイスドライバに対応するＰＤＬ処理デバイスは有効とならない。
【００４４】
デバイス再構成ステップ２０４では、後述するデバイス構成データに基づいて、複合装置２０６のComposite USBを構成するデバイスの再構成を行うステップである。具体的には、コンピュータ２０１から送信されて保管デバイスに保管されるデバイス構成データで指定されるデバイスに対応するＰＤＬ処理デバイスがアクティブ状態となるデバイス情報が作成される。
【００４５】
ここで、作成されるデバイス情報に基づくデバイスの構成の一例を、図９，図１０等に示す。本例は、複合装置２０６の保管デバイス上で管理されるComposite USB構成の一例を示す。ここで、Composite USB構成は、複合装置２０６にＵＳＢケーブルが接続されていると認識した場合に以下のように作成される。具体的には、デバイス監視ステップ２０５が保管デバイスにデバイス構成情報が投入されたのを検出して、それを基にデバイス再構成ステップ２０４でデバイスの構成を変更した後に作成される。
【００４６】
USB/Storageデバイス監視ステップ２０５は、複合装置２０６とコンピュータ２０１との間のＵＳＢケーブルの接続状況の監視と複合装置２０６上にある、Storageデバイスの監視を行うステップである。
【００４７】
また、USB/Storageデバイスを監視する監視ステップ２０５は、ＵＳＢケーブルが入出力部１８に通信可能な接続状態であるのか、非通信可能な非接続状態であるのかを監視する。さらに、監視ステップ２０５は、ＵＳＢケーブルが入出力部１８に非通信状態から通信状態に遷移して接続状態であるのか、通信状態から非通信状態に遷移して非接続状態であるのかを監視している。
【００４８】
また、USB/Storageデバイス監視ステップ２０５は、ＵＳＢケーブルの接続が解除された場合や、Storageデバイスにデバイス構成データが投入された場合にデバイス再構成ステップ２０４に制御を移す。
【００４９】
さらに、USB/Storageデバイス監視ステップ２０５は、StorageデバイスにPDLで作成された印刷データが投入された場合には、そのデータをデータ印刷ステップ２０３に送信する。
【００５０】
２０１はクライアントコンピュータ（コンピュータ）で、印刷データ作成ステップ２０７、デバイス構成データ作成ステップ２０８、Storageデバイス監視ステップ２０９から成る。
【００５１】
印刷データ作成ステップ２０７は、コンピュータ２０１上で動作するアプリケーションソフトで作成した印刷データを、各種PDLドライバでPDLデータに変換して複合装置２０６に送信するステップである。通常の印刷処理では、この印刷データ作成ステップ２０７で作成したＰＤＬデータは、複合装置２０６のPDLデバイス監視ステップ２０２に送信され、そこで処理された後、データ印刷ステップ２０３に渡って印刷される。
【００５２】
しかし、一度PDLドライバでPDLに変換したデータを作成して、それをコンピュータ２０１上の外部メモリ１１に格納しておき、後にコンピュータ２０１から複合装置２０６のStorageデバイスに送信しても良い。この場合、USB/Storageデバイス監視ステップ２０５が、いずれかのPDLに基づいて作成された印刷情報を解析して生成される印刷データをデータ印刷ステップ２０３に送信する。デバイス構成データ作成ステップ２０８は、コンピュータ２０１上でユーザの指示に従って、利用したいScannerやPDLデバイスを選択して、その結果をデバイス構成データという形で作成して、複合装置２０６に送信するステップである。このデバイス構成データ作成ステップ２０８で作成したデバイス構成データを複合装置２０６のStorageデバイスに送信する。すると、複合装置２０６のUSB/Storageデバイス監視ステップ２０５がこれを検知して、デバイス側の制御がデバイス再構成ステップ２０４に移る。その結果、複合装置２０６のComposite USBの構成が変更される。
【００５３】
Storageデバイス監視ステップ２０９は、複合装置２０６に存在するStorageデバイスがコンピュータ２０１から見えなくなったか否かを監視するステップである。Storageデバイス監視ステップ２０９は、Storageデバイスの存在を監視することで、ＵＳＢケーブルの接続が切れたか否かを判断する。Storageデバイス監視ステップ２０９は、Storageデバイスの存在が一度無くなり、再び存在が復活した場合には、デバイス構成データをStorageに再投入する。
【００５４】
これにより、デバイス構成データをUSB/Storageデバイス監視ステップ２０５に検知させ、デバイス側の制御をデバイス再構成ステップ２０４に移させる。
【００５５】
図３は、図１に示した複合装置２０６の通常のインタフェース構成を説明する図である。本例は、本発明との対比の為、本発明を採用していない通常のComposite USBの構成を示している。
【００５６】
図３において、４０１は、複合装置２０６全体のComposite USBを示している。その中に１つのコンフィギュレーション４０２が存在し、更にその中に複数のインタフェース４０３、４０４、４０５、４０６、４０７が存在する。本例では、インタフェース４０３、４０４、４０５、４０６、４０７の個々のインタフェースが複合デバイスを構成する個々の要素になっている。
【００５７】
インタフェース４０３は、Scannerデバイスに対応するインタフェースである。インタフェース４０４はPDL1のデバイスに対応するインタフェースである。インタフェース４０５はPDL2のデバイスに対応するインタフェースである。インタフェース４０６はPDL3のデバイスに対応するインタフェースである。インタフェース４０７はPDL4のデバイスに対応するインタフェースである。
【００５８】
図４は、本実施形態を示す情報処理装置におけるデータ処理を説明するフローチャートである。本例は、コンピュータ２０１による通常のComposite USBデバイスに対する旧来のドライバInstall処理例である。ここで、旧来のドライバInstall処理例とは、本発明を適用しない通常のドライバInstall処理例を意味する。なお、Ｓ３０２〜Ｓ３０７は各ステップを示し、各ステップは、ＣＰＵ１が外部メモリ１１、ＲＯＭ３に格納されるドライバInstallプログラム、データをＲＡＭ２にロードして実行することで実現される。
【００５９】
図５は、本実施形態を示す画像形成装置によるドライバインストールモジュールの構成を説明する図である。
【００６０】
図５において、２３０１はドライバInstallプログラムで、外部メモリ１１であるCDやHDDやメモリデバイスなどに格納されている。通常、１つのInstallプログラムは１つないし複数のドライバプログラムをInstallする作業を行う。２３０２はドライバプログラムであり、ドライバセットとも言う。ドライバプログラムはInstall時に参照される固有情報を記述したinfファイルと各種実行モジュール(各種dll（Dynamic Link Library）)とリソース(Resource)で構成される。
【００６１】
ドライバInstallプログラム２３０１が起動されて旧来のドライバInstall処理から処理がスタートすると、Ｓ３０２へ進む。そして、Ｓ３０２で、ドライバInstallプログラム２３０１が外部メモリ１１であるCDやHDDやメモリデバイスに格納されているドライバプログラム２３０２を外部メモリ１１であるHDDの一時領域にCopyする。これにより、Plug and Playでドライバプログラム２３０２を参照できるように準備する。
【００６２】
次に、Ｓ３０３で、ユーザが複合装置２０６のＵＳＢケーブルをコンピュータ２０１に接続されたことを、ＣＰＵ１がプリンタＩ／Ｆ８を介して検知したら、その結果、Plug and Playが発生したことをＯＳが検知する。
【００６３】
そして、Ｓ３０４で、コンピュータ２０１のＯＳがPlug and Playの結果、最初に通知してきたデバイス(ScannerもしくはPDL)のinfファイルをHDDの一時領域から発見する。
【００６４】
そして、Ｓ３０５で、コンピュータ２０１のＯＳは、発見したinfファイルに従って、そのドライバプログラムをOSにInstallして、ＯＳがデバイスドライバとして登録する。
【００６５】
次に、Ｓ３０６で、最初のデバイスドライバのInstall完了に伴い、複合装置２０６に、次のデバイスが無いか否かをコンピュータ２０１のＯＳが確認する。ここで、デバイスが複合装置である場合、通常では、１つのデバイスドライバのInstallが完了すると、次のデバイスが順次出現してくるようになっている。
【００６６】
そして、次のデバイスが定義されていることをＯＳが確認した場合は、Ｓ３０７に進み、次のデバイスが定義されていないことをＯＳが確認した場合は、Ｓ３０８に進み、本処理を終了する。
【００６７】
そして、Ｓ３０７では、次のデバイス(ScannerもしくはPDL)のinfファイルをHDDの一時領域からＯＳが発見したら、Ｓ３０５へ処理を戻す。
【００６８】
以上の処理により、複合装置２０６に搭載されている全ての論理デバイスに対するデバイスドライバをＯＳにInstallする処理が完了する。
【００６９】
図３に示す例では、複合装置２０６に対して、Scannerが１つ、PDLが４つ定義されているので、結果として、図６に示すユーザインタフェース１９０１ように４つのPDLに対応したプリンタアイコン１９０２が作成されることになる。各プリンタアイコン１９０２が図３に示した各々のPDLに対応している。また、Scannerドライバは、１つ登録されることになる。ここでは、Scannerドライバに対応するアイコンは図示しない。ここで、本実施形態に対応するPlug and Playの仕組みについて、図７を用いて説明する。
【００７０】
図７は、一般的なコンピュータシステムにおけるPlug and Playの仕組みを説明する図である。
【００７１】
図７において、１７０１はIEEE1284で規定されているデバイス情報で、Class１７０２、MFC(製造者名)、１７０３、MDL(製品モデル)１７０４、CMD(コマンド)１７０５で構成される。
【００７２】
図１に示した外部メモリ１１であるHDDの一時領域などに格納されているドライバプログラム(図５の２３０２)はドライバInstall時に参照される固有情報を記述したinfファイルと各種実行モジュールとリソースによって構成される。
【００７３】
プリンタドライバのInfファイルの中にはPlug and Play時に参照されるDeviceIDが記述されている。このDeviceIDは、図７のMFC１７０３とMDL１７０４を組み合わせて構成されるものと一致する値が記載されている。スキャナドライバのinfファイルの中にはUSBの構成として図１のＲＯＭ１３のプログラムＲＯＭ上に定義されているVendor ID(製造者ID)とProduct ID(製品ID) とインタフェース番号が一致する値が記述されている。
【００７４】
図４に示したＳ３０３で複合装置２０６のＵＳＢケーブルをコンピュータ２０１に接続すると複合装置２０６から、図３の各種インタフェースの情報が順次コンピュータ２０１に送信される。ここで、各種インタフェースの情報がＯＳが実行するPlug and Play機能で参照されて、必要なデバイスのデバイスドライバがインストールされる。
【００７５】
ここで、インタフェースがスキャナである場合は、Vendor IDとProduct ID とインタフェース番号を複合装置２０６から入手する。ここで、入手したVendor IDとProduct ID とインタフェース番号と一致する情報が記載さているinfファイルを外部メモリ１１であるHDDの一時領域に格納されているinfファイルの中から探索する。なお、Vendor ID(製造者ID)とProduct ID(製品ID)は製品単位に付くものなので、インタフェース４０３〜４０７全てのインタフェース間で共通の値となる。
【００７６】
また、複合装置２０６から通知されるインタフェースの情報がプリンタである場合は、コンピュータ２０１のＯＳは以下の処理を行う。まず、コンピュータ２０１のＯＳは、IEEE1284に準拠したDeviceIDを複合装置２０６から取得する。そして、ンピュータ２０１のＯＳは、取得したDeviceIDと一致する情報が記載さているinfファイルを外部メモリ１１に対応する同じHDDの一時領域に格納されているinfファイルの中から探索する。
【００７７】
このように、コンピュータ２０１のＯＳは、Plug and Playを実行して、デバイスに対応したドライバを正確に対応付けてInstallすることが可能となっている。なお、本実施形態では、保管デバイスに保管されたデバイス構成データに従って作成された上記デバイス情報がコンピュータ２０１に通知される。
【００７８】
これにより、コンピュータ２０１のＯＳが上記Plug and Playを実行した場合に、ユーザが図１１に示すユーザインタフェースであらかじめ選択したデバイスドライバに対応するデバイスドライバに限定される。そして、インストール後は、インストールされたデバイスドライバに対応するプリンタアイコンのみが表示されることとなる。
【００７９】
図８〜図１０は、図１に示した複合装置２０６のインタフェース構成を説明する図である。本例は、本発明に対応するComposite USBの構成を示している。また、本例は、最大構成(複合装置２０６に存在する全てのデバイスがActive)になった場合の例を示している。
【００８０】
ここで、図３に示したインタフェースの構成との差異を説明する。
【００８１】
図３に示したインタフェースと、図８〜図１０に示すインタフェースとの構成との大きな違いは、図８にはインタフェース０としてStorageデバイスが定義されていることである。なお、インタフェース０の情報をインタフェース５０３と示す。
【００８２】
図８において、５０１は、複合装置２０６全体のComposite USBを示している。その中に１つのコンフィギュレーション５０２が存在し、更にその中に複数のインタフェース５０３、５０４、５０５、５０６、５０７、５０８が存在し、この個々のインタフェースが複合デバイスを構成する個々の要素になっている。
【００８３】
図８のインタフェース５０３がStorageデバイスに対応する。インタフェース５０４がScannerデバイスに対応する。インタフェース５０５がPDL1のデバイスに対応する。インタフェース５０６がPDL2のデバイスに対応する。インタフェース５０７がPDL3のデバイスに対応する。インタフェース５０８がPDL4のデバイスに対応する。
【００８４】
図９は、本発明のComposite USBの構成を示しているが、これは製品出荷時や、複合装置２０６とコンピュータ２０１との間の双方向インタフェース２１に対応するＵＳＢケーブルを抜いて接続を解除した時の構成を示している。
【００８５】
特徴としてはインタフェース０に対応するインタフェース６０３のStorageデバイスだけ存在している複合装置２０６となっている。
【００８６】
図９において、６０１は、複合装置２０６全体のComposite USBを示している。その中に、１つのコンフィギュレーション６０２が１つ存在し、更にその中に１つのインタフェース６０３が存在し、これが複合デバイスを構成する要素になっている。
【００８７】
図１０も本実施形態を示すComposite USBの構成を示しているが、これは以下に説明する本発明を適用した結果得ることのできる構成の一例を示している。
【００８８】
図１０において、７０１は、複合装置２０６全体のComposite USBを示している。その中に１つのコンフィギュレーション７０２が存在し、更にその中に複数のインタフェース７０３、７０４が存在し、この個々のインタフェースが複合デバイスを構成する個々の要素になっている。
【００８９】
図１０に示すインタフェース７０３がStorageデバイスに対応し、インタフェース７０４がPDL1のデバイスに対応している。この例では、結果として、図１１に示すユーザインタフェース１９０３で示すように、１つのPDLに対応したプリンタアイコン１９０４が作成されることになる。プリンタアイコン１９０４のみが選択可能な状態で表示されることで、ユーザは、ページ記述言語を処理するデバイスを確認することができる。本実施形態では、後述するように、ユーザが選択したページ記述言語処理手段（ＰＤＬ処理デバイス）に対応するプリンタアイコンのみが表示される。
【００９０】
図１１は、図１に示したコンピュータ２０１で表示可能なユーザインタフェースの一例を示す図である。
【００９１】
図１１において、１９０４はプリンタアイコンで、デバイスとしてPDL1に対応している。なお、このインタフェースの組み合わせは一例であり、Storageデバイスを必ず含んで図５に記述されているインタフェース個々の組み合わせで構成すれば、どの組み合わせでも問題なく構成することができる。
【００９２】
なお、図１１に示すアイコンの数と、コンピュータ２０１でユーザが図１６に示すユーザインタフェースで選択したデバイスの数とが整合して表示される。つまり、ユーザが選択したデバイスに基づくデバイス構成データが保管デバイスに保管された後は、ユーザが選択した以外のデバイスに対応するアイコンは表示されることはない。
【００９３】
図１２は、本実施形態を示す画像形成装置におけるデータ処理の一例を示すフローチャートである。本例は、複合装置２０６とコンピュータ２０１とを双方向に接続するためのＵＳＢケーブル(図１に示した双方向インタフェース２１に対応する)の接続状況の監視とＲＡＭ１９を割り当てたStorageデバイスの状態を監視する処理例である。なお、Ｓ８０２〜Ｓ８１１は各ステップを示し、各ステップは、図１に示した複合装置２０６上に存在するＲＯＭ１３もしくは外部メモリ１４上に格納されたプログラムをＲＡＭ１９にロードしてＣＰＵ１２が実行することで実現される。
【００９４】
なお、ここで言うStorageデバイスとは、図８に示したインタフェース５０３、図９に示したインタフェース６０３、図１０に示したインタフェース７０３の各インタフェースが管理するStorageデバイスを指す。具体的には図１に示した複合装置２０６が備えるＲＡＭ１９の一部を利用して構成される。
【００９５】
このStorageデバイスは、図１に示したコンピュータ２０１上からはＯＳ(不図示)の機能を利用することにより外部メモリ１１の一種として見ることができる。
【００９６】
つまり、コンピュータ２０１上でStorageデバイスを参照すると、実際には複合装置２０６のＲＡＭ１９上を参照していることになる。
【００９７】
また、図１２において、Ｓ８０２〜Ｓ８１１は各ステップを示し、各ステップは、ＣＰＵ１２が外部メモリ１４、ＲＯＭ１３に格納されるプログラム、データをＲＡＭ１９にロードして実行することで実現される。
【００９８】
USB/Storage監視処理が開始されると、Ｓ８０２で、ＣＰＵ１２は、入出力部１８に接続されていたＵＳＢケーブル(図１に示した双方向インタフェース２１)が複合装置２０６から抜かれたか否かを判断する。
【００９９】
ここで、ＣＰＵ１２が一度接続されていたＵＳＢケーブルが抜かれたと判断した場合、Ｓ８０３に進み、ＵＳＢケーブルの接続状態に変化が無いとＣＰＵ１２が判断した場合にはＳ８０５に進む。ここで、ＵＳＢケーブルの接続状態に変化が無い状態とは、例えば抜かれていたＵＳＢケーブルが抜かれたままの場合や、接続されていたＵＳＢケーブルが接続されたままの場合である。
【０１００】
そして、Ｓ８０３では、一度接続されたＵＳＢケーブルが抜かれたので新しいデバイスの構成をStorageデバイスのみにするべく、New構成をStorageデバイスのみとする。
【０１０１】
そして、Ｓ８０４では、デバイスの構成を新しくするためにデバイス再構成処理に制御を移す。そして、デバイス再構成処理が終了した後、Ｓ８０２に戻り、ＣＰＵ１２は、入出力部１８に接続されるＵＳＢケーブルの状態に変化があったか否かを再び監視する。
【０１０２】
先にも述べたが、Ｓ８０２では、すでにＵＳＢケーブルが抜かれており、その状態に変化がない状態であるとＣＰＵ１２が判断した場合は、ＣＰＵ１２は、ＵＳＢケーブルが抜かれた状態であるとは判断しない。つまり、一度この判断を行った時点でＵＳＢケーブルが接続されており、その後、ＵＳＢケーブルが抜かれた状態に変化した場合にのみ、ＵＳＢケーブルが抜かれたとＣＰＵ１２は判断する。
【０１０３】
そして、Ｓ８０５で、ＣＰＵ１２は、Storageデバイスに何か新しく格納されたか否か判断する。ここも、Ｓ８０２と同様に状態変化をＣＰＵ１２は監視する。ここで、状態に変化が無いとＣＰＵ１２が判断した場合(格納されていたものがそのまま格納されている場合)は何か入ったとは判断しない。つまり、新規に新しいものが投入された場合や、一度格納されていたものが消えた後、再び格納された場合などに何か入ったとＣＰＵ１２は判断する。
【０１０４】
ここで、Storageデバイスに何か入ったとＣＰＵ１２が判断した場合には、Ｓ８０６に進み、入っていないと判断した場合には、Ｓ８０２に戻る。なお、必要に応じて再度、Ｓ８０２に戻る前に適度な空き時間を入れて、図１のＣＰＵ１２の能力を無駄にしないように制御しても良い。
【０１０５】
Ｓ８０６では、Storageデバイスに新しく入ったデータが印刷データであるか否かをＣＰＵ１２が判断する。なお、本実施形態に示す複合装置２０６においては、Storageデバイスは、コンピュータ２０１上からはＯＳ(不図示)の機能を利用することにより、コンピュータ２０１が備える外部メモリ１１の一種と見ることができる。
【０１０６】
コンピュータ２０１の利用者は、Install済みのPDLドライバの印刷情報を複合装置２０６に送信して直接印刷することもできるし、PDLドライバの出力結果を外部メモリ１１に出力することもできる。この場合、外部メモリ１１上に格納したPDLドライバの出力結果を外部メモリ１１の一部として見ることのできるStorageデバイスに移動する。すると、その情報は双方向インタフェース２１に対応するＵＳＢケーブルを介して複合装置２０６に送られ、ＲＡＭ１９のStorageデバイス上に記憶される。
【０１０７】
そこで、Ｓ８０６では、Storageデバイスに格納された情報がPDLドライバの出力結果に対応する印刷情報であるか否かをＣＰＵ１２が判断する。ここで、PDLドライバの出力結果に対応する印刷情報であるとＣＰＵ１２が判断した場合には、Ｓ８０７に進み、通常の印刷処理と同様に印刷情報を解析して生成した印刷データを印刷して、Ｓ８０２へ戻る。
【０１０８】
なお、複合装置２０６のStorageデバイスは、ＯＳ(不図示)の機能により、１つのFolderとしても扱うことができる。FolderにJobを投げると印刷することのできるFolderを一般的にHot Folderと言うので、本実施形態でもHot Folderの機能が実現されていることになる。また、印刷データは印刷した後、Storageデバイスから削除される。
【０１０９】
一方、Ｓ８０６で、Storageデバイスに新しく入ったデータがPDLドライバの出力結果でないとＣＰＵ１２が判断した場合には、Ｓ８０８に進む。
【０１１０】
そして、Ｓ８０８で、Storageデバイスに新しく入ったデータがデバイス構成データであるか否かを複合装置２０６のＣＰＵ１２が判断する。
【０１１１】
図１３は、図１に示した複合装置２０６に保持されるデバイス構成データの一例を示す図である。
【０１１２】
図１３において、１８０１〜１８０４はデバイス構成データである。デバイス構成データ１８０１〜１８０３は、データのファイル名にコンピュータ２０１上で動作しているＯＳのGUID(Globally Unique Identifier)をそのファイル名称に利用してその拡張子として .guid と付けている。ここで、GUIDは128bitの２進数で構成される所定の擬似乱数で、一般的に同じ値を持つものは２つとないと言われている数値である。個々のＯＳを一意に識別するのに役に立つ数字であり、本実施形態でも、所定の疑似乱数で生成される２進数の値を用いてコンピュータ２０１上で動作しているＯＳを一意に識別する情報としている。本実施形態では、上記GUIDにより、転送元となるクライアントコンピュータのＯＳを一意に認識して、デバイス構成データを管理することができる。
【０１１３】
図１３において、デバイス構成データ１８０１、１８０２、１８０３、１８０４の先頭行に示されている 0x01, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 はTagである。このTagは、データがデバイス構成データであること示すものであり、ファイルの先頭数バイトを検査すればそれがデバイス構成データであると判断するのに利用できる。
【０１１４】
デバイス構成データ１８０１、１８０２、１８０３のようにファイル名がGUID.guidとなる場合でも、ファイルの先頭数バイトをCheckすることで最終的にそれがデバイス構成データであると、複合装置２０６のＣＰＵ１２が判断できる。なお、デバイス構成データ１８０４のようにファイル名がDeciceCFG01.cfgとなる場合でも同様である。この値と長さは、上記これに限ったものではなく、ファイルの内容を一意に識別可能と思われる値であれば、これに限るものではない。
【０１１５】
デバイス構成データ１８０１は、Vendor ID(製造者ID)が0000h、Product ID(製品ID)が00001hとインタフェース番号０のデバイスがStorageデバイスである事を示している。
【０１１６】
更に、インタフェース番号１のデバイスがScannerであり、インタフェース番号２のデバイスがPDL1、インタフェース番号３のデバイスがPDL2であることを示している。同様に、インタフェース番号４のデバイスがPDL3、インタフェース番号５のデバイスがPDL4であることを示している。
【０１１７】
デバイス構成データ１８０２は、Vendor ID(製造者ID)が0000h、Product ID(製品ID)が00001hとインタフェース番号が０のデバイスがStorageデバイスであることを示している。さらに、インタフェース番号１のデバイスがPDL1であることを示したデバイス構成データである。このデバイス構成データ１８０２でデバイスの再構成を行うと結果として、図１０で示したデバイスが構成されることになる。
【０１１８】
なお、この図１３で示したデバイス構成データはあくまでも一例であり、本発明はこの形式に限定されるものではない。以下、図１２に基づいて説明する。
【０１１９】
一方、図１２に示すＳ８０８で、Storageデバイスに新しく保管されたデータがデバイス構成データであると複合装置２０６のＣＰＵ１２が判断した場合には、Ｓ８０９に進む。そして、Ｓ８０９で、デバイス構成データではないとＣＰＵ１２が判断した場合には、Ｓ８１１に進む。
【０１２０】
そして、Ｓ８０９では、新しいデバイスの構成（図中では、Ｎｅｗ構成と記す）をStorageデバイスに加えて選択されたデバイス構成データのみにするべく、New構成をStorageデバイスと選択されたデバイス構成データとする。
【０１２１】
次に、Ｓ８１０では、デバイスの構成を新しくするためにデバイス再構成処理に制御を移し、Ｓ８０２へ戻る。この際、デバイス構成データはデバイス再構成後も削除されずにStorageデバイス上に残る。
【０１２２】
そして、Ｓ８０２に戻ったら、再びＵＳＢケーブルの状態に変化があったか否かをＣＰＵ１２が監視する。先にも述べたが、Ｓ８０２では、すでにＵＳＢケーブルが抜かれて非接続状態であり、その状態に変化がない状態の場合は抜かれた状態であるとはＣＰＵ１２は判断しない。
【０１２３】
一度、Ｓ８０２に示す判断を行った時点でＵＳＢケーブルが接続されており、その後、抜かれた状態に変化した場合にのみ、ＵＳＢケーブルが抜かれて非接続状態であるとＣＰＵ１２は判断する。
【０１２４】
一方、Ｓ８０８で、デバイス構成データでないとＣＰＵ１２が判断した場合、そのデータはデバイス構成データでもなく、PDLドライバが出力した印刷データでもないことが明らかである。なお、複合装置２０６のＲＡＭ１９のStorageデバイスで受け付けるデータは、デバイス構成データもしくは、PDLドライバが出力した印刷情報なので、この場合、Storageデバイスに格納されたのは処理できないデータであることになる。
【０１２５】
従って、Ｓ８１１で、ＣＰＵ１２は、ＲＡＭ１９上のStorageデバイスに格納されたデータを単純に削除する処理を行い、Ｓ８０２に移動して再びＵＳＢケーブルの状態に変化があったか否かを監視する。
【０１２６】
なお、この図１２に示すフローには終了がない。それは、複合装置２０６が起動した時点から、この図１２に示すフローが動き出し、デバイスが動作している限り、終了することなく動き続ける処理であるため、このフローには終了がない。
【０１２７】
以上述べたように図１２に示す処理で、USBケーブルが抜かれて接続状態が通信が途切れた状態に遷移した場合に、Storageデバイスだけのデバイスに構成を変化させることができる。また、ＲＡＭ１９上のStorageデバイスにコンピュータ２０１から投入されたデバイス構成データの指示に従ったデバイスに構成を変化させることができる。
【０１２８】
また、Storageデバイスに投入されたPDLドライバが出力した印刷情報を解析して生成した印刷データを印刷することができる。更に、Storageデバイスに投入された上記以外のデータを削除して無視することができる。
【０１２９】
これにより、複合装置は、最初に情報処理装置と通信可能に接続されて、保管デバイスにデバイス構成データを保管した後、ＵＳＢケーブルが情報処理装置或いは複合装置から抜かれた場合、保管デバイスからデバイス構成データを削除する。なお、ＵＳＢケーブルが一度接続された後、一旦ＵＳＢケーブルが抜かれて、再接続される場合における保管デバイス内のデバイス構成データの処理については後述する。
【０１３０】
図１４は、本実施形態を示す情報処理装置におけるデータ処理の一例を示すフローチャートである。本例は、Ｓ８１０における複合装置２０６上に存在する論理デバイスの状態をActiveもしくは非Activeに変化させ、デバイスの構成を再構成する処理の詳細処理例である。なお、Ｓ９０２はステップを示し、当該ステップは、図１に示した複合装置２０６上に存在するプログラムＲＯＭ１３もしくは外部メモリ１４上に格納されたプログラムをＣＰＵ１２が実行することで実現される。
【０１３１】
Ｓ９０２で、ＣＰＵ１２は、コンピュータ２０１から取得するNew構成に対応するデバイス構成データに従ってデバイスの再構成を行い、本処理を終了する。
【０１３２】
例えば、New構成に対応するデバイス構成データがStorageデバイスのみならば、ＣＰＵ１２は、Composite USBの構成を、Ｓ９１０、Ｓ９０２において、図９で示したように変化させ、複合装置２０６をリスタートさせる。
【０１３３】
また、New構成に対応するデバイス構成データがStorageデバイスとPDL1で構成されていれば、ＣＰＵ１２は、Composite USBの構成を、Ｓ９１０、Ｓ９０２で変化させ、複合装置２０６をリスタートさせる。
【０１３４】
なお、本実施形態において、本処理は複合装置２０６がリスタートの場合のみで実行されるものではない。本実施形態は、New構成に対応するデバイス構成データに従ってデバイスの再構成を行い、USBを論理的に再構成する方法も本発明には含まれる。
【０１３５】
以上述べたように図１４に示した処理で、New構成に対応するデバイス構成データに従ってデバイスを再構成することができる。
【０１３６】
図１５は、本実施形態を示す情報処理装置におけるデータ処理の一例を示すフローチャートである。本例は、コンピュータ２０１がデバイスドライバをインストールする際に、デバイス構成データを作成して複合装置２０６のStorageデバイス（ＲＡＭ１９）に格納する処理である。なお、Ｓ１００２〜Ｓ１０１５は各ステップを示し、各ステップは、コンピュータ２０１上に存在する外部メモリ１１に格納されたプログラムをＣＰＵ１が実行することで実現される。
【０１３７】
ＣＰＵ１は、コンピュータ２０１の外部メモリ１１であるCDやHDDやメモリデバイスなどに格納されている、図５に示すドライバInstallプログラム２３０１を起動する。
【０１３８】
そして、Ｓ１００２で、コンピュータ２０１の外部メモリ１１上の一時領域にドライバセットが存在するか否かをＣＰＵ１が確認する。この外部メモリ１１上の一時領域はPlug and Playの時にコンピュータ２０１上のＯＳ(不図示)からinfファイルの存在確認がなされる領域である。ここで、ドライバセットがあるとＣＰＵ１が判断した場合にはＳ１００４に進み、無いと判断した場合には、Ｓ１００３に進む。
【０１３９】
なお、ここでは、すでにドライバセットがある場合、Ｓ１００３をスキップしているが、この判断を行わず、強制的にＳ１００３を実行しても良い。この様な処理は、例えばVersion違いの新しいドライバを入手した時などにより新しいVersionのドライバを使う為に有効な処理である。
【０１４０】
そして、Ｓ１００３では、コンピュータ２０１の外部メモリ１１であるCDやHDDやメモリデバイスなどに格納されているドライバプログラムを外部メモリ１１上の一時領域にコピーしておく。この処理をしておくことにより、後ほどPlug and Playを行ったときに、ＯＳによりinfファイルの検索が行えるようになる。
【０１４１】
そして、Ｓ１００４で、ＣＰＵ１は、図１６に一例を示したような利用するデバイスドライバを選択するためのメニュー画面をディスプレイ１０上に表示する。そして、当該メニュー画面を介して、コンピュータ２０１の利用者に利用したいデバイスドライバの選択を行ってもらう。
【０１４２】
図１６は、図１に示したディスプレイ１０に表示されるユーザインタフェースの一例を示す図である。本例は、利用するデバイスドライバを選択するためのメニュー画面例である。
【０１４３】
図１６に示すメニュー画面１２０１において、１２０２はScannerドライバを利用するときに選択すべきCheck項目である。１２０３はPDL1ドライバを利用するときに選択すべきCheck項目である。
【０１４４】
１２０４はPDL2ドライバを利用するときに選択すべきCheck項目である。１２０５はPDL3ドライバを利用するときに選択すべきCheck項目である。１２０６はPDL4ドライバを利用するときに選択すべきCheck項目である。
【０１４５】
１２０７はデバイスドライバを選択せずに先に処理を進めるためのキャンセルボタンである。１２０８は選択したデバイスドライバで処理を先に進めるためのＯＫボタンである。なお、図１６に示すメニュー画面はあくまでも一例であり、このメニュー画面に示しされる選択項目に限定されるものではない。このように構成されたメニュー画面１２０１上でユーザが利用したいドライバを選択することで、Storageデバイスに設定すべきデバイス構成データの作成を指示できる。
【０１４６】
次に、Ｓ１００５で、図１６に示したメニュー画面で、デバイスドライバがコンピュータ２０１の利用者によって選択されたか否かをＣＰＵ１が判断する。具体的には、ＯＫボタン１２０８が押下されてかつ、図１６に示すCheck項目１２０２からCheck項目１２０６のうち、１つ以上のCheck項目に対応するチェックボックスに対してCheckされていればデバイスドライバが選択されていると判断して、Ｓ１００６に進む。
【０１４７】
一方、図１６に示すメニュー画面において、Check項目１２０２〜１２０６のいずれもCheckされていないか、又は図１６に示すのメニュー画面で、キャンセルボタン１２０７が押下されているとＣＰＵ１が判断した場合は、Ｓ１０１３に進む。この場合は、デバイスドライバが選択されていないことになる。
【０１４８】
そして、Ｓ１００６で、図１６に示すメニュー画面で選択したCheck項目に従って、図１３に示したデバイス構成データ１８０１、１８０２を作成するが、この時点のデータにはStorageデバイスに関する情報はセットされていない。
【０１４９】
次に、Ｓ１００７では、コンピュータ２０１のＣＰＵ１は、Storageデバイスの存在をCheckする。ここで、複合装置２０６のStorageデバイス(ＲＡＭ１９の一部)はコンピュータ２０１から見ると、あたかも外部メモリ１１の１つとして認識可能となる。
【０１５０】
なお、Storageデバイスの存在をCheckする方法は、一例としては図１７に示すように、Storageデバイス内に非表示属性のStorage認識用のTagファイル(図１７のファイル名２２０２のファイル)を予め格納しておく。
【０１５１】
その上で、ＣＰＵ１が複数存在する外部メモリ１１を順次調べて行き、このStorage認識用のTagファイルのあるデバイスが複合装置２０６のStorageデバイスであると認識する方法がある。
【０１５２】
別の例としては、Storageデバイスのボリューム名として予め決めておいて文字列を埋め込むことで、その文字列がボリューム名となっているデバイスが複合装置２０６のStorageデバイスであると認識する方法もある。この例を図１７のボリューム名２２０４に示す。
【０１５３】
図１７は、図１に示したディスプレイ１０に表示されるユーザインタフェースの一例を示す図である。本例は、Storageデバイスの確認画面の例である。
【０１５４】
図１７において、２２０１はボリューム画面で、ＯＳ(不図示)の機能を利用して、コンピュータ２０１上で外部メモリ１１の状況を参照する画面の例である。
【０１５５】
なお、ボリューム画面２２０１では、複合装置２０６のStorageデバイス(ＲＡＭ１９の一部)がコンピュータ２０１から見て、Ｈドライブとして見えている例を示している。
【０１５６】
２２０２はファイルで、そのＨドライブの中に StorageDistinguisher.stgdis というファイル名で存在していることを示している。このStorageDistinguisher.stgdisというファイル名２２０２は、これに限るものではない。おおよそ他のシステムでは作成しそうにない名称をそのファイルに付けて中身を空にしておくことで、該当ファイル名称のファイルがあるか否かを確認できる。もちろんファイルの中身を定義しておき、ファイル名称の確認と内容の確認の両方を行うことで確認しても良い。
【０１５７】
２２０３はStorageデバイスのボリューム画面で、Storageデバイスのボリューム名２２０４として、例えばLBP-XXXX_Storage という名称を定義した例である。この場合、LBP-XXXX_Storage というボリューム名２２０４のデバイスが存在すれば、それが複合装置２０６のStgorageデバイス(ＲＡＭ１９の一部)であるとＣＰＵ１は判断できる。
【０１５８】
なお、Storageデバイスの存在をCheckの結果、StorageデバイスがないとＣＰＵ１が判断した場合には、ＵＳＢケーブル(図１の双方向インタフェース２１)でコンピュータ２０１と複合装置２０６とが接続されていない可能性がある。従って、ＵＳＢケーブルの接続を促すための図１８に示すユーザインタフェースを表示するべく、Ｓ１０１４に進む。
【０１５９】
図１８は、図１に示したディスプレイ１０に表示されるユーザインタフェースの一例を示す図である。
【０１６０】
図１８において、２００１は、ユーザに対してＵＳＢケーブルを複合装置２０６に接続を促す画面の一例である。
【０１６１】
なお、接続する意思がない場合には、ユーザが画面２００１に対して、キャンセルボタン２００２を押下し、接続した後では、ＯＫボタン２００３を押下すると、各々次の状態に移ることができる。なお、この画面は一例であり、この画面に限定されるものではない。
【０１６２】
一方、Ｓ１００７で、StorageデバイスがあるとＣＰＵ１が判断された場合には、Ｓ１００８に進む。そして、Ｓ１００８では、存在の確認がとれた複合装置２０６のStorageデバイスの内部にデバイス構成データが存在するか否かをＣＰＵ１が判断する。ここで、存在するとＣＰＵ１が判断した場合には、Ｓ１００９に進み、存在しないとＣＰＵ１が判断した場合には、Ｓ１０１１に進む。
【０１６３】
そして、Ｓ１００９では、Storageデバイスに格納されているデバイス構成データが自分のGUIDと一致するファイル名として作成されているか否かをＣＰＵ１が確認する。ここで、一致するとＣＰＵ１が判断した場合は、Ｓ１０１０に進み、一致しないと判断した場合は、Ｓ１０１１に進む。
【０１６４】
なお、Ｓ１０１０に進んだ場合、複合装置２０６のStorageデバイスに自分のGUIDと一致するデバイス構成データが存在していることが明らかとなっている。これは、コンピュータ２０１が一度このデバイス構成データ作成処理を行い、Storageデバイスに自分のGUIDのデバイス構成データを複合装置２０６に格納しているということに他ならない。つまり、コンピュータ２０１によるデバイス構成データの作成処理が少なくとも初めての実行ではないことを示している。
【０１６５】
一度デバイス構成を決めて運用を開始した後に別の機能を使用したくなり、再びこのデバイス構成データ作成処理を実行したような場合にこのようなことが発生し得る。
【０１６６】
そこで、Ｓ１０１０で、複合装置２０６のStorageデバイスにすでに格納されている自分のGUIDのデバイス構成データを一度削除する。このように、複合装置２０６のStorageから自分のGUIDのデバイス構成データを削除することにより、図８の８０２のUSB/Storage確認処理を一度リセットすることが可能となる。これにより、再び、Storageデバイスに自分のGUIDのデバイス構成データを投入することにより、図１２に示したＳ８０２でStorageデバイスに何か入ったことを検出できるようになる。なお、Storageデバイスに格納されているデバイス構成データを削除するには、コンピュータ２０１が複合装置２０６に対して、当該デバイス構成データを特定する情報と、削除を指示するコマンドを送信する。これにより、複合装置２０６のＣＰＵ１２がStorageデバイスを構成するＲＡＭ１９上から削除することができる。
【０１６７】
次に、Ｓ１０１１で、ＣＰＵ１は、双方向インタフェース２１を介して、新しい構成に従って作成したデバイス構成データを複合装置２０６のStorageデバイスに転送する。この時、デバイス構成データのファイル名として自分のGUIDを使用して例えばGUID.guidという名称で非表示属性と読み取り専用属性を付けて複合装置２０６に格納する。なお、図１３に示すデバイス構成データ１８０１、１８０２などはその一例である。
【０１６８】
ここで、非表示属性を付けるのは複合装置２０６のStorageデバイスがコンピュータ２０１上では、外部メモリ１１の一部として見ることができる為、その内部も容易に参照することが可能な為である。また、ユーザによる不用意な修正を防止する目的で、非表示属性を付けておく。
【０１６９】
さらに、誤って削除されてしまうと、デバイス構成が消えてしまうので、不用意な削除を防止する目的で、読み取り専用属性も付けておく。
【０１７０】
この例では、複合装置２０６はファイル名称の拡張子.guid をもってそのファイルがデバイス構成データであることを識別することが可能となる。拡張子の前のGUIDの部分は、それを作成した４０００クライアントコンピュータが自分の作成したデータであることを識別するために用いる。
【０１７１】
また、図１３に示すデバイス構成データでは、ファイルの内部の先頭行には 0x00, 0x01, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 が記載されている。これら数バイトからなるファイルがデバイス構成データであることを示している。この値と長さはこの例に限ったものではなく、ファイルの内容を一意に識別可能と思われる値であれば、これに限るものではない。なお、ここでは、デバイス構成データであることを識別する為にGUIDをファイル名称として用い、拡張子に .guid を用いているが、この拡張子はこれに限るものではない。
【０１７２】
更に、デバイス構成データのファイル名称にGUIDを用いない構成も可能であり、図１３に示すデバイス構成データ１８０４で示した例も考えられる。このデバイス構成データ１８０４では、ファイル名称に DeviceCFG01.cfg と付けている。この DeviceCFG の部分は一例であり、これに限るものではない。
【０１７３】
また、その後の 01 は一連番号で、複合装置２０６のStorageデバイスに転送された順番に01から順次カウントアップされてゆく数字である。この部分も数字２桁に限定するものではなく、ファイルを一意に識別可能であれば、他の内容でもかまわない。
【０１７４】
ファイルの内部の先頭行には 0x00, 0x01, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 が記載されており、この数バイトでこのファイルがデバイス構成データであることを示している。この値と長さはこの例に限ったものではなく、ファイルの内容を一意に識別可能と思われる値であれば、これに限るものではない。
【０１７５】
ファイルの２行目にはGUIDの値である12340001-4980-1920-6788-123456789012 が記載されている。
【０１７６】
このデバイス構成データ１８０４で示した例の形式でデバイス構成データを作成した場合には、Ｓ１００８及びＳ１００９で以下の確認処理が実行される。この確認作業では複合装置２０６のStorageに格納されている複数のデバイス構成データを順次読み込み、記載されているGUIDの内容を順次確認しながら、処理を進めてゆく。
【０１７７】
また、この例でも先の例と同様な理由で、デバイス構成ファイルには非表示属性と読み取り専用属性を付けて格納しておく。
【０１７８】
次に、Ｓ１０１２では、ＣＰＵ１は、Storageデバイス監視処理が起動されていない場合にそれを起動する。ここで、Storageデバイス監視処理とは、図２に示したStorageデバイス監視ステップ２０９に対応する。なお、図１５に示す処理を初めて実行した場合には、Storageデバイス監視処理は起動されていないが、２回目以降に実行した場合には、すでに実行されている場合があり得る。そのような場合には、同じ処理を２重に起動しないように、ＣＰＵ１が制御しながら、必要な場合にのみ起動をかける。その後、処理を終了する。
【０１７９】
なお、この後、複合装置２０６側では、図１２に示したＳ８０９及びＳ８１０の処理が実行され、USBの構成が、図１６で指定した通りになる。その後、コンピュータ２０１上で動いているＯＳ(不図示)がPlug and Playの機能により外部メモリ１１上の一時領域をCheckして、Ｓ１００３でセットされたドライバのinfファイルが検出される。その結果、ユーザが選択したデバイスドライバのみがInstallされて使えるようになる。
【０１８０】
一方、Ｓ１００５で、デバイスドライバが選択されていないとＣＰＵ１が判断した場合は、Ｓ１０１３では、図１６に示した画面でデバイスドライバを選択しなかったか又はキャンセルボタン１２０７を押した場合の処理である。そこで、デバイスドライバを選択せずに処理を終了させたいという意思を再確認する意味で、図１９に示す処理終了確認画面をディスプレイ１０に表示してユーザの判断に基づく指示を判断する。
【０１８１】
図１９は、図１に示したディスプレイ１０に表示されるユーザインタフェースの一例を示す図である。本例は、ユーザに処理終了を確認するための画面２１０１の一例である。
【０１８２】
図１９において、ユーザがこの画面２１０１に対して、処理を終了させない場合には、キャンセルボタン２１０２を押下し、終了させても良い場合には、ＯＫボタン２１０３を押下する。
【０１８３】
なお、これは一例であり、この画面に限定されるものではない。この結果処理を終了させるＯＫボタン２１０３が押下されているとＣＰＵ１が判断した場合には、処理を終了する。
【０１８４】
一方、Ｓ１０１３で、処理を終了させないキャンセルボタン２１０２が押下されているとＣＰＵ１が判断した場合は、Ｓ１００４に戻る。そして、再度、図１６に一例を示したようなメニュー画面をディスプレイ１０に表示して、コンピュータ２０１の利用者に利用したいデバイスドライバの選択を行ってもらう処理に移る。
【０１８５】
一方、Ｓ１００７で、デバイス構成データ作成後にStorageデバイスの存在確認を行った結果、StorageデバイスがないとＣＰＵ１が判断した場合は、Ｓ１０１４へ進む。そして、Ｓ１０１４で、デバイス構成データの処理を正しく進める為に、ＵＳＢケーブルをコンピュータ２０１の利用者に複合装置２０６に対して接続する要求をユーザに促す図１８に一例を示す画面をディスプレイ１０に表示する。ここで、ＵＳＢケーブルとは、図１に示した双方向インタフェース２１に対応する。
【０１８６】
そして、Ｓ１０１５では、Ｓ１０１４においてディスプレイ１０に表示された図１８に示した画面に対して、利用者の指示を仰いだ結果、終了を指示するキャンセルボタン２００２をユーザが押下しているかどうかをＣＰＵ１が判断する。ここで、キャンセルボタン２００２がユーザにより押下されているとＣＰＵ１が判断した場合には、処理を終了する。
【０１８７】
一方、Ｓ１０１５で、キャンセルボタン２００２がユーザにより押下されていないとＣＰＵ１が判断した場合は、Ｓ１００７に戻り、Storageデバイスの存在確認処理に移る。つまり、処理を終了させることなく、ユーザが双方向インタフェース２１に対応するＵＳＢケーブルを接続した場合には、Ｓ１００７に戻り、Storageデバイスの存在確認処理に移る。
【０１８８】
以上述べたように図１５に示す一連の処理で、デバイス構成データを作成して複合装置２０６のStorageデバイス（ＲＡＭ１９）に格納することができる。その後、複合装置２０６でUSBの再構成処理が行われる。更にその結果Play and Platが発生して、図１６に示すユーザインタフェースで指示したデバイスドライバがＯＳにInstallされて使えるようになる。
【０１８９】
図２０は、本実施形態を示す情報処理装置におけるデータ処理手順の一例を示すフローチャートである。本例は、Storageデバイス監視ステップ２０９に対応する処理であって、複合装置２０６のStorageデバイス(ＲＡＭ１９の一部)の存在状況を監視し、その内容をCheckする処理例である。なお、Ｓ１１０２〜Ｓ１１０７は各ステップを示し、各ステップは、コンピュータ２０１上に存在する外部メモリ１１に格納されたプログラムをＣＰＵ１が実行することで実現される。
【０１９０】
コンピュータ２０１のＣＰＵ１が外部メモリ１１上にあるStorageデバイス監視処理を起動する。そして、Ｓ１１０２で、複合装置２０６のStorageデバイス(ＲＡＭ１９の一部)がコンピュータ２０１から外部メモリ１１の一つとして見ることができるか否かをＣＰＵ１が確認する。ここで、Storageデバイスが無いとＣＰＵ１が判断した場合、つまり、コンピュータ２０１から外部メモリ１１の一つとして見ることができないとＣＰＵ１が判断した場合には、Ｓ１１０２に戻り、再度存在状況の確認を行う。なお、必要に応じて、再度、Ｓ１１０２の処理に移る前に、適度な空き時間を入れて、図１の１ＣＰＵの能力を無駄に浪費しないように制御しても良い。
【０１９１】
一方、Ｓ１１０２で、StorageデバイスがあるとＣＰＵ１が判断した場合は、Ｓ１１０３で、見つかったStorageデバイスの内部にデバイス構成データがあるか否かの確認をＣＰＵ１が行う。なお、ＣＰＵ１は、デバイス構成データの形式に応じて適切な方式で確認を行う。
【０１９２】
なお、図１５の処理の説明において、デバイス構成データの形式にファイル名として自分のGUIDを使用して、例えばGUID.guidという名称で非表示属性と読み取り専用属性を付けて格納する方式を説明した。同様に、図１３に示したデバイス構成データ１８０４で示した例のように、DeviceCFG01.cfg というファイル名で格納する方式を説明した。
【０１９３】
従って、ＣＰＵ１は、Ｓ１１０３で、上記のいずれかの形式に従って、最適な方法でデバイス構成データが存在するか否かを確認する。ここで、デバイス構成データが無いとＣＰＵ１が判断した場合は、Ｓ１１０２に戻り、再び、Storageデバイスの存在Checkを行う。
【０１９４】
一方、Ｓ１１０３で、デバイス構成データが有ると判断した場合は、Ｓ１１０４に進み、Storageデバイスの内部に見つかったデバイス構成データが自分のGUIDと一致するのか否かをＣＰＵ１が判別する。ここで、自分のGUIDと一致しないものであるとＣＰＵ１が判別した場合は、Ｓ１１０２に戻り、再び、Storageデバイスの存在Checkを行う。
【０１９５】
一方、Ｓ１１０４で、Storageデバイスの内部に見つかったデバイス構成データが自分のGUIDと一致するとＣＰＵ１が判別した場合には、Ｓ１１０５に進む。
【０１９６】
そして、Ｓ１１０５では、デバイス構成データが自分のGUIDと一致するものであるので、デバイス構成データに記載されている全てのデバイスがActiveであり、そこに記載されていないデバイスが全て非Activeであるか否かをＣＰＵ１が判別する。ここで、全てのデバイスがActiveで、記載されていないデバイスが全て非ActiveであるとＣＰＵ１が判断した場合には、デバイス再構成処理は必要ないので、Ｓ１１０２に戻る。
【０１９７】
一方、Ｓ１１０５で、記載されている全てのデバイスがActiveでない場合や、記載されていないデバイスが全て非ActiveでないとＣＰＵ１が判断した場合には、デバイス再構成処理が必要なので、Ｓ１１０６に進む。なお、図２０において、Ｓ１１０６に処理が進むケースとは、一度デバイス構成データを作成して複合装置２０６の構成を決定した後、ＵＳＢケーブルを抜いて再度接続する場合が考えられる。あるいはコンピュータ２０１の電源を再投入した場合などに再び、Storageデバイスの存在を確認した場合などが考えられる。
【０１９８】
そして、Ｓ１１０６で、複合装置２０６のStorageデバイスから自分のGUIDのデバイス構成データを一度コンピュータ２０１上に移動させる。なお、本処理は、情報処理装置内のメモリ、例えばＲＡＭ２或いは外部メモリ１１にデバイス構成データを移動する処理なので、自分のGUIDのデバイス構成データは、元あった場所（複合装置２０６のＲＡＭ１９）からは削除されることになる。
【０１９９】
このように複合装置２０６のStorageデバイスから自分のGUIDのデバイス構成データを削除することにより、図１２に示したＳ８０２のUSB/Storage確認処理を一度リセットすることが可能となる。そして、再び、Storageデバイスに自分のGUIDのデバイス構成データを投入することにより、図１２に示したＳ８０２はStorageデバイスに何か入ったことを検出できるようになる。
【０２００】
次に、Ｓ１１０７で、一度コンピュータ２０１のメモリ上に移動させた自分のGUIDのデバイス構成データを再び複合装置２０６のStorageデバイスに移動させて、Ｓ１１０２へ戻る。この処理により、図１２に示したＳ８０２で複合装置２０６のStorageデバイスに何か入ったことを検出して、デバイス再構成処理が実行され、USBの構成がデバイス構成ファイルに示された形になる。
【０２０１】
なお、この図２０に示すフローには終了がないが、これはコンピュータ２０１上で最初にこの処理が起動した時点から、コンピュータ２０１が動作している限り、終了することなく動き続ける処理であるため、このフローには終了がない。
【０２０２】
また、コンピュータ２０１を一度終了させて再起動した場合にも、再起動後から終了することなく動き続ける処理の為、やはりこのフローには終了がない。
【０２０３】
以上のことにより、複合装置２０６上にUSB/Storageデバイス監視ステップとデバイス再構成ステップを持ち、クライアントコンピュータ上にデバイス構成データ作成ステップとStorageデバイス監視ステップを持つシステムにおいて、ユーザの所望するデバイスを使用可能なように構成することが可能となる。またこの構成処理は複合装置上の操作部での操作ではなく、クライアントコンピュータ上の操作で可能となる。
【０２０４】
また、一旦ＵＳＢケーブルが接続された後、何らかの理由でＵＳＢケーブルを抜いた後、再び同じクライアントコンピュータとＵＳＢケーブルを介して複合装置に再接続する場合がある。この場合には、保管デバイスで保持されているデバイス構成データを参照することで、その都度一度構成したデバイス構成に自動的に戻すことができる。さらに、複数のコンピュータでＵＳＢケーブルをつなぎ変えて複合装置を使用する場合には、接続するコンピュータのデバイスに適応してデバイス構成を変化させることが可能となる。
【０２０５】
また、ユーザが複合装置を購入した直後にドライバのInstallなしでクライアントコンピュータにＵＳＢケーブルを接続しても、ＯＳが標準でデバイスドライバを持っているStorageデバイスしかActiveとはならない。これにより、不明なデバイスが発生することがなくなる。
【０２０６】
〔第２実施形態〕
図２１は、本実施形態を示す画像形成装置におけるComposite USBの構成を示す図である。
【０２０７】
図２１において、１３０１は、複合装置２０６全体のComposite USBを示し、１つのコンフィギュレーション１３０２と、更にコンフィギュレーション１３０２の中にインタフェース０に対応するインタフェース１３０３が存在する例である。このインタフェース１３０３が複合デバイスを構成する要素になっている。インタフェース１３０３はPDL1のデバイスを示している。
【０２０８】
この例では、結果として図１１に示すユーザインタフェース１９０３で示したように、１つのPDLに対応したプリンタアイコン１９０４が作成されることになる。ここで、プリンタアイコン１９０４はPDL1に対応している。
【０２０９】
本例は、図１０に示すコンフィギュレーションと比較して、この図２１に示すComposite USBにはStorageデバイスがないのが特徴となっている。なお、このインタフェースの組み合わせは一例であり、Storageデバイス以外の図８に記述されているインタフェースの別の組み合わせで構成すれば、どの組み合わせでも問題なく構成することができる。
【０２１０】
なお、第２実施形態においても、製品出荷時や、複合装置２０６とコンピュータ２０１の間のＵＳＢケーブルを抜いて接続を解除した時の構成は図９に示した１つのStorageデバイスだけ存在している複合装置２０６となる。
【０２１１】
図２２は、本実施形態を示す画像形成装置におけるデータ処理手順を示すフローチャートである。本例は、ＵＳＢケーブル（図１の双方向インタフェース２１に対応する）の接続状況の監視とＲＡＭ１９を割り当てたStorageデバイスの状態を監視する処理例である。なお、Ｓ１４０２〜Ｓ１４１０は各ステップを示し、各ステップは、図１に示した複合装置２０６上に存在するＲＯＭ１３のプログラムＲＯＭもしくは１４外部メモリ上に格納されたプログラムをＣＰＵ１２が実行することで実現される。また、ここで言うStorageデバイスとは、図９に示したインタフェース０に対応するインタフェース６０３が管理するStorageデバイスのことを指し、具体的には図１のＲＡＭ１９の一部を利用して構成される。
【０２１２】
このStorageデバイスは、図１に示したコンピュータ２０１上からはＯＳ(不図示)の機能を利用することにより、外部メモリ１１の一種として見ることができる。
【０２１３】
USB/Storage監視処理が開始されると、Ｓ１４０２で、ＣＰＵ１２は、ＵＳＢケーブル(図１に示した双方向インタフェース２１に対応する)が複合装置２０６上から抜かれたか否かをCheckする。ここで、一度接続されていたＵＳＢケーブルが抜かれたとＣＰＵ１２が判断した場合、Ｓ１４０３に進み、状態に変化が無いとＣＰＵ１２が判断した場合には、Ｓ１４０５に進む。ここで、状態に変化が無いとは、抜かれていたＵＳＢケーブルが抜かれたままの場合や、接続されていたＵＳＢケーブルが接続されたままの場合である。
【０２１４】
そして、Ｓ１４０３で、ＣＰＵ１２は、一度接続されたＵＳＢケーブルが抜かれたので新しいデバイスの構成をStorageデバイスのみにするべく、New構成をStorageデバイスのみとする。そして、Ｓ１４０４で、ＣＰＵ１２は、デバイスの構成を新しくするためにデバイス再構成する処理に制御を移す。
【０２１５】
そして、ＣＰＵ１２によるデバイス再構成処理が終了した後、Ｓ１４０２に戻り、再びＵＳＢケーブルの状態に変化があったか否かを監視する。先にも述べたが、Ｓ１４０２ではすでにＵＳＢケーブルが抜かれており、その状態に変化がない状態の場合は抜かれたとは判断しない。一度この判断を行った時点でＵＳＢケーブルが接続されており、その後、抜かれた状態に変化した場合にのみ、ＵＳＢケーブルが抜かれたと判断する。
【０２１６】
一方、Ｓ１４０２でＵＳＢケーブルが抜かれたとＣＰＵ１２が判断した場合は、Ｓ１４０５で、Storageデバイス自体が存在するか否かをＣＰＵ１２が確認する。第２実施形態では、Storageデバイスが存在しない状態があり得るので、まず初めにその状態を確認する。
【０２１７】
具体的には、複合装置２０６上のUSB構成(図９や図２１)を確認し、StorageデバイスがActiveであるか否かをＣＰＵ１２が確認する。ここで、StorageデバイスがActiveで有るとＣＰＵ１２が判断した場合は、Ｓ１４０６に進み、StorageデバイスがActiveで無いとＣＰＵ１２が判断した場合には、Ｓ１４０２に戻る。
【０２１８】
そして、Ｓ１４０６では、Storageデバイスに何か新しく格納されたか否かをＣＰＵ１２が判断する。ここでも、Ｓ１４０２と同様に状態変化をＣＰＵ１２が監視する。ここで、状態に変化が無いとＣＰＵ１２が判断した場合(格納されていたものがそのまま格納されている場合)は、何か入ったとは判断しない。
【０２１９】
一方、Storageデバイスに対して、新規に新しいものが投入された場合や、一度格納されていたものが消えた後、再び、Storageデバイスに対して格納された場合などには、何か入ったとＣＰＵ１２が判断する。
【０２２０】
ここで、何か入ったとＣＰＵ１２が判断した場合には、Ｓ１４０７に進み、入っていないとＣＰＵ１２が判断した場合には、Ｓ１４０２に戻る。なお、必要に応じて再度、Ｓ１４０２に戻る前に適度な空き時間を入れる制御をＣＰＵ１２が行うことで、ＣＰＵ１２の能力を無駄にしないように制御しても良い。
【０２２１】
そして、Ｓ１４０７では、Storageデバイスに新しく入ったデータが、コンピュータ２０１から取得する上述した図１３に示すデバイス構成データであるか否かをＣＰＵ１２が判断する。なお、判断手法は、第１実施形態と同様であるので説明は省略する。
【０２２２】
ここで、新しく入ったデータがデバイス構成データであるとＣＰＵ１２が判断した場合には、Ｓ１４０８に進み、デバイス構成データではないとＣＰＵ１２が判断した場合には、Ｓ１４１０に進む。
【０２２３】
そして、Ｓ１４０８では、新しいデバイスの構成を選択されたデバイス構成データのみにするべく、ＣＰＵ１２は、New構成を選択されたデバイス構成データとする。そして、Ｓ１４０９で、ＣＰＵ１２は、デバイスの構成を新しくするためにデバイス再構成処理に制御を移す。本実施形態では、Ｓ１４０９のデバイス再構成を行った後は、Storageデバイスがなくなるので、Storageデバイスに投入されたデバイス構成データも同時に消えてなくなる。そして、デバイス再構成処理を終了したら、Ｓ１４０２に移動して再びＵＳＢケーブルの状態に変化があったか否かを監視する。
【０２２４】
なお、先にも述べたが、Ｓ１４０２ではすでにＵＳＢケーブルが抜かれており、その状態に変化がない状態の場合は抜かれたとは判断しない。一度この判断を行った時点でＵＳＢケーブルが接続されており、その後、抜かれた状態に変化した場合にのみ、ＵＳＢケーブルが抜かれたと判断する。
【０２２５】
一方、Ｓ１４０７でＮＯとＣＰＵ１２が判定された後、Ｓ１４１０に処理が移ってきた時点で、コンピュータ２０１から取得したデータはデバイス構成データではないことが明らかである。
【０２２６】
本実施形態において、ＲＡＭ１９のStorageデバイスで受け付けるデータはデバイス構成データなので、この場合、Storageデバイスに格納されたのは処理できないデータであることになる。
【０２２７】
従って、Ｓ１４１０では、ＣＰＵ１２がStorageデバイスに格納されたデータを単純に削除する処理を行い、Ｓ１４０２に移動して、再びＵＳＢケーブルの状態に変化があったか否かをＣＰＵ１２が監視する。
【０２２８】
なお、複合装置２０６が起動した時点からこの図１４のフローが動き出し、デバイスが動作している限り、終了することなく動き続ける処理であるため、図２２に示すフローには終了がない。
【０２２９】
以上述べたように、本実施形態では、図２２の処理で、USBの接続が切れた場合に、Storageデバイスだけのデバイスに構成を変化させることができる。また、Storageデバイスに投入されたデバイス構成データの指示に従ったデバイス構成に変化させることができる。
【０２３０】
さらに、Storageデバイスに投入されたデバイス構成データ以外のデータを削除して無視することができる。
【０２３１】
また、図１４に示したデバイス再構成処理は、第２実施形態でもそのまま有効であり、Ｓ９０２で、New構成に従ったデバイスの構成にデバイスを再構成することができる。なお、詳細な説明は省略する。
【０２３２】
図２３は、本実施形態を示す情報処理装置におけるデータ処理手順の一例を示すフローチャートである。本例は、複合装置に対するデバイスドライバを印刷する際に、デバイス構成データを作成して複合装置２０６のStorageデバイス（ＲＡＭ１９）に格納する処理例である。なお、Ｓ１５０２〜Ｓ１５１３は各ステップを示し、各ステップは、コンピュータ２０１上に存在する外部メモリ１１に格納されたプログラムをＣＰＵ１が実行することで実現される。なお、図１５に示す処理との違いは、作成されたデバイス構成データをコンピュータ２０１に一時保存し、Storageデバイスの存在をチェックした後、複合装置に転送する点が異なる。
【０２３３】
本処理は、ＣＰＵ１がコンピュータ２０１の外部メモリ１１であるCDやHDDやメモリデバイス上に格納されている図５に示したドライバInstallプログラム２３０１を起動すると開始される。
【０２３４】
ます、Ｓ１５０２では、コンピュータ２０１の外部メモリ１１上の一時領域にドライバセットが存在するか否かをＣＰＵ１が判断する。この外部メモリ１１上の一時領域は、Plug and Playの時にコンピュータ２０１上のＯＳ(不図示)からinfファイルの存在確認がなされる領域である。ここで、ドライバセットがあるとＣＰＵ１が判断した場合には、Ｓ１５０４に進み、無いとＣＰＵ１が判断した場合は、Ｓ１５０３に進む。
【０２３５】
なお、ここでは、すでにドライバセットがある場合、Ｓ１５０３をスキップしているが、この判断を行わず、強制的にＳ１５０３を実行しても良い。この様な処理は、例えばVersion違いの新しいドライバを入手した時などにより新しいVersionのドライバを使う為に有効な処理である。
【０２３６】
そして、Ｓ１５０３で、コンピュータ２０１の外部メモリ１１上であるCDやHDDやメモリデバイスにあるドライバプログラムを外部メモリ１１上の一時領域にコピーしておく。この処理を実行することにより、後ほどPlug and Playを行ったときに ＯＳからinfファイルの検索が行えるようになる。
【０２３７】
次に、Ｓ１５０４で、図１６に一例を示したようなメニュー画面をディスプレイ１０上にＣＰＵ１の制御で表示して、コンピュータ２０１の利用者に利用したいデバイスドライバの選択を行ってもらう。なお、ディスプレイ１０に表示される図１６に示した画面は、第２実施形態においてもそのまま有効である。
【０２３８】
次に、Ｓ１５０５では、図１６に示した画面でデバイスドライバが選択されたか否かＣＰＵ１が判断する。ここで、デバイスドライバが選択する条件は、例えば図１６に示す画面において、ユーザの操作に基づいて、ＯＫボタン１２０８が押下されていること。並びに、図１６に示したCheck項目１２０２〜１２０６のうち１つ以上のCheck項目に対応するチェックボックスに対してCheckがなされていればデバイスドライバが選択されていることである。そこで、これらの条件を満足しているとＣＰＵ１が判断した場合は、Ｓ１５０６に進む。
【０２３９】
一方、以下の条件を満足しているとＣＰＵ１が判断した場合は、デバイスドライバが選択されていないと判断する。具体的には、図１６において、Check項目１２０２〜１２０６のうちのいずれのCheckに対応するチェックボックスにCheckがなされていないこと。並びに、図１６に示す画面でキャンセルボタン１２０７がユーザの操作に基づいて押下されているとＣＰＵ１が判断した場合は、デバイスドライバが選択されていないと判断して、Ｓ１５１１に進む。
【０２４０】
そして、Ｓ１５０６では、図１６に示す画面において、ユーザが選択したCheck項目に従って、図１３に示したデバイス構成データ１８０３をＣＰＵ１がデバイス構成データ作成ステップ２０８を実行して作成する。
【０２４１】
そして、Ｓ１５０７では、ＣＰＵ１が作成したデバイス構成データをコンピュータ２０１の外部メモリ１１上の領域に一時保管しておく。なお、ここでは外部メモリ１１上の領域に一時保管したが、デバイス構成データはPlug and Playで参照される訳ではない。このため、後ほど参照するときに同じ場所を参照することが可能であれば、上記外部メモリ１１上の領域でなくても他の場所でも構わない。
【０２４２】
そして、Ｓ１５０８では、ＣＰＵ１は、複合装置２０６のStorageデバイスの存在をCheckする。複合装置２０６のStorage(ＲＡＭ１９の一部)はコンピュータ２０１から見ると、あたかも外部メモリ１１の１つとして見ることができる。ここで、存在Checkの方法であるが、一例としては、Storageデバイス内に非表示属性のStorage認識用のTagファイル(図１７に示したファイル２２０２)を予め格納しておく。そして、システムとして複数存在する外部メモリ１１を順次調べて行き、このStorage認識用のTagファイルのあるデバイスが複合装置２０６のStorageデバイスであると認識する方法がある。
【０２４３】
また、別の例としては、Storageデバイスのボリューム名として予め決めておいた文字列を埋め込むことで、その文字列が図１７に示すボリューム名２２０４となっているデバイスが複合装置２０６のStorageであると認識する方法もある。なお、判断手法については、第１実施形態と同様であるので説明を省略する。
【０２４４】
上記Ｓ１５０８で、Storageデバイスの存在をCheckの結果、StorageデバイスがないとＣＰＵ１が判断した場合には、ＵＳＢケーブルでコンピュータ２０１と複合装置２０６が接続されていない可能性がある。従って、接続を促す図１８に示した画面２００１を表示するべく、Ｓ１５１２に進む。
【０２４５】
一方、Ｓ１５０８で、StorageデバイスがあるとＣＰＵ１が判断した場合には、Ｓ１５０９に進む。そして、Ｓ１５０９で、ＣＰＵ１は、双方向インタフェース２１を介して、新しい構成に従って作成したデバイス構成データを複合装置２０６のStorageデバイスに転送する。この時、図１３に一例を示すデバイス構成データ１８０３のように、ファイル名として自分のGUIDを使用して、例えばGUID.guidという名称で非表示属性と読み取り専用属性を付けて格納する。なお、図１３に一例を示すデバイス構成データ１８０３、１８０４は、第１実施形態で説明した通りである。
【０２４６】
ここで、非表示属性属性を付けるのは複合装置２０６のStorageデバイスがコンピュータ２０１上では、外部メモリ１１の一部として見ることができる為、その内部も容易に参照することが可能な為である。つまり、ユーザによる不用意な修正を防止する目的で、非表示属性を付けておく。また、削除されてしまうと、デバイス構成が消えてしまうので、不用意な削除を防止する目的で、読み取り専用属性も付けておく。
【０２４７】
これにより複合装置２０６では、ファイル名称の拡張子.guidをもってそのファイルがデバイス構成データであることを識別することが可能となる。
【０２４８】
また、拡張子の前のGUIDの部分は、それを作成したコンピュータ２０１が自分の作成したデータであることを識別するために用いる。
【０２４９】
なお、ファイルの内部の先頭行には 0x00, 0x01, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 が記載されており、この数バイトでこのファイルがデバイス構成データであることを示している。この値と長さはこの例に限ったものではなく、ファイルの内容を一意に識別可能と思われる値であれば、これに限るものではない。
【０２５０】
なお、ここでは、デバイス構成データであることを識別する為にGUIDをファイル名称として用い、拡張子に.guidを用いているが、この拡張子はこれに限るものではない。
【０２５１】
更に、デバイス構成データのファイル名称にGUIDを用いない構成も可能であり、図１３に一例を示すデバイス構成データ１８０４で示した例も考えられる。デバイス構成データ１８０４の構成は、第１実施形態と同様である。また、この例でも先の例と同様な理由で、ファイルには非表示属性と読み取り専用属性を付けて格納しておく。
【０２５２】
次に、Ｓ１５１０では、Storageデバイス監視処理が起動されていない場合、ＣＰＵ１はStorageデバイス監視処理（Storageデバイス監視ステップ２０９に対応する）を起動する。この図２３に示す処理を初めて実行した場合には、Storageデバイス監視処理は起動されていない。しかし、２回目以降に実行した場合には、すでに実行されている場合があり得る、そのような場合には、同じ処理を２重に起動しないように、制御しながら、必要な場合にのみ起動をかける。その後、処理を終了する。
【０２５３】
なお、この後、複合装置２０６側では、図２２に示したＳ１４０８及びＳ１４０９の処理が実行され、USBの構成が図１６で指定した通りになる。その後、コンピュータ２０１上で動いているＯＳ(不図示)がPlug and Playの機能により外部メモリ１１上の一時領域をCheckして、Ｓ１５０３で、外部メモリ１１上の一時領域にセットされたドライバのinfファイルが検出される。その結果、デバイスドライバがInstallされて使えるようになる。
【０２５４】
一方、Ｓ１５０５で、図１６に示した画面でデバイスドライバが選択されないとＣＰＵ１が判断した場合は、Ｓ１５１１へ進む。そして、Ｓ１５１１で、デバイスドライバ選択せず処理を終了させたいという意思を再確認する意味で、図１９に一例を示した処理終了確認画面をディスプレイ１０にＣＰＵ１の制御で表示して、ユーザの判断に基づく指示をまつ。
【０２５５】
そして、図１９に示す画面において、ＯＫボタン２１０３が押下されているとＣＰＵ１が判断した場合は、処理を終了する。
【０２５６】
一方、Ｓ１５１１で、図１９に示す画面において、キャンセルボタン２１０２が押下されているとＣＰＵ１が判断した場合は、処理を終了させずに、Ｓ１５０４に戻り、再度図１６で一例を示したようなメニュー画面をディスプレイ１０に表示する。そして、図１６に示す画面において、コンピュータ２０１の利用者に利用したいデバイスドライバの選択を行ってもらう処理に移る。
【０２５７】
一方、Ｓ１５０８では、デバイス構成データ作成後にStorageデバイスの存在確認を行った結果、Storageデバイスが存在しないとＣＰＵ１が判断した場合は、Ｓ１５１２へ進む。そして、Ｓ１５１２で、デバイス構成データの処理を正しく進める為に、ＵＳＢケーブル(図１の双方向インタフェース２１)を接続させる指示をユーザに通知するため図１８に一例を示す画面をＣＰＵ１の制御で表示する。コンピュータ２０１の利用者は、図１８に示す画面を確認して、複合装置２０６に対してＵＳＢケーブル(図１の双方向インタフェース２１)を接続する必要があることを確認する。
【０２５８】
そして、Ｓ１５１３で、Ｓ１５１２で表示された図１８に一例を示す画面において、利用者の指示が終了を示すキャンセルボタン２００２を押下しているかどうかをＣＰＵ１が判断する。ここで、キャンセルボタン２００２を押下しているとＣＰＵ１が判断した場合は、処理を終了する。
【０２５９】
一方、Ｓ１５１３で、ＵＳＢケーブルを接続してＯＫボタン２００３を押下しているとＣＰＵ１が判断した場合には、Ｓ１５０８に戻り、Storageデバイスの存在確認処理に移る。
【０２６０】
以上述べたように図２３の処理で、デバイス構成データを作成して複合装置２０６のStorageデバイス（ＲＡＭ１９）に格納した後、複合装置２０６でUSBの再構成処理が行われる。更にその結果、Play and Platが発生して図１６に示す画面において、ユーザが指示したデバイスドライバがＯＳにInstallされて使えるようになる。
【０２６１】
図２４は、本実施形態を示す情報処理装置におけるデータ処理手順の一例を示すフローチャートである。本例は、複合装置２０６のStorageデバイス(１９ＲＡＭの一部)の存在状況を監視し、その内容をCheckする処理例である。なお、Ｓ１６０２、Ｓ１６０３は各ステップを示し、各ステップは、コンピュータ２０１上に存在する外部メモリ１１に格納されたプログラムをＣＰＵ１が実行することで実現される。
【０２６２】
まず、ＣＰＵ１は、コンピュータ２０１の外部メモリ１１上にあるStorageデバイス監視処理を起動する。
【０２６３】
そして、Ｓ１６０２で、複合装置２０６のStorageデバイス(ＲＡＭ１９の一部)がコンピュータ２０１から外部メモリ１１の一つとして見ることができるか否かを確認する。ここで、Storageデバイスが無いとＣＰＵ１が判断した場合、つまり、コンピュータ２０１から外部メモリ１１の一つとして見ることができないと判断した場合には、Ｓ１６０２に戻り、再度存在状況の確認を行う。なお、必要に応じて、再度Ｓ１６０２の処理に戻る前に、適度な空き時間を入れて、図１に示したＣＰＵ１の能力を無駄に浪費しないように制御しても良い。
【０２６４】
一方、Ｓ１６０２で、StorageデバイスがあるとＣＰＵ１が判断した場合は、Ｓ１６０３に処理を移す。なお、Ｓ１６０３に進む場合は、一度Storageデバイスにデバイス構成データを格納してデバイスの構成処理を実行させた後、ＵＳＢケーブルを抜くなどしてデバイス構成がStorageデバイスのみに戻ってしまった場合が考えられる。
【０２６５】
本実施形態では、一度デバイス構成データを作成して、デバイス再構成を実施するとStorageデバイスがなくなるので、再びStorageが出現するときには、そこには何も入っていないことが明らかである。
【０２６６】
そこで、Ｓ１６０３では、コンピュータ２０１の外部メモリ１１の一時領域にある、デバイス構成データを複合装置２０６のStorageデバイスへコピーして、Ｓ１６０２へ戻る。この後、複合装置２０６では、図２２に示すＳ１４０８及びＳ１４０９の処理が実行され、USBの構成が図１６で指定した通りの形になる。
【０２６７】
なお、この図１６のフローには終了がない。それは、コンピュータ２０１上で最初にこの処理が起動した時点から、コンピュータ２０１が動作している限り、終了することなく動き続ける処理であるため、このフローには終了がない。
【０２６８】
また、コンピュータ２０１を一度終了させて再起動した場合にも、再起動後から終了することなく動き続ける処理の為、やはりこのフローには終了がない。
【０２６９】
上述したように本システムにおいて、複合装置２０６上でUSB/Storageデバイス監視ステップ２０５とデバイス再構成ステップ２０４を実行する。一方、コンピュータ２０１上ではデバイス構成データ作成ステップ２０８とStorageデバイス監視ステップ２０９を実行する。これにより、デバイスが情報処理装置に接続された場合に、インストール可能な複数のデバイスドライバのうち、ユーザが所望するデバイスを使用可能なようにデバイスドライバをインストールすることが可能となる。
【０２７０】
また、ユーザによるデバイスの構成を選択する処理は、複合装置上の操作部での操作ではなく、コンピュータ上のユーザインタフェースを介して行うことができる。
【０２７１】
また、同じクライアントコンピュータとのＵＳＢケーブルの再接続では、その都度一度構成したデバイス構成に自動的に戻すことができる。また、複数のクライアントコンピュータでＵＳＢケーブルをつなぎ変えて使用する場合には、接続するクライアントコンピュータでの構成に応じてその構成を変化させることが可能となる。
【０２７２】
さらに、複合装置購入直後にドライバのInstallなしでクライアントコンピュータに接続しても、ＯＳが標準でデバイスドライバを持っているStorageデバイスしかActiveとはなっていない。このため、クライアントコンピュータにおいて、不明なデバイスが発生することを防ぐことが可能となる。
【０２７３】
以下、図２５，図２６に示すメモリマップを参照して本発明に係る情報処理装置で読み取り可能なデータ処理プログラムの構成について説明する。
【０２７４】
図２５は、本発明に係る画像形成装置で読み取り可能な各種データ処理プログラムを格納する記憶媒体のメモリマップを説明する図である。
【０２７５】
図２６は、本発明に係る情報処理装置で読み取り可能な各種データ処理プログラムを格納する記憶媒体のメモリマップを説明する図である。
【０２７６】
なお、特に図示しないが、記憶媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報，作成者等も記憶され、かつ、プログラム読み出し側のＯＳ等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
【０２７７】
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、各種プログラムをコンピュータにインストールするためのプログラムや、インストールするプログラムが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
【０２７８】
本実施形態における機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、ＣＤ−ＲＯＭやフラッシュメモリやＦＤ等の記憶媒体により、あるいはネットワークを介して外部の記憶媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
【０２７９】
以上のように、前述した実施形態の機能を実現するソフトウエアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【０２８０】
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０２８１】
従って、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【０２８２】
プログラムを供給するための記憶媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤなどを用いることができる。
【０２８３】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０２８４】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、該ホームページから本発明のコンピュータプログラムそのもの、もしくは、圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバやｆｔｐサーバ等も本発明の請求項に含まれるものである。
【０２８５】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０２８６】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけではない。例えばそのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行う。そして、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２８７】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込ませる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２８８】
本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施形態の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。
【０２８９】
本発明の様々な例と実施形態を示して説明したが、当業者であれば、本発明の趣旨と範囲は、本明細書内の特定の説明に限定されるのではない。
【図面の簡単な説明】
【０２９０】
【図１】本実施形態を示す情報処理装置、画像形成装置を含む印刷システムの構成を説明するブロック図である。
【図２】図１に示した印刷システムにおけるデータ処理ステップを説明する概念図である。
【図３】図１に示した複合装置２０６の通常のインタフェース構成を説明する図である。
【図４】本実施形態を示す情報処理装置におけるデータ処理を説明するフローチャートである。
【図５】本実施形態を示す画像形成装置によるドライバインストールモジュールの構成を説明する図である。
【図６】図１に示したコンピュータ２０１で表示可能なユーザインタフェースの一例を示す図である。
【図７】一般的なコンピュータシステムにおけるPlug and Playの仕組みを説明する図である。
【図８】図１に示した複合装置２０６のインタフェース構成を説明する図である。
【図９】図１に示した複合装置２０６のインタフェース構成を説明する図である。
【図１０】図１に示した複合装置２０６のインタフェース構成を説明する図である。
【図１１】図１に示したコンピュータ２０１で表示可能なユーザインタフェースの一例を示す図である。
【図１２】本実施形態を示す画像形成装置におけるデータ処理の一例を示すフローチャートである。
【図１３】図１に示した複合装置２０６におけるデバイス構成データの一例を示す図である。
【図１４】本実施形態を示す画像形成装置におけるデータ処理の一例を示すフローチャートである。
【図１５】本実施形態を示す情報処理装置におけるデータ処理の一例を示すフローチャートである。
【図１６】図１に示したディスプレイ１０に表示されるユーザインタフェースの一例を示す図である。
【図１７】図１に示したディスプレイ１０に表示されるユーザインタフェースの一例を示す図である。
【図１８】図１に示したディスプレイ１０に表示されるユーザインタフェースの一例を示す図である。
【図１９】図１に示したディスプレイ１０に表示されるユーザインタフェースの一例を示す図である。
【図２０】本実施形態を示す情報処理装置におけるデータ処理手順の一例を示すフローチャートである。
【図２１】本実施形態を示す画像形成装置におけるComposite USBの構成を示す図である。
【図２２】本実施形態を示す画像形成装置におけるデータ処理手順を示すフローチャートである。
【図２３】本実施形態を示す情報処理装置におけるデータ処理手順の一例を示すフローチャートである。
【図２４】本実施形態を示す情報処理装置におけるデータ処理手順の一例を示すフローチャートである。
【図２５】本発明に係る画像形成装置で読み取り可能な各種データ処理プログラムを格納する記憶媒体のメモリマップを説明する図である。
【図２６】本発明に係る情報処理装置で読み取り可能な各種データ処理プログラムを格納する記憶媒体のメモリマップを説明する図である。
【符号の説明】
【０２９１】
１、１２  ＣＰＵ
２、１９  ＲＡＭ
３、１３  ＲＯＭ
２０１  クライアントコンピュータ
２０６  複合装置
【図１】
2010039684.tif 000003
【図２】
2010039684.tif 000004
【図３】
2010039684.tif 000005
【図４】
2010039684.tif 000006
【図５】
2010039684.tif 000007
【図６】
2010039684.tif 000008
【図７】
2010039684.tif 000009
【図８】
2010039684.tif 000010
【図９】
2010039684.tif 000011
【図１０】
2010039684.tif 000012
【図１１】
2010039684.tif 000013
【図１２】
2010039684.tif 000014
【図１３】
2010039684.tif 000015
【図１４】
2010039684.tif 000016
【図１５】
2010039684.tif 000017
【図１６】
2010039684.tif 000018
【図１７】
2010039684.tif 000019
【図１８】
2010039684.tif 000020
【図１９】
2010039684.tif 000021
【図２０】
2010039684.tif 000022
【図２１】
2010039684.tif 000023
【図２２】
2010039684.tif 000024
【図２３】
2010039684.tif 000025
【図２４】
2010039684.tif 000026
【図２５】
2010039684.tif 000027
【図２６】
2010039684.tif 000028