(57)【要約】【課題】  より適切な排他制御を実行することを目的とする。【解決手段】  所定のプログラム及び、前記所定のプログラム以外の少なくとも１つの他のプログラムを有する情報処理装置のコンピュータに、ジョブが生成される前に、排他オブジェクトを取得するための取得処理を前記所定のプログラムを用いて実行する取得ステップと、前記所定のプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態では、前記所定のプログラムを用いて前記ジョブを生成し、前記所定のプログラムが用いられて実行された前記取得処理によって前記排他オブジェクトが取得されない状態では、前記所定のプログラムを用いて前記ジョブを生成しない生成ステップと、を実行させるプログラムを提供することによって課題を解決する。【選択図】  図１
2018124777.tif 000002
【特許請求の範囲】
【請求項１】
通信装置に画像処理を実行させるためのジョブを生成する所定のプログラム及び、前記所定のプログラム以外の少なくとも１つの他のプログラムを有する情報処理装置の制御方法であって、
前記ジョブが生成される前に、排他オブジェクトを取得するための取得処理を前記所定のプログラムを用いて実行する取得ステップと、
前記所定のプログラムが用いられて実行された前記取得処理によって前記排他オブジェクトが取得されない状態では、前記所定のプログラムを用いて前記ジョブを生成せず、前記所定のプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態で、前記所定のプログラムを用いて前記ジョブを生成する生成ステップと、
を有し、
前記所定のプログラムが用いられて生成された前記ジョブは、前記所定のプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態で前記通信装置に送信され、
前記所定のプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されていない状態では、前記他のプログラムに基づいた前記通信装置との通信が実行可能であり、前記所定のプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態では、前記他のプログラムに基づいた前記通信装置との通信が行われないことを特徴とする制御方法。
【請求項２】
前記他のプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている場合、前記所定のプログラムが用いられて実行された前記取得処理により前記排他オブジェクトが取得されず、前記他のプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されていない場合、前記所定のプログラムが用いられて実行された前記取得処理により前記排他オブジェクトが取得されないことを特徴とする請求項１に記載の制御方法。
【請求項３】
前記所定のプログラムが用いられて前記取得処理が実行された後、前記所定のプログラムが用いられて実行された前記取得処理によって前記排他オブジェクトが取得されない状態が所定の時間以上続いた場合、前記所定のプログラムが用いられて前記ジョブが生成されることを特徴とする請求項１又は２に記載の制御方法。
【請求項４】
前記所定のプログラムが用いられて生成された前記ジョブが前記通信装置に送信された場合、前記所定のプログラムが用いられて実行された前記取得処理により取得されたことで保持されている前記排他オブジェクトを破棄する破棄ステップを更に有し、
前記所定のプログラムが用いられて実行された前記取得処理により取得されたことで保持されている前記排他オブジェクトが破棄された場合、前記他のプログラムに基づいた前記通信装置との通信が実行可能となることを特徴とする請求項１乃至３のいずれか１項に記載の制御方法。
【請求項５】
前記通信装置に送信された前記ジョブに基づく処理が前記通信装置によって完了されるまで、前記通信装置に送信された前記ジョブに関する情報を前記通信装置から受信する受信ステップと、
前記通信装置に送信された前記ジョブに基づく処理が前記通信装置によって完了された場合、前記所定のプログラムが用いられて実行された前記取得処理により取得されたことで保持されている前記排他オブジェクトを破棄する破棄ステップを更に有し、
前記所定のプログラムが用いられて実行された前記取得処理により取得されたことで保持されている前記排他オブジェクトが破棄された場合、前記他のプログラムに基づいた前記通信装置との通信が実行可能となることを特徴とする請求項１乃至３のいずれか１項に記載の制御方法。
【請求項６】
前記所定のプログラムが用いられて生成される前記ジョブがサーバを介して前記通信装置に送信される場合、前記所定のプログラムが用いられて前記ジョブが生成される前に、前記サーバが有する所定のサーバ側プログラムを用いた前記取得処理を実行させるための指示を前記サーバに送信する指示ステップを更に有し、
前記所定のプログラムが用いられて生成される前記ジョブが前記サーバを介さず前記通信装置に送信される場合、前記所定のプログラムが用いられて前記ジョブが生成される前に、前記所定のプログラムが用いられて前記取得処理が実行され、
前記指示が前記サーバにより受け付けられた場合、前記所定のサーバ側プログラムが用いられて前記取得処理が実行され、
前記所定のプログラムが用いられて生成される前記ジョブが前記サーバを介して前記通信装置に送信される場合、前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態で、前記所定のプログラムが用いられて前記ジョブが生成され、前記所定のサーバ側プログラムが用いられて実行された前記取得処理により前記排他オブジェクトが取得されない状態で、前記所定のプログラムが用いられて前記ジョブが生成されず、
前記所定のプログラムが用いられて生成された前記ジョブは、前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態で前記サーバを介して前記通信装置に送信され、
前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態では、前記サーバが有し、且つ前記所定のサーバ側プログラム以外の少なくとも１つのプログラムに基づいた前記通信装置との通信が行われないことを特徴とする請求項１乃至５のいずれか１項に記載の制御方法。
【請求項７】
前記所定のプログラムが用いられて生成された前記ジョブが前記サーバを介して前記通信装置に送信された場合、前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得されたことで保持されている前記排他オブジェクトが破棄され、
前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得されたことで保持されている前記排他オブジェクトが破棄された場合、前記サーバが有し、且つ前記所定のサーバ側プログラム以外の少なくとも１つのプログラムに基づいた前記通信装置との通信が実行可能となることを特徴とする請求項６に記載の制御方法。
【請求項８】
前記通信装置に送信された前記ジョブに基づく処理が前記通信装置によって完了されるまで、前記通信装置に送信された前記ジョブに関する情報を前記サーバを介して前記通信装置から受信する情報受信ステップを更に有し、
前記通信装置に送信された前記ジョブに基づく処理が前記通信装置によって完了された場合、前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得されたことで保持されている前記排他オブジェクトが破棄され、
前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得されたことで保持されている前記排他オブジェクトが破棄された場合、前記サーバが有し、且つ前記所定のサーバ側プログラム以外の少なくとも１つのプログラムに基づいた前記通信装置との通信が実行可能となることを特徴とする請求項６に記載の制御方法。
【請求項９】
前記所定のサーバ側プログラムは、前記サーバが有するプリンタドライバに対応するプログラムであり、
前記サーバが有し、且つ前記所定のサーバ側プログラム以外の少なくとも１つのプログラムは、前記サーバが有するプリンタドライバ以外のプログラムであることを特徴とする請求項６乃至８のいずれか１項に記載の制御方法。
【請求項１０】
前記所定のプログラムが用いられて生成される前記ジョブは、記録剤を用いて記録媒体上に画像を形成する印刷処理を前記通信装置に実行させるための印刷ジョブ又は原稿を読み取って、当該原稿に基づく画像データを生成させるためのスキャンジョブであり、
前記通信装置は、前記印刷ジョブを受信した場合、前記印刷処理を実行することを特徴とする請求項１乃至９のいずれか１項に記載の制御方法。
【請求項１１】
前記所定のプログラムは、プリンタドライバであることを特徴とする請求項１乃至１０のいずれか１項に記載の制御方法。
【請求項１２】
前記所定のプログラムは、ランゲージモニタを有しないプリンタドライバであることを特徴とする請求項１乃至１１のいずれか１項に記載の制御方法。
【請求項１３】
前記所定のプログラムは、Ｖｅｒｓｉｏｎ４ドライバであることを特徴とする請求項１乃至１２のいずれか１項に記載の制御方法。
【請求項１４】
前記所定のプログラムが用いられて生成された前記ジョブの送信と、前記他のプログラムに基づいた前記通信装置との通信とが、同じ通信経路で行われることを特徴とする請求項１乃至１３のいずれか１項に記載の制御方法。
【請求項１５】
前記同じ通信経路は、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ（登録商標）であることを特徴とする請求項１４に記載の制御方法。
【請求項１６】
通信装置に画像処理を実行させるためのジョブを生成する所定のプログラムであって、
前記所定のプログラム及び、前記所定のプログラム以外の少なくとも１つの他のプログラムを有する情報処理装置のコンピュータに、
前記ジョブが生成される前に、排他オブジェクトを取得するための取得処理を前記所定のプログラムを用いて実行する取得ステップと、
前記所定のプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態では、前記所定のプログラムを用いて前記ジョブを生成し、前記所定のプログラムが用いられて実行された前記取得処理によって前記排他オブジェクトが取得されない状態では、前記所定のプログラムを用いて前記ジョブを生成しない生成ステップと、を実行させ、
前記所定のプログラムが用いられて生成された前記ジョブは、前記所定のプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態で前記通信装置に送信され、
前記所定のプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されていない状態では、前記他のプログラムに基づいた前記通信装置との通信が実行可能であり、前記所定のプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態では、前記他のプログラムに基づいた前記通信装置との通信が行われないことを特徴とするプログラム。
【請求項１７】
前記他のプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている場合、前記所定のプログラムが用いられて実行された前記取得処理により前記排他オブジェクトが取得されず、前記他のプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されていない場合、前記所定のプログラムが用いられて実行された前記取得処理により前記排他オブジェクトが取得されないことを特徴とする請求項１６に記載のプログラム。
【請求項１８】
前記所定のプログラムが用いられて前記取得処理が実行された後、前記所定のプログラムが用いられて実行された前記取得処理によって前記排他オブジェクトが取得されない状態が所定の時間以上続いた場合、前記所定のプログラムが用いられて前記ジョブが生成されることを特徴とする請求項１６又は１７に記載のプログラム。
【請求項１９】
前記所定のプログラムが用いられて生成された前記ジョブが前記通信装置に送信された場合、前記所定のプログラムが用いられて実行された前記取得処理により取得されたことで保持されている前記排他オブジェクトを破棄する破棄ステップを更に実行させ、
前記所定のプログラムが用いられて実行された前記取得処理により取得されたことで保持されている前記排他オブジェクトが破棄された場合、前記他のプログラムによる指示に基づいた前記通信装置との通信が実行可能となることを特徴とする請求項１６乃至１８のいずれか１項に記載のプログラム。
【請求項２０】
前記通信装置に送信された前記ジョブに基づく処理が前記通信装置によって完了されるまで、前記通信装置に送信された前記ジョブに関する情報を前記通信装置から受信する受信ステップと、
前記通信装置に送信された前記ジョブに基づく処理が前記通信装置によって完了された場合、前記所定のプログラムが用いられて実行された前記取得処理により取得されたことで保持されている前記排他オブジェクトを破棄する破棄ステップを更に実行させ、
前記所定のプログラムが用いられて実行された前記取得処理により取得されたことで保持されている前記排他オブジェクトが破棄された場合、前記他のプログラムによる指示に基づいた前記通信装置との通信が実行可能となることを特徴とする請求項１６乃至１９のいずれか１項に記載のプログラム。
【請求項２１】
前記所定のプログラムが用いられて生成される前記ジョブがサーバを介して前記通信装置に送信される場合、前記所定のプログラムが用いられて前記ジョブが生成される前に、前記サーバが有する所定のサーバ側プログラムに前記取得処理を実行させるための指示を送信する指示ステップをさらに実行させ、
前記所定のプログラムが用いられて生成される前記ジョブが前記サーバを介さず前記通信装置に送信される場合、前記所定のプログラムが用いられて前記ジョブが生成される前に、前記所定のプログラムが用いられて前記取得処理が実行され、
前記指示が前記サーバにより受け付けられた場合、前記所定のサーバ側プログラムが用いられて前記取得処理が実行され、
前記所定のプログラムが用いられて生成される前記ジョブが前記サーバを介して前記通信装置に送信される場合、前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態で、前記所定のプログラムが用いられて前記ジョブが生成され、前記所定のサーバ側プログラムが用いられて実行された前記取得処理により前記排他オブジェクトが取得されない状態で、前記所定のプログラムが用いられて前記ジョブが生成されず、
前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態では、前記サーバが有し、且つ前記所定のサーバ側プログラム以外の少なくとも１つのプログラムに基づいた前記通信装置との通信が行われないことを特徴とする請求項１６乃至２０のいずれか１項に記載のプログラム。
【請求項２２】
前記所定のプログラムが用いられて生成された前記ジョブが前記サーバを介して前記通信装置に送信された場合、前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得されたことで保持されている前記排他オブジェクトが破棄され、
前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得されたことで保持されている前記排他オブジェクトが破棄された場合、前記サーバが有し、且つ前記所定のサーバ側プログラム以外の少なくとも１つのプログラムによる指示に基づいた前記通信装置との通信が実行可能となることを特徴とする請求項２１に記載のプログラム。
【請求項２３】
前記通信装置に送信された前記ジョブに基づく処理が前記通信装置によって完了されるまで、前記通信装置に送信された前記ジョブに関する情報を前記サーバを介して前記通信装置から受信する情報受信ステップをさらに実行させ、
前記通信装置に送信された前記ジョブに基づく処理が前記通信装置によって完了された場合、前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得されたことで保持されている前記排他オブジェクトが破棄され、
前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得されたことで保持されている前記排他オブジェクトが破棄された場合、前記サーバが有し、且つ前記所定のサーバ側プログラム以外の少なくとも１つのプログラムによる指示に基づいた前記通信装置との通信が実行可能となることを特徴とする請求項２１に記載のプログラム。
【請求項２４】
前記所定のサーバ側プログラムは、前記サーバが有するプリンタドライバに対応するプログラムであり、
前記サーバが有し、且つ前記所定のサーバ側プログラム以外の少なくとも１つのプログラムは、前記サーバが有するプリンタドライバ以外のプログラムであることを特徴とする請求項２１乃至２３のいずれか１項に記載のプログラム。
【請求項２５】
前記所定のプログラムが用いられて生成される前記ジョブは、記録剤を用いて記録媒体上に画像を形成する印刷処理を前記通信装置に実行させるための印刷ジョブであり、
前記通信装置は、前記印刷ジョブを受信した場合、前記印刷処理を実行することを特徴とする請求項１６乃至２４のいずれか１項に記載のプログラム。
【請求項２６】
プリンタドライバであることを特徴とする請求項１６乃至２５のいずれか１項に記載のプログラム。
【請求項２７】
ランゲージモニタを有しないプリンタドライバであることを特徴とする請求項１４乃至２４のいずれか１項に記載のプログラム。
【請求項２８】
Ｖｅｒｓｉｏｎ４ドライバであることを特徴とする請求項１６乃至２７のいずれか１項に記載のプログラム。
【請求項２９】
前記所定のプログラムが用いられて生成された前記ジョブの送信と、前記他のプログラムに基づいた前記通信装置との通信とが、同じ通信経路で行われることを特徴とする請求項１６乃至２８のいずれか１項に記載のプログラム。
【請求項３０】
前記同じ通信経路は、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ（登録商標）であることを特徴とする請求項２９に記載のプログラム。
【請求項３１】
通信装置に画像処理を実行させるためのジョブを生成する所定のプログラム及び、前記所定のプログラム以外の少なくとも１つの他のプログラムを有する情報処理装置であって、
前記ジョブが生成される前に、排他オブジェクトを取得するための取得処理を前記所定のプログラムを用いて実行する取得手段と、
前記所定のプログラムが用いられて実行された前記取得処理によって前記排他オブジェクトが取得されない状態では、前記所定のプログラムを用いて前記ジョブを生成せず、前記所定のプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態で、前記所定のプログラムを用いて前記ジョブを生成する生成手段と、を有し、
前記所定のプログラムが用いられて生成された前記ジョブは、前記所定のプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態で前記通信装置に送信され、
前記所定のプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されていない状態では、前記他のプログラムに基づいた前記通信装置との通信が実行可能であり、前記所定のプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態では、前記他のプログラムに基づいた前記通信装置との通信が行われないことを特徴とする情報処理装置。
【請求項３２】
通信装置に画像処理を実行させるためのジョブを生成する所定のプログラムであって、前記所定のプログラムを有する情報処理装置のコンピュータに、
前記所定のプログラムが用いられて前記ジョブが生成される前に、排他オブジェクトを取得するための取得処理をサーバが有する所定のサーバ側プログラムを用いて実行させるための指示を前記サーバに送信する指示ステップと、
前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態で、前記所定のプログラムを用いて前記ジョブを生成し、前記所定のサーバ側プログラムが用いられて実行された前記取得処理により前記排他オブジェクトが取得されない状態では、前記所定のプログラムを用いて前記ジョブを生成しない生成ステップと、
を実行させ、
前記所定のプログラムによって生成された前記ジョブは、前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態で前記サーバを介して前記通信装置に送信され、
前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されていない状態では、前記サーバが有し、且つ前記所定のサーバ側プログラム以外の少なくとも１つのプログラムに基づいた前記通信装置との通信が実行可能であり、前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態では、前記サーバが有し、且つ前記所定のサーバ側プログラム以外の少なくとも１つのプログラムに基づいた前記通信装置との通信が行われないことを特徴とするプログラム。
【請求項３３】
前記サーバが有し、且つ前記所定のサーバ側プログラム以外の少なくとも１つのプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている場合、前記所定のサーバ側プログラムが用いられて実行された前記取得処理により前記排他オブジェクトが取得されず、前記サーバが有し、且つ前記所定のサーバ側プログラム以外の少なくとも１つのプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されていない場合、前記所定のサーバ側プログラムが用いられて実行された前記取得処理により前記排他オブジェクトが取得されないことを特徴とする請求項３２に記載のプログラム。
【請求項３４】
前記所定のプログラムが用いられて生成された前記ジョブが前記サーバを介して前記通信装置に送信された場合、前記所定のサーバ側プログラムによって保持されている前記排他オブジェクトが破棄され、
前記所定のプログラムが用いられて実行された前記取得処理により取得されたことで保持されている前記排他オブジェクトが破棄された場合、前記サーバが有し、且つ前記所定のサーバ側プログラム以外の少なくとも１つのプログラムによる指示に基づいた前記通信装置との通信が実行可能となることを特徴とする請求項３２又は３３に記載のプログラム。
【請求項３５】
前記通信装置に送信された前記ジョブに基づく処理が前記通信装置によって完了されるまで、前記通信装置に送信された前記ジョブに関する情報を前記サーバを介して前記通信装置から受信する情報受信ステップを更に実行させ、
前記通信装置に送信された前記ジョブに基づく処理が前記通信装置によって完了された場合、前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得されたことで保持されている前記排他オブジェクトが破棄され、
前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得されたことで保持されている前記排他オブジェクトが破棄された場合、前記サーバが有し、且つ前記所定のサーバ側プログラム以外の少なくとも１つのプログラムによる前記通信装置との通信が実行可能となることを特徴とする請求項３２又は３３に記載のプログラム。
【請求項３６】
前記所定のサーバ側プログラムは、前記サーバが有するプリンタドライバに対応するプログラムであり、
前記サーバが有し、且つ前記所定のサーバ側プログラム以外の少なくとも１つのプログラムは、前記サーバが有するプリンタドライバ以外のプログラムであることを特徴とする請求項３２乃至３５のいずれか１項に記載のプログラム。
【請求項３７】
前記所定のプログラムは、プリンタドライバであることを特徴とする請求項３２乃至３６のいずれか１項に記載のプログラム。
【請求項３８】
前記所定のプログラムは、ランゲージモニタを有しないプリンタドライバであることを特徴とする請求項３２乃至３７のいずれか１項に記載のプログラム。
【請求項３９】
前記所定のプログラムは、Ｖｅｒｓｉｏｎ４ドライバであることを特徴とする請求項３２乃至３８のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、制御方法およびプログラムに関する。
【背景技術】
【０００２】
通信装置にジョブを送信可能な情報処理装置において、第１プログラムと第２プログラムを含む複数のプログラムが動作する形態が知られている。このような形態では、例えば、ある通信装置との第１プログラムによる指示に基づく通信と第２プログラムによる指示に基づく通信とが、同一の通信経路で並行して実行される状況が生じ得る。
【０００３】
しかしながら、ある通信装置との第１プログラムによる指示に基づく通信と第２プログラムによる指示に基づく通信とが並行して実行される場合、例えば、通信されるデータの混在が生じてしまうおそれがある。そこで、通信されるデータの混在が生じることを抑制するために、ある通信装置との第１プログラムによる指示に基づく通信と第２プログラムによる指示に基づく通信とが並行して実行されないようにする制御を実行する形態が知られている。このような制御を、排他制御という。また、このような形態の情報処理装置は、例えば、排他オブジェクトと呼ばれる情報を情報処理装置のＯＳから取得することで排他制御を実現している。排他オブジェクトとしては、例えば、特許文献１に記載されているようなＭｕｔｅｘオブジェクト等が利用される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２１５８０５号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、排他制御を実行する通信装置が普及するにつれて、より適切な排他制御を実行することが可能な通信装置が要望されている。
【０００６】
本発明は上記課題を鑑みてなされたもので、より適切な排他制御を実行することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本発明のプログラムは、通信装置に所定の処理を実行させるためのジョブを生成する所定のプログラムであって、
前記所定のプログラム及び、前記所定のプログラム以外の少なくとも１つの他のプログラムを有する情報処理装置のコンピュータに、
前記ジョブが生成される前に、排他オブジェクトを取得するための取得処理を前記所定のプログラムを用いて実行する取得ステップと、
前記所定のプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態では、前記所定のプログラムを用いて前記ジョブを生成し、前記所定のプログラムが用いられて実行された前記取得処理によって前記排他オブジェクトが取得されない状態では、前記所定のプログラムを用いて前記ジョブを生成しない生成ステップと、を実行させ、
前記所定のプログラムが用いられて生成された前記ジョブは、前記所定のプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態で前記通信装置に送信され、
前記所定のプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されていない状態では、前記他のプログラムに基づいた前記通信装置との通信が実行可能であり、前記所定のプログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態では、前記他のプログラムに基づいた前記通信装置との通信が行われないことを特徴とする。
【０００８】
また、本発明のプログラムは、通信装置に所定の処理を実行させるためのジョブを生成する所定のプログラムであって、前記所定のプログラムを有する情報処理装置のコンピュータに、
前記所定のプログラムが用いられて前記ジョブが生成される前に、排他オブジェクトを取得するための取得処理をサーバが有する所定のサーバ側プログラムを用いて実行させるための指示を前記サーバに送信する指示ステップと、
前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態で、前記所定のプログラムを用いて前記ジョブを生成し、前記所定のサーバ側プログラムが用いられて実行された前記取得処理により前記排他オブジェクトが取得されない状態では、前記所定のプログラムを用いて前記ジョブを生成しない生成ステップと、
を実行させ、
前記所定のプログラムによって生成された前記ジョブは、前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態で前記サーバを介して前記通信装置に送信され、
前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されていない状態では、前記サーバが有し、且つ前記所定のサーバ側プログラム以外の少なくとも１つのプログラムに基づいた前記通信装置との通信が実行可能であり、前記所定のサーバ側プログラムが用いられて実行された前記取得処理により取得される前記排他オブジェクトが保持されている状態では、前記サーバが有し、且つ前記所定のサーバ側プログラム以外の少なくとも１つのプログラムによる指示に基づいた前記通信装置との通信が行われないことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、より適切な排他制御を実行することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】通信装置と情報処理装置によって構成される印刷システムを示すブロック図
【図２】情報処理装置が備えるプリンタドライバがＶ３ドライバである場合に、情報処理装置が備えるソフトウェアの構成
【図３】Ｖ３ドライバにおけるランゲージモニタが、印刷ジョブの送信時に実行する従来の処理を示すフローチャート
【図４】ＵＳＢ通信アプリが実行する処理を示すフローチャート
【図５】情報処理装置が備えるプリンタドライバがＶ４ドライバである場合に、情報処理装置が備えるソフトウェアの構成
【図６】コマンド生成フィルタが印刷ジョブの送信時に実行する処理を示すフローチャート
【図７】第１実施形態において、コマンド生成フィルタが実行する印刷ジョブ生成処理の詳細を示すフローチャート
【図８】コマンド生成フィルタが実行する終了処理を示すフローチャート
【図９】サーバ／クライアント環境を構成している印刷システムを示すブロック図
【図１０】第２実施形態において、コマンド生成フィルタが実行する印刷ジョブ生成処理の詳細を示すフローチャート
【図１１】常駐プログラムの処理を示すフローチャート
【図１２】第３実施形態において、コマンド生成フィルタが実行する印刷ジョブ生成処理の詳細を示すフローチャート
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１２】
＜第１実施形態＞
本発明を適用した通信装置について説明する。通信装置は、情報処理装置からジョブを受信可能な装置である。本実施形態においては、通信装置としてインクジェット方式の複合機（ＭＦＰ）を例示している。ＭＦＰとは、プリント、スキャナ、コピー、ファックス等の複数の機能を有する装置である。なお、通信装置は、例えば、複写機やファクシミリ装置、スキャナ、パーソナルコンピュータ（ＰＣ）、スマートホン、タブレット端末、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、デジタルカメラ、音楽再生デバイス等であっても良い。また、通信装置がプリンタである場合は、利用する印刷方式はインクジェット方式に限定されず、例えば電子写真方式であっても良い。さらに、通信装置は、ＭＦＰではなく、単機能の装置（ＳＦＰ）であっても良い。情報処理装置は、通信装置にジョブを送信可能な装置である。本実施形態においては、情報処理装置として、携帯端末を例示している。なお、情報処理装置は、例えば、ＰＣやスマートホン、タブレット端末、ＰＤＡ、カメラ等であっても良い。また、以下の説明においては、情報処理装置及び通信装置間で扱われるジョブとして、通信装置が印刷処理を実行するための印刷ジョブを例示しているが、この形態に限定されない。例えば、通信装置がスキャン処理を実行するためのスキャンジョブや、通信装置がコピー処理を実行するためのコピージョブ等であっても良い。なお、ここで印刷処理とは、インク等の記録剤を用いて、紙等の記録媒体上に画像を形成する処理を示す。また、スキャン処理とは、図示しないスキャナ部によって原稿を読み取って、当該原稿に基づく画像データを生成する処理を指す。
【００１３】
図１は情報処理装置１１０と情報処理装置１１０に接続された通信装置１２０により構成される通信システムの全体構成を示すブロック図の一例である。情報処理装置１１０は入力Ｉ／Ｆ１１１、ＣＰＵ１１２、ＲＯＭ１１３、出力Ｉ／Ｆ１１４、外部記憶装置１１５、ＲＡＭ１１６、入力装置１１７、出力装置１１８（表示部）、入出力Ｉ／Ｆ１１９を有する。ＣＰＵ１１２はＲＯＭ１１３等に保存されている制御命令に従い情報処理装置１１０を制御する。ＲＯＭ１１３は初期化プログラムを記憶し、外部記憶装置１１５は、ＣＰＵ１１２が実行する制御プログラムや組込オペレーティングシステム（以下、ＯＳ）、プリンタドライバやその他各種のデータを記憶している。本実施形態では、外部記憶装置１１５に格納されている制御プログラムは、外部記憶装置１１５に格納されている組込ＯＳの管理下で、スケジューリングやタスクスイッチ等のソフトウェア制御を行う。ＲＡＭ１１６は外部記憶装置１１５に保存される各種プログラムがワークメモリーとして使用する。入力装置１１７はデータ入力や動作指示に使用され入力Ｉ／Ｆ１１１に接続されている。出力装置１１８はデータ表示や状態の通知に使用され出力Ｉ／Ｆ１１４に接続されている。
【００１４】
通信装置１２０はＲＡＭ１２１、ＲＯＭ１２２、プリントエンジン１２３、ＣＰＵ１２４、入出力Ｉ／Ｆ１２５から構成される。情報処理装置１１０と通信装置１２０はＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）（登録商標）ケーブル１３０により接続されている。すなわち、本実施形態では、通信装置１２０と情報処理装置１１０間の通信は、ＵＳＢ通信方式によって行われるものとする。なお、例えば、通信装置１２０と情報処理装置１１０間の通信がＵＳＢ通信方式以外の方式（無線通信方式等）で行われても良いし、いずれの通信方式が用いられるかが選択可能な形態であっても良い。ＲＡＭ１２１はＣＰＵ１２４のワークメモリーとして使用され、受信したデータの一時保存用バッファとしても利用される。ＲＯＭ１２２は制御命令を保存している。プリントエンジン１２３はＲＡＭ１２１に保存されたデータに基づき印刷を行う。ＣＰＵ１２４はＲＯＭ１２２等に保存されている制御命令に従い通信装置１２０を制御する。なお、本実施形態においては情報処理装置１１０および通信装置１２０の処理分担を前記のように示したが、処理の分担形態はこれに依らない。
【００１５】
本実施形態では、情報処理装置１１０が備えるプリンタドライバは、Ｍｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ（登録商標）で採用される、Ｖｅｒｓｉｏｎ３ドライバ（Ｖ３ドライバ）か、Ｖｅｒｓｉｏｎ４ドライバ（Ｖ４ドライバ）であるものとする。なお、プリンタドライバは、例えば、ユーザがアプリケーションを介して印刷の実行を指示した場合等に起動する。
【００１６】
ここで、情報処理装置１１０が備えるプリンタドライバがＶ３ドライバである場合の、情報処理装置１１０が備えるソフトウェアの構成を説明する。また、情報処理装置１１０が備えるプリンタドライバがＶ３ドライバである場合に情報処理装置１１０が実行する従来の処理について説明する。
【００１７】
図２は、情報処理装置１１０が備えるプリンタドライバがＶ３ドライバである場合に、情報処理装置１１０が備えるソフトウェアの構成を示す図である。それぞれの構成が実行する処理は、実際には、ＣＰＵ１１２が、それぞれの構成に対応するプログラムを外部記憶装置１１５から読みだしてＲＡＭ１１６にロードし、そのプログラムを実行することにより実現されるものとする。
【００１８】
図２に示す構成のうち、構成２０２、２０３、２０４、２０９がＯＳのモジュール、構成２０６、２０７、２０８がプリンタドライバのモジュールとしているが、それぞれの構成は、ＯＳとプリンタドライバのうちいずれのモジュールであっても良い。
【００１９】
アプリケーション２０１は、外部記憶装置１１５に保存されているアプリケーションプログラムであり、印刷する有償コンテンツ等の画像情報や文字情報を含む描画情報、用紙サイズやレイアウト等の印刷設定情報等を含む印刷データを作成する機能を有する。なお、アプリケーション２０１は、ユーザから印刷指示の入力を受け付けることで印刷データの作成を開始する。アプリケーション２０１が作成した印刷データは、ＯＳの印刷サポート機能２０２を介し、スプールデータ２０５としてスプーラ２０３のジョブキュー２０４に一時的に蓄積される。なお、アプリケーション２０１は、ＯＳの印刷サポート機能２０２を介して、ベンダー固有のユーザインターフェースモジュール２０７から受信した印刷設定情報を印刷データに付加する。なお、受信される印刷設定情報は例えば、ユーザから印刷指示の入力を受け付ける前に、ベンダー固有のユーザインターフェースモジュール２０７を介してユーザによって設定・入力された印刷設定に関する情報である。ベンダー固有のユーザインターフェースモジュール２０７とは、プリンタドライバのベンダーによって任意に設計される印刷設定画面を表示するためのモジュールである。ユーザは、当該印刷設定画面に対して操作を行うことで、任意の印刷設定の入力を行うことができる。
【００２０】
スプーラ２０３は、ジョブ管理機能を有し、渡されたスプールデータ２０５を、スプールデータ２０５に対応する印刷ジョブの送信が完了したと認識するまで保持し管理する。具体的には、スプーラ２０３は、例えば、プリンタ毎に、印刷ジョブのサイズ、ジョブ名、送信するジョブ順番等を管理し、管理している情報をステータス表示アプリケーションに伝達することで、当該情報を出力装置１１８等に表示する。また、紙ジャムなどのエラー発生時に備え、印刷データを含む印刷ジョブそのものをジョブ終了まで保持するようにしても良い。なお、ジョブキュー２０４に保存されているスプールデータ２０５の情報は、例えば、ベンダー固有のユーザインターフェースモジュール２０７、アプリケーション２０１などを介して所定のインタフェース関数を用いて参照することできる。
【００２１】
コマンド生成フィルタ２０６は、ジョブキュー２０４に蓄積されたスプールデータ２０５を、スプールデータ２０５に付加されている印刷設定情報に基づいて、通信装置１２０が解釈可能な印刷ジョブに変換することで、印刷ジョブを生成する。
【００２２】
すなわち、コマンド生成フィルタ２０６は、印刷ジョブを生成するための生成モジュールとして動作する。なお、コマンド生成フィルタ２０６への印刷データの入力処理や、コマンド生成フィルタ２０６による印刷データの変換処理は、不図示のＯＳのコマンド生成フィルタ制御機能により制御される。その後、コマンド生成フィルタ２０６は、生成した印刷ジョブを、情報処理装置１１０のＲＡＭ１１６、及び外部記憶装置１１５に順次出力する。また、ＲＡＭ１１６及び外部記憶装置１１５へ出力された印刷ジョブは、スプーラ２０３によって管理されている処理順番に従って順に処理される。印刷ジョブが処理される場合、当該印刷ジョブはまず、スプーラ２０３により読み出され、特定サイズのパケット毎に分割される。そして、分割されたジョブが順次ランゲージモニタ２０８に出力される。以後、１つの印刷ジョブが分割されることで取得される複数のジョブのそれぞれを、分割ジョブと言う。すなわち、分割ジョブが複数合わさることで、１つの印刷ジョブが形成される。
【００２３】
ランゲージモニタ２０８は、通信装置１２０との双方向通信する機能（双方向通信機能）を担うモジュールである。具体的には、ランゲージモニタ２０８は、入力された分割ジョブを順次ＵＳＢポートモニタ２０９に入力する。これにより、印刷ジョブが通信装置１２０へ送信される。また、例えば、ランゲージモニタ２０８は、通信装置１２０のステータスや、ジョブの処理状況等の情報を、通信装置１２０から取得する機能も担う。
【００２４】
ところで、例えば、双方向通信機能の設定を変更可能な情報処理装置１１０がある。このような情報処理装置１１０においては、双方向通信機能が有効に設定されていた場合に、ランゲージモニタ２０８が動作する。すなわち、印刷ジョブが、ランゲージモニタ２０８を介して通信装置１２０に送信される。また、例えば、通信装置１２０のステータスや、ジョブの処理状況等の情報が適宜ランゲージモニタ２０８によって取得される。一方、双方向通信機能が無効に設定されていた場合には、ランゲージモニタ２０８が動作しない。この場合は、印刷ジョブが、ランゲージモニタ２０８を介さずに通信装置１２０に送信される。具体的には、印刷ジョブがスプーラ２０３からＵＳＢポートモニタ２０９に直接入力される。また、例えば、通信装置１２０のステータスや、ジョブの処理状況等の情報がランゲージモニタ２０８によって取得されない。すなわち、双方向通信機能が無効に設定されている状態では、プリンタドライバは、通信装置１２０との一方向の通信（データの送信）のみ行う。
【００２５】
ＵＳＢポートモニタ２０９とは、ＵＳＢによる通信を制御するためのモジュールである。具体的には、ＵＳＢポートモニタ２０９は、ランゲージモニタ２０８から入力された印刷ジョブを、ＵＳＢポートモニタ２０９が制御している装置に送信する。また、ＵＳＢポートモニタ２０９は、ＵＳＢ通信アプリ２１０から入力された各種コマンドに応じて、ＵＳＢポートモニタ２０９が制御している装置との通信を行う。本実施形態では、情報処理装置１１０は、ＵＳＢによって通信装置１２０と接続しているため、ＵＳＢポートモニタ２０９によって制御される装置は、通信装置１２０となる。なお、例えば、ＵＳＢによって接続している装置が複数ある場合は、ＵＳＢポートモニタ２０９は複数あっても良い。この場合、１つのＵＳＢポートモニタ２０９が、ＵＳＢによって接続している１つの装置を制御するものとする。そして、ランゲージモニタ２０８やＵＳＢ通信アプリ２１０は、複数のＵＳＢポートモニタ２０９のうち、通信相手となる装置を制御しているＵＳＢポートモニタ２０９に、情報を入力する。
【００２６】
ＵＳＢ通信アプリ２１０とは、ＵＳＢポートモニタ２０９によって制御されている装置との通信を行うアプリケーションプログラムである。具体的にはＵＳＢ通信アプリ２１０は、例えば、通信装置１２０の使用状況を調査するためのプログラムや、通信装置１２０が処理したジョブの詳細情報（履歴）を取得するためのプログラムである。ＵＳＢ通信アプリ２１０は、ＵＳＢポートモニタ２０９によって制御されている装置との通信を行う場合、ＵＳＢ通信アプリ２１０が実行したい制御に対応するコマンドをＵＳＢポートモニタ２０９に入力する。
【００２７】
なお、ＵＳＢ通信アプリ２１０は、プリンタドライバとは別体のプログラムであり、プリンタドライバとは独立した制御で（プリンタドライバの動作状態を考慮せずに）、ＵＳＢポートモニタ２０９によって制御されている装置との通信を行う。すなわち、ＵＳＢ通信アプリ２１０は、プリンタドライバとは独立した制御で動作する。そのため、ある通信装置とのＵＳＢ通信アプリ２１０によるＵＳＢ通信と、プリンタドライバによるＵＳＢ通信とが、同一の通信経路で並行して実行される状況が生じ得る。
【００２８】
しかしながら、ＵＳＢ通信アプリ２１０によるＵＳＢ通信と、プリンタドライバによるＵＳＢ通信とが同一の通信経路で並行して実行される場合、例えば、通信されるデータの混在が生じてしまうおそれがある。また、例えば、ＵＳＢ通信アプリ２１０によるＵＳＢ通信に対する通信装置１２０からのレスポンスが、プリンタドライバによって取得されてしまうおそれがある。このような課題を生じさせないために、情報処理装置１１０は、ＵＳＢ通信アプリ２１０によるＵＳＢ通信と、プリンタドライバによるＵＳＢ通信とが同一の通信経路で並行して実行されないようにする制御（排他制御）を実行する。
【００２９】
具体的には、情報処理装置１１０は、あるモジュールによってＵＳＢ通信を行う場合に、排他オブジェクトと呼ばれる情報を当該モジュールに取得させる。より具体的には、当該モジュールが、情報処理装置１１０が有するＯＳに対し、排他オブジェクトの生成を指示する。そして、ＯＳが作成した排他オブジェクトを、当該モジュールが取得する。排他オブジェクトは、排他制御に利用される情報であり、Ｍｕｔｅｘオブジェクト等の情報である。なお、Ｍｕｔｅｘオブジェクトとは、Ｍｕｔｅｘ（ｍｕｔｕａｌ  ｅｘｃｌｕｓｉｏｎ  ｓｅｒｖｉｃｅ）と呼ばれる排他制御の仕組みにおいて利用される情報である。排他オブジェクトは、例えば、排他制御のための所定のフラグや、ファイル等であっても良い。
【００３０】
情報処理装置１１０は、排他オブジェクトを保持しているモジュールでＵＳＢ通信を実行し、あるモジュールによって排他オブジェクトが保持されている状態では、排他オブジェクトを保持していないモジュールによってＵＳＢ通信を実行しないように制御する。すなわち、情報処理装置１１０が備える所定のプログラムによって排他オブジェクトが取得・保持されている場合、情報処理装置１１０が備えるプログラムのうち、所定のプログラム以外の排他制御に係わるプログラムによる通信装置１２０との通信が行われない。このような制御により、ＵＳＢ通信アプリ２１０によるＵＳＢ通信と、プリンタドライバによるＵＳＢ通信とが同一の通信経路で並行して実行されないように制御することができる。
【００３１】
なお、所定のプログラムによって排他オブジェクトが破棄された場合、情報処理装置１１０が備えるプログラムのうち、排他オブジェクトを保持していた所定のプログラム以外のプログラムによる通信装置１２０とのＵＳＢ通信が実行可能となる。
【００３２】
図４は、ＵＳＢ通信アプリ２１０が実行する処理を示すフローチャートである。ＵＳＢ通信アプリ２１０が実行する処理は、実際には、ＣＰＵ１１２が、ＵＳＢ通信アプリ２１０に対応するプログラムを外部記憶装置１１５から読みだしてＲＡＭ１１６にロードし、そのプログラムを実行することにより実現されるものとする。なお、本フローチャートが示す処理は、ＵＳＢ通信アプリ２１０が、ＵＳＢポートモニタ２０９によって制御されている装置との通信を開始する場合に開始される。
【００３３】
まず、ＵＳＢ通信アプリ２１０は、Ｓ４０１にて、通信に利用するＵＳＢポートモニタ２０９に関連付けられた排他オブジェクトを保持しているか否かを判定する。ＵＳＢ通信アプリ２１０は、排他オブジェクトを保持していると判定した場合、Ｓ４０４に進み、排他オブジェクトを保持していないと判定した場合、Ｓ４０２に進む。
【００３４】
ＵＳＢ通信アプリ２１０は、Ｓ４０２では、通信に利用するＵＳＢポートモニタ２０９に関連付いた排他オブジェクトの取得（排他オブジェクト取得処理）を試みる。なお、例えば、プリンタドライバの構成（ランゲージモニタ２０８等）等の、ＵＳＢ通信アプリ２１０以外のソフトウェアによって、当該排他オブジェクトが保持されている状態では、ＵＳＢ通信アプリ２１０は、当該排他オブジェクトを取得できない。すなわち、当該状態では、排他オブジェクト取得処理が失敗する。ＵＳＢ通信アプリ２１０は、排他オブジェクト取得処理が成功した場合は、当該排他オブジェクトを取得する。
【００３５】
次に、ＵＳＢ通信アプリ２１０は、Ｓ４０３にて、Ｓ４０２における排他オブジェクト取得処理が成功したか否かを判定する。ＵＳＢ通信アプリ２１０は、排他オブジェクト取得処理が成功したと判定したと判定した場合、Ｓ４０４に進む。一方、ＵＳＢ通信アプリ２１０は、排他オブジェクト取得処理が成功していない（失敗した）と判定した場合、再度Ｓ４０２の処理を実行し、排他オブジェクト取得処理が成功するまで処理を繰り返す。すなわち、ＵＳＢ通信アプリ２１０は、ＵＳＢ通信アプリ２１０以外のソフトウェアが排他オブジェクトを破棄することで、新たに排他オブジェクトの取得が可能となるまで処理を繰り返す。なおこのとき、ＵＳＢ通信アプリ２１０は、処理を繰り返した回数が所定回数を超えた場合は、Ｓ４０４に進んでも良い。またＵＳＢ通信アプリ２１０は、処理の繰り返しにかかった時間が所定時間を超えた（ＵＳＢ通信アプリ２１０によって排他オブジェクトが保持されていない状態が所定の時間以上続いた）場合は、Ｓ４０４に進んでも良い。これにより、エラー等により排他オブジェクトが取得できない場合に、データ通信がいつまでも実行できない事態が生じてしまうことを抑制できる。
【００３６】
また、ＵＳＢ通信アプリ２１０は、例えば、ＵＳＢ通信アプリ２１０以外のソフトウェアが排他オブジェクトを保持しているか否かを判定し、保持していないと判定した場合は、Ｓ４０４に進んでも良い。これは、たとえば、ＯＳにエラーが生じている場合には、ＵＳＢ通信アプリ２１０以外のソフトウェアが排他オブジェクトを保持していないにも係わらず排他オブジェクト取得処理が失敗するケースがあるためである。また、例えば、ＵＳＢ通信アプリ２１０は、後述の所定のデータを送信せずに処理を終了しても良い。また、このとき、ＵＳＢ通信アプリ２１０は、出力装置１１８に、エラーを通知する画面を表示しても良い。
【００３７】
ＵＳＢ通信アプリ２１０は、Ｓ４０４では、通信に利用するＵＳＢポートモニタ２０９に、所定のデータを送信する。具体的には、ＵＳＢ通信アプリ２１０は、データをＵＳＢポートモニタ２０９を介して通信装置１２０に送信するための関数と共に、所定のデータをＵＳＢポートモニタ２０９へ入力する。なお、所定のデータとは具体的には、ＵＳＢ通信アプリ２１０が実行したい機能に関するコマンドや、ＵＳＢ通信アプリ２１０が通信装置１２０に送信したい情報である。
【００３８】
次に、ＵＳＢ通信アプリ２１０は、Ｓ４０５にて、保持している排他オブジェクトを破棄し、排他オブジェクトを保持している状態から排他オブジェクトを保持していない状態に遷移する。その後、処理を終了する。
【００３９】
このように、ＵＳＢ通信アプリ２１０は、ＵＳＢポートモニタ２０９が制御している装置との通信を行う際には、通信に利用するＵＳＢポートモニタ２０９に関連付いた排他オブジェクトを取得する。これにより、ＵＳＢ通信アプリ２１０が、ＵＳＢポートモニタ２０９を介した通信を行っている間は、プリンタドライバ等のＵＳＢ通信アプリ２１０と異なるソフトウェアによるＵＳＢポートモニタ２０９を介した通信が行われなくなる。このような形態とすることで、例えば、プリンタドライバによって送信される印刷ジョブと、ＵＳＢ通信アプリ２１０が通信するデータとが混在してしまうことを抑制できる。
【００４０】
図３は、Ｖ３ドライバにおけるランゲージモニタ２０８が、印刷ジョブの送信時に実行する従来の処理を示すフローチャートである。なお、ランゲージモニタ２０８が実行する処理は、実際には、ＣＰＵ１１２が、ランゲージモニタ２０８に対応するプログラムを外部記憶装置１１５から読みだしてＲＡＭ１１６にロードし、そのプログラムを実行することにより実現されるものとする。また、本フローチャートが示す処理は、コマンド生成フィルタ２０６によって少なくとも１部分の印刷ジョブが生成された後に実行される。
【００４１】
ランゲージモニタ２０８は、Ｓ３０１にてスプーラ２０３から分割ジョブを受信する。なお、スプーラ２０３は、印刷ジョブを分割してランゲージモニタ２０８に送信する。そのため、ランゲージモニタ２０８はこのとき、コマンド生成フィルタ２０６によって生成された印刷ジョブの一部を受信することになる。
【００４２】
次に、ランゲージモニタ２０８は、受信した分割ジョブの転送先のＵＳＢポートモニタ２０９に関連付けられた排他オブジェクトを保持しているか否かをＳ３０２にて判定する。ランゲージモニタ２０８は、排他オブジェクトを保持していないと判定した場合、Ｓ３０３に進み、排他オブジェクトを保持していると判定した場合、Ｓ３０５に進む。
【００４３】
ランゲージモニタ２０８は、Ｓ３０３では、受信した分割ジョブの転送先のＵＳＢポートモニタ２０９に関連付いた排他オブジェクトの取得（排他オブジェクト取得処理）を試みる。なお、例えば、ＵＳＢ通信アプリ２１０等の、ランゲージモニタ２０８以外のソフトウェアによって、当該排他オブジェクトが保持されている状態では、ランゲージモニタ２０８は、当該排他オブジェクトを取得できない。すなわち、当該状態では、排他オブジェクト取得処理は失敗する。ランゲージモニタ２０８は、排他オブジェクト取得処理が成功した場合は、当該排他オブジェクトを取得する。
【００４４】
その後、ランゲージモニタ２０８は、Ｓ３０４にて、Ｓ３０３における排他オブジェクト取得処理が成功したか否かを判定する。ランゲージモニタ２０８は、排他オブジェクト取得処理が成功したと判定した場合、Ｓ３０５へ進む。一方、ランゲージモニタ２０８は、排他オブジェクト取得処理が成功していない（失敗した）と判定した場合、再度Ｓ３０３の処理を実行し、排他オブジェクト取得処理が成功するまで処理を繰り返す。なお、このとき、ランゲージモニタ２０８は、処理を繰り返した回数が所定回数を超えた場合や、処理の繰り返しにかかった時間が所定時間を超えた場合は、Ｓ３０５に進んでも良い。これにより、エラー等により排他オブジェクトが取得できない場合に、データ通信がいつまでも実行できない事態が生じてしまうことを抑制できる。また、ランゲージモニタ２０８は、例えば、ランゲージモニタ２０８以外のソフトウェアが排他オブジェクトを保持しているか否かを判定し、保持していないと判定した場合は、Ｓ３０５に進んでも良い。また、例えば、ランゲージモニタ２０８は、印刷ジョブを送信せずに処理を終了しても良い。また、このとき、ランゲージモニタ２０８は、出力装置１１８に、エラーを通知する画面を表示しても良い。具体的には、例えば、ランゲージモニタ２０８は、出力装置１１８に印刷ジョブや通信装置１２０に関する情報を表示する機能を有するモジュールやＯＳに、エラーを通知する画面を表示するように指示しても良い。
【００４５】
ランゲージモニタ２０８は、Ｓ３０５では、ＵＳＢポートモニタ２０９へ分割ジョブを送信する。具体的には、ランゲージモニタ２０８は、データをＵＳＢポートモニタ２０９を介して通信装置１２０に送信するための関数と共に、分割ジョブをＵＳＢポートモニタ２０９へ入力する。
【００４６】
そして、ランゲージモニタ２０８は、Ｓ３０６にて、送信対象の印刷ジョブの全て（送信対象の印刷ジョブに対応する全ての分割ジョブ）を送信した否かを判定する。ランゲージモニタ２０８は、送信対象の印刷ジョブの全てを送信したと判定した場合、Ｓ３０７に進み、送信対象の印刷ジョブの全てを送信していないと判定した場合、Ｓ３０１に戻り、送信対象の印刷ジョブの残り（未送信の分割ジョブ）を受信する。なお、ランゲージモニタ２０８は、Ｓ３０１で受信される分割ジョブを解析することで、当該分割ジョブが、送信対象の印刷ジョブが分割されて取得される複数の分割ジョブのうち、最後に送信される分割ジョブか否かを判定することができる。そして、ランゲージモニタ２０８は、最後に送信される分割ジョブであると判定した場合、送信対象の印刷ジョブの全てを送信したと判定し、最後に送信される分割ジョブでないと判定した場合、送信対象の印刷ジョブの全てを送信していないと判定する。送信対象の印刷ジョブの全てがＵＳＢポートモニタ２０９へ送信された場合、送信対象の印刷ジョブが通信装置１２０に送信される。そのため、ランゲージモニタ２０８は、送信対象の印刷ジョブの全てを、通信装置１２０に送信しているとみなすこともできる。これにより、送信対象の印刷ジョブに基づく印刷が、通信装置１２０によって実行される。
【００４７】
ランゲージモニタ２０８は、Ｓ３０７では、保持している排他オブジェクトを破棄する。
【００４８】
その後、ランゲージモニタ２０８は処理を終了する。
【００４９】
このように、ランゲージモニタ２０８は、ＵＳＢポートモニタ２０９が制御している装置に印刷ジョブを送信する際には、送信に利用するＵＳＢポートモニタ２０９に関連付いた排他オブジェクトを取得する。具体的には、ランゲージモニタ２０８は、コマンド生成フィルタ２０６によって生成された印刷ジョブを受信した後、当該排他オブジェクトを取得する。これにより、ランゲージモニタ２０８が、ＵＳＢポートモニタ２０９を介して印刷ジョブを送信している間は、プリンタドライバ等のＵＳＢ通信アプリ２１０と異なるソフトウェアによるＵＳＢポートモニタ２０９を介した通信が行われなくなる。このような形態とすることで、例えば、プリンタドライバによって送信される印刷ジョブと、ＵＳＢ通信アプリ２１０が通信するデータとが混在してしまうことを抑制できる。
【００５０】
しかしながら、上述の形態は、排他オブジェクトの取得をランゲージモニタ２０８が担っているため、例えば、Ｖ４ドライバのような、ランゲージモニタ２０８を有しないプリンタドライバを有する情報処理装置１１０には適用できない。また、上述したように、Ｖ３ドライバにおいて、双方向通信機能が無効化されている場合はランゲージモニタ２０８が動作しない。そのため、上述の形態は、例えば、双方向通信機能が無効化されているプリンタドライバを有する情報処理装置１１０には適用できない。
【００５１】
また、例えば、何らかの原因で排他オブジェクトの取得が失敗し続けることによりジョブが長い時間送信されない場合は、ユーザやプリンタドライバによる指示によりジョブの送信が中止されることがある。なお例えば、排他オブジェクトの取得を試みるプログラム以外のプログラムが既に排他オブジェクトを保持している場合やエラーが生じた場合等に、排他オブジェクトの取得が失敗する。上述の形態のように、印刷ジョブを生成した後に排他オブジェクトの取得を行う形態では、例えば、ジョブの送信が中止された場合等には、ジョブの生成処理が無駄に行われることとなる。
【００５２】
そこで、上述の課題を解決するための形態について以下に説明する。具体的には、以下に説明する形態では、ランゲージモニタ２０８ではなく、コマンド生成フィルタ２０６によって排他オブジェクトの取得を実行させる。また、以下に説明する形態では、コマンド生成フィルタ２０６によって印刷ジョブが生成される前に、排他オブジェクトの取得を実行させる。なお、ランゲージモニタ２０８がない、あるいは動作しない（無効化されている）環境では、コマンド生成フィルタ２０６によって印刷ジョブが生成されると、生成された印刷ジョブの通信装置１２０への送信がすぐに開始されてしまう。そのため、コマンド生成フィルタ２０６によって印刷ジョブが生成される前に、排他オブジェクトの取得を実行させることで、排他オブジェクトが取得される前に印刷ジョブが送信されてしまうことを抑制できる。
【００５３】
なお、以下において、情報処理装置１１０が備えるプリンタドライバがＶ４ドライバである形態について説明するが、本発明は、情報処理装置１１０が備えるプリンタドライバがＶ４ドライバ以外のドライバ（Ｖ３ドライバ等）である形態にも適用可能である。
【００５４】
図５は、情報処理装置１１０が備えるプリンタドライバがＶ４ドライバである場合に、情報処理装置１１０が備えるソフトウェアの構成を示す。それぞれの構成が実行する処理は、実際には、ＣＰＵ１１２が、それぞれの構成に対応するプログラムを外部記憶装置１１５から読みだしてＲＡＭ１１６にロードし、そのプログラムを実行することにより実現されるものとする。図２を用いて説明した構成と同様の構成については説明を省略する。
【００５５】
図５に示す構成のうち、構成２０２、２０３、２０４、２０９、５０１がＯＳのモジュール、構成２０６がプリンタドライバのモジュールとしているが、それぞれの構成は、ＯＳとプリンタドライバのうちいずれのモジュールであっても良い。
【００５６】
Ｖ４ドライバは、Ｖ３ドライバと異なり、ベンダー固有のユーザインターフェースモジュール２０７と、ランゲージモニタ２０８を有していない。そのため、Ｖ４ドライバは、双方向制御機能が常に無効と設定されている状態である。
【００５７】
また、Ｖ４ドライバ環境では、ＯＳは、ＯＳのユーザインターフェースモジュール５０１を有しているものとする。ＯＳのユーザインターフェースモジュール５０１は、ベンダー固有のユーザインターフェースモジュール２０７と同様、ユーザから印刷設定の入力を受け付けるための画面を表示する。また、ＯＳのユーザインターフェースモジュール５０１は、受け付けた印刷設定に関する情報をアプリケーション２０１に渡すことで、印刷データに印刷設定情報を付加する。
【００５８】
図６は、本実施形態において、ユーザから印刷ジョブの送信が指示された場合にコマンド生成フィルタ２０６が実行する処理を示すフローチャートである。コマンド生成フィルタ２０６が実行する処理は、実際には、ＣＰＵ１１２が、コマンド生成フィルタ２０６に対応するプログラムを外部記憶装置１１５から読みだしてＲＡＭ１１６にロードし、そのプログラムを実行することにより実現されるものとする。
【００５９】
まず、コマンド生成フィルタ２０６は、Ｓ６０１にて、スプーラ２０３からスプールデータ（印刷データ）を受信する。なお、このとき、コマンド生成フィルタ２０６は、印刷データの全てを一括で受信するのではなく、印刷データの一部を取得するものとする。
【００６０】
続いて、コマンド生成フィルタ２０６は、Ｓ６０２にて、情報処理装置１１０と通信装置１２０間の、印刷ジョブの送信に利用する接続が、ＵＳＢによる接続か否かを判定する。コマンド生成フィルタ２０６は、ＵＳＢによる接続であると判定した場合、Ｓ６０３に進み、ＵＳＢによる接続でないと判定した場合、Ｓ６０５に進む。ＵＳＢでない接続とは、例えば、無線ＬＡＮや有線ＬＡＮによる接続である。なおこの判定は、具体的には、印刷ジョブの送信に利用する通信ポートの名前を参照することで行われる。コマンド生成フィルタ２０６は例えば、通信ポートが、ＵＳＢポートである場合にはＵＳＢによる接続であると判定し、Ｗｅｂ  Ｓｅｒｖｉｃｅ  ｏｎ  Ｄｅｖｉｃｅｓ（ＷＳＤ）ポートやＴＣＰ／ＩＰポートである場合にはＵＳＢによる接続でないと判定する。このように、本実施形態では、接続形態に応じて処理を切り替える。具体的には、情報処理装置１１０は、ＵＳＢによる接続である場合、排他オブジェクトを取得し、ＵＳＢによる接続でない場合、排他オブジェクトを取得しない。これは、例えば、ＵＳＢによる接続を介さない通信に関する排他制御を、通信装置１２０側で実行する形態があるためである。すなわち、このような形態では、情報処理装置１１０側で、ＵＳＢによる接続を介さない通信に関する排他制御を実行する必要はないためである。
【００６１】
コマンド生成フィルタ２０６は、Ｓ６０３では、双方向通信機能が有効か否かを判定する。なお、双方向通信機能が有効か否かの判定は、具体的には、双方向通信機能に関する設定を確認することで行われる。なお、Ｖ４ドライバのような、ランゲージモニタ２０８がない形態は、双方向通信機能が無効な状態であるものとして扱われる。また、Ｖ４ドライバ内のコマンド生成フィルタ２０６であれば、Ｓ６０３の処理を省略して、Ｓ６０４を実行しても良い。コマンド生成フィルタ２０６は、双方向通信機能が有効であると判定した場合、Ｓ６０５に進み、双方向通信機能が有効でないと判定した場合、Ｓ６０４に進む。Ｓ６０４の詳細な説明は、図７にて後述する。なお、コマンド生成フィルタ２０６によって双方向通信機能が有効であると判定された場合は、図３の説明で示したようにして、ランゲージモニタ２０８によって排他オブジェクトが取得される。
【００６２】
コマンド生成フィルタ２０６は、Ｓ６０５では、スプーラ２０３から受信したスプールデータ（印刷データ）を、印刷ジョブに変換する。
【００６３】
そして、コマンド生成フィルタ２０６は、Ｓ６０６にて、Ｓ６０５で生成した印刷ジョブを、ＯＳが管理する所定の記憶領域に出力する。なお、コマンド生成フィルタ２０６により所定の記憶領域に出力された印刷ジョブは、スプーラ２０３により順次ランゲージモニタ２０８やＵＳＢポートモニタ２０９へ転送される。具体的には例えば、データをＵＳＢポートモニタ２０９を介して通信装置１２０に送信するための関数と共に、印刷ジョブがＵＳＢポートモニタ２０９へ入力される。
【００６４】
その後、コマンド生成フィルタ２０６は、Ｓ６０７にて、変換処理が完了したか否かを判定する。具体的には、コマンド生成フィルタ２０６は、変換対象のスプールデータの全てが印刷ジョブへ変換されたか否かを判定する。コマンド生成フィルタ２０６は、変換対象のスプールデータの全てが印刷ジョブへ変換されていないと判定した場合、Ｓ６０１へ戻り、残りのスプールデータを受信する。なお、コマンド生成フィルタ２０６は、Ｓ６０１に戻った後は、Ｓ６０２の処理を省略して、Ｓ６０５の処理を行っても良い。
【００６５】
Ｓ６０７にてスプールデータの全てが印刷ジョブへ変換済みであると判断された場合、コマンド生成フィルタ２０６は印刷ジョブ生成処理を終了する。
【００６６】
図７は、本実施形態において、コマンド生成フィルタ２０６が実行するＳ６０４の印刷ジョブ生成処理の詳細を示すフローチャートである。コマンド生成フィルタ２０６が実行する処理は、実際には、ＣＰＵ１１２が、コマンド生成フィルタ２０６に対応するプログラムを外部記憶装置１１５から読みだしてＲＡＭ１１６にロードし、そのプログラムを実行することにより実現されるものとする。
【００６７】
まず、コマンド生成フィルタ２０６は、Ｓ７０１にて、印刷ジョブの送信に利用するＵＳＢポートモニタ２０９に関連付けされた排他オブジェクトを保持しているか否かを判定する。コマンド生成フィルタ２０６は、排他オブジェクトを保持していないと判定した場合、Ｓ７０２に進み、排他オブジェクトを保持していると判定した場合、Ｓ７０４に進む。
【００６８】
コマンド生成フィルタ２０６は、Ｓ７０２では、印刷ジョブの送信に利用するＵＳＢポートモニタ２０９に関連付けされた排他オブジェクトの取得を試みる。なお、例えば、ＵＳＢ通信アプリ２１０等の、コマンド生成フィルタ２０６以外のソフトウェアによって、当該排他オブジェクトが保持されている状態では、コマンド生成フィルタ２０６は、当該排他オブジェクトを取得できない。すなわち、当該状態では、排他オブジェクト取得処理が失敗する。コマンド生成フィルタ２０６は、排他オブジェクト取得処理が成功した場合は、当該排他オブジェクトを取得する。
【００６９】
その後、コマンド生成フィルタ２０６は、Ｓ７０３にて、Ｓ７０２における排他オブジェクト取得処理が成功したか否かを判定する。コマンド生成フィルタ２０６は、排他オブジェクト取得処理が成功したと判定したと判定した場合、Ｓ７０４に進む。一方、コマンド生成フィルタ２０６は、排他オブジェクト取得処理が成功していない（失敗した）と判定した場合、再度Ｓ７０２の処理を実行し、排他オブジェクト取得処理が成功するまで処理を繰り返す。すなわち、コマンド生成フィルタ２０６は、コマンド生成フィルタ２０６以外のソフトウェアが排他オブジェクトを破棄することで、新たに排他オブジェクトの取得が可能となるまで処理を繰り返す。なおこのとき、コマンド生成フィルタ２０６は、処理を繰り返した回数が所定回数を超えた場合は、Ｓ７０４に進んでも良い。またコマンド生成フィルタ２０６は、処理の繰り返しにかかった時間が所定時間を超えた（コマンド生成フィルタ２０６によって排他オブジェクトが保持されていない状態が所定の時間以上続いた）場合は、Ｓ７０４に進んでも良い。また、コマンド生成フィルタ２０６は、例えば、コマンド生成フィルタ２０６以外のソフトウェアが排他オブジェクトを保持しているか否かを判定し、保持していないと判定した場合は、Ｓ７０４に進んでも良い。また、例えば、コマンド生成フィルタ２０６は、印刷ジョブを送信せずに処理を終了しても良い。また、このとき、コマンド生成フィルタ２０６は、出力装置１１８に、エラーを通知する画面を表示しても良い。
【００７０】
コマンド生成フィルタ２０６は、Ｓ７０４では、スプーラ２０３から受信したスプールデータ（印刷データ）を印刷ジョブへ変換する。
【００７１】
その後、コマンド生成フィルタ２０６は、Ｓ７０５にて、Ｓ７０４で生成した印刷ジョブを、ＯＳが管理する所定の記憶領域に出力する。なお、コマンド生成フィルタ２０６により所定の記憶領域に出力された印刷ジョブは、スプーラ２０３により順次ＵＳＢポートモニタ２０９へ転送される。具体的には、データをＵＳＢポートモニタ２０９を介して通信装置１２０に送信するための関数と共に、印刷ジョブがＵＳＢポートモニタ２０９へ入力される。
【００７２】
続いて、コマンド生成フィルタ２０６は、Ｓ７０６にて、変換処理が完了したか否かを判定する。具体的には、コマンド生成フィルタ２０６は、変換対象のスプールデータの全てが印刷ジョブへ変換されたか否かを判定する。コマンド生成フィルタ２０６は、変換対象のスプールデータの全てが印刷ジョブへ変換されていないと判定した場合、Ｓ６０１へ戻り、残りのスプールデータを印刷ジョブへ変換する。なお、コマンド生成フィルタ２０６は、Ｓ６０１に戻った後は、Ｓ６０２やＳ６０３の処理を省略して、Ｓ６０４の処理を行っても良い。一方、コマンド生成フィルタ２０６は、変換対象のスプールデータの全てが印刷ジョブへ変換されたと判定した場合、処理を終了する。
【００７３】
図８は、本実施形態においてコマンド生成フィルタ２０６が実行する終了処理を示すフローチャートである。終了処理とは、排他オブジェクトを破棄するために、コマンド生成フィルタ２０６が実行する処理である。なお、コマンド生成フィルタ２０６は、終了処理を、送信対象の印刷ジョブの全てが通信装置１２０に送信された後であれば、任意のタイミングで実行して良い。例えば、コマンド生成フィルタ２０６は、送信対象の印刷ジョブの全てが通信装置１２０に送信された直後に、終了処理を実行して良い。
【００７４】
また、例えば、情報処理装置１１０が有するプリンタドライバのなかには、ジョブ保持処理を実行可能なものがある。ジョブ保持処理とは、通信装置１２０に送信されたジョブの処理が通信装置１２０によって終了されるまで、ジョブキューにジョブを保持し続ける処理である。プリンタドライバは、ジョブキュー内に保持されているジョブの状態に関する情報を適宜受信及び取得（情報受信）するための機能を有している。そのため、プリンタドライバは、ジョブ保持処理を実行することで、ジョブキューから当該ジョブが削除されるまでジョブの状態を認識し、ジョブの状態に関する情報をユーザに通知することができる。なお、具体的には、プリンタドライバは、ＵＳＢポートモニタにジョブの状態に関する情報を取得させることで、ジョブの状態を認識する。すなわち、ジョブの状態に関する情報の取得がＵＳＢ通信を介して行われる。上述したように、複数のアプリケーションにより同一の経路が用いられて通信が行われると、情報の混在等の課題が生じるため、プリンタドライバによりジョブの状態に関する情報の取得が行われる際にも排他制御が行われていることが好ましい。そのため、例えば、コマンド生成フィルタ２０６は、通信装置１２０に送信されたジョブの処理が通信装置１２０によって終了された場合に、終了処理を実行しても良い。
【００７５】
なお、コマンド生成フィルタ２０６が実行する処理は、実際には、ＣＰＵ１１２が、コマンド生成フィルタ２０６に対応するプログラムを外部記憶装置１１５から読みだしてＲＡＭ１１６にロードし、そのプログラムを実行することにより実現されるものとする。
【００７６】
まず、コマンド生成フィルタ２０６は、Ｓ８０１にて、排他オブジェクトを保持しているか否かを判定する。コマンド生成フィルタ２０６は、排他オブジェクトを保持していると判定した場合、Ｓ８０２に進み、排他オブジェクトを保持していないと判定した場合、処理を終了する。
コマンド生成フィルタ２０６は、Ｓ８０２では、保持している排他オブジェクトを破棄し、排他オブジェクトを保持している状態から排他オブジェクトを保持していない状態に遷移する。その後、処理を終了する。
【００７７】
このような形態とすることで、ランゲージモニタ２０８がない、あるいは、ランゲージモニタ２０８が動作しない（無効化されている）状況下においても、通信における排他制御を適切に実行することができる。また、排他オブジェクトを取得できない状況下で印刷ジョブの送信が中止された場合等にも、印刷ジョブの生成が無駄に行われてしまうことを抑制できる。
【００７８】
＜第２実施形態＞
一般に、コマンド生成フィルタ２０６を有する情報処理装置（クライアント）が、クライアントにネットワークを介して接続された情報処理装置（サーバ）を介して、印刷ジョブを通信装置１２０に送信する形態が知られている。このような形態における通信環境を、サーバ／クライアント環境と言う。サーバ／クライアント環境において、例えば、サーバがＵＳＢ通信アプリ２１０を有しており、且つサーバと通信装置１２０がＵＳＢで接続しているとする。この形態において、サーバから通信装置１２０への印刷ジョブの送信と、サーバで動作するＵＳＢ通信アプリ２１０が実行する通信装置１２０との通信が同一の通信経路で並行して実行される場合、例えば、通信されるデータの混在が生じてしまうおそれがある。そのため、サーバと通信装置１２０間におけるＵＳＢ通信についても排他制御が実行される必要があるが、印刷ジョブの生成元であるクライアントが排他オブジェクトを取得する形態では、サーバと通信装置１２０間の排他制御を実行できない。そこで、本実施形態では、サーバ／クライアント環境において、サーバと通信装置１２０間の排他制御が適切に実行されるように制御する形態について説明する。
【００７９】
図９は本実施形態の通信システムを示す。本実施形態の通信システムは、サーバ／クライアント環境を構成しているものとする。本実施形態において、情報処理装置９０１がクライアント、情報処理装置９０４がサーバとして動作するものとする。なお、情報処理装置９０１及び情報処理装置９０４の構成は、第１実施形態で説明した情報処理装置１１０の構成と同様である。
【００８０】
情報処理装置９０１および情報処理装置９０４は、ネットワークＩ／Ｆ９０３を介して相互に接続されている。なお、ネットワークＩ／Ｆ９０３の通信方式は特に限定されないため、ネットワークＩ／Ｆ９０３は、無線であっても有線であっても良い。また、通信装置９０６及び情報処理装置９０４は、ＵＳＢＩ／Ｆ９０５を介して相互に接続されている。ＵＳＢＩ／Ｆ９０５は、ＵＳＢ通信方式によって通信するためのインタフェースである。すなわち、通信装置９０６と情報処理装置９０４間の通信は、ＵＳＢ通信方式によって行われるものとする。
【００８１】
本実施形態では、情報処理装置９０１は、プリンタドライバ９０２を有している。プリンタドライバ９０２は、第１実施形態で説明したＶ４ドライバと同様の構成を有しているものとする。なお、情報処理装置９０１は、ローカル環境においてＵＳＢ通信を実行するために、ＵＳＢ通信アプリや後述の常駐プログラムを有していても良い。また、情報処理装置９０４は、プリンタドライバ９０９とＵＳＢ通信アプリ９０８、常駐プログラム９０７を有している。本実施形態では、情報処理装置９０４に含まれるプリンタドライバは、情報処理装置９０１に含まれるプリンタドライバと同様のものであるものとする。また、ＵＳＢ通信アプリ９０８は、第１実施形態にて説明したＵＳＢ通信アプリと同様のものであるものとする。情報処理装置９０４がサーバとして動作するため、プリンタドライバ９０９とＵＳＢ通信アプリ９０８、常駐プログラム９０７がサーバ側プログラムとなる。
【００８２】
本実施形態では、プリンタドライバ９０２のコマンド生成フィルタ２０６によって生成された印刷ジョブは、ネットワークＩ／Ｆ９０３を介して情報処理装置９０４へと送信される。そして、情報処理装置９０１から印刷ジョブを受信した情報処理装置９０４は、受信した印刷ジョブを、プリンタドライバ９０９のスプーラ２０３に格納する。そして、情報処理装置９０４は、受信した印刷ジョブを、情報処理装置９０４が備えるＵＳＢポートモニタ２０９及びＵＳＢＩ／Ｆ９０５を介して通信装置９０６へと送信する。なお、印刷ジョブへの変換処理は情報処理装置９０１側で既に完了されているため、印刷ジョブの送信は、プリンタドライバ９０９のコマンド生成フィルタ２０６を介さずに行われる。
【００８３】
常駐プログラム９０７は、情報処理装置９０４の起動（電源ＯＮ）と同時に動作を開始し、情報処理装置９０４の終了（電源ＯＦＦ）やユーザ操作により動作を終了するプログラムである。常駐プログラム９０７は、情報処理装置９０４にプリンタドライバ９０９がインストールされる際に、プリンタドライバ９０９と一緒に情報処理装置９０４にインストールされる。すなわち、常駐プログラム９０７は、プリンタドライバ９０９のベンダーと同じベンダーにより提供されるプログラムであり、プリンタドライバ９０９に対応しているプログラムである。常駐プログラム９０７は、情報処理装置９０４とネットワークＩ／Ｆ９０３を介して接続されている任意の情報処理装置からの遠隔操作指示に応じて、任意の処理を行うことが可能である。また、例えば、常駐プログラム９０７は、印刷ジョブの送信が開始された場合に、ジョブに関する情報を取得するモジュールであるステータスモニタを起動させる。また、常駐プログラム９０７は、サーバとして動作する情報処理装置９０４で動作するため、サーバ側プログラムとして扱われる。
【００８４】
図６は、本実施形態において、ユーザから印刷ジョブの送信が指示された場合に、プリンタドライバ９０２のコマンド生成フィルタ２０６が実行する処理を示すフローチャートである。すなわち、以下に説明する処理は、クライアント側で実行される処理である。コマンド生成フィルタ２０６が実行する処理は、実際には、ＣＰＵ１１２が、コマンド生成フィルタ２０６に対応するプログラムを外部記憶装置１１５から読みだしてＲＡＭ１１６にロードし、そのプログラムを実行することにより実現されるものとする。
【００８５】
Ｓ６０１及びＳ６０３、Ｓ６０５〜Ｓ６０７の処理は、第１実施形態で説明した処理と同様であるため説明を省略する。
【００８６】
コマンド生成フィルタ２０６は、Ｓ６０２では、情報処理装置９０４（サーバ）と通信装置１２０間の、印刷ジョブの送信に利用される接続が、ＵＳＢによる接続か否かを判定する。コマンド生成フィルタ２０６は、この判定のために、情報処理装置９０４と通信装置１２０間の接続形態を情報処理装置９０４に問い合わせても良い。コマンド生成フィルタ２０６は、ＵＳＢによる接続であると判定した場合、Ｓ６０３に進み、ＵＳＢによる接続でないと判定した場合、Ｓ６０５に進む。判定の詳細は、第１実施形態で説明した内容と同様である。
【００８７】
本実施形態におけるＳ６０４の処理の詳細は、図１０を用いて後述する。
【００８８】
このように、本実施形態においては、サーバと通信装置１２０間の接続形態に応じて処理を切り替える。
【００８９】
図１０は、本実施形態において、プリンタドライバ９０２のコマンド生成フィルタ２０６が実行するＳ６０４の印刷ジョブ生成処理の詳細を示すフローチャートである。コマンド生成フィルタ２０６が実行する処理は、実際には、ＣＰＵ１１２が、コマンド生成フィルタ２０６に対応するプログラムを外部記憶装置１１５から読みだしてＲＡＭ１１６にロードし、そのプログラムを実行することにより実現されるものとする。また、常駐プログラム９０７が実行する処理は、実際には、ＣＰＵ１１２が、常駐プログラム９０７に対応するプログラムを外部記憶装置１１５から読みだしてＲＡＭ１１６にロードし、そのプログラムを実行することにより実現されるものとする。なお、上述のＣＰＵ１１２、外部記憶装置１１５及びＲＡＭ１１６は、情報処理装置９０１が備える構成である。
【００９０】
まず、コマンド生成フィルタ２０６は、Ｓ１００１にて、印刷ジョブの送信に利用するＵＳＢポートモニタ２０９に関連付けされた排他オブジェクトを、情報処理装置９０４の常駐プログラム９０７が保持しているか否かを判定する。具体的には、本判定は、後述のＳ１００３で取得される取得成否情報を参照することで行われる。コマンド生成フィルタ２０６は、取得成否情報が、排他オブジェクトの取得の成功を示す場合に、常駐プログラム９０７が排他オブジェクトを保持していると判定する。そして、取得成否情報が、排他オブジェクトの取得の失敗を示す場合に、常駐プログラム９０７が排他オブジェクトを保持していないと判定する。そのため、未だＳ１００３の処理を実行してない段階では、Ｓ１００１の処理を省略して、Ｓ１００２の処理を実行しても良い。なお、例えば、排他オブジェクトの取得の成功を示す取得成否情報が排他オブジェクトそのものである場合は、コマンド生成フィルタ２０６は、Ｓ１００１にて、排他オブジェクトを自身が保持しているか否かを判定しても良い。コマンド生成フィルタ２０６は、排他オブジェクトを保持していないと判定した場合、Ｓ１００２に進み、排他オブジェクトを保持していると判定した場合、Ｓ１００５に進む。
【００９１】
次にコマンド生成フィルタ２０６は、Ｓ１００２にて、情報処理装置９０４で動作し且つ印刷ジョブの送信に利用されるＵＳＢポートモニタ２０９に関連付けされた排他オブジェクトを取得するように、サーバ側プログラムの常駐プログラム９０７に対し指示する。すなわち、コマンド生成フィルタ２０６は、遠隔操作指示として、排他オブジェクト取得指示を常駐プログラム９０７に送信する。なお、このとき、プリンタドライバ９０９でなく、常駐プログラム９０７に指示が行われるのは、指示時にプリンタドライバ９０９が動作しておらず、プリンタドライバ９０９には指示が届かない可能性があるためである。常駐プログラム９０７は、上述したように、情報処理装置９０４の起動と同時に動作を開始するため、指示を受け取れる可能性が高い。
【００９２】
なお、コマンド生成フィルタ２０６は、プリンタドライバ９０９が動作している場合は、プリンタドライバ９０９に指示を送信しても良い。その場合、以下の説明において、常駐プログラム９０７の代わりにプリンタドライバ９０９のモジュールが排他オブジェクトを取得することで、排他制御を実現する。
【００９３】
常駐プログラム９０７によって排他オブジェクトが取得・保持されている場合、情報処理装置９０４が備えるプログラムのうち、常駐プログラム９０７以外の排他制御に係わるプログラム（ＵＳＢ通信アプリ９０８等）による通信装置１２０との通信が行われない。また、常駐プログラム９０７によって排他オブジェクトが破棄された場合、情報処理装置９０４が備えるプログラムのうち、排他オブジェクトを保持していた常駐プログラム９０７以外のプログラムによる通信装置１２０とのＵＳＢ通信が実行可能となる。
【００９４】
その後、コマンド生成フィルタ２０６は、Ｓ１００３にて、常駐プログラム９０７による排他オブジェクトの取得が成功したか否かを示す取得成否情報を、情報処理装置９０４から受信する。なお、取得成否情報は、例えば、取得した排他オブジェクトそのものであっても良いし、取得の成否を示すフラグ等のその他の情報であっても良い。
【００９５】
そして、コマンド生成フィルタ２０６は、Ｓ１００４にて、受信した取得成否情報が排他オブジェクト取得の成功を示すものか否かを判定する。言いかれば、コマンド生成フィルタ２０６は、常駐プログラム９０７による排他オブジェクトの取得が成功したか否かを判定する。コマンド生成フィルタ２０６は、常駐プログラム９０７による排他オブジェクトの取得が成功したと判定した場合、Ｓ１００５に進む。一方、コマンド生成フィルタ２０６は、常駐プログラム９０７による排他オブジェクトの取得が成功していない（失敗した）と判定した場合、再度Ｓ１００２の処理を実行し、常駐プログラム９０７による排他オブジェクトの取得が成功するまで処理を繰り返す。なおこのとき、コマンド生成フィルタ２０６は、処理を繰り返した回数が所定回数を超えた場合は、Ｓ１００５に進んでも良い。またコマンド生成フィルタ２０６は、処理の繰り返しにかかった時間が所定時間を超えた（コマンド生成フィルタ２０６によって排他オブジェクトが保持されていない状態が所定の時間以上続いた）場合は、Ｓ１００５に進んでも良い。また、コマンド生成フィルタ２０６は、例えば、常駐プログラム９０７以外の情報処理装置９０４が有しているソフトウェアが排他オブジェクトを保持しているか否かを判定し、保持していないと判定した場合は、Ｓ１００５に進んでも良い。また、例えば、コマンド生成フィルタ２０６は、印刷ジョブを送信せずに処理を終了しても良い。また、このとき、コマンド生成フィルタ２０６は、出力装置１１８に、エラーを通知する画面を表示しても良い。
【００９６】
常駐プログラム９０７による排他オブジェクトの取得が成功していれば、ＵＳＢ通信アプリ９０８等の、情報処理装置９０４で動作する他のソフトウェアは、印刷ジョブの送信に利用されるＵＳＢポートモニタ２０９を介した通信を実行しない。なお、上述したように、情報処理装置９０１から受信される印刷ジョブの送信処理は、プリンタドライバ９０９のコマンド生成フィルタ２０６を介さずに行われる。すなわち、当該送信処理は、排他オブジェクトを保持していない場合に通信を止める機能を有するモジュールを介さずに行われる。そのため、プリンタドライバ９０９は、常駐プログラム９０７が排他オブジェクトを保持していても、当該送信処理を行うことができる。これにより、情報処理装置９０４は、データの混在等を生じさせることなく、印刷ジョブを送信することができる。
【００９７】
コマンド生成フィルタ２０６は、Ｓ１００５では、スプーラ２０３から受信したスプールデータ（印刷データ）を印刷ジョブへ変換する。
【００９８】
その後、コマンド生成フィルタ２０６は、Ｓ１００６にて、Ｓ１００５で生成した印刷ジョブを、ＯＳが管理する所定の記憶領域に出力する。なお、コマンド生成フィルタ２０６により所定の記憶領域に出力された印刷ジョブは、スプーラ２０３により順次情報処理装置９０４へ転送される。
【００９９】
続いて、コマンド生成フィルタ２０６は、Ｓ１００７にて、変換対象のスプールデータの全てが印刷ジョブへ変換されたか否かを判定する。コマンド生成フィルタ２０６は、変換対象のスプールデータの全てが印刷ジョブへ変換されていないと判定した場合、Ｓ６０１へ戻り、残りのスプールデータを印刷ジョブへ変換する。一方、コマンド生成フィルタ２０６は、変換対象のスプールデータの全てが印刷ジョブへ変換されたと判定した場合、処理を終了する。
【０１００】
図１１は、本実施形態において、情報処理装置９０４上で動作する常駐プログラム９０７が実行する処理を示すフローチャートである。すなわち、以下に示す処理は、サーバ側で行われる処理である。常駐プログラム９０７が実行する処理は、実際には、ＣＰＵ１１２が、常駐プログラム９０７に対応するプログラムを外部記憶装置１１５から読みだしてＲＡＭ１１６にロードし、そのプログラムを実行することにより実現されるものとする。なお、上述のＣＰＵ１１２、外部記憶装置１１５及びＲＡＭ１１６は、情報処理装置９０４が備える構成である。
【０１０１】
まず、常駐プログラム９０７は、Ｓ１１０１にて、ネットワークＩ／Ｆ９０３を介して情報処理装置９０４に接続されたクライアント（情報処理装置９０１等）から、遠隔操作指示を受信する。
【０１０２】
その後、常駐プログラム９０７は、Ｓ１１０２にて、Ｓ１１０１で受信した遠隔操作指示の内容を判定する。常駐プログラム９０７は、遠隔操作指示の内容が排他オブジェクト取得指示であると判定した場合、Ｓ１１０５に進む。また、常駐プログラム９０７は、遠隔操作指示の内容が排他オブジェクト破棄指示と判定した場合、Ｓ１１０３に進む。排他オブジェクト破棄指示は、コマンド生成フィルタ２０６が実行する終了指示にて送信される指示であり、詳細は後述する。また、常駐プログラム９０７は、遠隔操作指示の内容が排他オブジェクト破棄指示でも排他オブジェクト取得指示でもないその他の指示であると判定した場合、Ｓ１１０４に進む。
【０１０３】
常駐プログラム９０７は、Ｓ１１０３では、保持している排他オブジェクトを破棄する。その後、常駐プログラム９０７は、Ｓ１１０７に進む。
【０１０４】
常駐プログラム９０７は、Ｓ１１０４では、Ｓ１１０１で受信した遠隔操作指示（その他の指示）に応じた処理を実行する。その後、常駐プログラム９０７は、Ｓ１１０７に進む。
【０１０５】
常駐プログラム９０７は、Ｓ１１０５では、情報処理装置９０４で動作し且つ印刷ジョブの送信に利用されるＵＳＢポートモニタ２０９に関連付けされた排他オブジェクトの取得を試みる。なお、例えば、ＵＳＢ通信アプリ９０８等の、常駐プログラム９０７以外のソフトウェアによって、当該排他オブジェクトが保持されている状態では、常駐プログラム９０７は、当該排他オブジェクトを取得できない。すなわち、当該状態では、排他オブジェクト取得処理が失敗する。常駐プログラム９０７は、排他オブジェクト取得処理が成功した場合は、当該排他オブジェクトを取得する。
【０１０６】
次に、常駐プログラム９０７は、Ｓ１１０６にて、Ｓ１１０１で受信した遠隔操作指示の送信元である情報処理装置に対し、取得成否情報を送信する。具体的には、常駐プログラム９０７は、排他オブジェクト取得処理が成功した場合は、排他オブジェクト取得処理が成功したことを示す取得成否情報を送信する。また、常駐プログラム９０７は、排他オブジェクト取得処理が失敗した場合は、排他オブジェクト取得処理が失敗したことを示す取得成否情報を送信する。
【０１０７】
次に、常駐プログラム９０７は、Ｓ１１０７にて、動作を終了するか否かを判定する。常駐プログラム９０７は、情報処理装置９０４の動作が終了する（電源がＯＦＦされる）か、ユーザ操作により常駐プログラム９０７に対し終了通知が発行された場合に、動作を終了すると判定する。常駐プログラム９０７は、動作を終了すると判定した場合、全ての処理を終了し、動作を終了しないと判定した場合、Ｓ１１０１に戻って、新たな遠隔操作指示を受信するのを待つ。
【０１０８】
図８は、本実施形態において情報処理装置９０１のコマンド生成フィルタ２０６が実行する終了処理を示すフローチャートである。すなわち、以下に説明する処理は、クライアント側で実行される処理である。コマンド生成フィルタ２０６は、終了処理を任意のタイミングで実行して良い。例えば、コマンド生成フィルタ２０６は、送信対象の印刷ジョブの全てが通信装置１２０に送信された場合に、終了処理を実行して良い。また、例えば、ジョブ保持処理を実行可能な形態であれば、通信装置１２０に送信されたジョブの処理が通信装置１２０によって終了された場合に、終了処理を実行しても良い。
【０１０９】
なお、コマンド生成フィルタ２０６が実行する処理は、実際には、ＣＰＵ１１２が、コマンド生成フィルタ２０６に対応するプログラムを外部記憶装置１１５から読みだしてＲＡＭ１１６にロードし、そのプログラムを実行することにより実現されるものとする。なお、上述のＣＰＵ１１２、外部記憶装置１１５及びＲＡＭ１１６は、情報処理装置９０１が備える構成である。
【０１１０】
まず、コマンド生成フィルタ２０６は、Ｓ８０１にて、常駐プログラム９０７が排他オブジェクトを保持しているか否かを判定する。コマンド生成フィルタ２０６は、常駐プログラム９０７が排他オブジェクトを保持していると判定した場合、Ｓ８０２に進み、常駐プログラム９０７が排他オブジェクトを保持していないと判定した場合、処理を終了する。
【０１１１】
コマンド生成フィルタ２０６は、Ｓ８０２では、遠隔操作指示として、常駐プログラム９０７が保持している排他オブジェクトを破棄させるための指示（排他オブジェクト破棄指示）を送信する。これにより、常駐プログラム９０７が、排他オブジェクトを保持している状態から排他オブジェクトを保持していない状態に遷移する。その後、処理を終了する。
【０１１２】
このように、本実施形態では、クライアントとして動作する情報処理装置は、サーバとして動作する情報処理装置を介して通信装置に印刷ジョブを送信する際、サーバとして動作する情報処理装置に排他オブジェクト取得指示を送信する。そして、サーバとして動作する情報処理装置によって指示が受け付けられることで、サーバとして動作する情報処理装置において動作する常駐プログラムが排他オブジェクトを取得する。このような形態とすることで、サーバ／クライアント環境においても、排他制御を実現することが可能となり、データの混在等の課題が生じることを抑制できる。
【０１１３】
＜第３実施形態＞
第１実施形態で説明したような、サーバを介さずに通信装置１２０に印刷ジョブを送信可能な環境をローカル環境という。例えば、サーバ／クライアント環境と、ローカル環境の両方で動作可能な情報処理装置がある。本実施形態では、そのような情報処理装置１１０が、自身の属する環境に応じた適切な排他制御を実行する形態について説明する。
【０１１４】
本実施形態では、情報処理装置１１０は、第１実施形態で説明したＶ４ドライバと同様の構成のプリンタドライバを有しているものとする。
【０１１５】
図１２は、本実施形態において、ユーザから印刷ジョブの送信が指示された場合に、当該指示に基づいて印刷ジョブを生成する情報処理装置１１０のコマンド生成フィルタ２０６が実行する処理を示すフローチャートである。コマンド生成フィルタ２０６が実行する処理は、実際には、ＣＰＵ１１２が、コマンド生成フィルタ２０６に対応するプログラムを外部記憶装置１１５から読みだしてＲＡＭ１１６にロードし、そのプログラムを実行することにより実現されるものとする。
【０１１６】
Ｓ１２０１の処理は、第１実施形態にて説明したＳ６０１の処理と同様であるため説明を省略する。
【０１１７】
コマンド生成フィルタ２０６は、Ｓ１２０２では、情報処理装置１１０の印刷環境が、サーバ／クライアント環境か否かを判定する。具体的にはこのとき、コマンド生成フィルタ２０６は、ＯＳに対し、情報処理装置１１０のプリンタドライバに対応する印刷装置（ここでは、通信装置１２０）の名前の問い合わせを行う。このとき、ＯＳは、情報処理装置１１０の印刷環境がローカル環境であれば、問い合わせに応じない。そのため、コマンド生成フィルタ２０６は、問い合わせに応答がなかった場合は、情報処理装置１１０の印刷環境が、サーバ／クライアント環境でない（ローカル環境である）と判定し、Ｓ１２０４に進む。一方、ＯＳは、情報処理装置１１０の印刷環境がサーバ／クライアント環境であれば、問い合わせに応じて、コマンド生成フィルタ２０６に対して情報を通知する。具体的には、ＯＳは、情報処理装置１１０のプリンタドライバに対応する印刷装置の名前及び、当該印刷装置に直接（サーバを介さず）接続している装置の名前の情報をコマンド生成フィルタ２０６に送信する。そのため、コマンド生成フィルタ２０６は、問い合わせに応答があった場合は、情報処理装置１１０の印刷環境が、サーバ／クライアント環境であると判定し、Ｓ１２０３に進む。
【０１１８】
コマンド生成フィルタ２０６は、Ｓ１２０３では、サーバ／クライアント環境において、情報処理装置１１０がクライアントとして動作しているか否かを判定する。具体的にはこのとき、コマンド生成フィルタ２０６は、問い合わせに対する応答としてＯＳから取得した情報を参照する。コマンド生成フィルタ２０６は、印刷装置に直接接続している装置の名前が、情報処理装置１１０の名前であった場合、情報処理装置１１０がクライアントとして動作していない（サーバとして動作している）と判定し、Ｓ１２０４に進む。ユーザから印刷ジョブの送信指示を受け付けて、当該指示に基づいて印刷ジョブの生成を行う情報処理装置１１０がサーバとして動作している場合、情報処理装置１１０と通信装置１２０間の通信は、他の装置を介さずに行われる。すなわち、サーバ／クライアント環境であっても、実質的にローカル環境と同様の通信が行われることになるため、コマンド生成フィルタ２０６は、Ｓ１２０３より後は、ローカル環境であるケースと同様の処理を行う。
一方、コマンド生成フィルタ２０６は、印刷装置に直接接続している装置の名前が、情報処理装置１１０の名前でなかった場合、情報処理装置１１０がクライアントとして動作していると判定し、Ｓ１２１０に進む。
【０１１９】
Ｓ１２０４〜Ｓ１２０９の処理は、第１実施形態にて説明したＳ６０１〜Ｓ６０７の処理と同様である。すなわち、情報処理装置１１０の印刷環境がローカル環境である場合、又は情報処理装置１１０の印刷環境がサーバ／クライアント環境であり、且つ情報処理装置１１０がサーバとして動作する場合は、排他オブジェクトの取得を、情報処理装置１１０が適宜行う。
【０１２０】
また、Ｓ１２１０〜Ｓ１２１５の処理は、第２実施形態にて説明したＳ６０１〜Ｓ６０７の処理と同様である。すなわち、情報処理装置１１０の印刷環境がサーバ／クライアント環境であり、且つ情報処理装置１１０がクライアントとして動作する場合は、排他オブジェクトの取得を、情報処理装置１１０が接続しているサーバに適宜行わせる。
【０１２１】
このような形態とすることで、情報処理装置１１０は、自身の印刷環境に応じた排他制御を適切に実行することができる。
【０１２２】
＜その他の実施形態＞
上述では、排他オブジェクトの取得を、コマンド生成フィルタによって印刷ジョブが生成される前に実行させる形態が、Ｖ４ドライバを有する情報処理装置１１０に適用されている例を説明したが、この形態に限定されない。排他オブジェクトの取得を、印刷ジョブが生成される前にコマンド生成フィルタによって実行させる形態が、Ｖ３ドライバ等のＶ４ドライバ以外のドライバを有する情報処理装置１１０に適用されても良い。
【０１２３】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワークや各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理でも実現可能である。また、プログラムは、１つのコンピュータで実行されても、複数のコンピュータが連動することで実行されてもよい。また、上記した処理の全てをソフトウェアで実現する必要はなく、処理の一部または全部をＡＳＩＣ等のハードウェアで実現するようにしてもよい。また、１つのＣＰＵで全ての処理を行う形態に限らず、複数のＣＰＵが適宜連携をしながら処理を行う形態としてもよい。また、上述した処理のうち、いずれかの処理を１つのＣＰＵが実行し、その他の処理を複数のＣＰＵが連携しながら処理を行う形態としても良い。
【図１】
2018124777.tif 000003
【図２】
2018124777.tif 000004
【図３】
2018124777.tif 000005
【図４】
2018124777.tif 000006
【図５】
2018124777.tif 000007
【図６】
2018124777.tif 000008
【図７】
2018124777.tif 000009
【図８】
2018124777.tif 000010
【図９】
2018124777.tif 000011
【図１０】
2018124777.tif 000012
【図１１】
2018124777.tif 000013
【図１２】
2018124777.tif 000014