"ソースコードで記述されたソースデバイスドライバであって、アプリケーションとの界面のレイヤーであるAPI部と、OSに依存する処理のレイヤーであるOS依存部と、CPUに依存する処理のレイヤーであるCPU依存部と、上記OS及び上記CPUには依存しない処理のレイヤーであるデバイスドライバ本体部と、を含み、上記デバイスドライバ本体部は上記API部から呼び出され、上記OS依存部及び上記CPU依存部は上記デバイスドライバ本体部から呼び出されるように階層化されたことを特徴とするソースデバイスドライバ。上記API部は、互いに異なるOSに対応して複数設けられた請求項1記載のソースデバイスドライバ。上記OS依存部は、互いに異なるOSに対応して複数設けられた請求項2記載のソースデバイスドライバ。上記CPU依存部は、互いに異なるCPUに対応して複数設けられた請求項3記載のソースデバイスドライバ。アプリケーションとの界面のレイヤーであるAPI部と、OSに依存する処理のレイヤーであるOS依存部と、CPUに依存する処理のレイヤーであるCPU依存部と、上記OS及び上記CPUには依存しない処理のレイヤーであるデバイスドライバ本体部と、を含み、上記デバイスドライバ本体部は上記API部から呼び出され、上記OS依存部及び上記CPU依存部は上記デバイスドライバ本体部から呼び出されるように階層化されて、ソースコードで記述されたソースデバイスドライバを、コンピュータに読み込んで、上記API部、又は上記OS依存部、若しくは上記CPU依存部を、外部入力に応じて変更した後に、ソースコードをオブジェクトコードに変換することでデバイスドライバの実行モジュールを形成する、実行モジュール作成方法。上記API部は、互いに異なるOSに対応して複数設けられた請求項5記載の実行モジュール作成方法。上記OS依存部は、互いに異なるOSに対応して複数設けられた請求項6記載の実行モジュール作成方法。上記CPU依存部は、互いに異なるCPUに対応して複数設けられた請求項7記載の実行モジュール作成方法。複数のOS上で同一デバイスに対するデバイスドライバを作成することがあるが、あるOSにおける標準的な開発方式でデバイスドライバの開発を行うと、他のOSのデバイスドライバの開発と工程上重なる部分が多い。しかしながら、OSに依存するシステムコール、割込み処理などの部分はOS毎に要求される形式が違うために同一のプログラムで兼用させるには無理がある。また、CPUの周辺デバイスを複数の種類のOSで動作させる場合、OS毎にデバイスドライバを作成する必要がある。同一の周辺デバイスを複数の種類のCPUにおいて動作させる場合、CPUの種類毎にデバイスドライバを作成する必要がある。このため、同一の周辺デバイスに対してデバイスドライバを、OS毎若しくはCPU毎に複数の種類作成する必要があり、デバイスドライバの製作コストの低減が困難とされている。特許文献1には、デバイスドライバの生産性及び保守性を向上させるための技術が記載され、特許文献2には、デバイス及びCPU系列デバイスドライバ本体部分と、CPU系列依存部分とで構成されたOSで制御される情報処理装置におけるハイバネーション制御方法が記載され、特許文献3には、複数のオペレーティングシステム用のデバイスサポートを提供するための方法及びシステムが記載されている。しかし、上記特許文献1~3には、OS毎のデバイスドライバの違いを吸収するデバイスドライバの具体的な構成や、複数のCPUが搭載されるシステムにおいてデバイスドライバの実装の違いを吸収するための方法については言及されていない。本発明の目的は、OSやCPUの違いに対応してデバイスドライバの品種展開を安価に実現するための技術を提供することにある。本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。すなわち、ソースデバイスドライバはソースコードで記述され、アプリケーションとの界面のレイヤーであるAPI部と、OSに依存する処理のレイヤーであるOS依存部と、CPUに依存する処理のレイヤーであるCPU依存部と、上記OS及び上記CPUには依存しない処理のレイヤーであるデバイスドライバ本体部とを含む。そして上記デバイスドライバ本体部は、上記API部から呼び出され、上記OS依存部及び上記CPU依存部は上記デバイスドライバ本体部から呼び出されるように階層化される。本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。すなわち、OSやCPUの違いに対応してデバイスドライバの品種展開を安価に実現することができる。1.実施の形態の概要先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。1本発明の代表的な実施の形態に係るソースデバイスドライバはソースコードで記述され、アプリケーションに対応するAPI部11,12と、OSに依存するOS依存部14,15と、CPUに依存するCPU依存部16と、上記OS及び上記CPUには依存しないデバイスドライバ本体部13とを含む。上記デバイスドライバ本体部は、上記API部から呼び出され、上記OS依存部及び上記CPU依存部は上記デバイスドライバ本体部から呼び出されるように階層化される。上記構成のソースデバイスドライバによれば、上記API部、又は上記OS依存部、若しくは上記CPU依存部を変更することにより、デバイスドライバのOSやCPUの違いに対応した品種展開が容易となる。このとき、デバイスドライバ本体部は共通化されるため、上記の品種展開は安価に実現できる。2上記1において、上記API部は、互いに異なるOSに対応して複数設けることにより、所望のAPI部を選択可能とすることができる。3上記2において、上記OS依存部は、互いに異なるOSに対応して複数設けることにより、所望のOS依存部を選択可能とすることができる。4上記3において、上記CPU依存部は、互いに異なるCPUに対応して複数設けることにより、所望のOS依存部を選択可能とすることができる。5本発明の代表的な実施の形態に係る実行モジュール作成方法は、先ずソースコードで記述されたソースデバイスドライバ10をコンピュータ52に読み込む。ここで、上記ソースデバイスドライバは、アプリケーションに対応するAPI部11,12と、OSに依存するOS依存部14,15と、CPUに依存するCPU依存部16と、上記OS及び上記CPUには依存しないデバイスドライバ本体部13とを含む。そして上記デバイスドライバ本体部は上記API部から呼び出され、上記OS依存部及び上記CPU依存部は上記デバイスドライバ本体部から呼び出されるように階層化される。このようなソースデバイスドライバをコンピュータに読み込み、上記API部、又は上記OS依存部、若しくは上記CPU依存部を外部入力に応じて変更した後に、ソースコードをオブジェクトコードに変換することでデバイスドライバの実行モジュールを形成する。このような実行モジュール作成方法によれば、ソースコードをオブジェクトコードに変換する前に、上記API部、又は上記OS依存部、若しくは上記CPU依存部を変更することにより、デバイスドライバのOSやCPUの違いに対応した品種展開が容易となる。このとき、デバイスドライバ本体部は共通化されるため、デバイスドライバの品種展開を安価に実現できる。6上記5において、上記API部には、互いに異なるOSに対応して複数設けることにより、所望のAPI部を選択可能とすることができる。7上記6において、上記OS依存部には、互いに異なるOSに対応して複数設けることにより、所望のOS依存部を選択可能とすることができる。8上記7において、上記CPU依存部は、互いに異なるCPUに対応して複数設けることにより、所望のOS依存部を選択可能とすることができる。2.実施の形態の詳細実施の形態について更に詳述する。《実施の形態1》図2には、デバイスドライバの実行モジュールが実装されるコンピュータシステムが示される。図2に示されるコンピュータシステム2は、特に制限されないが、CPU21、メモリ22、内蔵装置23とを含み、それらが、バス24を介して互いに信号のやり取りが可能に結合されている。内蔵装置23は、CPU21に結合されたデバイスの一例とされる。CPU21は所定のプログラムを実行する。このプログラムには、OS、アプリケーションプログラム、内蔵装置23のデバイスドライバ実行モジュールが含まれる。OS、アプリケーションプログラム、及び内蔵装置23のデバイスドライバはメモリ22に格納することができる。内蔵装置23は、特に制限されないが、CPU21の制御下で、メモリ22に格納されている図形データの拡大処理、縮小処理、及び回転処理を行う。CPU21による内蔵装置23の動作制御は、メモリ22内のデバイスドライバを介して行われる。上記内蔵装置23のデバイスドライバ実行モジュールは、プログラミングのための高級言語ソースコードで記述されたソースデバイスドライバをオブジェクトコードに変換することで作成されたものである。ここで、ソースコードで記述されたソースデバイスドライバを、OSに依存する処理アドレス空間の制御方式メモリ管理方式、システムコールの種類内容、タスクプロセススレッドの制御方式のレイヤーと、内装装置23に依存する処理デバイスの動作の設定、デバイスを如何に動作させるか決定するレジスタの設定のレイヤーとに分けることができる。それによって、デバイスドライバの処理をOS依存の処理のレイヤーと、OS非依存の処理のレイヤーとに分離可能である。同様にデバイスドライバをCPUの種類に依存する処理命令セット、割込み処理、アドレス空間の制御方式のレイヤーと、内装装置23に依存する処理デバイスの動作の設定、デバイスを如何に動作させるか決定するレジスタの設定のレイヤーとに分けることによって、デバイスドライバの処理をCPU依存の処理のレイヤーと、CPU非依存の処理のレイヤーとに分離可能である。そこで本例では、以下のようにソースデバイスドライバが階層化される。図1には、上記内蔵装置23のデバイスドライバ実行モジュールの作成に用いられるソースデバイスドライバの構成例が示される。図1に示されるソースデバイスドライバ10は、APIApplicationProgrammingInterface;アプリケーションプログラミングインタフェース部11,12、デバイスドライバ本体部13、OS依存部14,15、及びCPU依存部16を含む。図1に示されるソースデバイスドライバ10は、API部11やAPI部12からデバイスドライバ本体部13が呼び出され、デバイスドライバ本体部13からOS依存部14,15やCPU依存部16が呼び出されるように階層化される。API部11,12は、アプリケーションに対するインタフェース部分であり、このソースデバイスドライバ10のアプリケーション界面とされるレイヤーである。このAPI部11,12は、それぞれOSと内蔵装置23毎に固有に定義された部分である。コンピュータシステム2に搭載される可能性があるOSとして、本例ではOS_Aと、OS_Bとの2種類を想定する。OSが異なればAPI部の内容も異なる。そこで、本例では、OS_Aに対応してAPI部11が記述され、OS_Bに対応してAPI部12が記述されている。OS_Aに対応するAPI部11は、図3のAに示されるように記述され、OS_Bに対応するAPI部12は、図3のBに示されるように記述される。API部11及びAPI部12は、アプリケーションがAPI部を呼び出す形式で記述される。ここで、図形を表すデータの拡大、縮小、回転を行うためのデバイスドライバ本体は、drvVEUStartや、VEUIOControlである。デバイスドライバ本体部13は、内蔵装置23のデバイスドライバにおいて、内蔵装置23には依存するが、CPU21やOSには依存しない処理のレイヤーである。ここでCPU21やOSには依存しない処理には、例えば内蔵装置23の動作の設定、内蔵装置23を如何に動作させるかを決定するレジスタの設定が含まれる。デバイスドライバ本体部13のインタフェースは、例えば図3のCに示されるように記述される。デバイスドライバ本体部13は、内蔵装置23のデバイスドライバにおいてCPU21やOSには依存しない部分であるため、CPUやOSの違いに拘わらず、共通化される。OS依存部14は、内蔵装置23のデバイスドライバにおいてOS_Aに依存する処理のレイヤーとされ、OS依存部15は、内蔵装置23のデバイスドライバにおいてOS_Bに依存する処理のレイヤーとされる。ここで、OS_Aに依存する処理には、例えばOS_Aに依存するシステムコールを呼び出したり、OS_Aに依存する割り込み処理が含まれる。また、OS_Bに依存する処理には、例えばOS_Bに依存するシステムコールを呼び出したり、OS_Bに依存する割り込み処理が含まれる。CPU依存部16は、内蔵装置23のデバイスドライバにおいてCPU21に依存する処理のレイヤーでる。例えばCPU21に依存する処理には、CPU21への割り込みを受け付けたり、CPU21における固有の資源へのアクセス制御を行う処理が含まれる。図1に示されるようなデバイスドライバは、特に制限されないが、図5に示されるワークステーションによって作成することができる。図5に示されるワークステーション50は、各種データが格納された外部記憶装置51、所定のプログラムを実行することで各種演算処理を行うワークステーション本体52、上記ワークステーション本体52から供給された表示データを可視化するための表示装置53、上記ワークステーション本体52への各種情報入力のための入力装置54を含んで成る。ワークステーション本体53は、CPUを内蔵する所謂コンピュータであり、デバイスドライバ作成のための所定のプログラムが実行される。デバイスドライバ作成のためのプログラムがワークステーション本体52で実行されることにより、ソースデバイスドライバを作成したり、作成されたソースデバイスドライバの内容を変更したり、ソースデバイスドライバをオブジェクトコードに変換することができる。このようなワークステーション50を用いて、図1に示されるようなソースデバイスドライバ10が形成されると、そのファイルは外部記憶装置51に格納される。そして外部記憶装置51に格納されたソースデバイスドライバ10は、必要に応じてワークステーション本体52に読み込まれて、修正することができる。このため、図1に示されるようなソースデバイスドライバ10を作成して、外部記憶装置51に格納しておけば、ソースデバイスドライバ10の一部を変更してからオブジェクトコードに変換することにより、OSやCPUの違いを考慮したデバイスドライバ実行モジュールを容易に作成することができる。図4には、図5に示されるワークステーション50において、ソースデバイスドライバ10から実行モジュールを作成する処理の流れが示される。尚、ここでは、図1に示されるようなソースデバイスドライバ10が既に形成され、そのファイルが外部記憶装置51に格納されているものとする。先ず、図1に示されるようなソースデバイスドライバ10のファイルが外部記憶装置51からワークステーション本体52に読み込まれる40。そして、入力装置54を介して、作成対象ドライバのOSコンピュータシステム2に搭載されるOSが指定されると41、ワークステーション本体52において、作成対象ドライバはOS_A向けか、OS_B向けかの判別が行われる42。この判別において、OS_A向けであると判断された場合には、OS_A対応ドライバを作成するのに必要なAPI部及びOS依存部が決定される43。そしてデバイスドライバ作成ツールでは、OS_A対応ドライバにおいて不要となる部分、すなわち、OS_Bに対応するAPI部12の記述や、OS_Bに依存するOS依存部15の記述が削除又は無効とされる。ここで、無効とは、ソースコードをオブジェクトコードに変換する場合に無視させることを意味する。そして、API部11、デバイスドライバ本体部13、OS依存部14、及びCPU依存部16から成るソースデバイスドライバがオブジェクトコードに変換されることで、OS_A向けデバイスドライバの実行モジュールが形成される45。また、上記ステップ42の判別において、OS_B向けであると判断された場合には、OS_B対応ドライバを作成するのに必要なAPI部及びOS依存部が決定される44。そしてワークステーション本体52では、OS_B対応ドライバにおいて不要となる部分、すなわち、OS_Aに対応するAPI部11の記述や、OS_Aに依存するOS依存部14の記述が削除又は無効とされる。そして、API部12、デバイスドライバ本体部13、OS依存部15、及びCPU依存部16から成るソースデバイスドライバがオブジェクトコードに変換されることで、OS_B向けデバイスドライバの実行モジュールが形成される45。このように図1に示されるようなソースデバイスドライバ10が既に形成され、そのファイルが外部記憶装置51に格納されている場合には、上記ステップ41において、作成対象のOSを指定することで、OS_A向けデバイスドライバの実行モジュールや、OS_B向けデバイスドライバの実行モジュールを容易に作成することができる。それによってデバイスドライバの品種展開を容易に実現することができる。また、OS_A向けデバイスドライバの実行モジュールや、OS_B向けデバイスドライバの実行モジュールを、内蔵装置23のユーザに、速やかに提供することができる。《実施の形態2》図6には、デバイスドライバの実行モジュールが実装される別のコンピュータシステムが示される。図6に示されるコンピュータシステム10が、図2に示されるのと大きく相違するのは、CPU21に加えてCPU25が設けられている点である。本例において、CPU21で実行されるOSと、CPU25で実行されるOSとは互いに等しいものとする。CPU21とCPU25とは、内蔵装置23にアクセス可能される。図7には、図6に示される内蔵装置23のデバイスドライバ実行モジュールの作成に用いられるソースデバイスドライバの構成例が示される。図7に示されるソースデバイスドライバ10が、図1に示されるのと大きく相違するのは、API部12に対応するものや、OS依存部15に対応するものが省略されている点、及びCPU依存部15に加えてCPU依存部16が設けられている点である。図7に示されるソースデバイスドライバ10は、API部11からデバイスドライバ本体部13が呼び出され、デバイスドライバ本体部13からOS依存部14やCPU依存部16,17が呼び出されるように階層化されている。API部11は、アプリケーションに対するインタフェース部分であり、このソースデバイスドライバ10のアプリケーション界面とされる。API部11は、OSと内蔵装置23毎に固有に定義された部分である。コンピュータシステム2に搭載される可能性があるOSとして、本例ではOS_Aのみを想定する。このため、OS_Aに対応してAPI部11が記述される。OS_Aに対応するAPI部11は、図3のAに示されるように記述される。API部11は、アプリケーションがAPI部を呼び出す形式で記述される。デバイスドライバ本体部13は、内蔵装置23のデバイスドライバにおいてCPU21やOSには依存しない部分である。例えばこのデバイスドライバ本体部13のインタフェースは、図3のCに示されるように記述される。デバイスドライバ本体部13は、内蔵装置23のデバイスドライバにおいてCPU21やOSには依存しない部分であるため、CPUやOSの違いに拘わらず、共通化される。OS依存部14には、内蔵装置23のデバイスドライバにおいてOS_Aに依存する部分が記述される。ここで、OS_Aに依存する部分には、例えばOS_Aに依存するシステムコールを呼び出したり、OS_Aに依存する割り込み処理を行う部分が含まれる。CPU依存部16には、内蔵装置23のデバイスドライバにおいてCPU21に依存する部分が記述される。CPU依存部17には、内蔵装置23のデバイスドライバにおいてCPU25に依存する部分が記述される。例えば内蔵装置23のデバイスドライバにおいてCPU21に依存する部分には、CPU21への割り込みを受け付けたり、CPU21における固有の資源へのアクセス制御を行う部分が含まれる。図7に示されるようなソースデバイスドライバ10は、特に制限されないが、図5に示されるワークステーション50によって作成することができる。図8には、図5に示されるワークステーション50において、図7に示されるソースデバイスドライバ10から実行モジュールを作成する処理の流れが示される。尚、ここでは、図7に示されるようなソースデバイスドライバ10が既に形成され、そのファイルが外部記憶装置51に格納されているものとする。先ず、図7に示されるようなソースデバイスドライバ10のファイルが外部記憶装置51からワークステーション本体52に読み込まれる80。そして、入力装置54を介して、作成対象ドライバに対応するCPUCPU21又は25が指定されると81、ワークステーション本体52において、作成対象ドライバはCPU21向けか、CPU25向けかの判別が行われる82。この判別において、CPU21向けであると判断された場合には、CPU21対応ドライバを作成するのに必要なCPU依存部16が決定される83。そしてワークステーション本体52では、CPU21対応ドライバにおいて不要となる部分、すなわち、CPU25に対応するCPU依存部17の記述が削除又は無効とされる。ここで、無効とは、ソースコードをオブジェクトコードに変換する場合に無視させることを意味する。そして、API部11、デバイスドライバ本体部13、OS依存部14、及びCPU依存部16から成るソースデバイスドライバがオブジェクトコードに変換されることで、CPU21向けデバイスドライバの実行モジュールが形成される85。また、上記ステップ82の判別において、CPU25向けであると判断された場合には、CPU25対応ドライバを作成するのに必要なCPU依存部17が決定される84。そしてワークステーション本体52では、CPU25対応ドライバにおいて不要となる部分、すなわち、CPU21に対応するCPU依存部16の記述が削除又は無効とされる。ここで、無効とは、ソースコードをオブジェクトコードに変換する場合に無視させることを意味する。そして、API部11、デバイスドライバ本体部13、OS依存部14、及びCPU依存部17から成るソースデバイスドライバがオブジェクトコードに変換されることで、CPU25向けデバイスドライバの実行モジュールが形成される85。このように図7に示されるようなソースデバイスドライバ10のファイルが既に形成され、そのソースファイルが外部記憶装置51に格納されている場合には、上記ステップ81において、作成対象ドライバに対応するCPUを指定することで、CPU21向けデバイスドライバの実行モジュールや、CPU25向けデバイスドライバの実行モジュールを容易に作成することができる。それによってデバイスドライバの品種展開を容易に実現することができる。また、CPU21向けデバイスドライバの実行モジュールや、CPU25向けデバイスドライバの実行モジュールを、内蔵装置23のユーザに、速やかに提供することができる。《実施の形態3》図9には、図6に示される内蔵装置23の動作制御のためのデバイスドライバの別の基本的な構成例が示される。図9に示されるソースデバイスドライバ10が、図7に示されるのと大きく相違するのは、API部11に加えてAPI部12が設けられ、OS依存部14に加えてOS依存部15が設けられている点である。API部12やOS依存部15は、図1に示されるのと同様とされる。このようなソースデバイスドライバ10のファイルを外部記憶装置51に格納しておけば、実施の形態1の場合と同様に、作成対象のOSを指定することで、OS_A向けデバイスドライバの実行モジュールや、OS_B向けデバイスドライバの実行モジュールを容易に作成することができる。また、実施の形態2の場合と同様に、CPU21向けデバイスドライバの実行モジュールや、CPU25向けデバイスドライバの実行モジュールを容易に作成することができる。これにより、デバイスドライバの品種展開を容易に実現することができる。以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。例えば、上記の実施形態では、デバイスドライバの実行モジュールを内蔵装置23のユーザに提供する場合について説明したが、ソースデバイスドライバ10をソースファイルの状態で、内蔵装置23のユーザに提供する場合もあり得る。この場合、内蔵装置23のユーザは、ソースデバイスドライバ10から所望の実行モジュールを容易に形成することができる。また、API部、OS依存部、CPU依存部等をそれぞれ3個以上設け、その中から不要となる部分の記述を削除又は無効としても良い。上記の実施形態では、ソースデバイスドライバ10のファイルにおいて、API部、OS依存部、CPU依存部等を複数形成しておき、実行モジュールの形成前に、不要となる部分の記述を削除又は無効としたが、CPU21やOSには依存しない部分であるデバイスドライバ本体部13以外の部分の記述を、必要に応じて修正するようにしても良い。このようにしても、デバイスドライバ本体部13は変更を要しないので、デバイスドライバの品種展開を容易に実現することができる。"