(58)【調査した分野】(Int.Cl.,DB名)
オペレーティングシステムによって操作されて動作する電子計算機に接続又は内蔵されたもので、記録媒体に電子データを記録、及び、前記記録媒体から前記電子データを読み込みするためのメディアドライブから、前記記録の履歴を取得するための記録媒体の記録履歴の取得方法において、
前記電子計算機上で動作するライティングソフトウェアで作成された書き込みデータを、前記メディアドライブによって前記記録媒体に記録した後で、
前記ライティングソフトウェアは前記メディアドライブから前記記録媒体を排出するための命令であるメディア排出要求を、前記メディアドライブへ送信し、
前記メディア排出要求を、前記オペレーティングシステムの入出力管理部から前記メディアドライブへ送信される間に、一時停止させ、
前記記録媒体に記録された電子データの属性データを読み込み、分析することで、前記記録媒体の記録履歴を取得し、
前記記録履歴の取得後、前記メディア排出要求を、前記メディアドライブへ送信する
ことを特徴とする記録媒体の記録履歴の取得方法。
オペレーティングシステムによって操作されて動作する電子計算機に接続又は内蔵されたもので、記録媒体に電子データを記録、及び、前記記録媒体から前記電子データを読み込みするためのメディアドライブから、前記記録の履歴を取得するための記録媒体の記録履歴取得プログラムにおいて、
前記電子計算機上で動作するライティングソフトウェアで作成された書き込みデータを、前記メディアドライブによって前記記録媒体に記録した後で、前記ライティングソフトウェアによって発行されて前記メディアドライブへ送信された命令で、前記メディアドライブから前記記録媒体を排出するための命令であるメディア排出要求を、前記オペレーティングシステムの入出力管理部から受信する受信ステップ、
前記メディア排出要求を、前記メディアドライブへ送信せず、一時停止させるステップ、
前記メディアドライブに対して、前記記録媒体に記録された電子データの属性データを読み込みするための読み込み要求を発行するステップ、
前記読み込み要求を前記メディアドライブの前記メディアドライブ用デバイスドライバへ送信するステップ、
前記読み込み要求の実行結果で、前記メディアドライブから受信した前記記録媒体に記録されたファイル又はディレクトリに関する記録データを、前記メディアドライブ用デバイスドライバから受信して前記記録履歴を取得するステップ、及び、
前記記録履歴の取得後、前記メディア排出要求を、前記メディアドライブ用デバイスドライバへ送信するステップを
前記電子計算機に実行させることを特徴とする記録媒体の記録履歴取得プログラム。
【発明の概要】
【発明が解決しようとする課題】
【0011】
しかながら、上述のライティングソフトウェアによる推測書き込み方式では、ライティングソフトウェアがライティングのために読み込んだファイル名から、光学メディアへ書くファイルを推測して、書き込みログ機能を実現している。この方式では、ライティングソフトウェアが自らの処理実行のために読み込んだファイル、及び利用者が書き込み操作を中断して実際に書かなかったファイルを、推測で除去するため正確性に欠ける。
【0012】
一方では、フラッシュメモリやハードディスクドライブ等の外部記憶媒体の場合は、電子データをファイル単位で書き込むため、この書き込み作業を、オペレーティングシステムのファイルシステム層で監視することにより、個々のファイル操作を記録できる。これに対して、ライティングソフトウェアによる光学メディアへの書き込みは、ISO形式の記録用のイメージデータを作成しているので、オペレーティングシステムのファイルシステムを通過せず、かつ、複数のファイルやフォルダをアーカイブ形式にて書き込むため、同一の手法では記録できない。
【0013】
上述のパケットライト方式による光学メディアへの記録は、ファイルシステムを通して行われるので、ファイルシステムからその記録に関する記録履歴は取得することが可能である。しかし、マスターライティング方式の場合は、ファイルシステム、特に、ファイルシステムドライバを利用しないので、その記録履歴の取得が難しく、正確な記録履歴を取得できないことがほとんどである。
【0014】
更に、光学メディアへの記録履歴は、基本的に、ライティングソフトウェアの動作に依存している。ライティングソフトウェアが提供できない、又は、開示していない情報に関しては、その取得が難しく、従って、サポートできなくなる。Windows(登録商標)標準のライティングでも、書き込み準備ができたファイルについての情報しか取得できないのが現状である。このように、ライティングソフトウェアに依存せず、実際に、光学メディアに書き込まれたファイル名を始めファイルやディレクトリの属性情報を取得する要求がある。
【0015】
本発明は上述のような技術背景のもとになされたものであり、下記の目的を達成する。
本発明の目的は、電子計算機から電子データを記録媒体へ書き込みするとき、その電子データの書き込み履歴を取得するための記録媒体の記録履歴の取得方法、そのためのプログラム及び、プログラムの記録媒体を提供することにある。
【0016】
本発明の他の目的は、電子計算機から電子データを記録媒体へ書き込みするとき、ライティングソフトウェアに依存せず、電子データの書き込み履歴を取得するための記録媒体へのファイル書き込み履歴の取得のための記録媒体の記録履歴の取得方法、そのためのプログラム及び、プログラムの記録媒体を提供することにある。
【0017】
本発明の更に他の目的は、リムーバブルメディアへ書き込みするとき、書き込み履歴を、ライティングソフトウェアに依存せずに、取得するための記録媒体の記録履歴の取得方法、そのためのプログラム及び、プログラムの記録媒体を提供することにある。
【課題を解決するための手段】
【0018】
本発明は、前記目的を達成するため、次の手段を採る。
本発明の記録媒体の記録履歴の取得方法は、
オペレーティングシステムによって操作されて動作する電子計算機に接続又は内蔵されたもので、記録媒体に電子データを記録、及び、前記記録媒体から前記電子データを読み込みするためのメディアドライブから、前記記録の履歴を取得するための記録媒体の記録履歴の取得方法において、
前記電子計算機上で動作するライティングソフトウェアで作成された書き込みデータを、前記メディアドライブによって前記記録媒体に記録した後で、
前記ライティングソフトウェアは前記メディアドライブから前記記録媒体を排出するための命令であるメディア排出要求を、前記メディアドライブへ送信し、
前記メディア排出要求を、前記オペレーティングシステムの入出力管理部から前記メディアドライブへ送信される間に、一時停止させ、
前記記録媒体に記録された電子データの属性データを読み込み、分析することで、前記記録媒体の記録履歴を取得し、
前記記録履歴の取得後、前記メディア排出要求を、前記メディアドライブへ送信する
ことを特徴とする。
【0019】
前記電子計算機は、
前記オペレーティングシステムの全ての命令が実行できるカーネルモードで動作し、前記電子計算機に接続されているデバイスを直接制御するためのデバイスドライバ同士の通信、又は前記デバイスドライバと前記電子計算機上で動作するアプリケーションプログラムとの通信に共通のインターフェースを提供するための手段で、かつ、1)前記アプリケーションプログラムから出力される命令及び/又はデータを含む第1データを受信し、前記命令の実行結果及び/又は前記デバイスドライバから受信した受信データを含む第2データを、前記アプリケーションプログラムに送信するためのアプリケーションプログラムインターフェース部と、2)前記デバイスドライバへ、前記命令及び/又は前記データを含む第3データを送信し、前記デバイスドライバから前記命令の実行結果及び/又は前記受信データを含む第4データを受信するためのデバイスドライバ制御部と、3)前記第1データ又は前記第4データを処理し、前記第2データ又は前記第3データを生成して、前記第1〜4データの制御を行うための制御部とからなるドライバウェア手段を内蔵し、
前記メディア排出要求を、前記ドライバウェア手段によって取得し、
前記ドライバウェア手段は、前記メディア排出要求を、前記メディアドライブへ送信する前に、前記記録履歴を取得し、
前記記録履歴の取得後、前記ドライバウェア手段は、前記メディア排出要求を、前記メディアドライブへ送信すると良い。
【0020】
また、前記メディア排出要求が前記オペレーティングシステムの出力インターフェースから、前記メディアドライブを制御するためのメディアドライブ用デバイスドライバへ送信されるとき、前記ドライバウェア手段が前記メディア排出要求を、前記カーネルモードで取得すると良い。
更に、前記ドライバウェア手段は、前記メディア排出要求を前記メディアドライブへ送信する前に、前記ライティングソフトウェアへ、前記メディア排出要求の実行が成功したことを示す成功通知を、送信すると良い。
【0021】
本発明の記録媒体の記録履歴取得プログラムは、
オペレーティングシステムによって操作されて動作する電子計算機に接続又は内蔵されたもので、記録媒体に電子データを記録、及び、前記記録媒体から前記電子データを読み込みするためのメディアドライブから、前記記録の履歴を取得するための記録媒体の記録履歴取得プログラムにおいて、
前記電子計算機上で動作するライティングソフトウェアで作成された書き込みデータを、前記メディアドライブによって前記記録媒体に記録した後で、前記ライティングソフトウェアによって発行されて前記メディアドライブへ送信された命令で、前記メディアドライブから前記記録媒体を排出するための命令であるメディア排出要求を、前記オペレーティングシステムの入出力管理部から受信する受信ステップ、
前記メディア排出要求を、前記メディアドライブへ送信せず、一時停止させるステップ、
前記メディアドライブに対して、前記記録媒体に記録された電子データの属性データを読み込みするための読み込み要求を発行するステップ、
前記読み込み要求を前記メディアドライブの前記メディアドライブ用デバイスドライバへ送信するステップ、
前記読み込み要求の実行結果で、前記メディアドライブから受信した前記記録媒体に記録されたファイル又はディレクトリに関する記録データを、前記メディアドライブ用デバイスドライバから受信して前記記録履歴を取得するステップ、及び、
前記記録履歴の取得後、前記メディア排出要求を、
前記メディアドライブ用デバイスドライバへ送信するステップを
前記電子計算機に実行させることを特徴とする。
【0022】
前記記録履歴取得プログラムは、
前記オペレーティングシステムの全ての命令が実行できるカーネルモードで動作し、前記電子計算機に接続されているデバイスを直接制御するためのデバイスドライバ同士の通信、又は前記デバイスドライバと前記電子計算機上で動作するアプリケーションプログラムとの通信に共通のインターフェースを提供するためのプログラムで、かつ、1)前記アプリケーションプログラムから出力される命令及び/又はデータを含む第1データを受信し、前記命令の実行結果及び/又は前記デバイスドライバから受信した受信データを含む第2データを、前記アプリケーションプログラムに送信するためのアプリケーションプログラムインターフェース部と、2)前記デバイスドライバへ、前記命令及び/又は前記データを含む第3データを送信し、前記デバイスドライバから前記命令の実行結果及び/又は前記受信データを含む第4データを受信するためのデバイスドライバ制御部と、3)前記第1データ又は前記第4データを処理し、前記第2データ又は前記第3データを生成して、前記第1〜4データの制御を行うための制御部とを前記電子計算機に実現させるためのドライバウェアプログラムを有し、
前記ドライバウェアプログラムは、
前記メディア排出要求を、前記アプリケーションプログラムインターフェース部によって、前記オペレーティングシステムの入出力管理部から取得するステップと、
前記メディア排出要求を、一時停止させるステップと、
前記メディアドライブ用デバイスドライバへ、前記読み込み要求、前記デバイスドライバ制御部によって送信するステップと、
前記記録データを、前記メディアドライブ用デバイスドライバから、前記デバイスドライバ制御部によって受信するステップと、
前記記録データを、前記制御部によって、分析処理して、前記記録履歴を出力するステップと、
前記メディアドライブ用デバイスドライバへ、前記メディア排出要求を、前記デバイスドライバ制御部によって送信するステップと、
を前記電子計算機に実現させると良い。
【0023】
また、前記ドライバウェアプログラムは、前記メディア排出要求を前記メディアドライブへ送信する前に、前記ライティングソフトウェアへ、前記メディア排出要求の実行が成功したことを示す成功通知を、前記アプリケーションプログラムインターフェース部によって、送信するステップを前記電子計算機に実現させると良い。
本発明の記録媒体の記録履歴取得プログラムの記録媒体は、上述の記録媒体の記録履歴取得プログラムを記録したことを特徴とする。
【発明の効果】
【0024】
本発明によると、次の効果が奏される。
本発明によると、電子計算機から電子データをリムーバブルメディアへ書き込みするとき、メディアドライブのデバイスドライバを操作することで、その電子データの書き込み履歴を取得するためのリムーバブルメディアへのファイル書き込み履歴が取得できるようになった。
【0025】
また、本発明によると、ドライバウェア手段を利用し、メディアドライブ用デバイスドライバへ送信されるデータを制御することで、ライティングソフトウェアに依存せず、リムーバブルメディアの記録履歴を取得できるようになった。
【発明を実施するための形態】
【0027】
〔第1の実施の形態〕
本発明の第1の実施の形態の概要を説明する。
図1に図示したように、本発明の第1の実施の形態の電子計算機1は、メディアドライブ2のリムーバブルメディア3に、電子データを書き込みするとき、その履歴を取得するものである。具体的には、本発明の第1の実施の形態の電子計算機1は、電子計算機1上で動作するアプリケーションプログラムであるライティングソフトウェア4がリムーバブルメディア3に電子データを記録するとき、その記録履歴を取得するものである。
【0028】
ライティングソフトウェア4は、リムーバブルメディア3に電子データを記録するために記録用のイメージファイルを作成する。ライティングソフトウェア4は、例えば、電子計算機1のハードディスクドライブ8等に格納されている電子データを書き込みデータとして読み取り、これを利用してイメージファイルを作成する。作成されたイメージファイルは、メディアドライブ用デバイスドライバ6を介して、メディアドライブ2に送信され、リムーバブルメディア3に記録される。
【0029】
この記録が終わると、ライティングソフトウェア4は、メディアドライブ2からリムーバブルメディア3を排出するための命令であるメディア排出要求を、メディアドライブ2へ送信する。ライティングソフトウェア4は、ハードディスクドライブ8と行う命令やデータの送受信等のアクセスは、オペレーティングシステム5のファイルシステムドライバ9を介して行われる。ライティングソフトウェア4は、メディアドライブ2へデータや命令等を送信し、その命令の実行結果の報告を受けるときは、メディアドライブ用デバイスドライバ6を介して行われる。
【0030】
電子計算機1は、オペレーティングシステム5とデバイスドライバ層の間に位置するドライバウェア7を備えている。ドライバウェア7の詳細な構成、その機能についての説明は後述する。ドライバウェア7は、このメディア排出要求を受信して、リムーバブルメディア3に格納されているファイルやディレクトリ等の履歴データを読み取ることで記録履歴を取得する。ドライバウェア7は、メディアドライブ用デバイスドライバ6を制御することで、この記録履歴を取得する。
【0031】
リムーバブルメディア3の記録履歴とは、リムーバブルメディア3に記録されたファイル、ディレクトリに関する情報で、ファイル名、ファイルサイズ、ファイル属性、ファイルの作成、更新の日時等のデータである。ここで、ファイル名は、ファイルの名前だけではなくディレクトリも含めたフルパスを含む。ファイル属性は、可視ファイルや隠しファイルを示す属性データも含む。記録履歴は、ドライバウェア7によって取得された後、適当な履歴情報として適当な装置へ出力されるか、適当な補助記憶装置に記録される。
【0032】
リムーバブルメディア3に書き込み又は記録されるための書き込みデータとしては、動画、静止画、写真、音声等のマルチメディアデータ、文書等のテキストデータ、プログラムコード、各種のアプリケーションプログラムやプログラム等によって作成された又はそれら用に用意された任意の形式の電子データである。このように、書き込みデータは、そのデータ量、種類は制限しない。書き込みデータそのものは、本発明の趣旨ではないので詳細な説明は省略する。
【0033】
リムーバブルメディア3は、補助記憶装置の一種であり、記録媒体である。リムーバブルメディア3は、その名の通り、それ用の再生装置又は記録装置から容易に取り外すことができるものである。リムーバブルメディア3としては、フロッピーディスク(登録商標)、光磁気ディスク、コンパクトディスク(以下、CDと言う。)、DVD(Digital Versatile Disc)、フラッシュメモリ等が例示できる。本発明の本第1の実施の形態では、CD又はDVD等の光学メディアを例に説明をする。
【0034】
光学メディアの規格としては、再生専用型のCD(−DA)、CD−ROM、DVD−video、DVD−ROM、BD−ROM、追記型のCD−R、DVD−R、DVD+R、BD−R、書き換え型のCD−RW、DVD−RW、DVD+RW、DVD−RAM、BD−RE等を始め数多くの規格がある。本第1の実施の形態においては、特段に指定して記述しない限り、書き込みができるCD又はDVDを対象にする。
【0035】
〔記録履歴の取得の流れ〕
本実施の形態においては、マスターライティング方式を例に説明する。
図2には、電子計算機1は、リムーバブルメディア3に電子データを記録するとき、その記録の履歴を取得する一連の動作を示すフローチャートを示している。
図3には、ライティングソフトウウェア4、メディアドライブ用デバイスドライバ6、ドライバウェア7、メディアドライブ2の動作関係を時間経過で図示した図である。
【0036】
以下、記録履歴を取得する一連の動作を、
図1、
図2及び
図3を参照しながら説明する。
図3に図示した矢印は、経過時間を示すものである。まず、電子計算機1上で動作するライティングソフトウェア4は、リムーバブルメディア3に記録するための書き込みデータを選択する(ステップ1)。又は、書き込みデータは、他のアプリケーションプログラムからライティングソフトウェア4に渡される。ライティングソフトウェア4は、選択された書き込みデータを用いて、リムーバブルメディア3に記録するために記録用のイメージファイルを作成する(ステップ2)。
【0037】
イメージファイルは、CD等のリムーバブルメディア3にデータ記録するときに利用されるもので、電子計算機1のメモリ上にCDの内容が仮想的に作成された電子データである。つまり、イメージファイルの作成は、電子計算機1のメモリ上に、リムーバブルメディア3に相当する領域を仮想的に作って、リムーバブルメディア3に書き込まれる実際のデータを作成する。そして、イメージファイルの作成が完成すると、ライティングソフトウェア4は、このイメージファイルと、このファイルをリムーバブルメディア3への書き込みすることを指示した書き込み要求を、メディアドライブ2へ送る(ステップ3)。
【0038】
このイメージファイルは、通常は、電子計算機1のハードディスクドライブ8へ一時的に格納される。ライティングソフトウェア4は、オペレーティングシステム5の入出力機能とファイルシステム、ハードディスクドライブ8を直接制御しているデバイスドライバであるファイルシステムドライバ9等を介して、イメージファイルをハードディスクドライブ8に書き込みする。ライティングソフトウェア4は、ハードディスクドライブ8からのデータの読み込むときも、オペレーティングシステム5の入出力機能、ファイルシステムドライバ9等を介して行う。
【0039】
ライティングソフトウェア4から送信されたこのイメージファイルと書き込み要求は、オペレーティングシステム5の標準の入出力機能を介して、メディアドライブ用デバイスドライバ6へ送信される(ステップ4)。ドライバウェア7は、オペレーティングシステム5とデバイスドライバ層の間に位置し、オペレーティングシステム5から、メディアドライブ用デバイスドライバ6等のデバイスドライバへ送信されるデータを監視し、それらを制御することができるものである。
【0040】
しかし、本実施の形態においては、ライティングソフトウェア4から送信されたこのイメージファイルと書き込み要求に関しては、監視のみを行い、ドライバウェア7は、基本的に介入しない設定に成っている。ドライバウェア7はこの監視で特定条件に、メディアドライブ用デバイスドライバ6へ送信されるデータ、メディアドライブ用デバイスドライバ6から受信されるデータの制御を行う。メディアドライブ用デバイスドライバ6は、送信されてきたイメージファイルと書き込み要求を受信して、書き込み要求に指定された通り、イメージファイルをリムーバブルメディア3に記録する。
【0041】
実際は、メディアドライブ用デバイスドライバ6は、イメージファイルを指定されたセッション又はトラック又は所定のデータ量ごとに分けて、メディアドライブ2に送信し、それを制御して、メディアドライブ2に挿入されているリムーバブルメディア3に記録させる(ステップ5)。メディアドライブ用デバイスドライバ6は、イメージファイルをリムーバブルメディア3に記録させて、完了すると、書き込みが完了したことを示す書き込み完了通知を、ライティングソフトウェア4へ送信する。
【0042】
書き込み完了通知は、オペレーティングシステム5の標準入出力機能を通して、ライティングソフトウェア4へ渡される(ステップ7)。ライティングソフトウェア4は、この書き込み完了通知を受け取ると、リムーバブルメディア3に追加して書き込むデータがあるか否かを確認して、あれば、また同じく、書き込みデータの選択、イメージファイルの作成から上述の一連動作が繰り返される(ステップ1〜ステップ6)。
【0043】
リムーバブルメディア3に追加して書き込むデータが無ければ、ライティングソフトウェア4は、リムーバブルメディア3を、メディアドライブ2から取り出すための命令であるメディア排出要求を発する(ステップ7)。この取り出すことは、別の言い方をすると、リムーバブルメディア3を、メディアドライブ2から排出又はイジェクトすると言う。このメディア排出要求は、メディアドライブ2からリムーバブルメディア3を排出させるためのものである。
【0044】
このメディア排出要求でリムーバブルメディア3をメディアドライブ2から取り出すことで、リムーバブルメディア3にデータを記録する一連の動作が終了したことを、電子計算機1の利用者に通知することと、リムーバブルメディア3をそれに対応するファイルシステムでマウントさせるためである。このマウントさせることは、メディアドライブ2から取り出されたリムーバブルメディア3をメディアドライブ2に、再度、入れて設置し、又は、挿入して、電子計算機1のオペレーティングシステム5やそのファイルシステムに認識させ、メディアドライブ2を利用可能にすることである。
【0045】
このメディア排出要求は、ライティングソフトウェア4から送信され、同じように、オペレーティングシステム5の入出力機能を介して、メディアドライブ用デバイスドライバ6へ送信される。オペレーティングシステム5とメディアドライブ用デバイスドライバ6の間にドライバウェア7が介在しており、ドライバウェア7は、オペレーティングシステム5からメディアドライブ用デバイスドライバ6へ送信される命令やデータを監視している。
【0046】
そのため、このメディア排出要求があるとドライバウェア7がこれを受信し、オペレーティングシステム5とメディアドライブ用デバイスドライバ6の間のデータ通信に介入する(ステップ8)。そして、ドライバウェア7がこのメディア排出要求を分析して、その発行元、送信先、命令の特徴等を把握する。ドライバウェア7は、メディア排出要求を一時停止させる。又は、ドライバウェア7は、メディア排出要求を別の命令やデータで書き換えて、メディアドライブ用デバイスドライバ6へ送信する。
【0047】
そして、ドライバウェア7は、メディア排出要求の発行元に対して、メディア排出要求が実行されて成功したことを示す通知である成功通知を発行して、送信する(ステップ9)。この成功通知は、オペレーティングシステム5の入出力機能を介して、ライティングソフトウェア4へ送信される。ライティングソフトウェア4は、この成功通知を受け取り、リムーバブルメディア3への書き込み作業が完成したことになり、一連の動作を終了させる。しかし、ドライバウェア7は、上述のメディア排出要求を受信すると、すぐには、これをメディアドライブ用デバイスドライバ6に送信しない。
【0048】
ドライバウェア7は、これを一時停止し、上述の成功通知をライティングソフトウェア4へ発行する。そして、ドライバウェア7は、メディアドライブ用デバイスドライバ6に対して、リムーバブルメディア3に記録されているファイルやディレクトリに関するデータを読み取るように読み取り要求を発行する。メディアドライブ用デバイスドライバ6は、この読み取り要求を受信すると、それに指定されたデータをリムーバブルメディア3から読み取って、読み取りデータとしてドライバウェア7へ送信する。
【0049】
ドライバウェア7は、リムーバブルメディア3から読み取った内容を示す読み取りデータを受信して、これを分析して、リムーバブルメディア3に記録された電子データの記録履歴を把握する(ステップ10)。つまり、ドライバウェア7は、リムーバブルメディア3に書き込みされた電子データの記録履歴を取得する。そして、記録履歴の取得が完了すると、ドライバウェア7は、一時停止していたメディア排出要求を、メディアドライブ用デバイスドライバ6に送信する(ステップ12)。
【0050】
前に、ドライバウェア7がライティングソフトウェア4からメディア排出要求を受信したとき、これを書き換えた場合、ドライバウェア7は、新規にメディア排出要求を発行してメディアドライブ用デバイスドライバ6に送信する(ステップ12)。このように、ドライバウェア7は、リム―バブルメディア3に書き込まれた電子データを読み込み、その記録されたファイルやディレクトリに関する情報を取得し記録し、それが完了したところで、メディアドライブ2へメディア排出要求を送出するものである。
【0051】
メディアドライブ用デバイスドライバ6は、メディア排出要求に従って、メディアドライブ2を制御して、リムーバブルメディア3をメディアドライブ2から取り出し又は排出させる(ステップ13)。メディアドライブ2は、その実行結果を、完了通知としてメディアドライブ用デバイスドライバ6へ送信して報告し、メディアドライブ用デバイスドライバ6は、更に、ドライバウェア7へ送信する。ドライバウェア7は、この完了通知を受け取り、記録履歴を取得する一連の動作が終了する。
【0052】
ドライバウェア7は、取得した記録履歴を、予め指定された手順に従って処理する。例えば、記録履歴を、電子計算機1のハードディスクドライブ8等の補助記憶装置に記録、又は、ネットワーク上の所定の記録装置や通信先等に送信する。無論、ドライバウェア7は、記録履歴を、電子計算機1の主記憶装置等に一時的に保存して、他のアプリケーションプログラムに渡すこともできる。更に、別のリムーバブルメディア3に保存することもできる。
【0053】
更に、記録履歴は、電子計算機1内又はネットワーク上の所定のデータベース等に保存され、電子データの利用の分析、電子データの管理に役立つ。情報漏洩防止の面からみても、電子データの漏洩が確認されれば、その保存された記録履歴を分析し、リムーバブルメディア3の追跡や漏洩元等を分析して特定することができる。このように、記録履歴の利用は、様々であり、その利用方法は、本発明の趣旨ではないので、これ以上の詳細な説明を省略する。
【0054】
本発明を実施する上で必要な知識で、電子計算機1とその上に動作するソフトウェアの構成、ドライバウェア7の構成と動作の概要、リムーバブルメディア3への記録規格の例、そして、記録履歴を実現する詳細なやり方、取り扱う命令の例について、以下に、簡単に説明する。
【0055】
〔電子計算機1のハードウェア構成〕
本実施の形態においては、電子計算機1は、入力装置、出力装置、中央処理装置、主記憶装置、補助記憶装置等を備えた汎用の電子計算機である。
図4の例では、電子計算機1は、電子計算機本体40、キーボード10やマウス11等の入力装置、ハードディスクドライブ8等の補助記憶装置を備えている。ディスプレイ(図示せず。)等の出力装置やその他の必需構成部は図示していない。
【0056】
また、電子計算機1は、メディアドライブ2を備えている。ここで、本発明に係るメディアドライブ2については、電子計算機1に付属し、電子計算機本体40に接続されたものと説明しているが、電子計算機本体40に内蔵されたもので、電子計算機1に付属せず外付けの物でも良い。いずれにしても、メディアドライブ2は、電子計算機本体40に備えられたコネクタ2a等に接続されて動作するものであり、その使い方や,ライティングソフトウェア4からみると基本的に同じ働きをする。
【0057】
電子計算機本体40にハードディスクドライブ8が内蔵されている。更に、電子計算機1は、ネットワーク16へ接続するためにネットワークカード14、フラッシュメモリ17等の補助記憶装置を接続するためのUSBポート15等を備えている。その他に、電子計算機1は周辺装置を有することができる。本発明は、電子計算機1の構成そのものではないので、必要な機能や説明については以下に説明の中に記述し、その他の詳細の説明は省略する。
【0058】
〔電子計算機1のソフトウェア構成〕
図4には、電子計算機1上で動作するソフトウェアの概要を図示している。ここで、電子計算機1上で動作するオペレーティングシステム5、及び、ドライバウェア7の概要を説明する。本実施の形態においては、オペレーティングシステム5は、Microsoft社のWindows(登録商標)である。しかし、これは、オペレーティングシステム5を制限するものではなく、同様な機能を実現できれば、オペレーティングシステムの種類は問わない。
【0059】
アプリケーションプログラム41がオペレーティングシステム5の上で動作する。電子計算機1は、メディアドライブ2を接続するためのメディアドライブ用コネクタ2aを有する。メディアドライブ用コネクタ2aは、RS―232C、IrDA、USB、IEEE1394等のシリアルポート、IEEE1284、SCSI、IDE等のパラレルポートであることが好ましい。ドライバウェア7は、オペレーティングシステム5のカーネルモード44で動作するプログラムである。
【0060】
電子計算機1は、オペレーティングシステム5によって制御されて動作する。電子計算機1上で動作するアプリケーションプログラム41は、オペレーティングシステム5が提供する機能を利用して、入出力装置からの入出力を行い、必要な処理をする。アプリケーションプログラム41は、オペレーティングシステム5のカーネルモード44又はユーザモード43に動作する実行可能なファイル又はソフトウェアである。例えば、アプリケーションプログラム41は、ライティングソフトウェア4、ワードプロセッシングソフトウェア、テキストエディタ等の文書を作成、編集するためのソフトウェアであると良い。
【0061】
更には、pdf形式のファイル等のような特定の形式のファイルを閲覧、作成、編集するためのソフトウェアであると良い。オペレーティングシステム5は、キーボード10からの入力、マウス11からの入力や画面出力等のような入出力装置からの入出力機能、外部記憶装置やメモリの管理等の基本的な機能を提供し、電子計算機1全体を動作させ、管理するためのソフトウェアである。オペレーティングシステム5は、基本ソフトウェアとも言われる。
【0062】
オペレーティングシステム5は、その提供する機能を実現するために多数の実行可能なプログラムから構成されるものである。オペレーティングシステム5、特に本発明の実施の形態に用いているWindows系のオペレーティングシステムについては、多数の書籍があり、その一部から紹介する。本発明を再現するためには、これらの書籍に記述されている技術知識、特に、デバイスドライバ開発に関する知識が必要である。
【0063】
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)
【0064】
ここで、オペレーティングシステム5の構成要素の内の代表的なものから記述する。オペレーティングシステム5は、サブシステム45、エグゼキュティブ46、カーネル47、ハードウェア抽象化層(HAL)48等から構成される。各種のデバイスドライバは、オペレーティングシステム5に含める考え方がある。これは、オペレーティングシステム5に標準で付いているデバイスドライバがある場合に該当すると考えられる。多くの場合は、デバイスの製造メーカがそのデバイス専用にデバイスドライバを作って提供することが多い。
【0065】
ここででは、デバイスドライバの例は、
図4に図示した通り、メディアドライブ用デバイスドライバ6、ネットワークドライバ14a、ファイルシステムドライバ9、キーボードドライバ12a、マウスドライバ13a等であり、本実施の形態では、これのデバイスドライバはデバイスドライバ層を構成しているとする。サブシステム45は、オペレーティングシステム5のユーザモード43で提供されるサービスである。カーネル47は、エグゼキュティブ46の内部で使用するルーチンセットと基本オブジェクトを提供する。
【0066】
エグゼキュティブ46は、メモリの管理、プロセスとスレッドの管理、セキュリティ、入出力(I/O)の管理、ネットワーク、及びプロセス間通信等のオペレーティングシステム5の基本的なサービスを提供するものである。カーネル47は、スレッドスケジューリング、割り込み、例外通知、マルチプロセッサの同期等の低レベルの関数を提供する。デバイスドライバは、通常は、電子計算機1に接続された各々のハードウェア用に備えられ、HAL48を介して、そのハードウェアを直接制御するものである。
【0067】
デバイスドライバは、アプリケーションプログラム41やオペレーティングシステム5からの入出力機能の要求(I/O呼び出し要求)を特定のハードウェアのデバイスに対する入出力機能の要求(I/O要求)に変換するサービスと、ファイルシステムやネットワークドライバ等のシステムサービスを提供する。HAL48は、カーネル47、デバイスドライバ、及びエグゼキュティブ46をプラットフォーム固有のハードウェア機能から分離し抽象化するためのコード層である。
【0068】
HAL48は、電子計算機1の内蔵デバイスや、電子計算機1に接続されている外部デバイス等のハードウェアの機種、種類による違いを吸収し、オペレーティングシステム5の各サービスに対して抽象化したサービスを提供する。オペレーティングシステム5を構成する各種のサービスは、ハードウェアの機種、種類による違いを意識することなくハードウェアにアクセスすることが可能になる。
【0069】
〔ドライバウェア7〕
ドライバウェア7は、デバイスドライバ間のデータの送受信をカーネルモードで実現するためのものである。ドライバウェア7は、アプリケーションプログラム41からデバイスドライバへアクセスするとき、また、デバイスドライバからアプリケーションプログラム41へデータを送信するときに、共通のインターフェースを提供する。ドライバウェア7は、オペレーティングシステム5のカーネルモード44で動作する。
【0070】
ドライバウェア7は、デバイスドライバ間だけではなく、オペレーティングシステム5と複数のデバイスドライバとのデータの送受信を提供する機能を有する。ドライバウェア7の例としては、電子計算機のインターフェースドライバプログラムとしてWO02/091195号公(特開2002−328878、発明の名称:「電子計算機のインターフェースドライバプログラム及びその記録媒体」)、WO2003/073289号公報(発明の名称:「電子計算機のファイルシステムドライバの制御方法、そのプログラム及びプログラムの記録媒体」)等に開示されている周知の技術である。
【0071】
ドライバウェア7は、アプリケーションプログラム41からの命令やデータ等を受信し、アプリケーションプログラム41へのデータを送信するためのアプリケーションプログラムインターフェース部51を有する。ドライバウェア7は、ドライバウェア7の全体の動作を制御するための制御部52を有する。また、ドライバウェア7の動作の履歴を取得するためのログ取得部53も有する。更に、ドライバウェア7は、デバイスドライバを制御するためのデバイスドライバ制御部C1〜C4を有する。
【0072】
ドライバウェア7は、通信するデータを暗号化するための暗号化部54、暗号化されたデータを復号化するための復号化部55を有する。制御部52は、デバイスドライバ制御部C1〜C4、アプリケーションプログラムインターフェース部51、ログ取得部53、暗号化部54、復号化部55等のドライバウェア7の他の部を制御し、監視するためのもので、ドライバウェア7の中核部である。本実施の形態においては、デバイスドライバは、オペレーティングシステム5に付属するものと記述する。
【0073】
メディアドライブ用デバイスドライバ6は、メディアドライブ用コネクタ2aを通してメディアドライブ2を制御するためのデバイスドライバである。ネットワークドライバ14aは、ネットワークカード14を制御するためのデバイスドライバである。ファイルシステムドライバ9は、ハードディスクドライブ8等の外部記憶装置に保存されているファイル、フォルダに関する情報を管理するもので、ハードディスクドライブ8に保存されているファイルやフォルダへのアクセスを提供するものである。
【0074】
ファイルシステムドライバ9は、電子計算機1に接続されたUSB規格準拠の記憶装置、例えばフラッシュメモリ17、へのアクセスも提供する。このアクセスは、オペレーティングシステム5のMass Storage Class用のドライバ(図示せず)を介して行われる。また、アプリケーションプログラム41は、カーネルモード44で動作するオペレーティングシステム5の一部のプログラムをも意味する。
【0075】
ドライバウェア7は、アプリケーションプログラム41からデバイスドライバへアクセスするとき、また、デバイスドライバからアプリケーションプログラム41へデータを送信するときに、共通のインターフェースを提供する。暗号化部54は、通信するデータを暗号化するためのものである。復号化部55は、暗号化されたデータを復号化するためのものである。また、ドライバウェア7は、メディアドライブ用デバイスドライバ6を制御するためのインターフェース制御部C1を有する。
【0076】
ドライバウェア7は、ネットワークドライバ14aを制御するためのネットワーク制御部C2を有する。ドライバウェア7は、ファイルシステムドライバ9を制御するためのファイルシステム制御部C3を有する。制御部52は、インターフェース制御部C1、ネットワーク制御部C2、ファイルシステム制御部C3等のドライバウェア7の他の部を制御し、監視するためのもので、ドライバウェア7の中核部である。
【0077】
ドライバウェア7のインターフェース制御部C1、ネットワーク制御部C2、ファイルシステム制御部C3等は、電子計算機1のデバイスドライバを制御することで、最終的には、電子計算機1に接続又は内蔵されているデバイスを制御するものと理解することができる。つまり、電子計算機1に接続又は内蔵されているデバイスを制御するためには、既存のデバイスドライバを利用している。ドライバウェア7は、デバイスドライバがオペレーティングシステム5の他の構成部分との通信しているインターフェースをカーネルモードで制御している。
【0078】
〔リムーバブルメディア3の構成、規格について〕
図5には、リム―バブルメディア3の概要を例示して図示している。リム―バブルメディア3は、基本的には、円形で、薄い厚さの板状のものであり、電子データは、その中心点を中心とする円又はスパイラル上のトラック3a上に書き込まれる。基本的に、リム―バブルメディア3には、その内側のトラックから外側のトラックに向かってデータを書き込みする。
【0079】
リム―バブルメディア3に書き込まれた一連のデータは、セッションと呼ばれている。セッションは、データの書き込みと読み込みの最小単位となるセクターからなる。セクターは、複数のバイトをまとめたものである。リムーバブルメディア3にアクセスするときは、セクター単位で行われる。各セッションの先頭の位置からセクターごとに順番に番号付けている。用語としては、物理セクターと論理セクターがあるが、物理セクターは、リムーバブルメディア3内の物理的な区切りであり、ユーザデータ以外に同期信号やアドレス、巡回冗長検査(CRC:Cyclic Redundancy Check)等の検査、復号用データが含まれる。そして、物理アドレスで場所を指定する。
【0080】
論理セクターは、ユーザデータが書き込まれる領域を指すもので、1つ物理セクター又は複数の物理セクターからなる。1つの物理セクターにユーザデータが入り切れない場合、ユーザデータが複数の物理セクターにまたがって記録され、論理セクターは、複数の物理セクターからなる。通常、メディアドライブ2とのやり取りは、この論理セクターを用いる。その理由は、メディアドライブ2内でデータの読み取りエラーの訂正処理等の基本的な処理をしてくれるためである。よって、本実施の形態においては、特段の指摘が無い限り、セクターというと論理セクターを意味する。
【0081】
ISO9660の論理セクターの容量は、2048バイト数かそれの2のn乗である。1つのセッションは、記録開始を示すリードインゾーン、実際のデータが記録された領域であるデータゾーン、及び、記録終了を示すリードアウトゾーンから構成される。リードインゾーンは、システムエリアとも呼ばれ、最初の16セクター分のデータである。リードインゾーンは、セッションの再生に必要なトラック数、各トラックの開始時間、各トラックの種類、等のTOC(Table Of Contents)情報を記録した領域である。
【0082】
リードアウトゾーンは、セッションのデータが終了したことを示す情報を記録するもので、ほとんど無意味のデータが記録されることが多い。複数のセッションの場合は、
図5に例示したように、最初のセッションのリードアウトゾーンの後ろに次のセッションのリードインゾーンが記録される。
図5に図示したように、リムーバブルメディア3は、その一番内側のトラックから、第1セッションのリードインゾーン、第1セッションのデータゾーン、第1セッションのリードアウトゾーン、そして、第2セッションのリードインゾーンと続けて記録される。
【0083】
リム―バブルメディア3には、電子データは、第1セッションから、最後のセッションである第nセッションに書き込まれる。リムーバブルメディア3は、光学メディアの場合は、トラック上に一回書き込みしたデータは、消すことができないため、再度書き込みすると、前回書き込みしたデータも含めて、新規のセッションとして書き込みする。よって、リムーバブルメディア3は、新規のファイルを追加しなくとも、書き込みを繰り返すと、メディアの残り容量がだんだん少なくっていく。
【0084】
図6と
図7は、セッションの内部構造例を図示している。具体的には、
図6は、ISO9660形式で作成された、シングルセッションのリムーバブルメディア3の構造を示す概念図であり、
図7は、ISO9660形式で作成された、マルチセッションのリムーバブルメディア3の構造を示す概念図である。
図6の例では、全体として、1セッションからなっている。実際は、音楽を記録したCD等は全体で、1セッションからなることが多い。データ記録型のCDやDVDは、マルチセッションが多い。特に、追記型の場合は、マルチセッションになる。
【0085】
電子データを追加して書き込みするリムーバブルメディア3の場合は、
図7に図示したように、各セッションが連続して書き込まれ、互いに参照するようになっている。
図5、
図6、及び
図7の例は、ISO9660形式のものであるが、リムーバブルメディア3の記録データの記録標準は、関係の業界団体や国際機関等に規定されており、規格の詳細については各団体の開示資料や他の資料を参照すると良い。ISO9660形式は、リムーバブルメディアの規格として国際的に広く普及している。
【0086】
ISO9660は、CD−R、CD−RWで使われることが多く、主に、ディスク形式で、「ボリューム記述子(Volume Descriptor、以下、VDと言う。)」で管理されている。VDには、PVD(Primary Volume Descriptor=基本ボリューム記述子)、SVD(Supplementary Volume Descriptor=副ボリューム記述子)、VPD(Volume Partition Descriptor=ボリューム区画記述子)等があり、それぞれに論理セクターの番号が決まっている。ISO9660は、ファイル名が64バイト(32文字)まで使用可能である。
【0087】
このように、ISO9660には、ファイル名等に強い制限があるため、他のファイルシステムの情報をもれなく収容するためには、ISO 9660を拡張し、例えば、UNIX(POSIX)(登録商標)のファイルシステムの情報を収容するための仕様であるRock Ridge Extensions、Windows 95やWindows NTの長いファイル名を収容するための仕様であるRomeo Extensions、長いファイル名にUnicodeを使用する仕様であるJoliet Extensions(以下、Joliet形式という。)が制定されて利用されている。
【0088】
Joliet形式は、1文字2バイトで表現するUnicodeを採用し、128バイト(64文字)までのファイル名を使用できるように、ISO9660形式を拡張した形式である。Joliet形式のPVDには、ボリュームの属性、ルートディレクトリの位置、パステーブルの位置等が記述されている。ISO9660形式の場合、
図6に図示したように、データゾーンは、VD、パスデーブル、ディレクトリ、データからなる。VDの先頭には、PVDが位置する。マルチセッションの場合は、データゾーンの構成は、
図7に図示したように、同じである。
【0089】
PVDは、シングルセッションディスクの場合は、リムーバブルメディア3の第1トラックのセクター番号16にある。言い換えると、PVDは、リムーバブルメディア3の先頭から数えて論理セクターの17番目にある。マルチセッションディスクの場合は、最新のPVDは、最終セッションの先頭の位置から数えて17番目の論理セクターにある。マルチセッションディスクの場合は、データを追記して書き込みするごとに、セッション単位で追加する。
【0090】
このため、前に書き込まれたセッションを削除できない、上書きできないため、ディスクに関する最新の情報は、常に最終セッションに書き込まれる。最終セッションより前のセッションは、
図7に図示した第1セッションのように、PVDとパステーブルがあるが、これは、第2セッションの情報を含めないため利用されない。マルチセッションディスクは、追加して書き込みを行う毎に、最新のPVDを最終セッションに書き込んでいる。言い換えると、マルチセッションの場合は、PVDに関する最新のデータは、最終セッションに書き込まれるので、読み込みするときも最終セッションのデータを読み込む。
【0091】
追記した書き込みを行うときは、最終セッションの先頭から、最新のPVDとパステーブルを書き込みする。この最新のPVDとパステーブルは、その前のセッションのPVDとパステーブルを、最終セッションのデータで更新したものである。実際のデータに関しては、最終セクションに書き込まれたユーザデータは、追加して書き込みされて部分のみである。その前のセッションのデータは、そのまま利用される。しかし、最新のPVDとパステーブルで、その位置を指定している。
【0092】
言い換えると、追記前のユーザデータは、この最終セクションより前のセッションに記録されており、最終セクションのパステーブルからこれらの前のセッションを参照するようにしている。例えば、
図7に示したように、第2セッションのPVDは、第2セッションのパステーブルの位置をしてする。第2セッションのパステーブルには、第1セッションのデータ、第2セッションのデータの両方の位置情報が入っている。第2セッションを書き込みするとき、削除された第1セッションのファイルに関しては、それに関するディレクトリ情報や位置情報は、第2セッションのパステーブルに入れない。
【0093】
これは、この削除された第1セッションのファイルは、リムーバブルディスクから削除されるものではなく、最新のパステーブルには入れないで、ただ読めないだけである。PVDは、ボリュームの属性、ルートディレクトリの位置、パステーブルの位置、パステーブルの大きさ、ボリュームの更新情報等が記述されるものである。パステーブル(Path Table)は、ボリューム中のディレクトリの情報があるレコードの先頭位置、ボリューム中の全てのディレクトリやファイルの名、その位置、親ディレクトリ等を並べたテーブルである。
【0094】
パステーブルには、L形とM形がある。両者は基本的に同じものであるが、記録される数値のバイトオーダーが異なる。通常、リムーバブルメディア3には、両方のパステーブルが存在し、読み出すシステムが都合の良い方を使えるようになっている。通常は、L形のパステーブルを利用するので、パステーブルというとは、本実施の形態で特段に指定が無い限りL型パステーブルを指す。パステーブルの位置は、ボリューム記述子群の直後に置かれる。ディレクトリの位置は、パステーブルの直後に置かれる。
【0095】
ディレクトリは、一般のファイルシステムと同様、ファイルやサブディレクトリに関する情報からなる。ディレクトリには、ファイル識別子/ディレクトリ識別子、ファイル/ディレクトリが記録された位置の先頭位置、ファイルフラグ、記録日時、その他等のデータが書き込まれる。ここで、ファイル識別子/ディレクトリ識別子は、ファイル名又はディレクトリ名である。ファイル識別子は、「ファイル名.ファイル拡張名;ファイル版数番号」いう形式です。
【0096】
データ長は、データが書き込まれたデータ量、言い換えると、メディアに占めるバイト数である。ファイルフラグは、ファイル/ディレクトリの区別、隠し属性、関連ファイルの有無、パーミッションの有無等の各種属性データである。マルチセッションの例の
図7では、第2セッション以後になると、基本的に第1セッションのデータを継承していく。第2セッションのパステーブルは、第1セッションのパステーブルを参照してこれを最新情報で更新して記録されたものである。
【0097】
まず、リムーバブルメディア3からデータを読み込みするとき、まず、VDのPVDからパステーブルの場所を取得する。これは、L型パステーブルの先頭位置(LBN)である。そして、このパステーブルの位置に移動して、パステーブルに書かれたディレクトリ/ファイルの識別子の内容から、ディレクトリやファイルのデータを取得する。ここでは、ディレクトリやファイルが記録されたセクターの先頭位置、その大きさ等のデータを取得する。この取得した位置に移動して、実際のファイルの記録位置からファイルを読み取る。
【0098】
このように、リムーバブルメディア3からファイルを読み取るのである。ISO9660及びJoliet形式を策定している団体のホームページ等から、ISO9660及びJoliet形式のデータ構造を閲覧することができるが、本発明を理解する上で利便性を考え、以下の各表は、データ構造を示す。リムーバブルメディア3(CD)からログファイル情報を取得するために、必要なデータ構造は次の通りであり、特に関連性があるものは太字で強調している。
【0099】
表1は、ISO9660及びJoliet形式のPVDの構造の一部を示す表であり、この表の第1欄は、リムーバブルメディア3の論理セクターのアドレスを示している。ここでは、論理セクターは1乃至複数である。第2欄は、第1欄の論理セクターの大きさを、第3欄は、その論理セクターに書き込まれるデータの型を、第4欄はそのデータの名称を、第5欄はそのデータの内容、言い換えると取得できる値、を示している。PVDは基本的に2048セクターからなる。ここでは、本発発明に関係があるもののみを例示している。
【0100】
例えば、PVDの論理セクターの140〜147番目に記載されたパステーブルの先頭位置は、パステーブルから情報を取得するために最重要な値である。
【0102】
表2は、ISO9660及びJoliet形式のパステーブルの内容、通常PTRの構造を示す表であり、この表の第1欄は、この表の第1欄は、リムーバブルメディア3の論理セクターのアドレスを示している。ここでは、論理セクターは1乃至複数である。第2欄は、第1欄の論理セクターの大きさを、第3欄は、その論理セクターに書き込まれるデータの型を、第4欄はそのデータの名称を、第5欄はそのデータの内容、言い換えると取得できる値、を示している。
【0103】
ここで、PTRの論理セクターの2〜5番目に記載されたディレクトリの先頭位置は、ディレクトリ情報を取得するために最重要な値である。PTRの論理セクターの8番目以後は、ディレクトリ識別子が入っている。PTRは可変長ブロックで、レコード内の先頭の「LEN_DI+8バイト」でブロック長が求まる。PTRの先頭は、ルートディレクトリを示し、このレコードから順に、終わりまで参照する。PTRの終わりは、PVD内のオフセット132〜135パステーブルサイズから算出する。
【0105】
表3は、ISO9660及びJoliet形式のディレクトリ(DR)の構造を示す表である。このディレクトリは、
図6、7に図示したディレクトリに該当し、上述のパステーブルの2〜5番目の論理セクターに記録されたものである。この表の第1欄は、この表の第1欄は、リムーバブルメディア3の論理セクターのアドレスを示している。ここでは、論理セクターは1乃至複数である。第2欄は、第1欄の論理セクターの大きさを、第3欄は、その論理セクターに書き込まれるデータの型を、第4欄はそのデータの名称を、第5欄はそのデータの内容、言い換えると取得できる値、を示している。
【0106】
ここで、本発明にとっては、DRの論理セクターの10〜13番目に記録されたディレクトリ又はファイル本体の大きさ、25番目に記録されたファイルフラグ、33番目以後に記録されたファイル/ディレクトリ識別子が重要である。
【0108】
表4は、ISO9660及びJoliet形式のFFの構造を示す表である。この表のFFは、上述の表3のDRの25番目の論理セクターに記録されたファイルフラグの内容である。この表の第1欄は、論理セクター番号を、第2欄はその名称を、第3欄はそのデータの内容、取得できる値を示している。ここでは、FFの最初の2つの値である可視ファイルか不可視ファイルかを示す「Existence」と、ファイルかディレクトリかを示す「Directory」の値が重要である。
【0110】
次に、リムーバブルメディア3の記録履歴を取得する流れの詳細な手順を、
図8のフローチャートを参照しながら、説明する。まず、ドライバウェア7が記録履歴の取得を開始すると、表1に示した通り、最終セッションの論理セクターの16番目より、PVDの内容を取得する(ステップ100)。PVDの内部構造を表1に示している。そして、ドライバウェア7は、PVDの情報を分析し、PVDの情報から、パステーブルの先頭位置を取得する(ステップ101)。
【0111】
パステーブルの先頭位置は、PVDの140−143番目、144−147番目の論理セクターに記録されている(表1を参照。)。その後、この取得したパステーブルの先頭位置に移動し、パステーブルの情報を取得し始める。パステーブルの構造は表2に示している。パステーブルは、リムーバブルメディア3に記録されたディレクトリやファイルのパスを示すものである。ドライバウェア7は、パステーブルの2〜5番目の論理セクターに記録されたディレクトリの先頭位置を取得する(ステップ102)。
【0112】
このディレクトリの先頭位置は、ディレクトリやファイルの情報格納した、表3のDRの先頭位置である。そしてドライバウェア7は、このDRの中からディレクトリやファイルに関する情報を順番に取得して分析していく。まず、最初の取得時は、DRの先頭位置から取得する。このディレクトリレコードの構造は、表3に示している。この取得したデータにファイル名があるかを確認し、なかったら、パステーブルの前回取得した位置の次の位置からデータを取得する(ステップ103)。
【0113】
これを、ファイル名が取得されるまで繰り返して行う(ステップ103、102)。そして、ディレクトリの先頭位置に移り、表3に示すように、その25番目の論理セクターに記録されたファイルフラグを確認する(ステップ104)。ファイルフラグについては、表4に示している。そして、各ファイル名を取得し、そこから、ファイル名、ファイルサイズ、ファイル日時、属性の取得、ファイルサイズの取得を行う(ステップ105、106)。
【0114】
その後、ファイル/ディレクトリ識別子より階層毎のディレクトリ名を取得する(ステップ107)。ステップ105で、ディレクトリの場合は、ファイル/ディレクトリ識別子より階層毎のディレクトリ名を取得するステップへ遷移する(ステップ105→ステップ107)。このようにドライバウェア7は、リム―バブルメディア3に記録された、データのファイルとディレクトリに関する情報を取得する。これらの一連の動作は、
図2のフローチャートでいうと、ステップ10に該当する。
【0115】
〔UDF(Universal Disk Format)形式〕
UDFは、主に、DVD−ROM、DVD−VIDEOで使われるディスク形式で、ISO 9660と同様にVDで管理されている。UDF形式で書き込みしたDVDメディアは、上述のISO9660及びJoliet形式とは異なり、PVDにパステーブルの情報が存在しない。その為、ボリューム構造識別から順に、ルートディレクトリのファイルエントリ位置を取得することで、ログファイル情報を取得する。
【0116】
UDF形式の場合は、PVDが最終セッションの論理セクターの32番目に書き込みされている。UDF形式で、書き込みしたDVDメディアからログファイル情報を取得するために、必要なデータ構造の一部を以下に示す。その他の情報については、UDF形式を制定している団体の公表資料に詳しく記述されている。表5の第1欄は、論理セクターの番号を、第2欄はその大きさを、第3欄は取るデータの型を、第4欄は名称を、第5欄はデータの内容つまり値を示している。
【0118】
表6には、UDF形式の場合のLVDの構造を示している。表6の第1欄は、論理セクターの番号を、第2欄はその大きさを、第3欄は取るデータの型を、第4欄は名称を、第5欄はそのデータの内容つまり値を示している。
【0120】
表7には、UDF形式の場合のFSDの構造を示している。表7の第1欄は、論理セクターの番号を、第2欄はその大きさを、第3欄は取るデータの型を、第4欄は名称を、第5欄はそのデータの内容つまり値を示している。
【0122】
表8には、UDF形式の場合のICBの構造を示している。表8の第1欄は、論理セクターの番号を、第2欄はその大きさを、第3欄は取るデータの型を、第4欄は名称を、第5欄はそのデータの内容つまり値を示している。
【0124】
表9には、UDF形式の場合のFIDの構造を示している。表9の第1欄は、論理セクターの番号を、第2欄はその大きさを、第3欄は取るデータの型を、第4欄は名称を、第5欄はそのデータの内容つまり値を示している。
【0126】
次に、UDF形式で書き込みをしたDVDのリムーバブルメディア3の記録履歴を取得する流れの詳細な手順を、
図9のフローチャートを参照しながら、説明する。この一連の動作は、
図2のフローチャートでいうと、ステップ10に該当する。まず、ドライバウェア7が記録履歴の取得を開始すると、表5に示した通り、最終セッションの論理セクターの32番目より、PVDを取得する(ステップ200)。そして、ドライバウェア7は、PVDの情報を分析し、PVDの情報から、LVDを取得する(ステップ201)。
【0127】
このLVDの構造は、表6に示している。ボリューム識別子番号は、LVDの位置を示している。LVDの情報からFSDの場所を取得する(ステップ202)。FSDのデータ構造は、表7に示している。FSDの情報から、ルートディレクトリのICBを取得する(ステップ203)。ICBのデータ構造は、表8に示している。この取得したデータにファイル名があるかを確認し、なかったら、前回取得した位置の次の位置からデータを取得する(ステップ204、203)。これを、ファイル名が取得されるまで繰り返して行う(ステップ204、203)。
【0128】
ファイル名が取得されたら、ICBのデータからファイルタイプを確認する(ステップ205、206)。ファイルタイプの判定で、ファイルである場合は、その各ファイル名を取得し、そこから、ファイル名、ファイルサイズ、ファイル日時、属性、ファイル属性の得を行う(ステップ206、207)。ファイルタイプの判定で、ディレクトリの場合は、FIDの情報から、ディレクトリのICBを取得する(ステップ206、208)。FIDデータ構造は、表9に示している。そして、ステップ203から繰り返す(ステップ209)。
【0129】
〔メディア排出要求の制御例〕
ここで、メディア排出要求の制御例で利用されるコマンドを例示する。メディア排出要求の発行は、ライティングソフトウェア4がIOCTLを発行することで行われる。このIOCTLとは、input/output control(入出力制御又は入出力管理)の略で、アプリケーションプログラムがデバイスドライバを制御するためと、デバイスドライバと通常のデータの読み書きの流れの外で通信するために用意されたシステムコールのことである。IOCTLは、オペレーティングシステム5が標準で備えている。
【0130】
IOCTLは、ライティングソフトウェア4から発行されて、オペレーティングシステム5のWin32等のサブシステム45(
図4を参照。)、エグゼキュティブ46の入出力マネージャ(以下、I/Oマネージャという。)、ドライバウェア7、メディアドライブ用デバイスドライバ6の順番で経由し、メディアドライブ2へ送信される。IOCTLは、具体的に、IOCTL_SCSI_PASS_THROUGH、又は、IOCTL_SCSI_PASS_THROUGH_DIRECT等のSCSIコマンドである。特に、CD又はDVDのメディア排出のSCSIコマンドは、「SCSIOP_START_STOP_UNIT」である。
【0131】
メディアドライブ2へ送出するCDB(Command Descriptor Block)内に記述されるSCSIOP_START_STOP_UNIT命令(Operation code=1Bh)は、SCSIディスクドライブ等の回転デバイスを制御する命令で、リムーバブルメディア3を排出又はロードするときもこの命令で指示する。SCSIOP_START_STOP_UNIT命令のCDBデータのLoEjビットが1だと「Eject」命令になり、リムーバブルメディア3を排出する。
【0132】
本実施の形態の例では、ドライバウェア7は、この「SCSIOP_START_STOP_UNIT」を受信し(
図2のステップ8を参照。)、「Eject」の情報を初期化し書き換えることで、リムーバブルメディア3をメディアドライブ2から取り外せなくする。これにより、リムーバブルメディア3を排出する命令が、メディアドライブ2へ送信されない。その後、ドライバウェア7は、ライティングソフトウェア4へ排出成功を示す成功通知を返す。
【0133】
具体的には、ライティングソフトウェア4は、
「IOCTL_CDROM_EJECT_MEDIA/IOCTL_SCSI_PASS_THROUGH」要求(以下、IOCTL_xx要求という。)を発行する。
ドライバウェア7は、この要求を、
「IRP_MJ_DEVICE_CONTROL/IRP_MJ_INTERNAL_DEVICE_CONTROL」要求で受け取る。
【0134】
ドライバウェア7は、この要求を解析して、その中の「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ビットが「1」(Eject要求)であれば、「0」に書き換えて、メディアドライブ2へ送る。ドライバウェア7は、ライティングソフトウェア4へは、上記のIOCTL要求に対して、戻り値として「STATUS_SUCCESS」を返す。
【0135】
ドライバウェア7は、この成功通知の返信後、リムーバブルメディア3からファイル情報を取得するために、「SCSIOP_READ」コマンドを発行する。SCSIOP_READは、メディアドライブ用デバイスドライバ6へ送信されて、メディアドライブ用デバイスドライバ6がこの実行結果を、ドライバウェア7へ送信する。このコマンドの発行によって、リムーバブルメディア3に書かれているパステーブルの情報を読み込む。そして、パステーブルの情報を全て取得後、ドライバウェア7は、メディア排出要求の「SCSIOP_START_STOP_UNIT」を発行しリムーバブルメディアをイジェクトする。
【0136】
ドライバウェア7は、メディア排出要求の「SCSIOP_START_STOP_UNIT」命令を、アプリケーションプログラムインターフェース部51によって、エグゼキュティブ46のI/Oマネージャから取得する。このとき、ドライバウェア7は、I/Oマネージャに対して、アプリケーションソフトウェアから要求を受けた際に、「IoSetCompletionRoutin()」関数を使い、完了ルーチンを設定する。アプリケーションプログラムインターフェース部51は、取得したメディア排出要求を、制御部52へ送信し、制御部52は、これを解析して、メディア排出要求を、一旦廃棄する。
【0137】
完了ルーチンの設定は次のように行われる。まず、制御部52は、「SCSIOP_START_STOP_UNIT」命令の実行結果が成功したことを示す通知を、発行する。つまり、ドライバウェア7は、ライティングソフトウェア4へは、IOCTL要求に対して、戻り値として「STATUS_SUCCESS」を返す。アプリケーションプログラムインターフェース部51は、これを、I/Oマネージャへ送信し、最終的に、ライティングソフトウェア4へ送信される。その後、制御部52は、「SCSIOP_READ」コマンドを発行し、インターフェース制御部C1を介して、メディアドライブ用デバイスドライバ6へ送信する。メディアドライブ用デバイスドライバ6は、「SCSIOP_READ」コマンドを受信する。
【0138】
メディアドライブ用デバイスドライバ6は、「SCSIOP_READ」コマンドを受信したら、リムーバブルメディア3から、そのPVD、パステーブル、ディレクトリを参照し、それに格納されているファイルやディレクトリに関するデータを取得して、返信する。取得データは、
図6に示したようなパステーブルとディレクトリ情報である。これのファイルやディレクトリに関するデータは、インターフェース制御部C1を介して制御部52へ送信され、解析される。制御部52は、これらのデータをログ取得部53へ送信する。ログ取得部53は、ファイルやディレクトリに関するデータを取得する。
【0139】
ログ取得部53は、これらのデータを分析して、リムーバブルメディア3に格納されているファイルやディレクトリのフルパスを含めた名前、サイズ、属性、作成日、更新日、可視ファイルか隠しファイルかの属性情報等を抽出し、記録履歴として出力する。例えば、「\abc\filename.txt 123,456bytes 2012/07/17 12:34:56」のような形式でファイルに出力する。この記録履歴は、更に、制御部53、ファイルシステム制御部C3を介して、ハードディスクドライブ8又はフラッシュメモリ17等に記録される。
【0140】
また、この記録履歴は、暗号化部54によって暗号化され、暗号化された記録履歴はネットワーク制御部C2で通信可能な状態の送信パケットに加工されて、ネットワークカード14から、ネットワーク16上の指摘されたアドレスに送信されることができる。この指定されたアドレス先は、ネットワーク上のサーバ、電子計算機等の任意の装置であることができる。この記録履歴の取得が終了すると、制御部52は、メディア排出要求の「SCSIOP_START_STOP_UNIT」命令を発行し、インターフェース制御部C1を介して、メディアドライブ用デバイスドライバ6へ送信する。
【0141】
メディアドライブ用デバイスドライバ6へは、「SCSIOP_START_STOP_UNIT」命令を受信すると、メディアドライブ2へ送信し、メディアドライブ2からリムーバブルメディア3を排出させる。そのメディアドライブ用デバイスドライバ6は、その成功した旨の通知へ、ドライバウェア7へ送信する。
【0142】
〔第2の実施の形態〕
以下、本発明の第2の実施の形態について説明する。本第2の実施の形態は、上述の第1の実施の形態と基本的に同じであり、以下は、その異なる部分のみを説明する。本発明の第2の実施の形態においては、リムーバブルメディア3として、Blu-ray Disk (以下、BDという。)を例に説明する。
【0143】
本発明の第2の実施の形態の電子計算機1は、メディアドライブ2のリムーバブルメディア3に、電子データを書き込みするとき、その履歴を取得するものである。具体的には、電子計算機1は、電子計算機1上で動作するアプリケーションプログラムであるライティングソフトウェア4がリムーバブルメディア3に電子データを記録するとき、その記録履歴を取得するものである。
【0144】
Blu-rayディスクは、ファイルシステムとして、UDF(Universal Disk Format)規格を採用している。このUDF規格は、上述のDVDディスクで採用された光ディスク用のファイルシステムである。Blu-rayディスクに採用されたUDF規格は、Windows係、UNIX系、MacOS等に対応しており、オペレーティングシステムに依存しない特長をもつ。詳細には、UDFはECMA-167の規格に準じ、この規格は、DVDディスクやBlu-rayディスク等で効率よく利用することを目的として定めている。
【0145】
Blu-rayディスクの主な特徴は、メタデータパーティションのサポートである。メタデータパーティションとは、UDF2.5規格で採用されたメタデータというエラーの冗長性を高める仕様を利用するものである。ディレクトリ情報を始め、ディスク上でファイルを管理するために必要なデータを複数に保持する。Blu-rayディスクは、1枚の物理ディスクの中で、ボリュームとパーティションの間に、メタデータパーティションを持つ。そのため、ディスクからファイルを辿る方式が変更となる。
【0146】
これは、DVDディスクが1つのボリューム内に1つのパーティションを持ち、その中にファイル管理情報とファイルデータを格納するのと違うものである。以下は、UDF規格の一部の情報を例示するが、詳細な情報は、UDF規格から参照する。
【表10】
【0147】
次に、UDF形式で書き込みをしたBlu-ray ディスクのリムーバブルメディア3の記録履歴を取得する流れの詳細な手順を、
図10のフローチャートを参照しながら、説明する。
図10のフローチャートは、上述のDVDの例を示す
図9のフローチャートと基本的に同じであるが、
図9のフローチャートのステップ202とステップ203に替わって、ステップ202a、ステップ203a、ステップ203bが実行される。
【0148】
ドライバウェア7が記録履歴の取得を開始すると、最終セッションの論理セクターの32番目より、PVDを取得する(ステップ200)。そして、ドライバウェア7は、PVDの情報を分析し、PVDの情報から、LVDを取得する(ステップ201)。
このLVDの構造は、次の表11に示している。
【表11】
【0149】
LVDの情報からMDF(Meta Data File )場所を取得する(ステップ202a)。MDFのデータ構造を表すMetadata File extentは、次の表12に示している。
【表12】
【0150】
このMDFの情報から、AD(Allocation Descriptor)の場所を取得する(ステップ203a)。ADのデータ構造は、次の表13に示している。ADは、ルートディレクトリの位置を表し、全てのファイルやディレクトリにアクセスする場合の起点となるAllocation Descriptorを示す。
【表13】
【0151】
そして、ADの情報から、ルートディレクトリのICBを取得する(ステップ203b)。この取得したデータにファイル名があるかを確認し、なかったら、前回取得した位置の次の位置からデータを再取得する(ステップ204→203a)。これを、ファイル名が取得されるまで繰り返して行う(ステップ204→203a→203b→204)。
【0152】
ファイル名が取得されたら、ICBのデータからファイルタイプを確認する(ステップ205、206)。ファイルタイプの判定で、ファイルである場合は、その各ファイル名を取得し、そこから、ファイル名、ファイルサイズ、ファイル日時、属性、ファイル属性の得を行う(ステップ206、207)。ファイルタイプの判定で、ディレクトリの場合は、FIDの情報から、ディレクトリのICBを取得する(ステップ206、208)。FIDデータ構造は、次の表14に示している。そして、ステップ203から繰り返す(ステップ209)。
【0154】
〔Blu-rayディスクにおけるUDF〕
上述したように、Blu-rayディスクは、UDF規格に準拠している。以下のその基本構造について簡単に説明する。Blu-rayディスクでは、UDF 2.5で規格化されたメタデータを採用する。特長は、データを冗長化することでアクセスエラーに対する耐性を高めることである。これが、DVDディスクとの大きな違いとなる。Blu-rayディスクの基本構成を
図11に図示している。また、Blu-rayディスクの構成は、次の表15及び表16に示している。
【0156】
Volume Recognition Sequenceは、ディスク全体に関わるボリューム情報である。媒体種別やファイルシステム形式など光ディスクの複数規格において共通データを含み、複数のVolume Structure Descriptorで構成する。Volume Recognition Sequenceは、ディスクの先頭から16セクター目より始まる。Volume Structure Descriptor (VSD)の共通形式を次の表17に示す。
【表17】
【0157】
Partition Maps(type 1)は、Blu-rayディスクで採用するmetadata partitionを示すもので、次の表18に示している。
【表18】
【0158】
Partition Descriptorは、ディスク上のパーティションのサイズと位置を表す。その詳細は、表19に示している。
【表19】
【0159】
以下、Blu-rayディスクのUDFデータ構造から、ファイル、ディレクトリを求める方法について記述する。
〔メタデータ情報の先頭の求め方〕
Blu-rayディスクのAnchor Volume Descriptorを起点として、メタデータ情報を求めるまでの手順を
図12に図示した。図中の「#○○○」は、セクター番号を示す。
【0160】
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を利用して、メタデータ情報の先頭へ移動する。
【0161】
次の
図12で示したメタデータ方から、ルートディレクトリを求める手順を
図13に図示している。#288セクターのMetadata FileのAllocation descriptorsより、自己から#320 Allocation Descriptorへの相対セクター番号を求める。この求めた値が、パーティションの先頭位置を示す。次に、Allocation DescriptorのRoot Directory ICBより、ルートディレクトリの管理データを求める。そして、Root Dir ICB (Extended File Entry) のAllocation descriptorsより、ルートディレクトリ情報を求める。