(57)【要約】【課題】より簡便に記憶メディアの管理情報の不整合を検出する。【解決手段】ＦＡＴファイルシステム、ＩＳＯ９６６０ファイルシステム又はＵＤＦファイルシステムに従ってデータが格納されている記憶メディア２０からデータを読み出して、印刷を行うプリンタ１である。ファイルシステムに従って記憶メディア２０にアクセスするファイルシステム管理部７１と、ファイルシステム管理部７１が読み出したファイルに基づいて印刷を実行する印刷機構１０と、を備える。サブディレクトリの管理領域内のカレントディレクトリのディレクトリエントリ及び親ディレクトリのディレクトリエントリの少なくともいずれか一方が存在しないときは、ファイルシステム管理部７１が指定されたファイルの検索を中止する。【選択図】図１
2010055319.tif 000002
【特許請求の範囲】
【請求項１】
ＦＡＴファイルシステム、ＩＳＯ９６６０ファイルシステム又はＵＤＦファイルシステムに従ってデータが格納されている記憶メディアからデータを読み出して、印刷を行うプリンタであって、
ＦＡＴファイルシステム、ＩＳＯ９６６０ファイルシステム又はＵＤＦファイルシステムに従って前記記憶メディアにアクセスするファイルシステム管理手段であって、指定されたファイルを前記記憶メディアのディレクトリエントリに従って検索し、読み出すファイルシステム管理手段と、
前記ファイルシステム管理手段が読み出したファイルに基づいて印刷を実行する印刷手段と、を備え、
前記ファイルシステム管理手段が、前記指定されたファイルを検索しているときに、サブディレクトリを指すディレクトリエントリの内容に従って、前記サブディレクトリの管理領域へアクセスしたとき、前記サブディレクトリの管理領域内にカレントディレクトリを指すディレクトリエントリ及び親ディレクトリを指すディレクトリエントリが存在するか否かを判定し、少なくともいずれか一方が存在しないときは、前記指定されたファイルの検索を中止することを特徴とするプリンタ。
【請求項２】
前記記憶メディア内に記憶されているファイルリストを生成するリスト生成手段をさらに備え、
前記ファイルシステム管理手段は、前記リスト生成手段からの要求に応じて、前記記憶メディアに記憶されているディレクトリエントリを読み出し、読み出したディレクトリエントリを解析して、前記記憶メディア内に記憶されているファイル及びサブディレクトリに関する情報を把握し、把握したファイル及びサブディレクトリに関する情報を前記リスト生成手段へ通知するものであり、
前記ディレクトリエントリの解析しているときに、サブディレクトリを指すディレクトリエントリの内容に従って、前記サブディレクトリの管理領域へアクセスしたとき、前記サブディレクトリの管理領域内にカレントディレクトリを指すディレクトリエントリ及び親ディレクトリを指すディレクトリエントリが存在するか否かを判定し、少なくともいずれか一方が存在しないときは、前記サブディレクトリは前記記憶メディア内に存在しないもとして扱うことを特徴とする請求項１記載のプリンタ。
【請求項３】
前記ファイルシステム管理手段は、前記カレントディレクトリを指すディレクトリエントリが存在する場合、前記カレントディレクトリを指すディレクトリエントリに含まれるカレントディレクトリのクラスタ番号が不整合であれば、前記指定されたファイルの検索を停止するか、または、前記サブディレクトリは前記記憶メディア内に存在しないもとして扱うことを特徴とする請求項１または２に記載のプリンタ。
【請求項４】
前記ファイルシステム管理手段は、前記親ディレクトリを指すディレクトリエントリが存在する場合、前記親ディレクトリを指すディレクトリエントリに含まれる親ディレクトリのクラスタ番号が不整合であれば、前記指定されたファイルの検索を停止するか、または、前記サブディレクトリは前記記憶メディア内に存在しないもとして扱うことを特徴とする請求項１または２に記載のプリンタ。
【請求項５】
ＦＡＴファイルシステム、ＩＳＯ９６６０ファイルシステム又はＵＤＦファイルシステムに従ってデータが格納されている記憶メディアから、ファイルシステム管理手段が読み出したファイルに基づいて印刷を行うプリンタにおいて、前記ファイルシステム管理手段を実現するためのコンピュータプログラムであって、
前記ファイルシステム管理手段は、
ＦＡＴファイルシステム、ＩＳＯ９６６０ファイルシステム又はＵＤＦファイルシステムに従って前記記憶メディアにアクセスするファイルシステム管理手段であって、指定されたファイルを前記記憶メディアのディレクトリエントリに従って検索し、読み出す処理と、
前記指定されたファイルを検索しているときに、サブディレクトリを指すディレクトリエントリの内容に従って、前記サブディレクトリの管理領域へアクセスしたとき、前記サブディレクトリの管理領域内にカレントディレクトリを指すディレクトリエントリ及び親ディレクトリを指すディレクトリエントリが存在するか否かを判定し、少なくともいずれか一方が存在しないときは、前記指定されたファイルの検索を停止させる処理とを行うことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶メディアから画像ファイルを読み出して印刷するプリンタに関する。
【背景技術】
【０００２】
記憶メディアに記録されている管理情報に基づいて記憶領域からデータを読み出す技術が知られている。管理情報としては、例えば、ＦＡＴファイルシステム、ＩＳＯ９６６０ファイルシステム又はＵＤＦファイルシステムの場合、ファイル及びサブディレクトリの格納場所を管理するための管理情報がディレクトリエントリに記憶されている。ディレクトリエントリは、一つのファイルあるいは一つのサブディレクトリに対してそれぞれ一つ存在し、かつ、サブディレクトリごとにまとめて配置されている。
【０００３】
例えば、あるファイル又はサブディレクトリへアクセスする場合、その対象となるファイル又はサブディレクトリのディレクトリエントリ内に記録されている「クラスタ番号」を参照する。この「クラスタ番号」の位置に、ファイルの実体（ファイル本体）や、ディレクトリ管理領域（そのサブディレクトリ内に存在するファイル及びサブディレクトリのディレクトリエントリが記録されている領域）が記録されている。
【０００４】
しかし、あるサブディレクトリを指し示すディレクトリエントリの内容が壊れており、現実とは整合していない不正なクラスタ番号が記録されていると、不正な領域をディレクトリ管理領域であるとして読込むことになる。この場合、ここで読み込んだ不正なデータをディレクトリエントリとして解析し、実際は存在しないファイルやサブディレクトリを見つけたと応答する可能性がある。
【０００５】
このような問題を解決するための技術が、例えば特許文献１に記載されている。
【特許文献１】特開２００７−２４５６０２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、特許文献１では、記憶メディアの管理情報の不整合を検出するために、ディレクトリエントリ及びＦＡＴテーブルの両方を用いている。
【０００７】
これに対して本発明は、より簡便に記憶メディアの管理情報の不整合を検出することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一つの実施態様に従うプリンタは、ＦＡＴファイルシステム、ＩＳＯ９６６０ファイルシステム又はＵＤＦファイルシステムに従ってデータが格納されている記憶メディアからデータを読み出して、印刷を行うプリンタであって、ＦＡＴファイルシステム、ＩＳＯ９６６０ファイルシステム又はＵＤＦファイルシステムに従って前記記憶メディアにアクセスするファイルシステム管理手段であって、指定されたファイルを前記記憶メディアのディレクトリエントリに従って検索し、読み出すファイルシステム管理手段と、前記ファイルシステム管理手段が読み出したファイルに基づいて印刷を実行する印刷手段と、を備え、前記ファイルシステム管理手段が、前記指定されたファイルを検索しているときに、サブディレクトリを指すディレクトリエントリの内容に従って、前記サブディレクトリの管理領域へアクセスしたとき、前記サブディレクトリの管理領域内にカレントディレクトリを指すディレクトリエントリ及び親ディレクトリを指すディレクトリエントリが存在するか否かを判定し、少なくともいずれか一方が存在しないときは、前記指定されたファイルの検索を中止する。
【０００９】
これにより、記憶メディアからファイルを読み出すときに、ディレクトリエントリのデータ不整合を検出することができ、ディレクトリチェンジをするときなどにループしてしまうことを未然に防止できる。
【００１０】
好適な実施形態では、前記記憶メディア内に記憶されているファイルリストを生成するリスト生成手段をさらに備え、前記ファイルシステム管理手段は、前記リスト生成手段からの要求に応じて、前記記憶メディアに記憶されているディレクトリエントリを読み出し、読み出したディレクトリエントリを解析して、前記記憶メディア内に記憶されているファイル及びサブディレクトリに関する情報を把握し、把握したファイル及びサブディレクトリに関する情報を前記リスト生成手段へ通知するものであり、前記ディレクトリエントリの解析しているときに、サブディレクトリを指すディレクトリエントリの内容に従って、前記サブディレクトリの管理領域へアクセスしたとき、前記サブディレクトリの管理領域内にカレントディレクトリを指すディレクトリエントリ及び親ディレクトリを指すディレクトリエントリが存在するか否かを判定し、少なくともいずれか一方が存在しないときは、前記サブディレクトリは前記記憶メディア内に存在しないもとして扱うようにしてもよい。
【００１１】
これにより、記憶メディア内のファイルのファイルリストを生成する際にもディレクトリエントリのデータ不整合を検出することができる。
【００１２】
好適な実施形態では、前記ファイルシステム管理手段は、前記カレントディレクトリを指すディレクトリエントリが存在する場合、前記カレントディレクトリを指すディレクトリエントリに含まれるカレントディレクトリのクラスタ番号が不整合であれば、前記指定されたファイルの検索を停止するか、または、前記サブディレクトリは前記記憶メディア内に存在しないもとして扱うようにしてもよい。
【００１３】
好適な実施形態では、前記ファイルシステム管理手段は、前記親ディレクトリを指すディレクトリエントリが存在する場合、前記親ディレクトリを指すディレクトリエントリに含まれる親ディレクトリのクラスタ番号が不整合であれば、前記指定されたファイルの検索を停止するか、または、前記サブディレクトリは前記記憶メディア内に存在しないもとして扱うようにしてもよい。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の一実施形態に係るプリンタについて、図面を参照して説明する。
【００１５】
図１は、本発明の一実施形態に係るプリンタの構成を示す機能ブロック図である。
【００１６】
プリンタ１は、外部に接続されている図示しないホスト装置からの印刷要求に従って印刷を実行するプリンタであってもよいし、ホスト装置に接続しなくとも単独で印刷実行可能なスタンドアロンタイプのプリンタであってもよい。
【００１７】
プリンタ１は、例えば、テキストファイルあるいは画像ファイルなどに基づいて印刷データを生成し、印刷用紙などの印刷媒体に印刷を行う印刷機構１０と、記憶メディア（例えば、コンパクトフラッシュ（登録商標）やＳＤカード）２０が挿入される記憶メディアスロット１５と、記憶メディアスロット１５に挿入された記憶メディア２０から画像ファイルなどのデータを読み出すコントローラ６０と、コントローラ６０によって読み出されたデータに基づく画像などの情報が表示される表示部４０とを備える。
【００１８】
本実施形態では、記憶メディア２０には、ＦＡＴファイルシステム、ＩＳＯ９６６０ファイルシステム又はＵＤＦファイルシステムに従ってデータが格納されている。なお、記憶メディア２０としては、どのような種類のメディアでも採用可能である。例えば、記憶メディア２０は、プリンタ１に内蔵されていても良いし、外付けされても良い。さらには、記憶メディア２０は、可搬型であっても非可搬型であっても良いし、接触式であっても非接触式であっても良い。より具体的には、例えば、記憶メディア２０は、ハードディスクドライブ、ＣＤドライブ、ＤＶＤ（Digital Versatile Disk）ドライブ、ＵＳＢメモリ、記憶装置及び表示部を備え該記憶装置内の画像ファイル（静止画と動画のどちらであっても良い）内の画像を表示部に表示する再生装置（例えば、iPOD（登録商標）、フォトビューワ（登録商標））のいずれであってもよい。ここで、記憶メディア２０には、例えば、サムネイル画像ファイル、本画像ファイルの２種類の画像ファイルが対応付けられて格納されていてもよい。なお、本画像ファイルとは、デジタルカメラで被写体が撮像されることにより得られる高解像度の画像ファイルのことである。サムネイル画像ファイルとは、本画像ファイルを間引くことにより得られる低解像度の画像ファイルのことである。
【００１９】
コントローラ６０には、例えば、ＣＰＵ５０と、メモリ５２と、Ｉ／Ｏインタフェース部８０とが備えられる。メモリ５２には、プリンタ１のファームウェア７０や、アプリケーションプログラム（以下、アプリケーション）５４等の種々のコンピュータプログラムが記憶されている。ＣＰＵ５０は、メモリ５２からファームウェア７０やアプリケーション５４等のコンピュータプログラムを読み込んで実行することができる。
【００２０】
Ｉ／Ｏインタフェース部８０は、記憶メディア２０や表示部４０に対するＣＰＵ５０のインタフェースとして機能する。また、Ｉ／Ｏインタフェース部８０は、記憶メディアスロット１５に記憶メディア２０が挿されたか否かを監視することができる。例えば、Ｉ／Ｏインタフェース部８０は、例えば、信号電圧の変化、或いは、機械式スイッチのオン／オフにより、記憶メディア２０の挿抜を検出することができる。Ｉ／Ｏインタフェース部８０は、記憶メディア２０が挿されたことを検出した場合、ファームウェア７０にそのことを通知することができる。
【００２１】
ファームウェア７０は、任意のタイミングで（例えば、記憶メディア２０が挿されたことの通知を受けたときに）、記憶メディア２０にアクセスし、記憶メディア２０に格納されているディレクトリエントリやＦＡＴテーブルを用いて、記憶メディア２０に格納されているファイルリストを生成したり、記憶メディア２０からデータを読み出したりすることができる。
【００２２】
ファームウェア７０は、例えば、ファイルシステム管理部７１及びファイルリスト生成部７３といったプログラムモジュール（機能モジュール）を有する。ファイルシステム管理部７１及びファイルリスト生成部７３が、ＣＰＵ５０によって実行されることにより、それぞれ以下に説明するような機能が実現される。
【００２３】
ファイルシステム管理部７１は、Ｉ／Ｏインタフェース部８０を介して記憶メディアスロット１５に挿入された記憶メディア２０に対して、ファイルシステムに従ってアクセスする。例えば、アプリケーション５４から、フルパス（ファイルの格納場所及びファイル名）でファイルを指定されると、ファイルシステム管理部７１がこの指定されたファイルの格納場所を、ファイルシステム（ここでは、ＦＡＴファイルシステム、ＩＳＯ９６６０ファイルシステム又はＵＤＦファイルシステム）に従って検索する。ファイルシステム管理部７１は、この検索の結果、指定されたファイルの格納場所を特定すると、その格納場所から指定されたファイル本体を読み出す。ファイルシステム管理部７１が読み出したファイル本体（例えば画像ファイルなど）が印刷機構１０へ渡されると、印刷機構１０は受け取ったファイルを印刷データに変換して、印刷を実行する。
【００２４】
また、ファイルシステム管理部７１は、ファイルリスト生成部７３からの要求に応じて、記憶メディア２０内のファイル及びディレクトリを検索して、ファイル及びディレクトリに関する情報を取得し、ファイルリスト生成部７３へ通知する。例えば、ファイルシステム管理部７１は、ファイルリスト生成部７３からの検索要求において指定されたディレクトリのディレクトリ管理部を検索し、そこに記録されているディレクトリエントリを読み出して、読み出したディレクトリエントリの内容を解析する。ファイルシステム管理部７１は、ディレクトリエントリの内容を解析して、指定されたディレクトリ内のサブディレクトリ及びファイルの属性（ファイル名、ファイルパス、データサイズ等）などのサブディレクトリ情報及びファイル情報を把握する。ここで把握したサブディレクトリ情報及びファイル情報がファイルリスト生成部７３へ通知される。
【００２５】
さらに、ファイルシステム管理部７１は、ファイルないしディレクトリの検索時に、記憶メディア２０に格納されているデータの不整合の有無を判定する。本実施形態では、例えば、ファイルシステム管理部７１が、サブディレクトリにデータの不整合があるか否かを判定する。そして、ファイルシステム管理部７１は、いずれかのサブディレクトリにデータの不整合を検出すると、その不整合があるサブディレクトリを無視する。つまり、その不整合があるサブディレクトリ及びそのサブディレクトリ配下のファイル及びサブディレクトリは、記憶メディア２０内に存在しないものとして扱われる。従って、ファイル検索中にデータの不整合が見つかると、ファイルの検索が中止される。
【００２６】
ファイルリスト生成部７３は、記憶メディア２０に保存されているファイルのファイルリストを生成する。例えば、ファイルリスト生成部７３は、ファイルシステム管理部７１に対して、ディレクトリを指定して、そのディレクトリ内のファイル及びディレクトリの検索要求を行う。ファイルリスト生成部７３は、この検索要求に対する応答として、ファイルシステム管理部７１から、指定したディレクトリ内に存在するサブディレクトリ及びファイルの情報を取得する。ここで、サブディレクトリが存在するときは、ファイルリスト生成部７３は、そのサブディレクトリについて、さらに上記と同様の検索要求をファイルシステム管理部７１に対して行う。ファイルリスト生成部７３は、すべてのサブディレクトリに対して上記の処理を繰り返して、記憶メディア２０に保存されているファイルの情報をディレクトリごとに取得して、ファイルリストを生成する。このファイルリストは、記憶メディア２０内のデータを管理するためのリストであり、生成されたファイルリストはメモリ５２に記憶される。生成されたファイルリストは、表示部４０に表示される。ユーザは、このファイルリストを参照して、印刷を行うファイルを選択することができる。
【００２７】
ここで、図２及び図３を参照して、ファイルシステム管理部７１及びファイルリスト生成部７３の処理について、詳細に説明する。
【００２８】
図２は、記憶メディア２０に生成されている論理的なディレクトリ構成の一例を示す。図３は、図２に示す論理構成のときに、記憶メディア２０に構成されている記憶領域を模式的に示す図である。
【００２９】
図２の例では、ルートディレクトリ２００の配下に、サブディレクトリＤＩＲ１が生成されている。サブディレクトリＤＩＲ１の配下には、画像ファイル（ＦＩＬＥ１１．ＪＰＧ、ＦＩＬＥ１１２．ＪＰＧ）が記憶されている。
【００３０】
図２のようなディレクトリ構成の場合、図３に示すように、論理的な２つのディレクトリ管理領域と、ファイル本体の記憶領域とが設けられる。
【００３１】
ルートディレクトリ管理領域３００には、ＤＩＲ１のディレクトリエントリ３０１が設けられている。例えば、ルートディレクトリ管理領域３００は、クラスタ番号「２」の領域に設けられているとする。
【００３２】
サブディレクトリＤＩＲ１の管理領域３１０は、カレントディレクトリ（“．”で示す）のディレクトリエントリ３１１と、親ディレクトリ（“．．”で示す）のディレクトリエントリ３１２と、ＦＩＬＥ１１．ＪＰＧ及びＦＩＬＥ１１２．ＪＰＧのそれぞれのディレクトリエントリ３１３，３１４とを有する。例えば、サブディレクトリＤＩＲ１の管理領域３１０は、クラスタ番号「４」の領域に設けられているとする。
【００３３】
ＦＩＬＥ１１．ＪＰＧのファイル本体はファイル本体の記憶領域３２０に、ＦＩＬＥ１１２．ＪＰＧのファイル本体はファイル本体の記憶領域３３０に、それぞれ記憶されている。例えば、ファイル本体の記憶領域３２０は、クラスタ番号「１０」の領域に設けられていて、ファイル本体の記憶領域３３０は、クラスタ番号「２０」の領域に設けられているとする。
【００３４】
ここで、各ディレクトリエントリ３０１，３１１〜３１４には、それぞれのディレクトリエントリが対象とするファイル又はディレクトリの「名称」、「属性」、「日付（作成日付、更新日付、アクセス日付）」、ファイル本体又はディレクトリ管理領域が記憶されている「クラスタ番号」、及びファイル又はディレクトリの「サイズ」が記憶されている。
【００３５】
従って、ＤＩＲ１のディレクトリエントリ３０１では、「名称」に“ＤＩＲ１”、「クラスタ番号」にＤＩＲ１のディレクトリ管理領域３１０が格納されているクラスタ番号“４”が設定されている。
【００３６】
また、ＤＩＲ１のディレクトリ管理領域３１０のカレントディレクトリのディレクトリエントリ３１１では、「名称」にカレントディレクトリを示す“．”、「クラスタ番号」に自分自身が格納されているクラスタ番号である“４”が設定されている。親ディレクトリのディレクトリエントリ３１２では、「名称」に親ディレクトリを示す“．．”、「クラスタ番号」に親ディレクトリ、すなわちルートディレクトリのディレクトリ管理領域３００内のＤＩＲ１のディレクトリエントリ３０１が格納されているクラスタ番号“２”が設定されている。
【００３７】
なお、上述のように、各ディレクトリエントリ３０１，３１１〜３１４の「クラスタ番号」はポインタの役割をしているので、図３では、このポインタを矢印で示している。
【００３８】
図２及び図３に示す状況において、例えば、アプリケーション５４から“￥ＤＩＲ１￥ＦＩＬＥ１２．ＪＰＧ”の読み出し要求を受けると、ファイルシステム管理部７１は、以下のような処理手順で所望のファイルを検索する。すなわち、ファイルシステム管理部７１は、ルートディレクトリ管理領域３００において、ルートディレクトリ配下のＤＩＲ１のディレクトリエントリ３０１を探す。そして、ファイルシステム管理部７１は、ＤＩＲ１ディレクトリエントリ３０１を参照して、ＤＩＲ１ディレクトリエントリ３０１に含まれている「クラスタ番号」“４”を読み出す。ファイルシステム管理部７１は、「クラスタ番号」“４”の領域にアクセスして、ＤＩＲ１のディレクトリ管理領域３１０に含まれているＦＩＬＥ１２のディレクトリエントリ３１４を探す。ファイルシステム管理部７１は、ＦＩＬＥ１２のディレクトリエントリ３１４を参照して、ＦＩＬＥ１２のファイル本体が格納されている「クラスタ番号」“２０”、及び「サイズ」を特定する。そして、ファイルシステム管理部７１は、「クラスタ番号」“２０”の領域にアクセスして、そこから「サイズ」で指定されたデータ量を、ＦＩＬＥ１２．ＪＰＧのファイル本体として読み出す。サブディレクトリの階層が３階層以上であるときも、上記と同様にしてファイルシステム管理部７１が、指定されたファイル本体を記憶メディア２０から読み出す。
【００３９】
同様に、図２及び図３に示す状況において、ファイルリスト生成部７３からディレクトリの検索要求を受けると、ファイルシステム管理部７１は、以下のような処理手順で指定されたディレクトリ内のサブディレクトリ及びファイルを検索する。例えば、ファイルリスト生成部７３の検索要求でルートディレクトリ２００が指定された場合、ファイルシステム管理部７１は、ルートディレクトリ管理領域３００において、ルートディレクトリ直下のディレクトリエントリ、つまりＤＩＲ１のディレクトリエントリ３０１を検出する。ファイルシステム管理部７１は、ＤＩＲ１のディレクトリエントリ３０１の内容を解析して、その解析結果をファイルリスト生成部７３へ通知する。さらに、ファイルリスト生成部７３からの検索要求でサブディレクトリＤＩＲ１が指定された場合、ファイルシステム管理部７１は、ＤＩＲ１のディレクトリエントリ３０１に含まれている「クラスタ番号」“４”の領域、つまり、ＤＩＲ１のディレクトリ管理領域３１０にアクセスする。ファイルシステム管理部７１は、ＤＩＲ１のディレクトリ管理領域３１０に含まれている各ディレクトリエントリ３１１〜３１４を検出する。ファイルシステム管理部７１は、各ディレクトリエントリ３１１〜３１４の内容を解析して、その解析結果をファイルリスト生成部７３へ通知する。
【００４０】
以上の手順は、データに不整合が生じておらず、正常にファイルを読み出すことができる場合、または正常にファイルリストが生成される場合の処理手順である。
【００４１】
ところで、ファイルシステム管理部７１がファイルまたはディレクトリを検索する際、ディレクトリエントリ内のポインタ（「クラスタ番号」）に従ってディレクトリ階層を辿るときに、何らかの理由で、その途中のいずれかのサブディレクトリのディレクトリエントリのデータで不整合が生じている場合、ディレクトリチェンジのループなどに入ってしまい、ハングアップして処理が正常終了できなくなることがある。
【００４２】
そこで、本実施形態では、ファイルシステム管理部７１が図４及び図５の処理手順に従って、ディレクトリエントリにおけるデータの不整合を検出する。
【００４３】
図４は、ファイルシステム管理部７１が、ファイルリスト生成部７３からディレクトリの検索要求を受けたときに行う、不整合判定処理１のフローチャートである。
【００４４】
まず、ファイルシステム管理部７１は、いずれかのサブディレクトリを指すディレクトリエントリから、そのサブディレクトリの管理領域へアクセスを開始する（Ｓ１１）。このとき、ファイルシステム管理部７１は、アクセス中のサブディレクトリの管理領域に、カレントディレクトリのディレクトリエントリが存在するか否かを判定する（Ｓ１２）。その結果、カレントディレクトリのディレクトリエントリが存在する場合は（Ｓ１２：Ｙｅｓ）、ファイルシステム管理部７１は、現在アクセス中のサブディレクトリの管理領域に、親ディレクトリのディレクトリエントリが存在するか否かを判定する（Ｓ１３）。なお、ステップＳ１２とＳ１３は、いずれを先に行っても良い。
【００４５】
これは、上記の例においては、ファイルシステム管理部７１がＤＩＲ１ディレクトリエントリ３０１の内容に従ってＤＩＲ１ディレクトリ管理領域３１０へアクセスを開始したときに、カレントディレクトリのディレクトリエントリ３１１が存在するか否かを判定する。そして、カレントディレクトリのディレクトリエントリ３１１が存在するときは、さらに、親ディレクトリのディレクトリエントリ３１２が存在するか否かを判定する。
【００４６】
親ディレクトリのディレクトリエントリが存在する場合は（Ｓ１３：Ｙｅｓ）、ファイルシステム管理部７１は、カレントディレクトリ及び親ディレクトリのディレクトリエントリ以外の他のディレクトリエントリの解析を行って、その結果をファイルリスト生成部７３へ通知する（Ｓ１４）。
【００４７】
ここで、カレントディレクトリのディレクトリエントリが存在しない場合（Ｓ１２：Ｎｏ）、及び親ディレクトリのディレクトリエントリが存在しない場合は（Ｓ１４：Ｎｏ）、いずれも、ファイルシステム管理部７１が、現在アクセス中のサブディレクトリのディレクトリ管理領域でデータの不整合が生じているとみなす。そして、これらの場合、ファイルシステム管理部７１は、現在アクセスしているサブディレクトリを無視する（Ｓ１６）。つまり、ファイルシステム管理部７１は、現在アクセスしているサブディレクトリのディレクトリ管理領域の解析処理を終了し、ファイルリスト生成部７３に対して、このサブディレクトリの存在を通知しない。
【００４８】
これにより、ファイルリスト生成部７３には、データの不整合が生じているサブディレクトリに関する情報が通知されない。従って、ファイルリスト生成部７３が生成するファイルリストに、ディレクトリエントリを用いた判定によって、データ不整合が生じているサブディレクトリ及びそれ以下のサブディレクトリ及びファイルを含めないようにすることができる。この結果、このファイルリストを表示部４０に表示させて、ユーザにファイルアクセスを許容すれば、不整合が生じているサブディレクトリに対するアクセスがなくなり、ハングアップするような事態を回避できる。
【００４９】
図５は、ファイルシステム管理部７１が、指定されたファイルの検索を行っている間に行う不整合判定処理２のフローチャートである。
【００５０】
まず、ファイルシステム管理部７１は、いずれかのサブディレクトリを指すディレクトリエントリから、そのサブディレクトリの管理領域へアクセスを開始する（Ｓ２１）。このとき、ファイルシステム管理部７１がサブディレクトリを指すディレクトリエントリが格納されているクラスタ番号を、メモリ５２に保存する（Ｓ２２）。
【００５１】
これは、上記の例においては、ファイルシステム管理部７１がＤＩＲ１ディレクトリエントリ３０１の内容に従ってＤＩＲ１ディレクトリ管理領域３１０へアクセスを開始したときに、ＤＩＲ１ディレクトリエントリ３０１の「クラスタ番号」“２”が、メモリ５２に保存される。
【００５２】
つぎに、ファイルシステム管理部７１は、アクセス中のサブディレクトリの管理領域に、カレントディレクトリのディレクトリエントリが存在するか否かを判定する（Ｓ２３）。カレントディレクトリのディレクトリエントリが存在する場合は（Ｓ２３：Ｙｅｓ）、ファイルシステム管理部７１が、カレントディレクトリのディレクトリエントリ内の「クラスタ番号」の正否（自分自身を指しているか否か）を判定する（Ｓ２４）。
【００５３】
これは、上記の例においては、カレントディレクトリのディレクトリエントリ３１１が存在するか否かを判定され、カレントディレクトリのディレクトリエントリ３１１が存在するときは、カレントディレクトリのディレクトリエントリ３１１内の「クラスタ番号」が“４”であるか否かが判定される。
【００５４】
カレントディレクトリのディレクトリエントリ内の「クラスタ番号」が自分自身を指している場合には（Ｓ２４：Ｙｅｓ）、ファイルシステム管理部７１は、現在アクセス中のサブディレクトリの管理領域に、親ディレクトリのディレクトリエントリが存在するか否かを判定する（Ｓ２５）。親ディレクトリのディレクトリエントリが存在する場合（Ｓ２５：Ｙｅｓ）、ファイルシステム管理部７１は、親ディレクトリのディレクトリエントリ内の「クラスタ番号」が、親ディレクトリを指しているか否かを判定する（Ｓ２６）。このとき、ファイルシステム管理部７１は、ステップＳ２２でメモリ５２に保存された「クラスタ番号」と、親ディレクトリのディレクトリエントリ内の「クラスタ番号」とを比較しても良い。
【００５５】
これは、上記の例においては、親ディレクトリのディレクトリエントリ３１２が存在するか否かが判定される。親ディレクトリのディレクトリエントリ３１２が存在するときは、親ディレクトリのディレクトリエントリ３１２内の「クラスタ番号」が、メモリ５２に保存されているサブディレクトリのディレクトリエントリのクラスタ番号、すなわち“２”であるか否かが判定される。
【００５６】
親ディレクトリのディレクトリエントリ内の「クラスタ番号」が、親ディレクトリを指しているときは（Ｓ２６：Ｙｅｓ）、ファイルシステム管理部７１がファイル検索処理を継続して行う（Ｓ２７）。
【００５７】
ここで、カレントディレクトリのディレクトリエントリが存在しない場合は（Ｓ２３：Ｎｏ）、ファイルシステム管理部７１は、サブディレクトリのディレクトリ管理領域でデータの不整合が生じているものとみなす。さらに、カレントディレクトリのディレクトリエントリの「クラスタ番号」が自分自身のクラスタを指していない場合（Ｓ２４：Ｎｏ）、親ディレクトリのディレクトリエントリが存在しない場合（Ｓ２５：Ｎｏ）、及び親ディレクトリのディレクトリエントリの「クラスタ番号」が、親ディレクトリを指していない場合も（Ｓ２６：Ｎｏ）、同様に、ファイルシステム管理部７１は、サブディレクトリの管理領域でデータの不整合が生じているとみなす。そして、これらの場合には、ファイルシステム管理部７１は、ファイルの検索を中止する（Ｓ２８）。そして、ファイルシステム管理部７１は、検索要求に係るファイルが存在しない、あるいはそのファイルにはアクセス不能である旨を、検索要求元に対して通知する。
【００５８】
これにより、指定されたファイルを読み出すときにデータの不整合が検出されると、その時点でファイルの検索が打ち切られるのでファイルの読み出しも中止され、データの不整合が原因で生じるハングアップを回避できる。
【００５９】
なお、ステップＳ２２，Ｓ２４及びＳ２６は省略しても良い。つまり、ファイルの検索を途中で中止させるか否かの判定は、カレントディレクトリのディレクトリエントリ又は親ディレクトリのディレクトリエントリが存在するか否かによって行い、カレントディレクトリのディレクトリエントリ又は親ディレクトリのディレクトリエントリ内のデータの整合性チェックを省略しても良い。
【００６０】
また、ステップＳ２２，Ｓ２４及びステップＳ２６に相当するカレントディレクトリのディレクトリエントリ又は親ディレクトリのディレクトリエントリ内のデータの整合性チェックを、図４に示すファイルリスト作成時の検索において行っても良い。
【００６１】
本実施形態によれば、カレントディレクトリのディレクトリエントリ又は親ディレクトリのディレクトリエントリのみを用いて、より簡便に記憶メディアの管理情報の不整合を検出することができる。
【００６２】
上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
【図面の簡単な説明】
【００６３】
【図１】本発明の一実施形態に係るプリンタの構成を示す機能ブロック図である。
【図２】記憶メディア２０に生成されている論理的なディレクトリ構成の一例を示す。
【図３】記憶メディア２０に構成されている記憶領域を模式的に示す。
【図４】不整合判定１を示すフローチャートである。
【図５】不整合判定２を示すフローチャートである。
【符号の説明】
【００６４】
１           プリンタ
１０       印刷機構
１５       記憶メディアスロット
２０       記憶メディア
４０       表示部
５２       メモリ
５４       アプリケーション
６０       コントローラ
７０       ファームウェア
７１       ファイルシステム管理部
７３       ファイルリスト生成部
【図１】
2010055319.tif 000003
【図２】
2010055319.tif 000004
【図３】
2010055319.tif 000005
【図４】
2010055319.tif 000006
【図５】
2010055319.tif 000007