(57)【要約】      （修正有）【課題】電子計算機から電子データをリム―バブルメディアへ書き込みするとき、その電子データの書き込み履歴を取得するための記録媒体の記録履歴の取得方法、そのためのプログラム及び、プログラムの記録媒体を提供する。【解決手段】ライティングソフトウェア４からメディアドライブ２のリムーバブルメディア３にイメージデータを書き込みする記録が終わると、メディアドライブ２からリムーバブルメディア３を排出するための命令であるメディア排出要求を出力し、メディアドライブ２へ送信する。電子計算機１は、オペレーティングシステム５とデバイスドライバ層の間に位置するドライバウェア７を備える。ドライバウェア７は、このメディア排出要求を受信し、一時停止して、リムーバブルメディア３に格納されているファイルやディレクトリ等のデータを読み取ることで、リムーバブルメディア３の記録履歴を取得する。【選択図】図１
2014044789.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステムによって操作されて動作する電子計算機に接続又は内蔵されたもので、記録媒体に電子データを記録、及び、前記記録媒体から前記電子データを読み込みするためのメディアドライブから、前記記録の履歴を取得するための記録媒体の記録履歴の取得方法において、
前記電子計算機上で動作するライティングソフトウェアで作成された書き込みデータを、前記メディアドライブによって前記記録媒体に記録した後で、
前記ライティングソフトウェアは前記メディアドライブから前記記録媒体を排出するための命令であるメディア排出要求を、前記メディアドライブへ送信し、
前記メディア排出要求を、前記オペレーティングシステムの入出力管理部から前記メディアドライブへ送信される間に、一時停止させ、
前記記録媒体に記録された電子データの属性データを読み込み、分析することで、前記記録媒体の記録履歴を取得し、
前記記録履歴の取得後、前記メディア排出要求を、前記メディアドライブへ送信する
ことを特徴とする記録媒体の記録履歴の取得方法。
【請求項２】
請求項１に記載の記録媒体の記録履歴の取得方法において、
前記電子計算機は、
前記オペレーティングシステムの全ての命令が実行できるカーネルモードで動作し、前記電子計算機に接続されているデバイスを直接制御するためのデバイスドライバ同士の通信、又は前記デバイスドライバと前記電子計算機上で動作するアプリケーションプログラムとの通信に共通のインターフェースを提供するための手段で、かつ、１）前記アプリケーションプログラムから出力される命令及び／又はデータを含む第１データを受信し、前記命令の実行結果及び／又は前記デバイスドライバから受信した受信データを含む第２データを、前記アプリケーションプログラムに送信するためのアプリケーションプログラムインターフェース部と、２）前記デバイスドライバへ、前記命令及び／又は前記データを含む第３データを送信し、前記デバイスドライバから前記命令の実行結果及び／又は前記受信データを含む第４データを受信するためのデバイスドライバ制御部と、３）前記第１データ又は前記第４データを処理し、前記第２データ又は前記第３データを生成して、前記第１〜４データの制御を行うための制御部とからなるドライバウェア手段を内蔵し、
前記メディア排出要求を、前記ドライバウェア手段によって取得し、
前記ドライバウェア手段は、前記メディア排出要求を、前記メディアドライブへ送信する前に、前記記録履歴を取得し、
前記記録履歴の取得後、前記ドライバウェア手段は、前記メディア排出要求を、前記メディアドライブへ送信する
ことを特徴とする記録媒体の記録履歴の取得方法。
【請求項３】
請求項２に記載の記録媒体の記録履歴の取得方法において、
前記メディア排出要求が前記オペレーティングシステムの出力インターフェースから、前記メディアドライブを制御するためのメディアドライブ用デバイスドライバへ送信されるとき、前記ドライバウェア手段が前記メディア排出要求を、前記カーネルモードで取得する
ことを特徴とする記録媒体の記録履歴の取得方法。
【請求項４】
請求項２又は３において、
前記ドライバウェア手段は、前記メディア排出要求を前記メディアドライブへ送信する前に、前記ライティングソフトウェアへ、前記メディア排出要求の実行が成功したことを示す成功通知を、送信する
ことを特徴とする記録媒体の記録履歴の取得方法。
【請求項５】
オペレーティングシステムによって操作されて動作する電子計算機に接続又は内蔵されたもので、記録媒体に電子データを記録、及び、前記記録媒体から前記電子データを読み込みするためのメディアドライブから、前記記録の履歴を取得するための記録媒体の記録履歴取得プログラムにおいて、
前記電子計算機上で動作するライティングソフトウェアで作成された書き込みデータを、前記メディアドライブによって前記記録媒体に記録した後で、前記ライティングソフトウェアによって発行されて前記メディアドライブへ送信された命令で、前記メディアドライブから前記記録媒体を排出するための命令であるメディア排出要求を、前記オペレーティングシステムの入出力管理部から受信する受信ステップ、
前記メディア排出要求を、前記メディアドライブへ送信せず、一時停止させるステップ、
前記メディアドライブに対して、前記記録媒体に記録された電子データの属性データを読み込みするための読み込み要求を発行するステップ、
前記読み込み要求を前記メディアドライブの前記メディアドライブ用デバイスドライバへ送信するステップ、
前記読み込み要求の実行結果で、前記メディアドライブから受信した前記記録媒体に記録されたファイル又はディレクトリに関する記録データを、前記メディアドライブ用デバイスドライバから受信して前記記録履歴を取得するステップ、及び、
前記記録履歴の取得後、前記メディア排出要求を、前記メディアドライブ用デバイスドライブへ送信するステップを
前記電子計算機に実行させることを特徴とする記録媒体の記録履歴取得プログラム。
【請求項６】
請求項５に記載の記録媒体の記録履歴取得プログラムにおいて、
前記記録媒体の記録履歴取得プログラムは、
前記オペレーティングシステムの全ての命令が実行できるカーネルモードで動作し、前記電子計算機に接続されているデバイスを直接制御するためのデバイスドライバ同士の通信、又は前記デバイスドライバと前記電子計算機上で動作するアプリケーションプログラムとの通信に共通のインターフェースを提供するためのプログラムで、かつ、１）前記アプリケーションプログラムから出力される命令及び／又はデータを含む第１データを受信し、前記命令の実行結果及び／又は前記デバイスドライバから受信した受信データを含む第２データを、前記アプリケーションプログラムに送信するためのアプリケーションプログラムインターフェース部と、２）前記デバイスドライバへ、前記命令及び／又は前記データを含む第３データを送信し、前記デバイスドライバから前記命令の実行結果及び／又は前記受信データを含む第４データを受信するためのデバイスドライバ制御部と、３）前記第１データ又は前記第４データを処理し、前記第２データ又は前記第３データを生成して、前記第１〜４データの制御を行うための制御部とを前記電子計算機に実現させるためのドライバウェアプログラムを有し、
前記ドライバウェアプログラムは、
前記メディア排出要求を、前記アプリケーションプログラムインターフェース部によって、前記オペレーティングシステムの入出力管理部から取得するステップと、
前記前記メディア排出要求を、一時停止させるステップと、
前記メディアドライブ用デバイスドライバへ、前記読み込み要求、前記デバイスドライバ制御部によって送信するステップと、
前記記録データを、前記メディアドライブ用デバイスドライバから、前記デバイスドライバ制御部によって受信するステップと、
前記記録データを、前記制御部によって、分析処理して、前記記録履歴を出力するステップと、
前記メディアドライブ用デバイスドライバへ、前記メディア排出要求を、前記デバイスドライバ制御部によって送信するステップと、
を前記電子計算機に実現させることを特徴とする記録媒体の記録履歴取得プログラム。
【請求項７】
請求項６に記載の記録媒体の記録履歴取得プログラムにおいて、
前記ドライバウェアプログラムは、前記メディア排出要求を前記メディアドライブへ送信する前に、前記ライティングソフトウェアへ、前記メディア排出要求の実行が成功したことを示す成功通知を、前記アプリケーションプログラムインターフェース部によって、送信するステップを
前記電子計算機に実現させることを特徴とする記録媒体の記録履歴取得プログラム。
【請求項８】
請求項５乃至７の中から選択される１項に記載の記録媒体の記録履歴取得プログラムを記録したことを特徴とする記録媒体の記録履歴取得プログラムの記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子計算機から記録媒体へ電子データを書き込みするとき、その履歴を取得するための記録媒体の記録履歴の取得方法、そのためのプログラム及び、プログラムの記録媒体に関する。
【背景技術】
【０００２】
利用者が電子計算機を操作した操作履歴は、電子データの管理、情報セキュリティ、組織の内部統制等の観点から重要である。電子計算機でファイルに関連して操作履歴としては、補助記憶装置に格納されているファイルの読み込み、閲覧、複製（コピー）、別の記憶装置への移動を始め、そのファイルへの追加書き込み、編集、上書き、そのファイルからの派生したファイル、新規作成されたファイルの補助記憶装置への書き込み等の履歴がある。
【０００３】
この中で、ＣＤ，ＤＶＤ等の光学メディアは、安価、大容量化により、手軽に使える外部記録媒体として広く普及している。近年は、光学メディアの中で、Blu-ray Disc（ブルーレイディスク）は国際的に幅広く受け入れられて普及している。特に、資料の電子データをこれらの光学メディアに記録して保存するために広く利用されている。また、電子データを、多数の光学メディアに複製することが安価かつ容易であるため、資料配布によく利用されている。更に、電子計算機で作成された光学メディアのマルチメディアコンテンツは、他の電子計算機や汎用の光学メディア再生機等を利用して再生が可能なため、マルチメディアコンテンツの作成、複製によく利用されている。
【０００４】
そのため、電子計算機で光学メディアへの記録操作に関する提案が多数報告されている。例えば、光ディスクのリードインゾーンに記録履歴情報を記録し、該光ディスクに再度記録するとき、この記録履歴情報を参照して、記録されたデータを誤動作で削除することから保護している（特許文献１を参照。）。このように、光ディスクの記録履歴に関しては、光ディスクに記録されたファイルの情報や、トラックの情報等は、光ディスクのリードインゾーンに書き込まれる。
【０００５】
後で、光ディスクの再生機器で、このリードインゾーンに書き込まれた情報を読み取って、再生や、再度書き込みのときに利用している。光学メディアへの書き込みは、通常は、電子計算機上で動作しているライティングソフトウェアを利用して行われる。具体的には、ライティングソフトウェアは、光学式ドライブへ書き込みしようとするデータを受け取り又は選択して、それらのデータから記録可能なイメージファイルを作成して、光学式ドライブは、このイメージファイルを、光学メディアへ最終的に書き込む。
【０００６】
ライティングソフトウェアは、アーカイブされたＩＳＯ形式等の特定の形式で、光学メディアへ書き込むためのファイルを作成し、これを、光学式ドライブへ転送している。従来のライティングソフトウェアが、読み込んだファイル名から、光学メディアへ書くファイルを推測して、書き込みログ機能を実現している。ＤＶＤやＣＤ等の光学メディアにデータを書き込む方式としては、パケットライト方式とマスターライティング方式がある。
【０００７】
パケットライト方式は、データをパケットに分割してリムーバブルメディアに書き込んでいくので、ファイル単位で記録・消去することが出来る。そのため、CD-RやCD-RW、DVD-R、DVD-RW、DVD+R、DVD+RW等をDVD-RAM、HDD、FD、USBメモリ、BD-R、BD-REの様に扱えることができるという利点がある。基本的に、パケットライト方式に対応したライティングソフトウェアで書き込みを行うが、最近のオペレーティングシステムは、UDF方式によるパケットライトを標準機能として装備していることがある。
【０００８】
例えば、Windows Vista（登録商標）の「ライブファイルシステム」、Mac OS X Leopard（登録商標）やLinux 2.6.x（登録商標）もそれぞれ対応している。この形式は、データをメディアに、何回でも追記できるため、頻繁に更新するようなファイルを書き込む場合に適している。マスターライティング方式は、書き込む全てのファイルを一度に書き込む必要があり、書き込み後に個々のファイルを削除することはできない方式である。
【０００９】
このマスターライティング方式は、ライブファイルシステムの形式よりも速く書き込むことができるので、ファイルの数が多い、又は、データの容量が大きい場合に適している。また、互換性が高いため、作成したメディアを、別の電子計算機、ＣＤプレーヤー、ＤＶＤプレーヤー等の他の機器でも再生し、読み取ることができる利点がある。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１１−１５９３５４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかながら、上述のライティングソフトウェアによる推測書き込み方式では、ライティングソフトウェアがライティングのために読み込んだファイル名から、光学メディアへ書くファイルを推測して、書き込みログ機能を実現している。この方式では、ライティングソフトウェアが自らの処理実行のために読み込んだファイル、及び利用者が書き込み操作を中断して実際に書かなかったファイルを、推測で除去するため正確性に欠ける。
【００１２】
一方では、フラッシュメモリやハードディスクドライブ等の外部記憶媒体の場合は、電子データをファイル単位で書き込むため、この書き込み作業を、オペレーティングシステムのファイルシステム層で監視することにより、個々のファイル操作を記録できる。これに対して、ライティングソフトウェアによる光学メディアへの書き込みは、ＩＳＯ形式の記録用のイメージデータを作成しているので、オペレーティングシステムのファイルシステムを通過せず、かつ、複数のファイルやフォルダをアーカイブ形式にて書き込むため、同一の手法では記録できない。
【００１３】
上述のパケットライト方式による光学メディアへの記録は、ファイルシステムを通して行われるので、ファイルシステムからその記録に関する記録履歴は取得することが可能である。しかし、マスターライティング方式の場合は、ファイルシステム、特に、ファイルシステムドライバを利用しないので、その記録履歴の取得が難しく、正確な記録履歴を取得できないことがほとんどである。
【００１４】
更に、光学メディアへの記録履歴は、基本的に、ライティングソフトウェアの動作に依存している。ライティングソフトウェアが提供できない、又は、開示していない情報に関しては、その取得が難しく、従って、サポートできなくなる。Windows（登録商標）標準のライティングでも、書き込み準備ができたファイルについての情報しか取得できないのが現状である。このように、ライティングソフトウェアに依存せず、実際に、光学メディアに書き込まれたファイル名を始めファイルやディレクトリの属性情報を取得する要求がある。
【００１５】
本発明は上述のような技術背景のもとになされたものであり、下記の目的を達成する。
本発明の目的は、電子計算機から電子データを記録媒体へ書き込みするとき、その電子データの書き込み履歴を取得するための記録媒体の記録履歴の取得方法、そのためのプログラム及び、プログラムの記録媒体を提供することにある。
【００１６】
本発明の他の目的は、電子計算機から電子データを記録媒体へ書き込みするとき、ライティングソフトウェアに依存せず、電子データの書き込み履歴を取得するための記録媒体へのファイル書き込み履歴の取得のための記録媒体の記録履歴の取得方法、そのためのプログラム及び、プログラムの記録媒体を提供することにある。
【００１７】
本発明の更に他の目的は、リムーバブルメディアへ書き込みするとき、書き込み履歴を、ライティングソフトウェアに依存せずに、取得するための記録媒体の記録履歴の取得方法、そのためのプログラム及び、プログラムの記録媒体を提供することにある。
【課題を解決するための手段】
【００１８】
本発明は、前記目的を達成するため、次の手段を採る。
本発明の記録媒体の記録履歴の取得方法は、
オペレーティングシステムによって操作されて動作する電子計算機に接続又は内蔵されたもので、記録媒体に電子データを記録、及び、前記記録媒体から前記電子データを読み込みするためのメディアドライブから、前記記録の履歴を取得するための記録媒体の記録履歴の取得方法において、
前記電子計算機上で動作するライティングソフトウェアで作成された書き込みデータを、前記メディアドライブによって前記記録媒体に記録した後で、
前記ライティングソフトウェアは前記メディアドライブから前記記録媒体を排出するための命令であるメディア排出要求を、前記メディアドライブへ送信し、
前記メディア排出要求を、前記オペレーティングシステムの入出力管理部から前記メディアドライブへ送信される間に、一時停止させ、
前記記録媒体に記録された電子データの属性データを読み込み、分析することで、前記記録媒体の記録履歴を取得し、
前記記録履歴の取得後、前記メディア排出要求を、前記メディアドライブへ送信する
ことを特徴とする。
【００１９】
前記電子計算機は、
前記オペレーティングシステムの全ての命令が実行できるカーネルモードで動作し、前記電子計算機に接続されているデバイスを直接制御するためのデバイスドライバ同士の通信、又は前記デバイスドライバと前記電子計算機上で動作するアプリケーションプログラムとの通信に共通のインターフェースを提供するための手段で、かつ、１）前記アプリケーションプログラムから出力される命令及び／又はデータを含む第１データを受信し、前記命令の実行結果及び／又は前記デバイスドライバから受信した受信データを含む第２データを、前記アプリケーションプログラムに送信するためのアプリケーションプログラムインターフェース部と、２）前記デバイスドライバへ、前記命令及び／又は前記データを含む第３データを送信し、前記デバイスドライバから前記命令の実行結果及び／又は前記受信データを含む第４データを受信するためのデバイスドライバ制御部と、３）前記第１データ又は前記第４データを処理し、前記第２データ又は前記第３データを生成して、前記第１〜４データの制御を行うための制御部とからなるドライバウェア手段を内蔵し、
前記メディア排出要求を、前記ドライバウェア手段によって取得し、
前記ドライバウェア手段は、前記メディア排出要求を、前記メディアドライブへ送信する前に、前記記録履歴を取得し、
前記記録履歴の取得後、前記ドライバウェア手段は、前記メディア排出要求を、前記メディアドライブへ送信すると良い。
【００２０】
また、前記メディア排出要求が前記オペレーティングシステムの出力インターフェースから、前記メディアドライブを制御するためのメディアドライブ用デバイスドライバへ送信されるとき、前記ドライバウェア手段が前記メディア排出要求を、前記カーネルモードで取得すると良い。
更に、前記ドライバウェア手段は、前記メディア排出要求を前記メディアドライブへ送信する前に、前記ライティングソフトウェアへ、前記メディア排出要求の実行が成功したことを示す成功通知を、送信すると良い。
【００２１】
本発明の記録媒体の記録履歴取得プログラムは、
オペレーティングシステムによって操作されて動作する電子計算機に接続又は内蔵されたもので、記録媒体に電子データを記録、及び、前記記録媒体から前記電子データを読み込みするためのメディアドライブから、前記記録の履歴を取得するための記録媒体の記録履歴取得プログラムにおいて、
前記電子計算機上で動作するライティングソフトウェアで作成された書き込みデータを、前記メディアドライブによって前記記録媒体に記録した後で、前記ライティングソフトウェアによって発行されて前記メディアドライブへ送信された命令で、前記メディアドライブから前記記録媒体を排出するための命令であるメディア排出要求を、前記オペレーティングシステムの入出力管理部から受信する受信ステップ、
前記メディア排出要求を、前記メディアドライブへ送信せず、一時停止させるステップ、
前記メディアドライブに対して、前記記録媒体に記録された電子データの属性データを読み込みするための読み込み要求を発行するステップ、
前記読み込み要求を前記メディアドライブの前記メディアドライブ用デバイスドライバへ送信するステップ、
前記読み込み要求の実行結果で、前記メディアドライブから受信した前記記録媒体に記録されたファイル又はディレクトリに関する記録データを、前記メディアドライブ用デバイスドライバから受信して前記記録履歴を取得するステップ、及び、
前記記録履歴の取得後、前記メディア排出要求を、前記メディアドライブ用デバイスドライブへ送信するステップを
前記電子計算機に実行させることを特徴とする。
【００２２】
前記記録履歴取得プログラムは、
前記オペレーティングシステムの全ての命令が実行できるカーネルモードで動作し、前記電子計算機に接続されているデバイスを直接制御するためのデバイスドライバ同士の通信、又は前記デバイスドライバと前記電子計算機上で動作するアプリケーションプログラムとの通信に共通のインターフェースを提供するためのプログラムで、かつ、１）前記アプリケーションプログラムから出力される命令及び／又はデータを含む第１データを受信し、前記命令の実行結果及び／又は前記デバイスドライバから受信した受信データを含む第２データを、前記アプリケーションプログラムに送信するためのアプリケーションプログラムインターフェース部と、２）前記デバイスドライバへ、前記命令及び／又は前記データを含む第３データを送信し、前記デバイスドライバから前記命令の実行結果及び／又は前記受信データを含む第４データを受信するためのデバイスドライバ制御部と、３）前記第１データ又は前記第４データを処理し、前記第２データ又は前記第３データを生成して、前記第１〜４データの制御を行うための制御部とを前記電子計算機に実現させるためのドライバウェアプログラムを有し、
前記ドライバウェアプログラムは、
前記メディア排出要求を、前記アプリケーションプログラムインターフェース部によって、前記オペレーティングシステムの入出力管理部から取得するステップと、
前記前記メディア排出要求を、一時停止させるステップと、
前記メディアドライブ用デバイスドライバへ、前記読み込み要求、前記デバイスドライバ制御部によって送信するステップと、
前記記録データを、前記メディアドライブ用デバイスドライバから、前記デバイスドライバ制御部によって受信するステップと、
前記記録データを、前記制御部によって、分析処理して、前記記録履歴を出力するステップと、
前記メディアドライブ用デバイスドライバへ、前記メディア排出要求を、前記デバイスドライバ制御部によって送信するステップと、
を前記電子計算機に実現させると良い。
【００２３】
また、前記ドライバウェアプログラムは、前記メディア排出要求を前記メディアドライブへ送信する前に、前記ライティングソフトウェアへ、前記メディア排出要求の実行が成功したことを示す成功通知を、前記アプリケーションプログラムインターフェース部によって、送信するステップを前記電子計算機に実現させると良い。
本発明の記録媒体の記録履歴取得プログラムの記録媒体は、上述の記録媒体の記録履歴取得プログラムを記録したことを特徴とする。
【発明の効果】
【００２４】
本発明によると、次の効果が奏される。
本発明によると、電子計算機から電子データをリムーバブルメディアへ書き込みするとき、メディアドライブのデバイスドライバを操作することで、その電子データの書き込み履歴を取得するためのリムーバブルメディアへのファイル書き込み履歴が取得できるようになった。
【００２５】
また、本発明によると、ドライバウェア手段を利用し、メディアドライブ用デバイスドライバへ送信されるデータを制御することで、ライティングソフトウェアに依存せず、リムーバブルメディアの記録履歴を取得できるようになった。
【図面の簡単な説明】
【００２６】
【図１】図１は、本発明の第１の実施の形態の概要を図示している。
【図２】図２は、本発明の第１の実施の形態の電子計算機１がリムーバブルメディア３の記録履歴を取得する一連の動作を示すフローチャートである。
【図３】図３は、発明の第１の実施の形態のライティングソフトウェア４、メディアドライブ用デバイスドライバ６、ドライバウェア７、メディアドライブ２の動作関係を時間経過で図示した図である。
【図４】図４は、電子計算機１上で動作するソフトウェアの概要を図示しているブロック図である。
【図５】図５は、リムーバブルメディア３に記録されるデータ構造を示す概念図である。
【図６】図６は、ISO9660形式で作成された、シングルセッションのリムーバブルメディア３の構造を示す概念図である。
【図７】図７は、ISO9660形式で作成された、マルチセッションのリムーバブルメディア３の構造を示す概念図である。
【図８】図８は、ISO9660又はJoliet形式で作成されたリムーバブルメディア３の記録履歴を取得する流れを示すフローチャートである。
【図９】図９は、ＵＤＦ形式で作成されたリムーバブルメディア３の記録履歴を取得する流れを示すフローチャートである。
【図１０】図１０は、Blu-ray ディスクのリムーバブルメディア３の記録履歴を取得する流れの詳細な手順を示すフローチャートである。
【図１１】図１１は、Blu-rayディスクの基本構成を図示した図である。
【図１２】図１２は、Blu-rayディスクのメタデータ情報を求める手順を図示した図である。
【図１３】図１３は、メタデータ方から、ルートディレクトリを求める手順を図示した図である。
【発明を実施するための形態】
【００２７】
〔第１の実施の形態〕
本発明の第１の実施の形態の概要を説明する。図１に図示したように、本発明の第１の実施の形態の電子計算機１は、メディアドライブ２のリムーバブルメディア３に、電子データを書き込みするとき、その履歴を取得するものである。具体的には、本発明の第１の実施の形態の電子計算機１は、電子計算機１上で動作するアプリケーションプログラムであるライティングソフトウェア４がリムーバブルメディア３に電子データを記録するとき、その記録履歴を取得するものである。
【００２８】
ライティングソフトウェア４は、リムーバブルメディア３に電子データを記録するために記録用のイメージファイルを作成する。ライティングソフトウェア４は、例えば、電子計算機１のハードディスクドライブ８等に格納されている電子データを書き込みデータとして読み取り、これを利用してイメージファイルを作成する。作成されたイメージファイルは、メディアドライブ用デバイスドライバ６を介して、メディアドライブ２に送信され、リムーバブルメディア３に記録される。
【００２９】
この記録が終わると、ライティングソフトウェア４は、メディアドライブ２からリムーバブルメディア３を排出するための命令であるメディア排出要求を、メディアドライブ２へ送信する。ライティングソフトウェア４は、ハードディスクドライブ８と行う命令やデータの送受信等のアクセスは、オペレーティングシステム５のファイルシステムドライバ９を介して行われる。ライティングソフトウェア４は、メディアドライブ２へデータや命令等を送信し、その命令の実行結果の報告を受けるときは、メディアドライブ用デバイスドライバ６を介して行われる。
【００３０】
電子計算機１は、オペレーティングシステム５とデバイスドライバ層の間に位置するドライバウェア７を備えている。ドライバウェア７の詳細な構成、その機能についての説明は後述する。ドライバウェア７は、このメディア排出要求を受信して、リムーバブルメディア３に格納されているファイルやディレクトリ等の履歴データを読み取ることで記録履歴を取得する。ドライバウェア７は、メディアドライブ用デバイスドライバ６を制御することで、この記録履歴を取得する。
【００３１】
リムーバブルメディア３の記録履歴とは、リムーバブルメディア３に記録されたファイル、ディレクトリに関する情報で、ファイル名、ファイルサイズ、ファイル属性、ファイルの作成、更新の日時等のデータである。ここで、ファイル名は、ファイルの名前だけではなくディレクトリも含めたフルパスを含む。ファイル属性は、可視ファイルや隠しファイルを示す属性データも含む。記録履歴は、ドライバウェア７によって取得された後、適当な履歴情報として適当な装置へ出力されるか、適当な補助記憶装置に記録される。
【００３２】
リムーバブルメディア３に書き込み又は記録されるための書き込みデータとしては、動画、静止画、写真、音声等のマルチメディアデータ、文書等のテキストデータ、プログラムコード、各種のアプリケーションプログラムやプログラム等によって作成された又はそれら用に用意された任意の形式の電子データである。このように、書き込みデータは、そのデータ量、種類は制限しない。書き込みデータそのものは、本発明の趣旨ではないので詳細な説明は省略する。
【００３３】
リムーバブルメディア３は、補助記憶装置の一種であり、記録媒体である。リムーバブルメディア３は、その名の通り、それ用の再生装置又は記録装置から容易に取り外すことができるものである。リムーバブルメディア３としては、フロッピーディスク（登録商標）、光磁気ディスク、コンパクトディスク（以下、ＣＤと言う。）、ＤＶＤ（Digital Versatile Disc）、フラッシュメモリ等が例示できる。本発明の本第１の実施の形態では、ＣＤ又はＤＶＤ等の光学メディアを例に説明をする。
【００３４】
光学メディアの規格としては、再生専用型のＣＤ（−ＤＡ）、ＣＤ−ＲＯＭ、ＤＶＤ−ｖｉｄｅｏ、ＤＶＤ−ＲＯＭ、ＢＤ−ＲＯＭ、追記型のＣＤ−Ｒ、ＤＶＤ−Ｒ、ＤＶＤ＋Ｒ、ＢＤ−Ｒ、書き換え型のＣＤ−ＲＷ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、ＤＶＤ−ＲＡＭ、ＢＤ−ＲＥ等を始め数多くの規格がある。本第１の実施の形態においては、特段に指定して記述しない限り、書き込みができるＣＤ又はＤＶＤを対象にする。
【００３５】
〔記録履歴の取得の流れ〕
本実施の形態においては、マスターライティング方式を例に説明する。図２には、電子計算機１は、リムーバブルメディア３に電子データを記録するとき、その記録の履歴を取得する一連の動作を示すフローチャートを示している。図３には、ライティングソフトウウェア４、メディアドライブ用デバイスドライバ６、ドライバウェア７、メディアドライブ２の動作関係を時間経過で図示した図である。
【００３６】
以下、記録履歴を取得する一連の動作を、図１、図２及び図３を参照しながら説明する。図３に図示した矢印は、経過時間を示すものである。まず、電子計算機１上で動作するライティングソフトウェア４は、リムーバブルメディア３に記録するための書き込みデータを選択する（ステップ１）。又は、書き込みデータは、他のアプリケーションプログラムからライティングソフトウェア４に渡される。ライティングソフトウェア４は、選択された書き込みデータを用いて、リムーバブルメディア３に記録するために記録用のイメージファイルを作成する（ステップ２）。
【００３７】
イメージファイルは、ＣＤ等のリムーバブルメディア３にデータ記録するときに利用されるもので、電子計算機１のメモリ上にＣＤの内容が仮想的に作成された電子データである。つまり、イメージファイルの作成は、電子計算機１のメモリ上に、リムーバブルメディア３に相当する領域を仮想的に作って、リムーバブルメディア３に書き込まれる実際のデータを作成する。そして、イメージファイルの作成が完成すると、ライティングソフトウェア４は、このイメージファイルと、このファイルをリムーバブルメディア３への書き込みすることを指示した書き込み要求を、メディアドライブ２へ送る（ステップ３）。
【００３８】
このイメージファイルは、通常は、電子計算機１のハードディスクドライブ８へ一時的に格納される。ライティングソフトウェア４は、オペレーティングシステム５の入出力機能とファイルシステム、ハードディスクドライブ８を直接制御しているデバイスドライバであるファイルシステムドライバ９等を介して、イメージファイルをハードディスクドライブ８に書き込みする。ライティングソフトウェア４は、ハードディスクドライブ８からのデータの読み込むときも、オペレーティングシステム５の入出力機能、ファイルシステムドライバ９等を介して行う。
【００３９】
ライティングソフトウェア４から送信されたこのイメージファイルと書き込み要求は、オペレーティングシステム５の標準の入出力機能を介して、メディアドライブ用デバイスドライバ６へ送信される（ステップ４）。ドライバウェア７は、オペレーティングシステム５とデバイスドライバ層の間に位置し、オペレーティングシステム５から、メディアドライブ用デバイスドライバ６等のデバイスドライバへ送信されるデータを監視し、それらを制御することができるものである。
【００４０】
しかし、本実施の形態においては、ライティングソフトウェア４から送信されたこのイメージファイルと書き込み要求に関しては、監視のみを行い、ドライバウェア７は、基本的に介入しない設定に成っている。ドライバウェア７はこの監視で特定条件に、メディアドライブ用デバイスドライバ６へ送信されるデータ、メディアドライブ用デバイスドライバ６から受信されるデータの制御を行う。メディアドライブ用デバイスドライバ６は、送信されてきたイメージファイルと書き込み要求を受信して、書き込み要求に指定された通り、イメージファイルをリムーバブルメディア３に記録する。
【００４１】
実際は、メディアドライブ用デバイスドライバ６は、イメージファイルを指定されたセッション又はトラック又は所定のデータ量ごとに分けて、メディアドライブ２に送信し、それを制御して、メディアドライブ２に挿入されているリムーバブルメディア３に記録させる（ステップ５）。メディアドライブ用デバイスドライバ６は、イメージファイルをリムーバブルメディア３に記録させて、完了すると、書き込みが完了したことを示す書き込み完了通知を、ライティングソフトウェア４へ送信する。
【００４２】
書き込み完了通知は、オペレーティングシステム５の標準入出力機能を通して、ライティングソフトウェア４へ渡される（ステップ７）。ライティングソフトウェア４は、この書き込み完了通知を受け取ると、リムーバブルメディア３に追加して書き込むデータがあるか否かを確認して、あれば、また同じく、書き込みデータの選択、イメージファイルの作成から上述の一連動作が繰り返される（ステップ１〜ステップ６）。
【００４３】
リムーバブルメディア３に追加して書き込むデータが無ければ、ライティングソフトウェア４は、リムーバブルメディア３を、メディアドライブ２から取り出すための命令であるメディア排出要求を発する（ステップ７）。この取り出すことは、別の言い方をすると、リムーバブルメディア３を、メディアドライブ２から排出又はイジェクトすると言う。このメディア排出要求は、メディアドライブ２からリムーバブルメディア３を排出させるためのものである。
【００４４】
このメディア排出要求でリムーバブルメディア３をメディアドライブ２から取り出すことで、リムーバブルメディア３にデータを記録する一連の動作が終了したことを、電子計算機１の利用者に通知することと、リムーバブルメディア３をそれに対応するファイルシステムでマウントさせるためである。このマウントさせることは、メディアドライブ２から取り出されたリムーバブルメディア３をメディアドライブ２に、再度、入れて設置し、又は、挿入して、電子計算機１のオペレーティングシステム５やそのファイルシステムに認識させ、メディアドライブ２を利用可能にすることである。
【００４５】
このメディア排出要求は、ライティングソフトウェア４から送信され、同じように、オペレーティングシステム５の入出力機能を介して、メディアドライブ用デバイスドライバ６へ送信される。オペレーティングシステム５とメディアドライブ用デバイスドライバ６の間にドライバウェア７が介在しており、ドライバウェア７は、オペレーティングシステム５からメディアドライブ用デバイスドライバ６へ送信される命令やデータを監視している。
【００４６】
そのため、このメディア排出要求があるとドライバウェア７がこれを受信し、オペレーティングシステム５とメディアドライブ用デバイスドライバ６の間のデータ通信に介入する（ステップ８）。そして、ドライバウェア７がこのメディア排出要求を分析して、その発行元、送信先、命令の特徴等を把握する。ドライバウェア７は、メディア排出要求を一時停止させる。又は、ドライバウェア７は、メディア排出要求を別の命令やデータで書き換えて、メディアドライブ用デバイスドライバ６へ送信する。
【００４７】
そして、ドライバウェア７は、メディア排出要求の発行元に対して、メディア排出要求が実行されて成功したことを示す通知である成功通知を発行して、送信する（ステップ９）。この成功通知は、オペレーティングシステム５の入出力機能を介して、ライティングソフトウェア４へ送信される。ライティングソフトウェア４は、この成功通知を受け取り、リムーバブルメディア３への書き込み作業が完成したことになり、一連の動作を終了させる。しかし、ドライバウェア７は、上述のメディア排出要求を受信すると、すぐには、これをメディアドライブ用デバイスドライバ６に送信しない。
【００４８】
ドライバウェア７は、これを一時停止し、上述の成功通知をライティングソフトウェア４へ発行する。そして、ドライバウェア７は、メディアドライブ用デバイスドライバ６に対して、リムーバブルメディア３に記録されているファイルやディレクトリに関するデータを読み取るように読み取り要求を発行する。メディアドライブ用デバイスドライバ６は、この読み取り要求を受信すると、それに指定されたデータをリムーバブルメディア３から読み取って、読み取りデータとしてドライバウェア７へ送信する。
【００４９】
ドライバウェア７は、リムーバブルメディア３から読み取った内容を示す読み取りデータを受信して、これを分析して、リムーバブルメディア３に記録された電子データの記録履歴を把握する（ステップ１０）。つまり、ドライバウェア７は、リムーバブルメディア３に書き込みされた電子データの記録履歴を取得する。そして、記録履歴の取得が完了すると、ドライバウェア７は、一時停止していたメディア排出要求を、メディアドライブ用デバイスドライバ６に送信する（ステップ１２）。
【００５０】
前に、ドライバウェア７がライティングソフトウェア４からメディア排出要求を受信したとき、これを書き換えた場合、ドライバウェア７は、新規にメディア排出要求を発行してメディアドライブ用デバイスドライバ６に送信する（ステップ１２）。このように、ドライバウェア７は、リム―バブルメディア３に書き込まれた電子データを読み込み、その記録されたファイルやディレクトリに関する情報を取得し記録し、それが完了したところで、メディアドライブ２へメディア排出要求を送出するものである。
【００５１】
メディアドライブ用デバイスドライバ６は、メディア排出要求に従って、メディアドライブ２を制御して、リムーバブルメディア３をメディアドライブ２から取り出し又は排出させる（ステップ１３）。メディアドライブ２は、その実行結果を、完了通知としてメディアドライブ用デバイスドライバ６へ送信して報告し、メディアドライブ用デバイスドライバ６は、更に、ドライバウェア７へ送信する。ドライバウェア７は、この完了通知を受け取り、記録履歴を取得する一連の動作が終了する。
【００５２】
ドライバウェア７は、取得した記録履歴を、予め指定された手順に従って処理する。例えば、記録履歴を、電子計算機１のハードディスクドライブ８等の補助記憶装置に記録、又は、ネットワーク上の所定の記録装置や通信先等に送信する。無論、ドライバウェア７は、記録履歴を、電子計算機１の主記憶装置等に一時的に保存して、他のアプリケーションプログラムに渡すこともできる。更に、別のリムーバブルメディア３に保存することもできる。
【００５３】
更に、記録履歴は、電子計算機１内又はネットワーク上の所定のデータベース等に保存され、電子データの利用の分析、電子データの管理に役立つ。情報漏洩防止の面からみても、電子データの漏洩が確認されれば、その保存された記録履歴を分析し、リムーバブルメディア３の追跡や漏洩元等を分析して特定することができる。このように、記録履歴の利用は、様々であり、その利用方法は、本発明の趣旨ではないので、これ以上の詳細な説明を省略する。
【００５４】
本発明を実施する上で必要な知識で、電子計算機１とその上に動作するソフトウェアの構成、ドライバウェア７の構成と動作の概要、リムーバブルメディア３への記録規格の例、そして、記録履歴を実現する詳細なやり方、取り扱う命令の例について、以下に、簡単に説明する。
【００５５】
〔電子計算機１のハードウェア構成〕
本実施の形態においては、電子計算機１は、入力装置、出力装置、中央処理装置、主記憶装置、補助記憶装置等を備えた汎用の電子計算機である。図４の例では、電子計算機１は、電子計算機本体４０、キーボード１０やマウス１１等の入力装置、ハードディスクドライブ８等の補助記憶装置を備えている。ディスプレイ（図示せず。）等の出力装置やその他の必需構成部は図示していない。
【００５６】
また、電子計算機１は、メディアドライブ２を備えている。ここで、本発明に係るメディアドライブ２については、電子計算機１に付属し、電子計算機本体４０に接続されたものと説明しているが、電子計算機本体４０に内蔵されたもので、電子計算機１に付属せず外付けの物でも良い。いずれにしても、メディアドライブ２は、電子計算機本体４０に備えられたコネクタ２ａ等に接続されて動作するものであり、その使い方や，ライティングソフトウェア４からみると基本的に同じ働きをする。
【００５７】
電子計算機本体４０にハードディスクドライブ８が内蔵されている。更に、電子計算機１は、ネットワーク１６へ接続するためにネットワークカード１４、フラッシュメモリ１７等の補助記憶装置を接続するためのＵＳＢポート１５等を備えている。その他に、電子計算機１は周辺装置を有することができる。本発明は、電子計算機１の構成そのものではないので、必要な機能や説明については以下に説明の中に記述し、その他の詳細の説明は省略する。
【００５８】
〔電子計算機１のソフトウェア構成〕
図４には、電子計算機１上で動作するソフトウェアの概要を図示している。ここで、電子計算機１上で動作するオペレーティングシステム５、及び、ドライバウェア７の概要を説明する。本実施の形態においては、オペレーティングシステム５は、Microsoft社のWindows（登録商標）である。しかし、これは、オペレーティングシステム５を制限するものではなく、同様な機能を実現できれば、オペレーティングシステムの種類は問わない。
【００５９】
アプリケーションプログラム４１がオペレーティングシステム５の上で動作する。電子計算機１は、メディアドライブ２を接続するためのメディアドライブ用コネクタ２ａを有する。メディアドライブ用コネクタ２ａは、ＲＳ―２３２Ｃ、ＩｒＤＡ、ＵＳＢ、ＩＥＥＥ１３９４等のシリアルポート、ＩＥＥＥ１２８４、ＳＣＳＩ、ＩＤＥ等のパラレルポートであることが好ましい。ドライバウェア７は、オペレーティングシステム５のカーネルモード４４で動作するプログラムである。
【００６０】
電子計算機１は、オペレーティングシステム５によって制御されて動作する。電子計算機１上で動作するアプリケーションプログラム４１は、オペレーティングシステム５が提供する機能を利用して、入出力装置からの入出力を行い、必要な処理をする。アプリケーションプログラム４１は、オペレーティングシステム５のカーネルモード４４又はユーザモード４３に動作する実行可能なファイル又はソフトウェアである。例えば、アプリケーションプログラム４１は、ライティングソフトウェア４、ワードプロセッシングソフトウェア、テキストエディタ等の文書を作成、編集するためのソフトウェアであると良い。
【００６１】
更には、pdf形式のファイル等のような特定の形式のファイルを閲覧、作成、編集するためのソフトウェアであると良い。オペレーティングシステム５は、キーボード１０からの入力、マウス１１からの入力や画面出力等のような入出力装置からの入出力機能、外部記憶装置やメモリの管理等の基本的な機能を提供し、電子計算機１全体を動作させ、管理するためのソフトウェアである。オペレーティングシステム５は、基本ソフトウェアとも言われる。
【００６２】
オペレーティングシステム５は、その提供する機能を実現するために多数の実行可能なプログラムから構成されるものである。オペレーティングシステム５、特に本発明の実施の形態に用いているWindows系のオペレーティングシステムについては、多数の書籍があり、その一部から紹介する。本発明を再現するためには、これらの書籍に記述されている技術知識、特に、デバイスドライバ開発に関する知識が必要である。
【００６３】
Windows系のオペレーティングシステムの内部構成、その動作についての書籍一覧：
−  Inside Windows NT by Helen Custer (Microsoft Press, 1992)
−  Inside the Windows NT File System by Helen Custer (Microsoft Press, 1994)
−  Inside Microsoft Windows 2000, Third Edition by David A. Solomon, Mark E. Russinovich (Microsoft Press, 2000)。
デバイスドライバの基礎知識からその開発に関する知識ついての書籍一覧：
−  Programming the Microsoft Windows Driver Model by Walter Oney (Microsoft Press, 1999)
−  Programming the Microsoft Windows Driver Model, Second Edition by Walter Oney (Microsoft Press, 2002)。
デバイスドライバの基礎知識からその開発に関する知識ついての書籍一覧：
−  Developing Drivers with the Windows Driver Foundation、Penny Orwick/Guy Smith、(Microsoft Press)
【００６４】
ここで、オペレーティングシステム５の構成要素の内の代表的なものから記述する。オペレーティングシステム５は、サブシステム４５、エグゼキュティブ４６、カーネル４７、ハードウェア抽象化層（ＨＡＬ）４８等から構成される。各種のデバイスドライバは、オペレーティングシステム５に含める考え方がある。これは、オペレーティングシステム５に標準で付いているデバイスドライバがある場合に該当すると考えられる。多くの場合は、デバイスの製造メーカがそのデバイス専用にデバイスドライバを作って提供することが多い。
【００６５】
ここででは、デバイスドライバの例は、図４に図示した通り、メディアドライブ用デバイスドライバ６、ネットワークドライバ１４ａ、ファイルシステムドライバ９、キーボードドライバ１２ａ、マウスドライバ１３ａ等であり、本実施の形態では、これのデバイスドライバはデバイスドライバ層を構成しているとする。サブシステム４５は、オペレーティングシステム５のユーザモード４３で提供されるサービスである。カーネル４７は、エグゼキュティブ４６の内部で使用するルーチンセットと基本オブジェクトを提供する。
【００６６】
エグゼキュティブ４６は、メモリの管理、プロセスとスレッドの管理、セキュリティ、入出力（Ｉ／Ｏ）の管理、ネットワーク、及びプロセス間通信等のオペレーティングシステム５の基本的なサービスを提供するものである。カーネル４７は、スレッドスケジューリング、割り込み、例外通知、マルチプロセッサの同期等の低レベルの関数を提供する。デバイスドライバは、通常は、電子計算機１に接続された各々のハードウェア用に備えられ、ＨＡＬ４８を介して、そのハードウェアを直接制御するものである。
【００６７】
デバイスドライバは、アプリケーションプログラム４１やオペレーティングシステム５からの入出力機能の要求（Ｉ／Ｏ呼び出し要求）を特定のハードウェアのデバイスに対する入出力機能の要求（Ｉ／Ｏ要求）に変換するサービスと、ファイルシステムやネットワークドライバ等のシステムサービスを提供する。ＨＡＬ４８は、カーネル４７、デバイスドライバ、及びエグゼキュティブ４６をプラットフォーム固有のハードウェア機能から分離し抽象化するためのコード層である。
【００６８】
ＨＡＬ４８は、電子計算機１の内蔵デバイスや、電子計算機１に接続されている外部デバイス等のハードウェアの機種、種類による違いを吸収し、オペレーティングシステム５の各サービスに対して抽象化したサービスを提供する。オペレーティングシステム５を構成する各種のサービスは、ハードウェアの機種、種類による違いを意識することなくハードウェアにアクセスすることが可能になる。
【００６９】
〔ドライバウェア７〕
ドライバウェア７は、デバイスドライバ間のデータの送受信をカーネルモードで実現するためのものである。ドライバウェア７は、アプリケーションプログラム４１からデバイスドライバへアクセスするとき、また、デバイスドライバからアプリケーションプログラム４１へデータを送信するときに、共通のインターフェースを提供する。ドライバウェア７は、オペレーティングシステム５のカーネルモード４４で動作する。
【００７０】
ドライバウェア７は、デバイスドライバ間だけではなく、オペレーティングシステム５と複数のデバイスドライバとのデータの送受信を提供する機能を有する。ドライバウェア７の例としては、電子計算機のインターフェースドライバプログラムとしてＷＯ０２／０９１１９５号公（特開２００２−３２８８７８、発明の名称：「電子計算機のインターフェースドライバプログラム及びその記録媒体」）、ＷＯ２００３／０７３２８９号公報（発明の名称：「電子計算機のファイルシステムドライバの制御方法、そのプログラム及びプログラムの記録媒体」）等に開示されている周知の技術である。
【００７１】
ドライバウェア７は、アプリケーションプログラム４１からの命令やデータ等を受信し、アプリケーションプログラム４１へのデータを送信するためのアプリケーションプログラムインターフェース部５１を有する。ドライバウェア７は、ドライバウェア７の全体の動作を制御するための制御部５２を有する。また、ドライバウェア７の動作の履歴を取得するためのログ取得部５３も有する。更に、ドライバウェア７は、デバイスドライバを制御するためのデバイスドライバ制御部Ｃ１〜Ｃ４を有する。
【００７２】
ドライバウェア７は、通信するデータを暗号化するための暗号化部５４、暗号化されたデータを復号化するための復号化部５５を有する。制御部５２は、デバイスドライバ制御部Ｃ１〜Ｃ４、アプリケーションプログラムインターフェース部５１、ログ取得部５３、暗号化部５４、復号化部５５等のドライバウェア７の他の部を制御し、監視するためのもので、ドライバウェア７の中核部である。本実施の形態においては、デバイスドライバは、オペレーティングシステム５に付属するものと記述する。
【００７３】
メディアドライブ用デバイスドライバ６は、メディアドライブ用コネクタ２ａを通してメディアドライブ２を制御するためのデバイスドライバである。ネットワークドライバ１４ａは、ネットワークカード１４を制御するためのデバイスドライバである。ファイルシステムドライバ９は、ハードディスクドライブ８等の外部記憶装置に保存されているファイル、フォルダに関する情報を管理するもので、ハードディスクドライブ８に保存されているファイルやフォルダへのアクセスを提供するものである。
【００７４】
ファイルシステムドライバ９は、電子計算機１に接続されたＵＳＢ規格準拠の記憶装置、例えばフラッシュメモリ１７、へのアクセスも提供する。このアクセスは、オペレーティングシステム５のMass Storage Class用のドライバ（図示せず）を介して行われる。また、アプリケーションプログラム４１は、カーネルモード４４で動作するオペレーティングシステム５の一部のプログラムをも意味する。
【００７５】
ドライバウェア７は、アプリケーションプログラム４１からデバイスドライバへアクセスするとき、また、デバイスドライバからアプリケーションプログラム４１へデータを送信するときに、共通のインターフェースを提供する。暗号化部５４は、通信するデータを暗号化するためのものである。復号化部５５は、暗号化されたデータを復号化するためのものである。また、ドライバウェア７は、メディアドライブ用デバイスドライバ６を制御するためのインターフェース制御部Ｃ１を有する。
【００７６】
ドライバウェア７は、ネットワークドライバ１４ａを制御するためのネットワーク制御部Ｃ２を有する。ドライバウェア７は、ファイルシステムドライバ９を制御するためのファイルシステム制御部Ｃ３を有する。制御部５２は、インターフェース制御部Ｃ１、ネットワーク制御部Ｃ２、ファイルシステム制御部Ｃ３等のドライバウェア７の他の部を制御し、監視するためのもので、ドライバウェア７の中核部である。
【００７７】
ドライバウェア７のインターフェース制御部Ｃ１、ネットワーク制御部Ｃ２、ファイルシステム制御部Ｃ３等は、電子計算機１のデバイスドライバを制御することで、最終的には、電子計算機１に接続又は内蔵されているデバイスを制御するものと理解することができる。つまり、電子計算機１に接続又は内蔵されているデバイスを制御するためには、既存のデバイスドライバを利用している。ドライバウェア７は、デバイスドライバがオペレーティングシステム５の他の構成部分との通信しているインターフェースをカーネルモードで制御している。
【００７８】
〔リムーバブルメディア３の構成、規格について〕
図５には、リム―バブルメディア３の概要を例示して図示している。リム―バブルメディア３は、基本的には、円形で、薄い厚さの板状のものであり、電子データは、その中心点を中心とする円又はスパイラル上のトラック３ａ上に書き込まれる。基本的に、リム―バブルメディア３には、その内側のトラックから外側のトラックに向かってデータを書き込みする。
【００７９】
リム―バブルメディア３に書き込まれた一連のデータは、セッションと呼ばれている。セッションは、データの書き込みと読み込みの最小単位となるセクターからなる。セクターは、複数のバイトをまとめたものである。リムーバブルメディア３にアクセスするときは、セクター単位で行われる。各セッションの先頭の位置からセクターごとに順番に番号付けている。用語としては、物理セクターと論理セクターがあるが、物理セクターは、リムーバブルメディア３内の物理的な区切りであり、ユーザデータ以外に同期信号やアドレス、巡回冗長検査（CRC：Cyclic Redundancy Check）等の検査、復号用データが含まれる。そして、物理アドレスで場所を指定する。
【００８０】
論理セクターは、ユーザデータが書き込まれる領域を指すもので、１つ物理セクター又は複数の物理セクターからなる。１つの物理セクターにユーザデータが入り切れない場合、ユーザデータが複数の物理セクターにまたがって記録され、論理セクターは、複数の物理セクターからなる。通常、メディアドライブ２とのやり取りは、この論理セクターを用いる。その理由は、メディアドライブ２内でデータの読み取りエラーの訂正処理等の基本的な処理をしてくれるためである。よって、本実施の形態においては、特段の指摘が無い限り、セクターというと論理セクターを意味する。
【００８１】
ISO9660の論理セクターの容量は、２０４８バイト数かそれの２のｎ乗である。１つのセッションは、記録開始を示すリードインゾーン、実際のデータが記録された領域であるデータゾーン、及び、記録終了を示すリードアウトゾーンから構成される。リードインゾーンは、システムエリアとも呼ばれ、最初の１６セクター分のデータである。リードインゾーンは、セッションの再生に必要なトラック数、各トラックの開始時間、各トラックの種類、等のＴＯＣ（Table Of Contents）情報を記録した領域である。
【００８２】
リードアウトゾーンは、セッションのデータが終了したことを示す情報を記録するもので、ほとんど無意味のデータが記録されることが多い。複数のセッションの場合は、図５に例示したように、最初のセッションのリードアウトゾーンの後ろに次のセッションのリードインゾーンが記録される。図５に図示したように、リムーバブルメディア３は、その一番内側のトラックから、第１セッションのリードインゾーン、第１セッションのデータゾーン、第１セッションのリードアウトゾーン、そして、第２セッションのリードインゾーンと続けて記録される。
【００８３】
リム―バブルメディア３には、電子データは、第１セッションから、最後のセッションである第ｎセッションに書き込まれる。リムーバブルメディア３は、光学メディアの場合は、トラック上に一回書き込みしたデータは、消すことができないため、再度書き込みすると、前回書き込みしたデータも含めて、新規のセッションとして書き込みする。よって、リムーバブルメディア３は、新規のファイルを追加しなくとも、書き込みを繰り返すと、メディアの残り容量がだんだん少なくっていく。
【００８４】
図６と図７は、セッションの内部構造例を図示している。具体的には、図６は、ISO9660形式で作成された、シングルセッションのリムーバブルメディア３の構造を示す概念図であり、図７は、ISO9660形式で作成された、マルチセッションのリムーバブルメディア３の構造を示す概念図である。図６の例では、全体として、１セッションからなっている。実際は、音楽を記録したＣＤ等は全体で、１セッションからなることが多い。データ記録型のＣＤやＤＶＤは、マルチセッションが多い。特に、追記型の場合は、マルチセッションになる。
【００８５】
電子データを追加して書き込みするリムーバブルメディア３の場合は、図７に図示したように、各セッションが連続して書き込まれ、互いに参照するようになっている。図５、図６、及び図７の例は、ISO9660形式のものであるが、リムーバブルメディア３の記録データの記録標準は、関係の業界団体や国際機関等に規定されており、規格の詳細については各団体の開示資料や他の資料を参照すると良い。ISO9660形式は、リムーバブルメディアの規格として国際的に広く普及している。
【００８６】
ISO9660は、ＣＤ−Ｒ、ＣＤ−ＲＷで使われることが多く、主に、ディスク形式で、「ボリューム記述子（Volume Descriptor、以下、ＶＤと言う。）」で管理されている。ＶＤには、ＰＶＤ（Primary Volume Descriptor＝基本ボリューム記述子）、ＳＶＤ（Supplementary Volume Descriptor＝副ボリューム記述子）、ＶＰＤ（Volume Partition Descriptor＝ボリューム区画記述子）等があり、それぞれに論理セクターの番号が決まっている。ISO9660は、ファイル名が６４バイト（３２文字）まで使用可能である。
【００８７】
このように、ISO9660には、ファイル名等に強い制限があるため、他のファイルシステムの情報をもれなく収容するためには、ISO 9660を拡張し、例えば、UNIX(POSIX)（登録商標）のファイルシステムの情報を収容するための仕様であるRock Ridge Extensions、Windows 95やWindows NTの長いファイル名を収容するための仕様であるRomeo Extensions、長いファイル名にUnicodeを使用する仕様であるJoliet Extensions（以下、Joliet形式という。）が制定されて利用されている。
【００８８】
Joliet形式は、１文字２バイトで表現するUnicodeを採用し、１２８バイト（６４文字）までのファイル名を使用できるように、ISO9660形式を拡張した形式である。Joliet形式のＰＶＤには、ボリュームの属性、ルートディレクトリの位置、パステーブルの位置等が記述されている。ISO9660形式の場合、図６に図示したように、データゾーンは、ＶＤ、パスデーブル、ディレクトリ、データからなる。ＶＤの先頭には、ＰＶＤが位置する。マルチセッションの場合は、データゾーンの構成は、図７に図示したように、同じである。
【００８９】
ＰＶＤは、シングルセッションディスクの場合は、リムーバブルメディア３の第１トラックのセクター番号１６にある。言い換えると、ＰＶＤは、リムーバブルメディア３の先頭から数えて論理セクターの１７番目にある。マルチセッションディスクの場合は、最新のＰＶＤは、最終セッションの先頭の位置から数えて１７番目の論理セクターにある。マルチセッションディスクの場合は、データを追記して書き込みするごとに、セッション単位で追加する。
【００９０】
このため、前に書き込まれたセッションを削除できない、上書きできないため、ディスクに関する最新の情報は、常に最終セッションに書き込まれる。最終セッションより前のセッションは、図７に図示した第１セッションのように、ＰＶＤとパステーブルがあるが、これは、第２セッションの情報を含めないため利用されない。マルチセッションディスクは、追加して書き込みを行う毎に、最新のＰＶＤを最終セッションに書き込んでいる。言い換えると、マルチセッションの場合は、ＰＶＤに関する最新のデータは、最終セッションに書き込まれるので、読み込みするときも最終セッションのデータを読み込む。
【００９１】
追記した書き込みを行うときは、最終セッションの先頭から、最新のＰＶＤとパステーブルを書き込みする。この最新のＰＶＤとパステーブルは、その前のセッションのＰＶＤとパステーブルを、最終セッションのデータで更新したものである。実際のデータに関しては、最終セクションに書き込まれたユーザデータは、追加して書き込みされて部分のみである。その前のセッションのデータは、そのまま利用される。しかし、最新のＰＶＤとパステーブルで、その位置を指定している。
【００９２】
言い換えると、追記前のユーザデータは、この最終セクションより前のセッションに記録されており、最終セクションのパステーブルからこれらの前のセッションを参照するようにしている。例えば、図７に示したように、第２セッションのＰＶＤは、第２セッションのパステーブルの位置をしてする。第２セッションのパステーブルには、第１セッションのデータ、第２セッションのデータの両方の位置情報が入っている。第２セッションを書き込みするとき、削除された第１セッションのファイルに関しては、それに関するディレクトリ情報や位置情報は、第２セッションのパステーブルに入れない。
【００９３】
これは、この削除された第１セッションのファイルは、リムーバブルディスクから削除されるものではなく、最新のパステーブルには入れないで、ただ読めないだけである。ＰＶＤは、ボリュームの属性、ルートディレクトリの位置、パステーブルの位置、パステーブルの大きさ、ボリュームの更新情報等が記述されるものである。パステーブル（Path Table）は、ボリューム中のディレクトリの情報があるレコードの先頭位置、ボリューム中の全てのディレクトリやファイルの名、その位置、親ディレクトリ等を並べたテーブルである。
【００９４】
パステーブルには、Ｌ形とＭ形がある。両者は基本的に同じものであるが、記録される数値のバイトオーダーが異なる。通常、リムーバブルメディア３には、両方のパステーブルが存在し、読み出すシステムが都合の良い方を使えるようになっている。通常は、Ｌ形のパステーブルを利用するので、パステーブルというとは、本実施の形態で特段に指定が無い限りＬ型パステーブルを指す。パステーブルの位置は、ボリューム記述子群の直後に置かれる。ディレクトリの位置は、パステーブルの直後に置かれる。
【００９５】
ディレクトリは、一般のファイルシステムと同様、ファイルやサブディレクトリに関する情報からなる。ディレクトリには、ファイル識別子/ディレクトリ識別子、ファイル/ディレクトリが記録された位置の先頭位置、ファイルフラグ、記録日時、その他等のデータが書き込まれる。ここで、ファイル識別子/ディレクトリ識別子は、ファイル名又はディレクトリ名である。ファイル識別子は、「ファイル名.ファイル拡張名;ファイル版数番号」いう形式です。
【００９６】
データ長は、データが書き込まれたデータ量、言い換えると、メディアに占めるバイト数である。ファイルフラグは、ファイル/ディレクトリの区別、隠し属性、関連ファイルの有無、パーミッションの有無等の各種属性データである。マルチセッションの例の図７では、第２セッション以後になると、基本的に第１セッションのデータを継承していく。第２セッションのパステーブルは、第１セッションのパステーブルを参照してこれを最新情報で更新して記録されたものである。
【００９７】
まず、リムーバブルメディア３からデータを読み込みするとき、まず、ＶＤのＰＶＤからパステーブルの場所を取得する。これは、Ｌ型パステーブルの先頭位置（ＬＢＮ）である。そして、このパステーブルの位置に移動して、パステーブルに書かれたディレクトリ／ファイルの識別子の内容から、ディレクトリやファイルのデータを取得する。ここでは、ディレクトリやファイルが記録されたセクターの先頭位置、その大きさ等のデータを取得する。この取得した位置に移動して、実際のファイルの記録位置からファイルを読み取る。
【００９８】
このように、リムーバブルメディア３からファイルを読み取るのである。ISO9660及びJoliet形式を策定している団体のホームページ等から、ISO9660及びJoliet形式のデータ構造を閲覧することができるが、本発明を理解する上で利便性を考え、以下の各表は、データ構造を示す。リムーバブルメディア３（ＣＤ）からログファイル情報を取得するために、必要なデータ構造は次の通りであり、特に関連性があるものは太字で強調している。
【００９９】
表１は、ISO9660及びJoliet形式のＰＶＤの構造の一部を示す表であり、この表の第１欄は、リムーバブルメディア３の論理セクターのアドレスを示している。ここでは、論理セクターは１乃至複数である。第２欄は、第１欄の論理セクターの大きさを、第３欄は、その論理セクターに書き込まれるデータの型を、第４欄はそのデータの名称を、第５欄はそのデータの内容、言い換えると取得できる値、を示している。ＰＶＤは基本的に２０４８セクターからなる。ここでは、本発発明に関係があるもののみを例示している。
【０１００】
例えば、ＰＶＤの論理セクターの１４０〜１４７番目に記載されたパステーブルの先頭位置は、パステーブルから情報を取得するために最重要な値である。
【０１０１】
【表１】
2014044789.tif 000003
【０１０２】
表２は、ISO9660及びJoliet形式のパステーブルの内容、通常ＰＴＲの構造を示す表であり、この表の第１欄は、この表の第１欄は、リムーバブルメディア３の論理セクターのアドレスを示している。ここでは、論理セクターは１乃至複数である。第２欄は、第１欄の論理セクターの大きさを、第３欄は、その論理セクターに書き込まれるデータの型を、第４欄はそのデータの名称を、第５欄はそのデータの内容、言い換えると取得できる値、を示している。
【０１０３】
ここで、ＰＴＲの論理セクターの２〜５番目に記載されたディレクトリの先頭位置は、ディレクトリ情報を取得するために最重要な値である。ＰＴＲの論理セクターの８番目以後は、ディレクトリ識別子が入っている。ＰＴＲは可変長ブロックで、レコード内の先頭の「LEN_DI＋8バイト」でブロック長が求まる。ＰＴＲの先頭は、ルートディレクトリを示し、このレコードから順に、終わりまで参照する。ＰＴＲの終わりは、ＰＶＤ内のオフセット１３２〜１３５パステーブルサイズから算出する。
【０１０４】
【表２】
2014044789.tif 000004
【０１０５】
表３は、ISO9660及びJoliet形式のディレクトリ（ＤＲ）の構造を示す表である。このディレクトリは、図６、７に図示したディレクトリに該当し、上述のパステーブルの２〜５番目の論理セクターに記録されたものである。この表の第１欄は、この表の第１欄は、リムーバブルメディア３の論理セクターのアドレスを示している。ここでは、論理セクターは１乃至複数である。第２欄は、第１欄の論理セクターの大きさを、第３欄は、その論理セクターに書き込まれるデータの型を、第４欄はそのデータの名称を、第５欄はそのデータの内容、言い換えると取得できる値、を示している。
【０１０６】
ここで、本発明にとっては、ＤＲの論理セクターの１０〜１３番目に記録されたディレクトリ又はファイル本体の大きさ、２５番目に記録されたファイルフラグ、３３番目以後に記録されたファイル/ディレクトリ識別子が重要である。
【０１０７】
【表３】
2014044789.tif 000005
【０１０８】
表４は、ISO9660及びJoliet形式のＦＦの構造を示す表である。この表のＦＦは、上述の表３のＤＲの２５番目の論理セクターに記録されたファイルフラグの内容である。この表の第１欄は、論理セクター番号を、第２欄はその名称を、第３欄はそのデータの内容、取得できる値を示している。ここでは、ＦＦの最初の２つの値である可視ファイルか不可視ファイルかを示す「Existence」と、ファイルかディレクトリかを示す「Directory」の値が重要である。
【０１０９】
【表４】
2014044789.tif 000006
【０１１０】
次に、リムーバブルメディア３の記録履歴を取得する流れの詳細な手順を、図８のフローチャートを参照しながら、説明する。まず、ドライバウェア７が記録履歴の取得を開始すると、表１に示した通り、最終セッションの論理セクターの１６番目より、ＰＶＤの内容を取得する（ステップ１００）。ＰＶＤの内部構造を表１に示している。そして、ドライバウェア７は、ＰＶＤの情報を分析し、ＰＶＤの情報から、パステーブルの先頭位置を取得する（ステップ１０１）。
【０１１１】
パステーブルの先頭位置は、ＰＶＤの１４０−１４３番目、１４４−１４７番目の論理セクターに記録されている（表１を参照。）。その後、この取得したパステーブルの先頭位置に移動し、パステーブルの情報を取得し始める。パステーブルの構造は表２に示している。パステーブルは、リムーバブルメディア３に記録されたディレクトリやファイルのパスを示すものである。ドライバウェア７は、パステーブルの２〜５番目の論理セクターに記録されたディレクトリの先頭位置を取得する（ステップ１０２）。
【０１１２】
このディレクトリの先頭位置は、ディレクトリやファイルの情報格納した、表３のＤＲの先頭位置である。そしてドライバウェア７は、このＤＲの中からディレクトリやファイルに関する情報を順番に取得して分析していく。まず、最初の取得時は、ＤＲの先頭位置から取得する。このディレクトリレコードの構造は、表３に示している。この取得したデータにファイル名があるかを確認し、なかったら、パステーブルの前回取得した位置の次の位置からデータを取得する（ステップ１０３）。
【０１１３】
これを、ファイル名が取得されるまで繰り返して行う（ステップ１０３、１０２）。そして、ディレクトリの先頭位置に移り、表３に示すように、その２５番目の論理セクターに記録されたファイルフラグを確認する（ステップ１０４）。ファイルフラグについては、表４に示している。そして、各ファイル名を取得し、そこから、ファイル名、ファイルサイズ、ファイル日時、属性の取得、ファイルサイズの取得を行う（ステップ１０５、１０６）。
【０１１４】
その後、ファイル/ディレクトリ識別子より階層毎のディレクトリ名を取得する（ステップ１０７）。ステップ１０５で、ディレクトリの場合は、ファイル/ディレクトリ識別子より階層毎のディレクトリ名を取得するステップへ遷移する（ステップ１０５→ステップ１０７）。このようにドライバウェア７は、リム―バブルメディア３に記録された、データのファイルとディレクトリに関する情報を取得する。これらの一連の動作は、図２のフローチャートでいうと、ステップ１０に該当する。
【０１１５】
〔ＵＤＦ（Universal Disk Format）形式〕
ＵＤＦは、主に、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＶＩＤＥＯで使われるディスク形式で、ISO 9660と同様にＶＤで管理されている。ＵＤＦ形式で書き込みしたＤＶＤメディアは、上述のISO9660及びJoliet形式とは異なり、ＰＶＤにパステーブルの情報が存在しない。その為、ボリューム構造識別から順に、ルートディレクトリのファイルエントリ位置を取得することで、ログファイル情報を取得する。
【０１１６】
ＵＤＦ形式の場合は、ＰＶＤが最終セッションの論理セクターの３２番目に書き込みされている。ＵＤＦ形式で、書き込みしたＤＶＤメディアからログファイル情報を取得するために、必要なデータ構造の一部を以下に示す。その他の情報については、ＵＤＦ形式を制定している団体の公表資料に詳しく記述されている。表５の第１欄は、論理セクターの番号を、第２欄はその大きさを、第３欄は取るデータの型を、第４欄は名称を、第５欄はデータの内容つまり値を示している。
【０１１７】
【表５】
2014044789.tif 000007
【０１１８】
表６には、ＵＤＦ形式の場合のＬＶＤの構造を示している。表６の第１欄は、論理セクターの番号を、第２欄はその大きさを、第３欄は取るデータの型を、第４欄は名称を、第５欄はそのデータの内容つまり値を示している。
【０１１９】
【表６】
2014044789.tif 000008
【０１２０】
表７には、ＵＤＦ形式の場合のＦＳＤの構造を示している。表７の第１欄は、論理セクターの番号を、第２欄はその大きさを、第３欄は取るデータの型を、第４欄は名称を、第５欄はそのデータの内容つまり値を示している。
【０１２１】
【表７】
2014044789.tif 000009
【０１２２】
表８には、ＵＤＦ形式の場合のＩＣＢの構造を示している。表８の第１欄は、論理セクターの番号を、第２欄はその大きさを、第３欄は取るデータの型を、第４欄は名称を、第５欄はそのデータの内容つまり値を示している。
【０１２３】
【表８】
2014044789.tif 000010
【０１２４】
表９には、ＵＤＦ形式の場合のＦＩＤの構造を示している。表９の第１欄は、論理セクターの番号を、第２欄はその大きさを、第３欄は取るデータの型を、第４欄は名称を、第５欄はそのデータの内容つまり値を示している。
【０１２５】
【表９】
2014044789.tif 000011
【０１２６】
次に、ＵＤＦ形式で書き込みをしたＤＶＤのリムーバブルメディア３の記録履歴を取得する流れの詳細な手順を、図９のフローチャートを参照しながら、説明する。この一連の動作は、図２のフローチャートでいうと、ステップ１０に該当する。まず、ドライバウェア７が記録履歴の取得を開始すると、表５に示した通り、最終セッションの論理セクターの３２番目より、ＰＶＤを取得する（ステップ２００）。そして、ドライバウェア７は、ＰＶＤの情報を分析し、ＰＶＤの情報から、ＬＶＤを取得する（ステップ２０１）。
【０１２７】
このＬＶＤの構造は、表６に示している。ボリューム識別子番号は、ＬＶＤの位置を示している。ＬＶＤの情報からＦＳＤの場所を取得する（ステップ２０２）。ＦＳＤのデータ構造は、表７に示している。ＦＳＤの情報から、ルートディレクトリのＩＣＢを取得する（ステップ２０３）。ＩＣＢのデータ構造は、表８に示している。この取得したデータにファイル名があるかを確認し、なかったら、前回取得した位置の次の位置からデータを取得する（ステップ２０４、２０３）。これを、ファイル名が取得されるまで繰り返して行う（ステップ２０４、２０３）。
【０１２８】
ファイル名が取得されたら、ＩＣＢのデータからファイルタイプを確認する（ステップ２０５、２０６）。ファイルタイプの判定で、ファイルである場合は、その各ファイル名を取得し、そこから、ファイル名、ファイルサイズ、ファイル日時、属性、ファイル属性の得を行う（ステップ２０６、２０７）。ファイルタイプの判定で、ディレクトリの場合は、ＦＩＤの情報から、ディレクトリのＩＣＢを取得する（ステップ２０６、２０８）。ＦＩＤデータ構造は、表９に示している。そして、ステップ２０３から繰り返す（ステップ２０９）。
【０１２９】
〔メディア排出要求の制御例〕
ここで、メディア排出要求の制御例で利用されるコマンドを例示する。メディア排出要求の発行は、ライティングソフトウェア４がIOCTLを発行することで行われる。このIOCTLとは、input/output control（入出力制御又は入出力管理）の略で、アプリケーションプログラムがデバイスドライバを制御するためと、デバイスドライバと通常のデータの読み書きの流れの外で通信するために用意されたシステムコールのことである。IOCTLは、オペレーティングシステム５が標準で備えている。
【０１３０】
IOCTLは、ライティングソフトウェア４から発行されて、オペレーティングシステム５のＷｉｎ３２等のサブシステム４５（図４を参照。）、エグゼキュティブ４６の入出力マネージャ（以下、Ｉ／Ｏマネージャという。）、ドライバウェア７、メディアドライブ用デバイスドライバ６の順番で経由し、メディアドライブ２へ送信される。IOCTLは、具体的に、IOCTL_SCSI_PASS_THROUGH、又は、IOCTL_SCSI_PASS_THROUGH_DIRECT等のSCSIコマンドである。特に、ＣＤ又はＤＶＤのメディア排出のSCSIコマンドは、「SCSIOP_START_STOP_UNIT」である。
【０１３１】
メディアドライブ２へ送出するＣＤＢ（Command Descriptor Block）内に記述されるSCSIOP_START_STOP_UNIT命令（Operation code=1Bh）は、ＳＣＳＩディスクドライブ等の回転デバイスを制御する命令で、リムーバブルメディア３を排出又はロードするときもこの命令で指示する。SCSIOP_START_STOP_UNIT命令のＣＤＢデータのLoEjビットが１だと「Eject」命令になり、リムーバブルメディア３を排出する。
【０１３２】
本実施の形態の例では、ドライバウェア７は、この「SCSIOP_START_STOP_UNIT」を受信し（図２のステップ８を参照。）、「Eject」の情報を初期化し書き換えることで、リムーバブルメディア３をメディアドライブ２から取り外せなくする。これにより、リムーバブルメディア３を排出する命令が、メディアドライブ２へ送信されない。その後、ドライバウェア７は、ライティングソフトウェア４へ排出成功を示す成功通知を返す。
【０１３３】
具体的には、ライティングソフトウェア４は、
「IOCTL_CDROM_EJECT_MEDIA/IOCTL_SCSI_PASS_THROUGH」要求（以下、IOCTL_xx要求という。）を発行する。
ドライバウェア７は、この要求を、
「IRP_MJ_DEVICE_CONTROL/IRP_MJ_INTERNAL_DEVICE_CONTROL」要求で受け取る。
【０１３４】
ドライバウェア７は、この要求を解析して、その中の「IOCTL_CDROM_EJECT_MEDIA」、「IOCTL_SCSI_PASS_THROUGH」、「IOCTL_SCSI_PASS_THROUGH_DIRECT」等のControl Codeに対して処理する。これらのControl Codeにて渡されるInput ParameterにSCSI_START_STOP_UNIT命令が存在する場合、CDBデータのLoEjビットが「１」（Eject要求）であれば、「０」に書き換えて、メディアドライブ２へ送る。ドライバウェア７は、ライティングソフトウェア４へは、上記のIOCTL要求に対して、戻り値として「STATUS_SUCCESS」を返す。
【０１３５】
ドライバウェア７は、この成功通知の返信後、リムーバブルメディア３からファイル情報を取得するために、「SCSIOP_READ」コマンドを発行する。SCSIOP_READは、メディアドライブ用デバイスドライバ６へ送信されて、メディアドライブ用デバイスドライバ６がこの実行結果を、ドライバウェア７へ送信する。このコマンドの発行によって、リムーバブルメディア３に書かれているパステーブルの情報を読み込む。そして、パステーブルの情報を全て取得後、ドライバウェア７は、メディア排出要求の「SCSIOP_START_STOP_UNIT」を発行しリムーバブルメディアをイジェクトする。
【０１３６】
ドライバウェア７は、メディア排出要求の「SCSIOP_START_STOP_UNIT」命令を、アプリケーションプログラムインターフェース部５１によって、エグゼキュティブ４６のＩ／Ｏマネージャから取得する。このとき、ドライバウェア７は、Ｉ／Ｏマネージャに対して、アプリケーションソフトウェアから要求を受けた際に、「IoSetCompletionRoutin()」関数を使い、完了ルーチンを設定する。アプリケーションプログラムインターフェース部５１は、取得したメディア排出要求を、制御部５２へ送信し、制御部５２は、これを解析して、メディア排出要求を、一旦廃棄する。
【０１３７】
完了ルーチンの設定は次のように行われる。まず、制御部５２は、「SCSIOP_START_STOP_UNIT」命令の実行結果が成功したことを示す通知を、発行する。つまり、ドライバウェア７は、ライティングソフトウェア４へは、IOCTL要求に対して、戻り値として「STATUS_SUCCESS」を返す。アプリケーションプログラムインターフェース部５１は、これを、Ｉ／Ｏマネージャへ送信し、最終的に、ライティングソフトウェア４へ送信される。その後、制御部５２は、「SCSIOP_READ」コマンドを発行し、インターフェース制御部Ｃ１を介して、メディアドライブ用デバイスドライバ６へ送信する。メディアドライブ用デバイスドライバ６は、「SCSIOP_READ」コマンドを受信する。
【０１３８】
メディアドライブ用デバイスドライバ６は、「SCSIOP_READ」コマンドを受信したら、リムーバブルメディア３から、そのＰＶＤ、パステーブル、ディレクトリを参照し、それに格納されているファイルやディレクトリに関するデータを取得して、返信する。取得データは、図６に示したようなパステーブルとディレクトリ情報である。これのファイルやディレクトリに関するデータは、インターフェース制御部Ｃ１を介して制御部５２へ送信され、解析される。制御部５２は、これらのデータをログ取得部５３へ送信する。ログ取得部５３は、ファイルやディレクトリに関するデータを取得する。
【０１３９】
ログ取得部５３は、これらのデータを分析して、リムーバブルメディア３に格納されているファイルやディレクトリのフルパスを含めた名前、サイズ、属性、作成日、更新日、可視ファイルか隠しファイルかの属性情報等を抽出し、記録履歴として出力する。例えば、「\abc\filename.txt 123,456bytes 2012/07/17 12:34:56」のような形式でファイルに出力する。この記録履歴は、更に、制御部５３、ファイルシステム制御部Ｃ３を介して、ハードディスクドライブ８又はフラッシュメモリ１７等に記録される。
【０１４０】
また、この記録履歴は、暗号化部５４によって暗号化され、暗号化された記録履歴はネットワーク制御部Ｃ２で通信可能な状態の送信パケットに加工されて、ネットワークカード１４から、ネットワーク１６上の指摘されたアドレスに送信されることができる。この指定されたアドレス先は、ネットワーク上のサーバ、電子計算機等の任意の装置であることができる。この記録履歴の取得が終了すると、制御部５２は、メディア排出要求の「SCSIOP_START_STOP_UNIT」命令を発行し、インターフェース制御部Ｃ１を介して、メディアドライブ用デバイスドライバ６へ送信する。
【０１４１】
メディアドライブ用デバイスドライバ６へは、「SCSIOP_START_STOP_UNIT」命令を受信すると、メディアドライブ２へ送信し、メディアドライブ２からリムーバブルメディア３を排出させる。そのメディアドライブ用デバイスドライバ６は、その成功した旨の通知へ、ドライバウェア７へ送信する。
【０１４２】
〔第２の実施の形態〕
以下、本発明の第２の実施の形態について説明する。本第２の実施の形態は、上述の第１の実施の形態と基本的に同じであり、以下は、その異なる部分のみを説明する。本発明の第２の実施の形態においては、リムーバブルメディア３として、Blu-ray Disk （以下、BDという。）を例に説明する。
【０１４３】
本発明の第２の実施の形態の電子計算機１は、メディアドライブ２のリムーバブルメディア３に、電子データを書き込みするとき、その履歴を取得するものである。具体的には、電子計算機１は、電子計算機１上で動作するアプリケーションプログラムであるライティングソフトウェア４がリムーバブルメディア３に電子データを記録するとき、その記録履歴を取得するものである。
【０１４４】
Blu-rayディスクは、ファイルシステムとして、UDF(Universal Disk Format)規格を採用している。このUDF規格は、上述のDVDディスクで採用された光ディスク用のファイルシステムである。Blu-rayディスクに採用されたUDF規格は、Windows係、UNIX系、MacOS等に対応しており、オペレーティングシステムに依存しない特長をもつ。詳細には、UDFはECMA-167の規格に準じ、この規格は、DVDディスクやBlu-rayディスク等で効率よく利用することを目的として定めている。
【０１４５】
Blu-rayディスクの主な特徴は、メタデータパーティションのサポートである。メタデータパーティションとは、UDF2.5規格で採用されたメタデータというエラーの冗長性を高める仕様を利用するものである。ディレクトリ情報を始め、ディスク上でファイルを管理するために必要なデータを複数に保持する。Blu-rayディスクは、1枚の物理ディスクの中で、ボリュームとパーティションの間に、メタデータパーティションを持つ。そのため、ディスクからファイルを辿る方式が変更となる。
【０１４６】
これは、DVDディスクが1つのボリューム内に1つのパーティションを持ち、その中にファイル管理情報とファイルデータを格納するのと違うものである。以下は、UDF規格の一部の情報を例示するが、詳細な情報は、UDF規格から参照する。
【表１０】
2014044789.tif 000012
【０１４７】
次に、UDF形式で書き込みをしたBlu-ray ディスクのリムーバブルメディア３の記録履歴を取得する流れの詳細な手順を、図１０のフローチャートを参照しながら、説明する。
図１０のフローチャートは、上述のDVDの例を示す図９のフローチャートと基本的に同じであるが、図９のフローチャートのステップ２０２とステップ２０３に替わって、ステップ２０２ａ、ステップ２０３ａ、ステップ２０３ｂが実行される。
【０１４８】
ドライバウェア７が記録履歴の取得を開始すると、最終セッションの論理セクターの３２番目より、PVDを取得する（ステップ２００）。そして、ドライバウェア７は、PVDの情報を分析し、PVDの情報から、LVDを取得する（ステップ２０１）。
このLVDの構造は、次の表１１に示している。
【表１１】
2014044789.tif 000013
【０１４９】
LVDの情報からMDF（Meta Data File ）場所を取得する（ステップ２０２ａ）。MDFのデータ構造を表すMetadata File extentは、次の表１２に示している。
【表１２】
2014044789.tif 000014
【０１５０】
このMDFの情報から、AD（Allocation Descriptor）の場所を取得する（ステップ２０３ａ）。ＡＤのデータ構造は、次の表１３に示している。ＡＤは、ルートディレクトリの位置を表し、全てのファイルやディレクトリにアクセスする場合の起点となるAllocation Descriptorを示す。
【表１３】
2014044789.tif 000015
【０１５１】
そして、ADの情報から、ルートディレクトリのICBを取得する（ステップ２０３ｂ）。この取得したデータにファイル名があるかを確認し、なかったら、前回取得した位置の次の位置からデータを再取得する（ステップ２０４→２０３ａ）。これを、ファイル名が取得されるまで繰り返して行う（ステップ２０４→２０３ａ→２０３ｂ→２０４）。
【０１５２】
ファイル名が取得されたら、ICBのデータからファイルタイプを確認する（ステップ２０５、２０６）。ファイルタイプの判定で、ファイルである場合は、その各ファイル名を取得し、そこから、ファイル名、ファイルサイズ、ファイル日時、属性、ファイル属性の得を行う（ステップ２０６、２０７）。ファイルタイプの判定で、ディレクトリの場合は、ＦＩＤの情報から、ディレクトリのＩＣＢを取得する（ステップ２０６、２０８）。ＦＩＤデータ構造は、次の表１４に示している。そして、ステップ２０３から繰り返す（ステップ２０９）。
【０１５３】
【表１４】
2014044789.tif 000016
【０１５４】
〔Blu-rayディスクにおけるUDF〕
上述したように、Blu-rayディスクは、UDF規格に準拠している。以下のその基本構造について簡単に説明する。Blu-rayディスクでは、UDF 2.5で規格化されたメタデータを採用する。特長は、データを冗長化することでアクセスエラーに対する耐性を高めることである。これが、DVDディスクとの大きな違いとなる。Blu-rayディスクの基本構成を図１１に図示している。また、Blu-rayディスクの構成は、次の表１５及び表１６に示している。
【０１５５】
【表１５】
2014044789.tif 000017
【表１６】
2014044789.tif 000018
【０１５６】
Volume Recognition Sequenceは、ディスク全体に関わるボリューム情報である。媒体種別やファイルシステム形式など光ディスクの複数規格において共通データを含み、複数のVolume Structure Descriptorで構成する。Volume Recognition Sequenceは、ディスクの先頭から１６セクター目より始まる。Volume Structure Descriptor (VSD)の共通形式を次の表１７に示す。
【表１７】
2014044789.tif 000019
【０１５７】
Partition Maps(type 1)は、Blu-rayディスクで採用するmetadata partitionを示すもので、次の表１８に示している。
【表１８】
2014044789.tif 000020
【０１５８】
Partition Descriptorは、ディスク上のパーティションのサイズと位置を表す。その詳細は、表１９に示している。
【表１９】
2014044789.tif 000021
【０１５９】
以下、Blu-rayディスクのUDFデータ構造から、ファイル、ディレクトリを求める方法について記述する。
〔メタデータ情報の先頭の求め方〕
Blu-rayディスクのAnchor Volume Descriptorを起点として、メタデータ情報を求めるまでの手順を図１２に図示した。図中の「#○○○」は、セクター番号を示す。
【０１６０】
Anchor Volume Descriptorから、Primary Volume Descriptorへ移行し、Logical Volume Descriptor formatから、Metadata File LocationとMetadata Mirror File Locationの情報を取得する。また、Partition Descriptorからパーティション開始位置の情報を取得する。そして、パーティション開始位置へ移動し、取得した情報でMetadata File LocationとMetadata Mirror File Locationを利用して、メタデータ情報の先頭へ移動する。
【０１６１】
次の図１２で示したメタデータ方から、ルートディレクトリを求める手順を図１３に図示している。#288セクターのMetadata FileのAllocation descriptorsより、自己から#320 Allocation Descriptorへの相対セクター番号を求める。この求めた値が、パーティションの先頭位置を示す。次に、Allocation DescriptorのRoot Directory ICBより、ルートディレクトリの管理データを求める。そして、Root Dir ICB (Extended File Entry) のAllocation descriptorsより、ルートディレクトリ情報を求める。
【産業上の利用可能性】
【０１６２】
本発明は、リムーバブルメディア、光学メディアを取り扱う分野、そのデータ管理を扱う分野、セキュリティの分野に利用するとよい。特に、リムーバブルメディア、光学式メディアへ電子データを書き込みする分野で利用すると良い。
【符号の説明】
【０１６３】
１…電子計算機
２…メディアドライブ
２ａ…コネクタ
３…リムーバブルメディア
３ａ…トラック
４…ライティングソフトウェア
５…オペレーティングシステム
６…メディアドライブ用デバイスドライバ
７…ドライバウェア
８…ハードディスクドライブ
９…ファイルシステムドライバ
１０…キーボード
１１…マウス
１２…キーボードポート
１２ａ…キーボードドライバ
１３…マウスポート
１３ａ…マウスドライバ
１４…ネットワークカード
１４ａ…ネットワークドライバ
１５…ＵＳＢポート
１６…ネットワーク
１７…フラッシュメモリ
４０…電子計算機本体
４１…アプリケーションプログラム
４３…ユーザモード
４４…カーネルモード
４５…サブシステム
４６…エグゼキュティブ
４７…カーネル
４８…ハードウェア抽象化層（ＨＡＬ）
５１…アプリケーションプログラムインターフェース部
５２…制御部
５３…ログ取得部
５４…暗号化部
５５…復号化部
Ｃ１…インターフェース制御部
Ｃ２…ネットワーク制御部
Ｃ３…ファイルシステム制御部
Ｃ４…入力装置制御部
【図１】
2014044789.tif 000022
【図２】
2014044789.tif 000023
【図３】
2014044789.tif 000024
【図４】
2014044789.tif 000025
【図５】
2014044789.tif 000026
【図６】
2014044789.tif 000027
【図７】
2014044789.tif 000028
【図８】
2014044789.tif 000029
【図９】
2014044789.tif 000030
【図１０】
2014044789.tif 000031
【図１１】
2014044789.tif 000032
【図１２】
2014044789.tif 000033
【図１３】
2014044789.tif 000034