(57)【要約】【課題】データの更新失敗時でも、正しいデータを書き込む。【解決手段】ブロック追加部３２は、ユーザデータの書込前に、ブロック書込記憶部４２上の編集データブロック１３０−１のカウンタ（データ識別情報）を「１」に設定する。そして、設定したカウンタとユーザデータとを書込対象のファイル６のデータブロックに書込む。さらに、書込後のデータブロックを読出し、書込前に設定したカウンタと、ファイル記憶部５から読出した書込後のカウンタとに基づいて、ファイル６にユーザデータが正常に書込まれたか否かを判別する。ユーザデータが正常に書込まれていないと判別した場合、書込対象のファイル６にユーザデータを再度書き込む。【選択図】図１
2009217340.tif 000002
【特許請求の範囲】
【請求項１】
書込が要求されたデータであるユーザデータを、書込対象のファイルに書き込むファイル不正防止装置において、
前記書込が要求されたユーザデータを、前記書込対象のファイルに書き込むデータ追加部と、
前記ユーザデータの所定箇所について、書込前と書込後とを比較し、該比較結果に基づいて、前記ファイルに前記ユーザデータが正常に書込まれたか否かを判別する書込正常終了判別部と、
前記書込正常終了判別部が前記ユーザデータが正常に書込まれていないと判別した場合、前記書込対象のファイルに前記ユーザデータを再度書き込むデータ再追加部とを有することを特徴とするファイル不正防止装置。
【請求項２】
前記ファイルに書き込まれたユーザデータを識別するためのデータ識別情報を、前記ユーザデータの書込前において設定する書込前識別情報設定部と、
前記ユーザデータが書込まれた後のファイルを記憶するファイル記憶部と、
前記ファイル記憶部に記憶されているユーザデータが書込まれた後のファイルの登録内容を読み出す追加後ファイル読出部と、を有し、
前記データ追加部は、
前記書込前識別情報設定部が設定したデータ識別情報と、前記書込が要求されたユーザデータとを、前記書込対象のファイルに書き込み、
前記書込正常終了判別部は、
前記書込前識別情報設定部がユーザデータ書込前に設定したデータ識別情報と、前記追加後ファイル読出部が読み出した前記ユーザデータ書込後のファイルに登録されているデータ識別情報とに基づいて、前記ファイルに前記ユーザデータが正常に書込まれたか否かを判別することを特徴とする請求項１に記載のファイル不正防止装置。
【請求項３】
前記書込正常終了判別部は、
前記書込前識別情報設定部がユーザデータ書込前に設定したデータ識別情報と、前記追加後ファイル読出部が読み出したファイルに登録されているデータ識別情報とを比較し、該書込前のデータ識別情報と、該書込後のデータ識別情報とが一致しない場合に、前記ユーザデータが正常に書き込まれていないと判別することを特徴とする請求項２に記載のファイル不正防止装置。
【請求項４】
前記書込対象のファイルに前記ユーザデータを書き込むための登録内容を編集するための編集ファイルを記憶するブロック書込記憶部、を有し、
前記書込前識別情報設定部は、前記ユーザデータの書込前に、前記ブロック書込記憶部に記憶されている編集ファイルに含まれる前記データ識別情報に対して設定を行うことを特徴とする請求項２または３に記載のファイル不正防止装置。
【請求項５】
前記ブロック書込記憶部に記憶されている編集ファイルに、前記書込が要求されたユーザデータを書込む書込準備部、を有し、
前記データ追加部は、前記書込準備部がユーザデータを書き込んだ編集ファイルの登録内容を、前記書込対象のファイルに書き込むことを特徴とする請求項４に記載のファイル不正防止装置。
【請求項６】
前記データ追加部が前記データ識別情報と前記ユーザデータとを前記書込対象のファイルに書込む前に、前記ファイル記憶部に記憶されているファイルの登録内容を読み出し、該読み出した登録内容を、該ユーザデータの書込前に該書込対象のファイルが有していた登録内容を保持するための保持ファイルに記憶する保持ファイル記憶部と、
前記データ追加部が前記ユーザデータを書込んだ後のファイルを復元対象として、該書込前の登録内容に復元することが要求されたときに、前記保持ファイル記憶部が記憶している保持ファイルを読出し、該読み出した保持ファイルの登録内容を、該書込後のファイルに書き込むデータ復元部と、を有することを特徴とする請求項２に記載のファイル不正防止装置。
【請求項７】
前記データ復元部が前記保持ファイルの登録内容を書込んだ後のファイルを読み出す復元後ファイル読出部と、
前記保持ファイル記憶部が記憶している保持ファイルに含まれるユーザデータ書込前のデータ識別情報と、前記復元後ファイル読出部が読み出したファイルに含まれる復元後のデータ識別情報とに基づいて、前記復元対象のファイルが正常に復元されたか否かを判別する復元正常終了判別部と、
前記復元正常終了判別部が前記復元対象のファイルが正常に復元されていないと判別した場合、前記復元対象のファイルに前記保持ファイルを再度書き込むデータ再復元部とを有することを特徴とする請求項６に記載のファイル不正防止装置。
【請求項８】
前記復元正常終了判別部は、
前記保持ファイル記憶部が記憶している保持ファイルに含まれる書込前のデータ識別情報と、前記復元後ファイル読出部が読み出したファイルに含まれる復元後のデータ識別情報とを比較し、該ユーザデータ書込前のデータ識別情報が示す値と、該復元後のデータ識別情報が示す値とが一致しない場合に、前記復元対象のファイルが正常に復元されていないと判別することを特徴とする請求項７に記載のファイル不正防止装置。
【請求項９】
前記データ追加部が前記要求されたユーザデータを書込むファイルは、前記ユーザデータを格納するためのユーザデータ領域をそれぞれ有する任意の数のデータブロックを含むファイルであり、
前記データ追加部は前記ユーザデータを前記データブロックに書込むことを特徴とする請求項２乃至８のいずれか1項に記載のファイル不正防止装置。
【請求項１０】
前記データ追加部が前記要求されたユーザデータを書込むファイルに対して前記データブロックを割り当てることにより、該ファイルを拡張するデータ領域拡張部、を有することを特徴とする請求項９に記載のファイル不正防止装置。
【請求項１１】
前記データ追加部が前記要求されたユーザデータを書込むファイルは、該ファイルに割り当てられていないブロックである任意の数の空きブロックを含んでおり、
前記データ領域拡張部は、前記書込正常終了判別部が前記ユーザデータが正常に書込まれたと判別した場合に、前記空きブロックのうちから前記データブロックを割当てることにより、前記ファイルを拡張することを特徴とする請求項１０に記載のファイル不正防止装置。
【請求項１２】
前記復元正常終了判別部が前記復元対象のファイルが正常に復元されたと判別した場合に、前記データ追加部が書き込んだユーザデータを格納しているデータブロックの割当を解除し、該解除したデータブロックを前記空きブロックに設定するデータブロック解除部、を有することを特徴とする請求項１１に記載のファイル不正防止装置。
【請求項１３】
前記データ追加部が前記要求されたユーザデータを書込むファイル内では、前記データブロックが、該ファイルにユーザデータが追加された順序に従って配置されていることを特徴とする請求項９乃至１２のいずれか１項に記載のファイル不正防止装置。
【請求項１４】
書込が要求されたデータであるユーザデータを、書込対象のファイルに書き込むファイル不正防止装置におけるファイル不正防止方法であって、
前記書込が要求されたユーザデータを、前記書込対象のファイルに書き込むデータ追加処理と、
前記ユーザデータの所定箇所について、書込前と書込後とを比較し、該比較結果に基づいて、前記ファイルに前記ユーザデータが正常に書込まれたか否かを判別する書込正常終了判別処理と、
前記書込正常終了判別処理にて前記ユーザデータが正常に書込まれていないと判別した場合、前記書込対象のファイルに前記ユーザデータを再度書き込むデータ再追加処理とを有するファイル不正防止方法。
【請求項１５】
前記ファイルに書き込まれたユーザデータを識別するためのデータ識別情報を、前記ユーザデータの書込前において設定する書込前識別情報設定処理と、
前記ユーザデータが書込まれた後のファイルを記憶するファイル記憶処理と、
前記ファイル記憶処理により記憶されているユーザデータが書込まれた後のファイルの登録内容を読み出す追加後ファイル読出処理と、を有し、
前記データ追加処理では、
前記書込前識別情報設定処理にて設定したデータ識別情報と、前記書込が要求されたユーザデータとを、前記書込対象のファイルに書き込み、
前記書込正常終了判別処理では、
前記書込前識別情報設定処理にてユーザデータ書込前に設定したデータ識別情報と、前記追加後ファイル読出処理にて読み出した前記ユーザデータ書込後のファイルに登録されているデータ識別情報とに基づいて、前記ファイルに前記ユーザデータが正常に書込まれたか否かを判別することを特徴とする請求項１４に記載のファイル不正防止方法。
【請求項１６】
前記書込正常終了判別処理では、
前記書込前識別情報設定処理にてユーザデータ書込前に設定したデータ識別情報と、前記追加後ファイル読出処理にて読み出したファイルに登録されているデータ識別情報とを比較し、該書込前のデータ識別情報と、該書込後のデータ識別情報とが一致しない場合に、前記ユーザデータが正常に書き込まれていないと判別することを特徴とする請求項１５に記載のファイル不正防止方法。
【請求項１７】
前記書込対象のファイルに前記ユーザデータを書き込むための登録内容を編集するための編集ファイルを記憶するブロック書込記憶処理、を有し、
前記書込前識別情報設定処理では、前記ユーザデータの書込前に、前記ブロック書込記憶処理にて記憶されている編集ファイルに含まれる前記データ識別情報に対して設定を行うことを特徴とする請求項１３または１６に記載のファイル不正防止方法。
【請求項１８】
前記ブロック書込記憶処理にて記憶されている編集ファイルに、前記書込が要求されたユーザデータを書込む書込準備処理、を有し、
前記データ追加処理では、前記書込準備処理にてユーザデータを書き込んだ編集ファイルの登録内容を、前記書込対象のファイルに書き込むことを特徴とする請求項１７に記載のファイル不正防止方法。
【請求項１９】
前記データ追加処理にて前記データ識別情報と前記ユーザデータとを前記書込対象のファイルに書込む前に、前記ファイル記憶処理により記憶されているファイルの登録内容を読み出し、該読み出した登録内容を、該ユーザデータの書込前に該書込対象のファイルが有していた登録内容を保持するための保持ファイルに記憶する保持ファイル記憶処理と、
前記データ追加処理にて前記ユーザデータを書込んだ後のファイルを復元対象として、該書込前の登録内容に復元することが要求されたときに、前記保持ファイル記憶処理にて記憶している保持ファイルを読出し、該読み出した保持ファイルの登録内容を、該書込後のファイルに書き込むデータ復元処理と、を有することを特徴とする請求項１５に記載のファイル不正防止方法。
【請求項２０】
前記データ復元処理にて前記保持ファイルの登録内容を書込んだ後のファイルを読み出す復元後ファイル読出処理と、
前記保持ファイル記憶処理にて記憶している保持ファイルに含まれるユーザデータ書込前のデータ識別情報と、前記復元後ファイル読出処理にて読み出したファイルに含まれる復元後のデータ識別情報とに基づいて、前記復元対象のファイルが正常に復元されたか否かを判別する復元正常終了判別処理と、
前記復元正常終了判別処理にて前記復元対象のファイルが正常に復元されていないと判別した場合、前記復元対象のファイルに前記保持ファイルを再度書き込むデータ再復元処理とを有することを特徴とする請求項１９に記載のファイル不正防止方法。
【請求項２１】
前記復元正常終了判別処理では、
前記保持ファイル記憶処理にて記憶している保持ファイルに含まれるユーザデータ書込前のデータ識別情報と、前記復元後ファイル読出処理にて読み出したファイルに含まれる復元後のデータ識別情報とを比較し、該ユーザデータ書込前のデータ識別情報が示す値と、該復元後のデータ識別情報が示す値とが一致しない場合に、前記復元対象のファイルが正常に復元されていないと判別することを特徴とする請求項２０に記載のファイル不正防止方法。
【請求項２２】
前記データ追加処理にて前記要求されたユーザデータを書込むファイルは、前記ユーザデータを格納するためのユーザデータ領域をそれぞれ有する任意の数のデータブロックを含むファイルであり、
前記データ追加処理では、前記ユーザデータを前記データブロックに書込むことを特徴とする請求項１５乃至２１のいずれか1項に記載のファイル不正防止方法。
【請求項２３】
前記データ追加処理にて前記要求されたユーザデータを書込むファイルに対して前記データブロックを割り当てることにより、該ファイルを拡張するデータ領域拡張処理、を有することを特徴とする請求項２２に記載のファイル不正防止方法。
【請求項２４】
前記データ追加処理にて前記要求されたユーザデータを書込むファイルは、該ファイルに割り当てられていないブロックである任意の数の空きブロックを含んでおり、
前記データ領域拡張処理では、前記書込正常終了判別処理にて前記ユーザデータが正常に書込まれたと判別した場合に、前記空きブロックのうちから前記データブロックを割当てることにより、前記ファイルを拡張することを特徴とする請求項２３に記載のファイル不正防止方法。
【請求項２５】
前記復元正常終了判別処理にて前記復元対象のファイルが正常に復元されたと判別した場合に、前記データ追加処理にて書き込んだユーザデータを格納しているデータブロックの割当を解除し、該解除したデータブロックを前記空きブロックに設定するデータブロック解除処理、を有することを特徴とする請求項２４に記載のファイル不正防止方法。
【請求項２６】
前記データ追加処理にて前記要求されたユーザデータを書込むファイル内では、前記データブロックが、該ファイルにユーザデータが追加された順序に従って配置されていることを特徴とする請求項２２乃至２５のいずれか１項に記載のファイル不正防止方法。
【請求項２７】
前記書込が要求されたデータであるユーザデータを、書込対象のファイルに書き込むデータ追加手順と、
前記ユーザデータの所定箇所について、書込前と書込後とを比較し、該比較結果に基づいて、前記ファイルに前記ユーザデータが正常に書込まれたか否かを判別する書込正常終了判別手順と、
前記書込正常終了判別手順にて前記ユーザデータが正常に書込まれていないと判別した場合、前記書込対象のファイルに前記ユーザデータを再度書き込むデータ再追加手順とをコンピュータに実行させるプログラム。
【請求項２８】
前記ファイルに書き込まれたユーザデータを識別するためのデータ識別情報を、前記ユーザデータの書込前において設定する書込前識別情報設定手順と、
前記ユーザデータが書込まれた後のファイルを記憶するファイル記憶手順と、
前記ファイル記憶手順により記憶されているユーザデータが書込まれた後のファイルの登録内容を読み出す追加後ファイル読出手順と、を有し、
前記データ追加手順では、
前記書込前識別情報設定手順にて設定したデータ識別情報と、前記書込が要求されたユーザデータとを、前記書込対象のファイルに書き込み、
前記書込正常終了判別手順では、
前記書込前識別情報設定手順にてユーザデータ書込前に設定したデータ識別情報と、前記追加後ファイル読出手順にて読み出した前記ユーザデータ書込後のファイルに登録されているデータ識別情報とに基づいて、前記ファイルに前記ユーザデータが正常に書込まれたか否かを判別することを特徴とする請求項２７に記載のプログラム。
【請求項２９】
前記書込正常終了判別手順では、
前記書込前識別情報設定手順にてユーザデータ書込前に設定したデータ識別情報と、前記追加後ファイル読出手順にて読み出したファイルに登録されているデータ識別情報とを比較し、該書込前のデータ識別情報と、該書込後のデータ識別情報とが一致しない場合に、前記ユーザデータが正常に書き込まれていないと判別することを特徴とする請求項２８に記載のプログラム。
【請求項３０】
前記書込対象のファイルに前記ユーザデータを書き込むための登録内容を編集するための編集ファイルを記憶するブロック書込記憶手順、を有し、
前記書込前識別情報設定手順では、前記ユーザデータの書込前に、前記ブロック書込記憶手順にて記憶されている編集ファイルに含まれる前記データ識別情報に対して設定を行うことを特徴とする請求項２８または２９に記載のプログラム。
【請求項３１】
前記ブロック書込記憶手順にて記憶されている編集ファイルに、前記書込が要求されたユーザデータを書込む書込準備手順、を有し、
前記データ追加手順では、前記書込準備手順にてユーザデータを書き込んだ編集ファイルの登録内容を、前記書込対象のファイルに書き込むことを特徴とする請求項３０に記載のプログラム。
【請求項３２】
前記データ追加手順にて前記データ識別情報と前記ユーザデータとを前記書込対象のファイルに書込む前に、前記ファイル記憶手順により記憶されているファイルの登録内容を読み出し、該読み出した登録内容を、該ユーザデータの書込前に該書込対象のファイルが有していた登録内容を保持するための保持ファイルに記憶する保持ファイル記憶手順と、
前記データ追加手順にて前記ユーザデータを書込んだ後のファイルを復元対象として、該書込前の登録内容に復元することが要求されたときに、前記保持ファイル記憶手順にて記憶している保持ファイルを読出し、該読み出した保持ファイルの登録内容を、該書込後のファイルに書き込むデータ復元手順と、を有することを特徴とする請求項２８に記載のプログラム。
【請求項３３】
前記データ復元手順にて前記保持ファイルの登録内容を書込んだ後のファイルを読み出す復元後ファイル読出手順と、
前記保持ファイル記憶手順にて記憶している保持ファイルに含まれるユーザデータ書込前のデータ識別情報と、前記復元後ファイル読出手順にて読み出したファイルに含まれる復元後のデータ識別情報とに基づいて、前記復元対象のファイルが正常に復元されたか否かを判別する復元正常終了判別手順と、
前記復元正常終了判別手順にて前記復元対象のファイルが正常に復元されていないと判別した場合、前記復元対象のファイルに前記保持ファイルを再度書き込むデータ再復元手順とを有することを特徴とする請求項３２に記載のプログラム。
【請求項３４】
前記復元正常終了判別手順では、
前記保持ファイル記憶手順にて記憶している保持ファイルに含まれるユーザデータ書込前のデータ識別情報と、前記復元後ファイル読出手順にて読み出したファイルに含まれる復元後のデータ識別情報とを比較し、該ユーザデータ書込前のデータ識別情報が示す値と、該復元後のデータ識別情報が示す値とが一致しない場合に、前記復元対象のファイルが正常に復元されていないと判別することを特徴とする請求項３３に記載のプログラム。
【請求項３５】
前記データ追加手順にて前記要求されたユーザデータを書込むファイルは、前記ユーザデータを格納するためのユーザデータ領域をそれぞれ有する任意の数のデータブロックを含むファイルであり、
前記データ追加手順では、前記ユーザデータを前記データブロックに書込むことを特徴とする請求項２８乃至３４のいずれか1項に記載のプログラム。
【請求項３６】
前記データ追加手順にて記要求されたユーザデータを書込むファイルに対して前記データブロックを割り当てることにより、該ファイルを拡張するデータ領域拡張手順、を有することを特徴とする請求項３５に記載のプログラム。
【請求項３７】
前記データ追加手順にて前記要求されたユーザデータを書込むファイルは、該ファイルに割り当てられていないブロックである任意の数の空きブロックを含んでおり、
前記データ領域拡張手順では、前記書込正常終了判別手順にて前記ユーザデータが正常に書込まれたと判別した場合に、前記空きブロックのうちから前記データブロックを割当てることにより、前記ファイルを拡張することを特徴とする請求項３６に記載のプログラム。
【請求項３８】
前記復元正常終了判別手順にて前記復元対象のファイルが正常に復元されたと判別した場合に、前記データ追加手順にて書き込んだユーザデータを格納しているデータブロックの割当を解除し、該解除したデータブロックを前記空きブロックに設定するデータブロック解除手順、を有することを特徴とする請求項３７に記載のプログラム。
【請求項３９】
前記データ追加手順にて前記要求されたユーザデータを書込むファイル内では、前記データブロックが、該ファイルにユーザデータが追加された順序に従って配置されていることを特徴とする請求項３５乃至３８のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイル不正防止装置、ファイル不正防止方法およびプログラムに関する。
【背景技術】
【０００２】
ファイル領域にデータブロックを追加することにより、ファイルを拡張する各種の技術が提案されている。
【０００３】
例えば、書込対象のファイルにおけるユーザデータ格納可能な領域の有無と、ファイルに未だ割り当てられていない領域におけるユーザデータ格納可能な領域の有無と、書込対象以外のファイルにおけるユーザデータ格納可能な領域の有無とに基づいて、ユーザデータ格納用の領域を確保するファイル管理方式が考えられている（例えば、特許文献１参照。）。
【０００４】
このファイル領域管理方式では、図１０に示すように、利用者からファイルへのユーザデータの書込が要求された場合、書込対象のファイルにおけるユーザデータ格納可能な領域の有無を判別する。データ格納可能な領域を有さないと判別した場合、ファイル領域拡張部１００１が、利用者ごとに割当てられている利用者ファイル領域２０００内の利用者未使用領域２００２から、ユーザデータ格納用の領域を確保し、ファイルを拡張する。一方、ユーザデータ格納用の領域が利用者未使用領域２００２から確保できない場合、ファイル未使用領域検索部１００２が、未使用領域保持ファイルリスト１００３に基づき、ファイル領域として割当てられた実ファイル領域２００１内の各ファイルＡ〜Ｃが有するファイル未使用領域ａ〜ｃを検索する。そして、ファイル未使用領域解放部１００４が、検索により特定されたファイル未使用領域ａ〜ｃのいずれかを解放し、その解放した未使用領域を書込対象のファイルに割当てる。さらに、この割当により拡張されたファイルにユーザデータを格納する。
【０００５】
しかし、特許文献１に開示されたような一般的なファイル管理方式によれば、ユーザデータの書込に失敗したときのエラー処理機能が設けられていない。このようなファイル管理方式に従って作成されたデータブロックへのデータ書込時に発生したエラーを処理するための各種のエラー処理技術が提案されている。
【０００６】
例えば、ディスク装置にデータを書込む際にエラーが発生した場合、管理情報に基づいて、エラー処理の実行の可否を指示するディスク制御装置が考えられている（例えば、特許文献２参照。）。このディスク制御装置では、エラー処理を行う場合、書込まれるデータの種類に応じたエラー処理（データの書込を再度実行するリトライ、書込後のデータにおける誤りの有無を検査するベリファイ）を実行する。
【０００７】
また、例えば、更新対象のデータブロックが記憶されている相対位置に基づいて、更新対象のデータブロックが正常に更新されたか否かを判別する処理装置が考えられている（例えば、特許文献３参照。）。この処理装置では、データブロックが正常に更新されていないと判別した場合、更新処理を終了する。
【特許文献１】特開平０５−１２００９４号公報
【特許文献２】特開２０００−１１３５６９号公報
【特許文献３】特許第３３４２０３９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
特許文献２に開示されたディスク制御装置によれば、エラー処理の実行の可否を判別するために用いられる管理情報が正常に更新されない場合、要求されたデータが正常に書込まれたことを検査するためのベリファイが実行されない。
【０００９】
また、特許文献３に開示された処理装置によれば、更新が要求された際に指定されたデータブロックの位置と、データブロックを含むファイルの更新状態を示すファイル更新状態が示すデータブロックの位置とが一致しない場合、データブロックの更新処理を再度実行することがない。
【００１０】
また、特許文献１〜３に開示されたファイルを拡張するための一般的な技術によれば、ファイル管理システムにてユーザデータを書込む際に、ディスク装置に記憶されているファイルへのユーザデータの書込ができたと判別された場合、書込完了後のユーザデータ読込処理において、ユーザデータはインティグリティ性（データが正常に更新されたか否かを示す完全性）が満たされていると識別され、正しいユーザデータとして認識する。例えば、ファームウェアバグに起因する障害などにより特定のデータブロックにユーザデータが書込まれなかったものとする。この場合でも、ディスク装置上のファイルにユーザデータが書込まれたと判別された場合、ユーザデータ読込処理ではそのユーザデータは正しいユーザデータと認識され、書込が正常に完了しなかったファイル（古いユーザデータ）を用いてデータベースを更新するおそれがあるという問題点がある。
【００１１】
本発明は、上述した課題を解決するファイル不正防止装置、ファイル不正防止方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明のファイル不正防止装置は、書込が要求されたデータであるユーザデータを、書込対象のファイルに書き込むファイル不正防止装置において、前記書込が要求されたユーザデータを、前記書込対象のファイルに書き込むデータ追加部と、前記ユーザデータの所定箇所について、書込前と書込後とを比較し、該比較結果に基づいて、前記ファイルに前記ユーザデータが正常に書込まれたか否かを判別する書込正常終了判別部と、前記書込正常終了判別部が前記ユーザデータが正常に書込まれていないと判別した場合、前記書込対象のファイルに前記ユーザデータを再度書き込むデータ再追加部とを有することを特徴とする。
【００１３】
上記課題を解決するために、本発明のファイル不正防止方法は、書込が要求されたデータであるユーザデータを、書込対象のファイルに書き込むファイル不正防止装置におけるファイル不正防止方法であって、前記書込が要求されたユーザデータを、前記書込対象のファイルに書き込むデータ追加処理と、前記ユーザデータの所定箇所について、書込前と書込後とを比較し、該比較結果に基づいて、前記ファイルに前記ユーザデータが正常に書込まれたか否かを判別する書込正常終了判別処理と、前記書込正常終了判別処理にて前記ユーザデータが正常に書込まれていないと判別した場合、前記書込対象のファイルに前記ユーザデータを再度書き込むデータ再追加処理とを有する。
【００１４】
また、コンピュータに実行させるプログラムであって、前記書込が要求されたデータであるユーザデータを、書込対象のファイルに書き込むデータ追加手順と、前記ユーザデータの所定箇所について、書込前と書込後とを比較し、該比較結果に基づいて、前記ファイルに前記ユーザデータが正常に書込まれたか否かを判別する書込正常終了判別手順と、前記書込正常終了判別手順にて前記ユーザデータが正常に書込まれていないと判別した場合、前記書込対象のファイルに前記ユーザデータを再度書き込むデータ再追加手順とをコンピュータに実行させる。
【発明の効果】
【００１５】
本発明によれば、書込が要求されたデータであるユーザデータを、書込対象のファイルに書き込むファイル不正防止装置において、書込が要求されたユーザデータを、書込対象のファイルに書き込み、ユーザデータの所定箇所について、書込前と書込後とを比較し、比較結果に基づいて、ファイルにユーザデータが正常に書込まれたか否かを判別し、ユーザデータが正常に書込まれていないと判別した場合、書込対象のファイルにユーザデータを再度書き込む構成としたため、ファイルが正常に更新されなかった場合でも、ファイルに正しいユーザデータを書き込むことが可能となる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施形態に従ったファイル不正防止装置（ファイル不正防止方法、プログラムを含む）を説明する。
【００１７】
図１に示すように、本発明の実施形態１のファイル不正防止装置は、制御部１と、ファイル初期化部２と、ファイル更新部３と、ブロック記憶部４と、ファイル記憶部５と、入力部７とから構成される。
【００１８】
制御部１は、アプリケーションプログラム１１に従って、ファイル不正防止装置全体を制御する。また、制御部１は、入力部７からの利用者の操作に応じた指示を、各構成要素２〜５に出力する。例えば、所定処理の実行を要求するための各種の要求信号を出力する。ここで要求信号の形態については、特に限定しない。
【００１９】
ファイル初期化部２は、「ファイル初期化処理」を実行する「ブロック初期化部」であり、例えば、ファイル初期化プロセスである。ファイル初期化部２は、「ブロック初期化処理」を実行し、ファイル記憶部５に記憶されているファイル６内の空きブロックの初期設定を行う。
【００２０】
ファイル更新部３は、「ファイル更新処理」を実行するものであり、例えば、ファイル更新プロセスである。ファイル更新部３は、制御部１からのユーザデータ出力要求に応じて、ファイル６を更新する。また、ファイル更新部３は、ファイル作成部３１と、ブロック追加部３２と、ブロック取消部３３とを有する。
【００２１】
ファイル作成部３１は、「ファイル作成処理」を実行し、ファイル６に関して、後述するファイル管理領域６３の初期設定、および、後述するデータブロック１２０の確保などを行う。ファイル作成部３１は、制御部1からユーザデータ書込を要求するファイル更新要求を受け付け、ファイル未作成時に後述するファイル管理領域６３を作成する。
【００２２】
ブロック追加部３２は、「ブロック追加処理」を実行し、データブロック１２０へのユーザデータの追加（書込）、および、新たな書込用のデータブロックの確保などを行う。また、ブロック追加部３２は、ブロックを追加（書込）した際に、「書込正常終了判別処理」を実行し、その追加が正常に終了したか否かを判別する。
【００２３】
また、図２に示すように、ブロック追加部３２は、書込準備部３２１と、書込前識別情報設定部３２２と、データ追加部３２３と、追加後ファイル読出部３２４と、書込正常終了判別部３２５と、データ再追加部３２６と、データ領域拡張部３２７と、後続空きブロック設定部３２８とを有する。
【００２４】
書込準備部３２１は、「書込準備処理」を実行し、ユーザデータの書込対象とする先頭データブロックを読み出す。また、書込準備部３２１は、読み出したデータブロックと同一構造および同一内容を有する編集用のデータブロックである「編集データブロック１３０」を、ブロック書込記憶部４２に記憶させる。
【００２５】
この「編集データブロック１３０」は、ファイル記憶部５内のデータブロック１２０にユーザデータを書き込むための登録内容を、ブロック書込記憶部４２が有するメモリ上で編集するためのデータブロックであって、「編集ファイル」である。
【００２６】
書込前識別情報設定部３２２は、「書込前識別情報設定処理」を実行し、データファイル数カウンタ６３１が保持するレジスタ値を、ブロック書込記憶部４２上の編集データブロック１３０に含まれる後述のカウンタ１３１に設定する。
【００２７】
データ追加部３２３は、「データ追加処理」を実行し、ブロック書込記憶部４２が記憶している編集データブロック１３０を、ファイル記憶部５に記憶されている実際の書込対象のデータブロック１２０に書き込むことにより、ユーザデータをデータブロック１２０に追加する。ここでのユーザデータ追加動作は、ファイル記憶部５が具備するディスク装置を用いて、データブロック１２０の登録内容を変更する動作である。
【００２８】
追加後ファイル読出部３２４は、「追加後ファイル読出処理」を実行し、ファイル記憶部５から、ユーザデータ書込後のデータブロックを読み出す。
【００２９】
書込正常終了判別部３２５は、ブロックを追加（書込）した際に、「書込正常終了判別処理」を実行し、その追加が正常に終了したか否かを判別する。ユーザデータの正常な書込を阻害する原因とは、例えば、ファームウェアバグによる障害などである。この「書込正常終了判別処理」は、ブロック追加部３２が、ブロック書込記憶部４２に記憶されている編集データブロックのカウンタの値と、ブロック読込記憶部４３に記憶されている書込判別用データブロックのカウンタとを比較するための「比較処理」である。比較の結果、ブロック書込記憶部４２内のカウンタ値と、ブロック読込記憶部４３内のカウンタ値とが一致しない場合、書込正常終了判別部３２５は、要求されたユーザデータがファイル記憶部５内のデータブロックに正常に書き込まれなかったと判別する。また、カウンタ値が互いに一致した場合、正常に書き込まれたと判別する。
【００３０】
データ再追加部３２６は、ブロック追加処理の再実行により「データ再追加処理」を実行する。これにより、ブロック追加部３２は、ユーザデータをデータブロックに再度書き込み、ユーザデータを追加する。
【００３１】
データ領域拡張部３２７は、ユーザデータがファイル記憶部５内のデータブロックに正常に書き込まれたと書込正常終了判別部３２５が判別した場合、書込が完了したデータブロックに後続する、ユーザデータ書込用の新たなデータブロックを設定するための「データ領域拡張処理」を実行する。
【００３２】
後続空きブロック設定部３２８は、「後続空きブロック設定処理」を実行し、データ領域拡張処理が完了した空きブロック（新たに追加されたデータブロック）に後続する空きブロックを、新たな先頭の空きブロックに設定する。
【００３３】
ブロック取消部３３は、利用者の操作に応じて「ブロック取消処理」を実行し、ユーザデータが一旦書き込まれたデータブロックの内容を、その書込前に有していた登録内容に復元し、書込要求を取消す。
【００３４】
また、図３に示すように、ブロック取消部３３は、データ復元部３３１と、復元後ファイル読出部３３２と、復元正常終了判別部３３３と、データ再復元部３３４と、最終データブロックポインタ設定部３３５と、データブロック解除部３３６と、最終データブロック設定部３３７とを有する。
【００３５】
データ復元部３３１は、「データ復元処理」を実行し、ユーザデータが一旦書込まれたファイル記憶部５上のデータブロックに対して、ユーザデータ書込前に有していた登録内容に更新する。つまり、データ復元部３３１は、ファイル記憶部５上のデータブロックの登録内容を、ユーザデータ書込前の状態に復元する。
【００３６】
復元後ファイル読出部３３２は、「復元後ファイル読出処理」を実行し、データ復元後のデータブロックをファイル記憶部５から読み出し、復元判別用データブロックとしてブロック読込記憶部４３に記憶させる。この「復元判別用データブロック」は、復元処理により、ファイル記憶部５内のデータブロック１２０−１に正常に復元されたか否かを判別するためのデータブロックであって、「復元判別用ファイル」である。
【００３７】
復元正常終了判別部３３３は、「復元正常終了判別処理」を実行し、ユーザデータ書込前の登録内容が、復元対象であるファイル記憶部５内のデータブロックに正常に復元されたか否かを判別する。復元正常終了判別部３３３は、ブロック事前読込記憶部４１に記憶されている保持データブロックのカウンタ値と、ブロック読込記憶部４３に記憶されている復元判別用データブロックのカウンタ値との比較に基づいて、ユーザデータの復元が正常終了したか否かを判別する。
【００３８】
データ再復元部３３４は、復元対象のデータブロックに対してユーザデータ書込前の登録内容が正常に復元されなかったと復元正常終了判別部３３３が判別した場合、復元処理の再実行により「データ再復元処理」を実行する。これにより、データ再復元部３３４は、ユーザデータ書込後のファイル記憶部５内のデータブロックに対して、ユーザデータ書込前の登録内容の復元を試みる。
【００３９】
最終データブロックポインタ設定部３３５は、復元対象が正常に復元されたと復元正常終了判別部３３３が判別した場合、復元されたデータブロック１２０−１を最終データブロックとして設定するための「最終データブロックポインタ設定処理」を実行する。
【００４０】
データブロック解除部３３６は、「データブロック解除処理」を実行し、復元されたデータブロックに後続するデータブロックの割当を解除し、解除したデータブロックを空き領域６２内の空きブロックとして割り当てる。
【００４１】
最終データブロック設定部３３７は、「最終データブロック設定処理」を実行し、復元されたデータブロックの後述する次ブロックポインタを「０」に設定することで、復元されたデータブロックに後続するデータファイルが存在しない状態に設定する。
【００４２】
ブロック記憶部４は、「ブロック記憶処理」を実行し、ファイル更新部３により更新されたデータブロックの登録内容などを記憶する。ブロック記憶部４は、ブロック事前読込記憶部４１と、ブロック書込記憶部４２と、ブロック読込記憶部４３とを有する。
【００４３】
ブロック事前読込記憶部４１は、ファイル記憶部５に記憶されているファイル６へのユーザデータ書込前に、ブロック追加部３２が読み込んだデータブロックと同一内容の「保持データブロック１４０−１」を記憶する。
【００４４】
ブロック書込記憶部４２は、ブロック追加部３２がデータブロックにユーザデータを書込む際の登録内容を記憶する。また、ブロック書込記憶部４２は、ファイル更新部３の処理時に用いられるワークメモリとして機能する。例えば、書込が要求されたユーザデータをデータブロック１２０に書込む前に、「編集データブロック１３０−１」を編集するために使用される。
【００４５】
ブロック読込記憶部４３は、ブロック追加部３２やブロック取消部３３が読み出したファイル記憶部5内のデータブロック１２０を記憶する。例えば、ブロック追加部３２が読み出したユーザデータ書込後のデータブロック１２０と同一内容を有する「書込判別用データブロック１５０−１」、ブロック取消部３３が読み出した復元後のデータブロック１２０と同一内容を有する「復元判別用データブロック１６０−１」を記憶する。
【００４６】
ファイル記憶部５は、ディスク装置などで構成され、「ファイル記憶処理」の実行により、ファイル６を記憶する。ファイル６の詳細な説明は後述する。
【００４７】
入力部７は、利用者の操作に応じて入力されたデータを受付け、受付けたデータを制御部１に出力する。例えば、利用者により書込が要求されたデータである「ユーザデータ」などを出力する。
【００４８】
つぎに、ファイル記憶部５に記憶されているファイル６のデータ構造について説明する。このファイル６は、任意の数のデータブロックを含むファイルである。図４に示すように、ファイル６は、空き管理領域６１と、空き領域６２と、ファイル管理領域６３と、データファイル６４とを有する。
【００４９】
空き管理領域６１は、ファイル６内の空きブロックを管理するための領域である。ここに「空きブロック」とは、ファイル６に未だ割り当てられていない状態にあるデータブロックである。
【００５０】
空き管理領域６１には、空き数カウンタ６１１と、先頭空きブロックポインタ６１２と、最終空きブロックポインタ６１３とが格納されている。
【００５１】
空き数カウンタ６１１は、空き領域６２に格納されている空きブロック１１０の数を保持するためのレジスタである。
【００５２】
また、先頭空きブロックポインタ６１２は、空き領域６２に格納されている先頭の空きブロック（以下、「先頭空きブロック」という）が記憶されているアドレスを示すために、そのアドレスを保持するレジスタである。
【００５３】
また、最終空きブロックポインタ６１３は、空き領域６２に格納されている最終の空きブロック（以下、「最終空きブロック」という）が記憶されているアドレスを示すために、そのアドレスを保持するレジスタである。
【００５４】
空き領域６２は、ファイル６のうちでファイル６に未だ割り当てられていない空きブロックの集合が格納されている領域である。制御部１は、空きブロック１１０−１〜１１０−ｍの数ｍを空き数ポインタ６１１に格納することにより、空きブロックを管理する。ここで、空きブロックの数ｍは任意の自然数である。なお、以下では、空きブロック１１０−１〜１１０−ｍを「空きブロック１１０」と総称する。
【００５５】
なお、空きブロック１１０−１〜１１０−ｍは、同一のデータ構造を互いに有するとともに、図５に示す後述のデータブロック１２０−１と同一のデータ構造を有する。
【００５６】
ファイル管理領域６３は、ファイル６内に作成されたデータブロック６４のポインタを管理するための領域である。ファイル管理領域６３では、ファイル６にてユーザデータを格納するための複数のデータブロック１２０−１〜１２０−ｎは、ユーザデータの順序に従って配置される。そして、各データブロック１２０−１〜１２０−ｎごとに、各データブロック１２０−１〜１２０−ｎに後続するデータブロックのアドレスを格納することにより、データブロック６４を管理する。
【００５７】
ファイル管理領域６３は、データファイル数カウンタ６３１と、先頭データブロックポインタ６３２と、最終データブロックポインタ６３３とを有する。
【００５８】
データファイル数カウンタ６３１は、データファイル６４を一意（ユニーク）に識別するためのレジスタである。
【００５９】
先頭データブロックポインタ６３２は、データファイル６４に格納されている先頭に位置するデータブロック（以下、「先頭データブロック」という）が記憶されているアドレスを示すために、そのアドレスを保持するレジスタである。
【００６０】
最終データブロックポインタ６３３は、データファイル６４に格納されている最後に位置するデータブロック（以下、「最終データブロック」という）が記憶されているアドレスを示すために、そのアドレスを保持するレジスタである。
【００６１】
データファイル６４は、ユーザデータを格納するファイルである。このデータファイル６４は、複数のデータブロック１２０−１〜１２０−ｎを有する。ここで、データブロックの数ｎは任意の自然数である。データブロック１２０−１〜１２０−ｎは、すべて同一のデータ構造を有するものである。なお、以下では、データブロック１２０−１〜１２０−ｎを「データブロック１２０」と総称する。
【００６２】
図５に示すように、データブロック１２０−１は、カウンタ１２１−１と、自ブロックポインタ１２２−１と、次ブロックポインタ１２３−１と、ユーザデータ領域１２４−１とを含む。
【００６３】
カウンタ１２１−１は、各ファイル作成単位にカウントアップされたカウント値を格納するためのレジスタである。このカウンタ１２１−１は、データブロック１２０−１に登録されているユーザデータ（登録内容）を識別するための「データ識別情報」としての役割を果たす。各データブロック１２０−１〜１２０−ｎがそれぞれ有するカウンタ１２１−１〜１２１−ｎは、ファイル６ごとに一意（ユニーク）な値に設定されるため、ユーザデータの状態を識別可能なものである。なお、以下では、データブロック１２０−１〜１２０−ｎに対応するカウンタ１２１−１〜１２１−ｎを「カウンタ１２１」と総称する。
【００６４】
自ブロックポインタ１２２−１は、その自ブロックポインタ１２２−１を含むデータブロックが記憶されているアドレスを格納するためのポインタである。図５の例では、自ブロックポインタ１２２−１を含むデータブロックであるデータブロック１２０−１が記憶されているアドレスが格納される。以下、データブロック１２０−１〜１２０−ｎに対応する自ブロックポインタ１２２−１〜１２２−ｎを「自ブロックポインタ１２２」と総称する。
【００６５】
次ブロックポインタ１２３−１は、各データブロックの直後に位置するデータブロック（後続するデータブロック）が記憶されているアドレスを格納するためのポインタである。図５の例では、データブロック１２０−１の直後に記憶されているデータブロックであるデータブロック１２０−２のアドレスが格納される。以下、データブロック１２０−１〜１２０−ｎに対応する次ブロックポインタ１２３−１〜１２３−ｎを「次ブロックポインタ１２３」と総称する。なお、次ブロックポインタ１２３−１〜１２３−ｎは、各データブロック１２０−１〜１２０−ｎが最終データブロックである場合、自己に後続するデータブロックがないことを示すために、その値が「０」に設定されている。
【００６６】
ユーザデータ領域１２４−１は、ファイル６に割り当てられたデータブロック１２０がユーザデータを格納するための領域である。以下、データブロック１２０−１〜１２０−ｎに対応するユーザデータ領域１２４−１〜１２４−ｎを「ユーザデータ領域１２４」と総称する。
【００６７】
なお、データブロック１２０−１〜１２０−ｎと空きブロック１１０−１〜１１０−ｍとは同一の構造を有する。そのため、例えば、空きブロック１１０−１は、データブロック１２０−１の各構成要素１２１−１〜１２４−１に対応するカウンタ１１１−１と、自ブロックポインタ１１２−１と、次ブロックポインタ１１３−１と、ユーザデータ領域１１４−１とを含む。
【００６８】
次に、上述した構成を有するファイル不正防止装置にて、ファイル不正を防止するための動作を行う場合の処理内容を説明する。
【００６９】
まず、制御部１が利用者から起動を受け付けた際に、ファイル初期化部２が、空きブロック１１０の初期設定を行う動作を説明する。
【００７０】
図６に示すように、初期設定を行う動作における処理は、「カウンタ初期化処理（ステップＳ１１）」と、「初期化開始点設定処理（ステップＳ１２）」と、「初期化設定完了判別処理（ステップＳ１３）」と、「空き数ゼロ設定処理（ステップＳ１４）」とから構成される。
【００７１】
ブロック初期化部２１は、「カウンタ初期化処理（ステップＳ１１）」を実行し、各空きブロック１１０−１〜１１０−ｍ内の各カウンタ１１１−１〜１１１−ｍをそれぞれ「０」に設定する。
【００７２】
続いて、ブロック初期化部２１は、「初期化開始点設定処理（ステップＳ１２）」を実行し、空き管理領域６１から最終空きブロックポインタ６１３に格納されている値（空き領域６２にて、最終空きブロックが記憶されているアドレス）を読み出す。そして、読み出した最終空きブロックポインタ６１３が示すアドレスを、その最終空きブロックポインタ６１３に記憶されている最終空きブロック１１０−ｍの自ブロックポインタ１１２−ｍと、最終空きブロック１１０−ｍの直前のアドレスに記憶されている空きブロック１１０−（ｍ−１）の次ブロックポインタ１１３−（ｍ−１）とに設定する。
【００７３】
制御部１は、「初期化設定完了判別処理（ステップＳ１３）」を実行し、すべての空きブロック１１０への設定が完了したか否かを判別する。設定が完了していないと判別した場合（ステップＳ１３；Ｎｏ）、ブロック初期化部２１は、再度、ステップＳ１１の処理を実行する。
【００７４】
一方、すべての空きブロック１１０−１〜１１０−ｍへの設定が完了したと判別した場合（ステップＳ１３；Ｙｅｓ）、ブロック初期化部２１は、「空き数ゼロ設定処理（ステップＳ１４）」を実行し、空き管理領域６１内の空き数カウンタ６１１に「０」を設定する。以上で、空き領域６２に格納されているすべての空きブロック１１０−１〜１１０−ｍに対する初期設定が終了する。
【００７５】
つぎに、ファイル更新部３のファイル作成部３１が、制御部1からユーザデータの書込を要求するファイル更新要求を受け付け、ファイル６の未作成時にファイル管理領域６３を作成する動作を説明する。
【００７６】
図７に示すように、ファイル管理領域６３の作成動作における処理は、「空き数読込処理（ステップＳ２１）」と、「空き数加算処理（ステップＳ２２）」と、「管理対象設定処理（ステップＳ２３）」と、「後続空きブロック設定処理（ステップＳ２４）」とから構成される。
【００７７】
ファイル作成部３１は、「空き数読込処理（ステップＳ２１）」を実行し、空き管理領域６１内の空き数カウンタ６１１を読み込む。なお、空き数カウンタ６１１が保持するレジスタ値は、すべての空きブロック１１０の初期化処理が終了した時点では「０」に設定されている。
【００７８】
そして、ファイル作成部３１は、「空き数加算処理（ステップＳ２２）」を実行し、空き領域６１に格納されている空き数カウンタ６１１が保持する値に「１」を加算する。そして、加算した結果を、空き数カウンタ６１１に書き込むとともに、ファイル管理領域６３に格納されているデータファイル数カウンタ６３１とに書き込む。
【００７９】
続いて、ファイル作成部３１は、「管理対象設定処理（ステップＳ２３）」により、空き管理領域６１内の先頭空きブロックポインタ６１２で特定される空きブロック（先頭空きブロック１１０−１のアドレス）を、ファイル管理領域６３における先頭データブロックポインタ６３２に設定するとともに、最終データブロックポインタ６３３とに設定する。この設定が完了した時点で、先頭に位置していた空きブロック１１０−１を、ファイル管理対象のうちの先頭データブロックとして使用することが可能になる。
【００８０】
さらに、ファイル作成部３１は、「後続空きブロック設定処理（ステップＳ２４）」を実行し、管理対象設定処理が完了した空きブロック１１０−１の後続の空きブロックである「空きブロック１１０−２のアドレス」を、空き領域６１の先頭ブロックポインタ６１２に設定する。これにより、空きブロック１１０−１がデータブロック１２０−１として割当てられた後の空き領域６２での先頭空きブロックの整合性が保たれる。以上で、一連のファイル管理領域６３を作成する動作が終了する。
【００８１】
つぎに、ブロック追加部３２が、制御部１から送信されてきたファイル更新要求を受け付け、データファイル６４に含まれるデータブロック１２０−１のユーザデータ領域１２４−１に、ユーザデータを書き込むときの動作を説明する。
【００８２】
図８に示すように、ユーザデータ書込動作における処理は、「書込準備処理（ステップＳ３１）」と、「書込前識別情報設定処理（ステップＳ３２）」と、「保持ファイル記憶処理（ステップＳ３３）」と、「ブロック追加処理（ステップＳ３４）」と、「ブロック読込記憶処理（ステップＳ３５）」と、「書込正常終了判別処理（ステップＳ３６）」と、「データ領域拡張処理（ステップＳ３７）」と、「後続空きブロック設定処理（ステップＳ３８）」とから構成される。
【００８３】
図８に示すように、書込準備部３２１は、「書込準備処理（ステップＳ３１）」を実行し、ユーザデータの書込対象とする先頭データブロック１２０−１を読み出す。そして、読み出したデータブロック１２０−１と同一構造および同一内容を有する編集用のデータブロックである「編集データブロック１３０−１」をブロック書込記憶部４２に記憶させる。
【００８４】
この「編集データブロック１３０−１」は、ファイル記憶部５内のデータブロック１２０−１にユーザデータを書き込むための登録内容を、ブロック書込記憶部４２が有するメモリ上で編集するためのデータブロックであって、「編集ファイル」である。
【００８５】
さらに、「書込準備処理」にて、書込準備部３２１は、ブロック書込記憶部４２上の編集データブロック１３０−１のユーザデータ領域１３４−１に、要求されたユーザデータを書込む。
【００８６】
続いて、書込前識別情報設定部３２２は、「書込前識別情報設定処理（ステップＳ３２）」を実行する。書込前識別情報設定処理では、データファイル数カウンタ６３１が保持するレジスタ値を、ブロック書込記憶部４２上の編集データブロック１３０−１に含まれるカウンタ１３１−１に設定する。なお、ファイル管理領域６３の作成完了時点では、データファイル数カウンタ６３１のレジスタ値は「１」に設定されている。この状態で、ブロック書込記憶部４２は、「ブロック書込記憶処理」を実行し、ブロック追加部３２によるユーザデータの書込準備およびカウンタ事前設定が完了した編集データブロック１３０−１を記憶している。なお、ユーザデータの書込準備および書込前識別情報設定が施された編集データブロック１３０−１は、ユーザデータ書込後のデータブロック１２０−１が有するべき構造および登録内容を有するものである。
【００８７】
なお、ステップＳ３１、Ｓ３２の処理においては、ブロック追加部３２は、ブロック書込記憶部４２を作業用のワークメモリとして使用する。そのため、ステップＳ３１の書込準備処理は、ファイル記憶部５上のデータブロック１２０−１と同一の内容を有するワークメモリ上に展開された編集データブロック１３０−１のユーザデータ領域１３４−１に対して、ブロック追加部３２がユーザデータを書き込む動作となる。
【００８８】
つぎに、「保持ファイル記憶部」であるブロック事前読込記憶部４１が、「保持ファイル記憶処理（ステップＳ３３）」を実行し、ファイル記憶部５に記憶されているユーザデータが書込まれる前のデータブロック１２０−１と同一構造および同一内容を有する保持用のデータブロックである「保持データブロック１４０−１」を記憶する。この「保持データブロック１４０−１」は、ユーザデータの書込前にファイル記憶部５に記憶されているデータブロック１２０−１の登録内容を保持するためのデータファイルであって、「保持ファイル」である。また、「ブロック事前読込記憶処理（ステップＳ３３）」は、ユーザデータの書込前にファイル記憶部５に記憶されているデータブロック１２０−１の登録内容を保持するために行われる。
【００８９】
データ追加部３２３は、「データ追加処理（ステップＳ３４）」を実行し、ブロック書込記憶部４２が記憶しているステップＳ３１、Ｓ３２の処理後の編集データブロック１３０−１を、ファイル記憶部５に記憶されている実際の書込対象のデータブロック１２０−１に書き込むことにより、ユーザデータをデータブロック１２０−１に追加する。ここでのユーザデータ追加動作は、ファイル記憶部５が具備するディスク装置を用いて、データブロック１２０−１の登録内容を変更する動作である。
【００９０】
「データ追加処理」の完了後、追加後ファイル読出部３２４は、「追加後ファイル読出処理」を実行し、ファイル記憶部５から、ユーザデータ書込後のデータブロック１２０−１を読み出す。続いて、ブロック読込記憶部４３は、「ブロック読込記憶処理（ステップＳ３５）」を実行し、ブロック追加部３２が読み出したデータブロック１２０−１を、「書込判別用データブロック１５０−１」として記憶する。この「書込判別用データブロック１５０−１」は、ブロック追加処理により、ユーザデータがファイル記憶部５内のデータブロック１２０−１に正常に書き込まれたか否かを判別するためのデータブロックである。
【００９１】
書込正常終了判別部３２５は、ユーザデータが書込対象のデータブロック１２０−１に正常に書込まれたか否かを判別するための「書込正常終了判別処理（ステップＳ３６）」を実行する。ユーザデータの正常な書込を阻害する原因とは、例えば、ファームウェアバグによる障害などである。
【００９２】
この「書込正常終了判別処理（ステップＳ３６）」は、ブロック追加部３２が、ブロック書込記憶部４２に記憶されている編集データブロック１３０−１のカウンタ１３１−１の値と、ブロック読込記憶部４３に記憶されている書込判別用データブロック１５０−１のカウンタ１５１−１とを比較するための「比較処理」である。
【００９３】
「書込正常終了判別処理」における比較の結果、ブロック書込記憶部４２内のカウンタ１３１−１の値と、ブロック読込記憶部４３内のカウンタ１５１−１の値とが一致しない場合（ステップＳ３６；Ｎｏ）、書込正常終了判別部３２５は、要求されたユーザデータがファイル記憶部５内のデータブロック１２０−１に正常に書き込まれなかったと判別する。
【００９４】
この場合、データ再追加部３２６は、ブロック追加処理（ステップＳ３４）の再実行により「データ再追加処理」を実行する。これにより、データ再追加部３２６は、ユーザデータをデータブロック１２０−１に再度書き込み、ユーザデータを追加する。なお、データファイル１２０−１にユーザデータが正常に書き込まれなかったと判別された失敗回数を計数するためのカウンタを設け、その失敗回数が所定値に達したときに、一連のユーザデータ書込動作を終了してもよい。
【００９５】
一方、ブロック書込記憶部４２内のカウンタ１３１−１の値とブロック読込記憶部４３内のカウンタ１１１−１の値とが一致した場合（ステップＳ３６；Ｙｅｓ）、書込正常終了判別部３２５は、ユーザデータがファイル記憶部５内のデータブロック１２０−１に正常に書き込まれたと判別する。この場合、データ領域拡張部３２７は、書込が完了したデータブロック１２０−１に後続する、ユーザデータ書込用の新たなデータブロック１２０−２を設定するための「データ領域拡張処理（ステップＳ３７）」を実行する。
【００９６】
この「データ領域拡張処理（ステップＳ３７）」において、まず、データ領域拡張部３２７は、先頭空きブロックポインタ６１２を参照し、現在の「先頭空きブロック」が記憶されているアドレスを読み出す。ここで読み出された現在の先頭空きブロックが、ユーザデータ格納用の新たなデータブロック１２０−２として設定（追加）される。なお、上述したファイル管理領域６３の作成動作（ステップＳ２１〜Ｓ２４）の完了時点で、先頭空きブロックポインタ６１２には、管理対象設定が完了した空きブロック１１０−１に後続する「空きブロック１１０−２のアドレス」が設定されている。
【００９７】
続いて、データ領域拡張部３２７は、読み出した先頭空きブロック１１０−２のアドレスを、ファイル管理領域６３内の最終データブロックポインタ６３３に設定する。これにより、新たに設定されたデータブロック１２０−２が最終データブロックに設定される。また、ブロック追加部３２は、ユーザデータが書込まれたデータブロック１２０−１の次ブロックポインタ１２３−１に設定する。これにより、データファイル６４中の各データブロック１２０間における次ブロックポインタ１２３の整合性が保たれる。
【００９８】
さらに、後続空きブロック設定部３２８は、「後続空きブロック設定処理（ステップＳ３８）」を実行し、後続データブロック設定処理が完了した空きブロック１１０−２（新たに追加されたデータブロック１２０−２）に後続する空きブロック１１０−３のアドレスを、空き領域６１の先頭空きブロックポインタ６１２に設定する。これにより、空き領域６２が有する先頭空きブロックがデータブロックとしてファイル６に割当てられた場合でも、割当後の空き領域６２にて、新たな先頭空きブロックが設定される。以上で、一連のユーザデータ書込動作が終了する。
【００９９】
つぎに、書込要求に従ってユーザデータが一旦書き込まれたデータブロックを「復元対象」として、その書込前の登録内容に復元するよう、書込要求が取消（キャンセル）されたときの、ブロック取消部３３による復元動作を説明する。
【０１００】
図９に示すように、一連の復元動作は、「データ復元処理（ステップＳ４１）」と、「ブロック読込記憶処理（ステップＳ４２）」と、「復元正常終了判別処理（ステップＳ４３）」と、「最終データブロックポインタ設定処理（ステップＳ４４）」と、「データブロック解除処理（ステップＳ４５）」と、「最終データブロック設定処理（ステップＳ４６）」とから構成される。
【０１０１】
データ復元部３３１は、「データ復元処理（ステップＳ４１）」を実行し、上述の保持ファイル記憶処理（ステップＳ３３）によりブロック事前読込記憶部４１が記憶している「保持データブロック１４０−１」（保持ファイル）の登録内容を、ファイル記憶部５内のユーザデータ書込後のデータブロック１２０−１に書き込む。復元処理時の書込元となる保持データブロック１４０−１は、ユーザデータ書込前にファイル記憶部５に記憶されていたデータブロック１２０−１と同一の登録内容を有している。そのため、ユーザデータが一旦書込まれたファイル記憶部５上のデータブロック１２０−１に対して、ユーザデータ書込前に有していた登録内容が復元される。
【０１０２】
続いて、復元後ファイル読出部３３２は、「復元後ファイル読出処理」を実行し、データ復元処理によってユーザデータ書込前の登録内容が書き込まれた後のデータブロック１２０−１を、ファイル記憶部５から読み出す。ブロック読込記憶部４３は、「ブロック読込記憶処理（ステップＳ４２）」により、ブロック取消部３３が読み出した復元後のデータブロック１２０−１と同一構造および同一内容を有する「復元判別用データブロック１６０−１」を、ブロック読込記憶部４３に記憶させる。この「復元判別用データブロック１６０−１」は、復元処理（ステップＳ４１）により、ファイル記憶部５内のデータブロック１２０−１に正常に復元されたか否かを判別するためのデータブロックであって、「復元判別用ファイル」である。
【０１０３】
復元正常終了判別部３３３は、「復元正常終了判別処理（ステップＳ４３）」を実行し、ユーザデータ書込前の登録内容が、復元対象であるファイル記憶部５内のデータブロック１２０−１に正常に復元されたか否かを判別する。この「復元正常終了判別処理（ステップＳ４３）」において、復元正常終了判別部３３３は、ブロック事前読込記憶部４１に記憶されている保持データブロック１４０−１のカウンタ１４１−１の値と、ブロック読込記憶部４３に記憶されている復元判別用データブロック１６０−１のカウンタ１６１−１の値とを比較することにより、ユーザデータの復元が正常終了したか否かを判別する。
【０１０４】
比較の結果、ブロック事前読込記憶部４１内のカウンタ１４１−１の値と、ブロック読込記憶部４３内のカウンタ１６１−１の値とが一致しないと判別した場合（ステップＳ４３；Ｎｏ）、復元正常終了判別部３３３は、データブロック１２０−１に対してユーザデータ書込前の登録内容が正常に復元されなかったと判別する。
【０１０５】
この場合、データ再復元部３３４は、復元処理（ステップＳ４１）の再実行により「データ再復元処理」を実行する。これにより、ブロック取消部３３は、ユーザデータ書込後のファイル記憶部５内のデータブロック１２０−１に対して、ユーザデータ書込前の登録内容の復元を試みる。
【０１０６】
一方、ブロック事前読込記憶部４１のカウンタ１４１−１の値と、ブロック読込記憶部４３のカウンタ１６１−１の値とが一致すると判別した場合（ステップＳ４３；Ｙｅｓ）、復元正常終了判別部３３３は、データブロック１２０−１に対してユーザデータ書込前の登録内容が正常に復元されたと判別する。この場合、最終データブロックポインタ設定部３３５は、復元されたデータブロック１２０−１を最終データブロックとして設定するための「最終データブロックポインタ設定処理（ステップＳ４４）」を実行する。
【０１０７】
「最終データブロックポインタ設定処理（ステップＳ４４）」において、最終データブロックポインタ設定部３３５は、ブロック管理領域６３内の最終データブロックポインタ６３３のレジスタ値に対して、正常に復元されたと判別したデータブロック１２０−１に含まれる自ブロックポインタ１２２−１の値（データブロック１２０−１が記憶されているファイル記憶部５上のアドレス）を設定する。これにより、データファイル６４内で、復元されたデータブロック１２０−１が最終データブロックとして使用可能になる。
【０１０８】
続いて、データブロック解除部３３６は、「データブロック解除処理（ステップＳ４５）」を実行し、ユーザデータ書込前の登録内容に復元されたデータブロック１２０−１に後続するデータブロック１２０−２の自ブロックポインタ８２−２のレジスタ値（データブロック１２０−２が記憶されているファイル記憶部５上のアドレス）を、先頭空きブロックポインタ６１２に設定する。これにより、復元処理が施されたデータブロックに後続するデータブロック１２０−２に対するデータブロックの割当が解除され、解除されたデータブロック１２０−２が空き領域６２内の空きブロックとして使用可能なように設定される。
【０１０９】
さらに、最終データブロック設定部３３７は、「最終データブロック設定処理（ステップＳ４６）」を実行し、復元されたデータブロック１２０−１の次ブロックポインタ１２３−１を、「０」に設定する。これにより、制御部１が、ファイルを読込む際に、データファイル６４中の最終データブロック（この例では、復元されたデータブロック１２０−１）に後続するデータファイルが存在しないことを認識可能になる。
【０１１０】
以上説明したように、本発明のファイル不正防止装置によれば、データファイル６４にユーザデータを書込む際に、ファイル記憶部５（ディスク装置）内のデータブロック１２０にユーザデータが正常に書き込まれていないと判別した場合、ユーザデータの書込を再度実行する。
【０１１１】
これにより、ファームウェアバグに起因する障害などにより、ファイル記憶部５にてファイル６が正常に更新されていない場合でも、ユーザデータを正常に書き込むことが可能になる。そのため、ユーザデータ読込処理にて、データ更新が正常に行われていないデータファイル６４が正常なファイルとして識別されることを回避できる。
【０１１２】
また、本発明によれば、書込要求に従ってユーザデータが書込まれたデータファイル６４を、その書込前の登録内容に復元する場合でも、ジャーナル（ある時点におけるデータベース内の更新データを記録したファイル）を参照することなしに、データベースの更新処理中に障害が発生した前の状態に復旧させる動作（ロールバック）が可能になる。
【０１１３】
なお、本発明の要旨を逸脱しない範囲で各種の変形が可能である。
【０１１４】
ファイル不正防止装置は、業務プログラム間やシステム間で大量のデータをやりとりする場合の中間ファイル、各種ログデータを格納するためのログファイルなどについても適用可能である。
【０１１５】
なお、本発明においては、ファイル不正防止装置内の処理は上述の専用のハードウェアにより実現されるもの以外に、その機能を実現するためのプログラムをファイル不正防止装置にて読取可能な記録媒体に記録し、この記録媒体に記録されたプログラムをファイル不正防止装置に読み込ませ、実行するものであってもよい。ファイル不正防止装置にて読取可能な記録媒体とは、フロッピーディスク（登録商標）、光磁気ディスク、ＤＶＤ、ＣＤなどの移設可能な記録媒体の他、ファイル不正防止装置に内蔵されたＨＤＤ等を指す。この記録媒体に記録されたプログラムは、例えば、ファイル不正防止装置が有する制御部１にて読み込まれ、制御部１の制御によって、上述したものと同様の処理が行われる。
【０１１６】
ここで、ファイル不正防止装置が有する制御部１は、プログラムが記録された記録媒体から読み込まれたプログラムを実行するコンピュータとして動作するものである。
【０１１７】
また、本発明のファイル不正防止装置は、ファイルに書き込まれたユーザデータを識別するためのデータ識別情報を、ユーザデータの書込前において設定する書込前識別情報設定部と、ユーザデータが書込まれた後のファイルを記憶するファイル記憶部と、ファイル記憶部に記憶されているユーザデータが書込まれた後のファイルの登録内容を読み出す追加後ファイル読出部と、を有し、データ追加部は、書込前識別情報設定部が設定したデータ識別情報と、書込が要求されたユーザデータとを、前記書込対象のファイルに書き込み、書込正常終了判別部は、書込前識別情報設定部がユーザデータ書込前に設定したデータ識別情報と、追加後ファイル読出部が読み出したユーザデータ書込後のファイルに登録されているデータ識別情報とに基づいて、ファイルにユーザデータが正常に書込まれたか否かを判別してもよい。
【０１１８】
また、本発明のファイル不正防止装置の書込正常終了判別部は、書込前識別情報設定部がユーザデータ書込前に設定したデータ識別情報と、追加後ファイル読出部が読み出したファイルに登録されているデータ識別情報とを比較し、書込前のデータ識別情報と、書込後のデータ識別情報とが一致しない場合に、ユーザデータが正常に書き込まれていないと判別してもよい。
【０１１９】
また、本発明のファイル不正防止装置は、書込対象のファイルにユーザデータを書き込むための登録内容を編集するための編集ファイルを記憶するブロック書込記憶部、を有し、書込前識別情報設定部は、ユーザデータの書込前に、ブロック書込記憶部に記憶されている編集ファイルに含まれるデータ識別情報に対して設定を行うようにしてもよい。
【０１２０】
また、本発明のファイル不正防止装置は、ブロック書込記憶部に記憶されている編集ファイルに、書込が要求されたユーザデータを書込む書込準備部、を有し、データ追加部は、書込準備部がユーザデータを書き込んだ編集ファイルの登録内容を、書込対象のファイルに書き込んでもよい。
【０１２１】
また、本発明のファイル不正防止装置は、データ追加部がデータ識別情報とユーザデータとを書込対象のファイルに書込む前に、ファイル記憶部に記憶されているファイルの登録内容を読み出し、読み出した登録内容を、ユーザデータの書込前に書込対象のファイルが有していた登録内容を保持するための保持ファイルに記憶する保持ファイル記憶部と、データ追加部がユーザデータを書込んだ後のファイルを復元対象として、書込前の登録内容に復元することが要求されたときに、保持ファイル記憶部が記憶している保持ファイルを読出し、読み出した保持ファイルの登録内容を、書込後のファイルに書き込むデータ復元部と、を有してもよい。
【０１２２】
また、本発明のファイル不正防止装置は、データ復元部が保持ファイルの登録内容を書込んだ後のファイルを読み出す復元後ファイル読出部と、保持ファイル記憶部が記憶している保持ファイルに含まれるユーザデータ書込前のデータ識別情報と、復元後ファイル読出部が読み出したファイルに含まれる復元後のデータ識別情報とに基づいて、復元対象のファイルが正常に復元されたか否かを判別する復元正常終了判別部と、復元正常終了判別部が復元対象のファイルが正常に復元されていないと判別した場合、復元対象のファイルに保持ファイルを再度書き込むデータ再復元部とを有してもよい。
【０１２３】
また、本発明のファイル不正防止装置の復元正常終了判別部は、保持ファイル記憶部が記憶している保持ファイルに含まれる書込前のデータ識別情報と、復元後ファイル読出部が読み出したファイルに含まれる復元後のデータ識別情報とを比較し、ユーザデータ書込前のデータ識別情報が示す値と、復元後のデータ識別情報が示す値とが一致しない場合に、復元対象のファイルが正常に復元されていないと判別してもよい。
【０１２４】
また、本発明のファイル不正防止装置では、データ追加部が要求されたユーザデータを書込むファイルは、ユーザデータを格納するためのユーザデータ領域をそれぞれ有する任意の数のデータブロックを含むファイルであり、データ追加部はユーザデータをデータブロックに書込んでもよい。
【０１２５】
また、本発明のファイル不正防止装置は、データ追加部が要求されたユーザデータを書込むファイルに対してデータブロックを割り当てることにより、ファイルを拡張するデータ領域拡張部、を有してもよい。
【０１２６】
また、本発明のファイル不正防止装置では、データ追加部が要求されたユーザデータを書込むファイルは、ファイルに割り当てられていないブロックである任意の数の空きブロックを含んでおり、データ領域拡張部は、書込正常終了判別部がユーザデータが正常に書込まれたと判別した場合に、空きブロックのうちからデータブロックを割当てることにより、ファイルを拡張してもよい。
【０１２７】
また、本発明のファイル不正防止装置は、復元正常終了判別部が復元対象のファイルが正常に復元されたと判別した場合に、データ追加部が書き込んだユーザデータを格納しているデータブロックの割当を解除し、解除したデータブロックを空きブロックに設定するデータブロック解除部、を有してもよい。
【０１２８】
また、本発明のファイル不正防止装置では、データ追加部が要求されたユーザデータを書込むファイル内では、データブロックが、ファイルにユーザデータが追加された順序に従って配置されていてもよい。
【０１２９】
また、本発明のファイル不正防止方法は、ファイルに書き込まれたユーザデータを識別するためのデータ識別情報を、ユーザデータの書込前において設定する書込前識別情報設定処理と、ユーザデータが書込まれた後のファイルを記憶するファイル記憶処理と、ファイル記憶処理により記憶されているユーザデータが書込まれた後のファイルの登録内容を読み出す追加後ファイル読出処理と、を有し、データ追加処理では、書込前識別情報設定処理にて設定したデータ識別情報と、書込が要求されたユーザデータとを、書込対象のファイルに書き込み、書込正常終了判別処理では、書込前識別情報設定処理にてユーザデータ書込前に設定したデータ識別情報と、追加後ファイル読出処理にて読み出したユーザデータ書込後のファイルに登録されているデータ識別情報とに基づいて、ファイルにユーザデータが正常に書込まれたか否かを判別してもよい。
【０１３０】
また、本発明のファイル不正防止方法の書込正常終了判別処理では、書込前識別情報設定処理にてユーザデータ書込前に設定したデータ識別情報と、追加後ファイル読出処理にて読み出したファイルに登録されているデータ識別情報とを比較し、書込前のデータ識別情報と、書込後のデータ識別情報とが一致しない場合に、ユーザデータが正常に書き込まれていないと判別してもよい。
【０１３１】
また、本発明のファイル不正防止方法は、書込対象のファイルにユーザデータを書き込むための登録内容を編集するための編集ファイルを記憶するブロック書込記憶処理、を有し、書込前識別情報設定処理では、ユーザデータの書込前に、ブロック書込記憶処理にて記憶されている編集ファイルに含まれるデータ識別情報に対して設定を行うようにしてもよい。
【０１３２】
また、本発明のファイル不正防止方法は、ブロック書込記憶処理にて記憶されている編集ファイルに、書込が要求されたユーザデータを書込む書込準備処理、を有し、データ追加処理では、書込準備処理にてユーザデータを書き込んだ編集ファイルの登録内容を、書込対象のファイルに書き込んでもよい。
【０１３３】
また、本発明のファイル不正防止方法は、データ追加処理にてデータ識別情報とユーザデータとを書込対象のファイルに書込む前に、ファイル記憶処理により記憶されているファイルの登録内容を読み出し、読み出した登録内容を、ユーザデータの書込前に書込対象のファイルが有していた登録内容を保持するための保持ファイルに記憶する保持ファイル記憶処理と、データ追加処理にてユーザデータを書込んだ後のファイルを復元対象として、書込前の登録内容に復元することが要求されたときに、保持ファイル記憶処理にて記憶している保持ファイルを読出し、読み出した保持ファイルの登録内容を、書込後のファイルに書き込むデータ復元処理と、を有してもよい。
【０１３４】
また、本発明のファイル不正防止方法は、データ復元処理にて保持ファイルの登録内容を書込んだ後のファイルを読み出す復元後ファイル読出処理と、保持ファイル記憶処理にて記憶している保持ファイルに含まれるユーザデータ書込前のデータ識別情報と、復元後ファイル読出処理にて読み出したファイルに含まれる復元後のデータ識別情報とに基づいて、復元対象のファイルが正常に復元されたか否かを判別する復元正常終了判別処理と、復元正常終了判別処理にて復元対象のファイルが正常に復元されていないと判別した場合、復元対象のファイルに保持ファイルを再度書き込むデータ再復元処理とを有してもよい。
【０１３５】
また、本発明のファイル不正防止方法の復元正常終了判別処理では、保持ファイル記憶処理にて記憶している保持ファイルに含まれるユーザデータ書込前のデータ識別情報と、復元後ファイル読出処理にて読み出したファイルに含まれる復元後のデータ識別情報とを比較し、ユーザデータ書込前のデータ識別情報が示す値と、復元後のデータ識別情報が示す値とが一致しない場合に、復元対象のファイルが正常に復元されていないと判別してもよい。
【０１３６】
また、本発明のファイル不正防止方法では、データ追加処理にて要求されたユーザデータを書込むファイルは、ユーザデータを格納するためのユーザデータ領域をそれぞれ有する任意の数のデータブロックを含むファイルであり、データ追加処理では、ユーザデータをデータブロックに書込んでもよい。
【０１３７】
また、本発明のファイル不正防止方法は、データ追加処理にて要求されたユーザデータを書込むファイルに対してデータブロックを割り当てることにより、ファイルを拡張するデータ領域拡張処理、を有してもよい。
【０１３８】
また、本発明のファイル不正防止方法では、データ追加処理にて要求されたユーザデータを書込むファイルは、ファイルに割り当てられていないブロックである任意の数の空きブロックを含んでおり、データ領域拡張処理では、書込正常終了判別処理にてユーザデータが正常に書込まれたと判別した場合に、空きブロックのうちからデータブロックを割当てることにより、ファイルを拡張してもよい。
【０１３９】
また、本発明のファイル不正防止方法は、復元正常終了判別処理にて復元対象のファイルが正常に復元されたと判別した場合に、データ追加処理にて書き込んだユーザデータを格納しているデータブロックの割当を解除し、解除したデータブロックを空きブロックに設定するデータブロック解除処理、を有してもよい。
【０１４０】
また、本発明のファイル不正防止方法は、データ追加処理にて要求されたユーザデータを書込むファイル内では、データブロックが、ファイルにユーザデータが追加された順序に従って配置されていてもよい。
【０１４１】
また、本発明のプログラムは、ファイルに書き込まれたユーザデータを識別するためのデータ識別情報を、ユーザデータの書込前において設定する書込前識別情報設定手順と、ユーザデータが書込まれた後のファイルを記憶するファイル記憶手順と、ファイル記憶手順により記憶されているユーザデータが書込まれた後のファイルの登録内容を読み出す追加後ファイル読出手順と、を有し、データ追加手順では、書込前識別情報設定手順にて設定したデータ識別情報と、書込が要求されたユーザデータとを、前記書込対象のファイルに書き込み、書込正常終了判別手順では、書込前識別情報設定手順にてユーザデータ書込前に設定したデータ識別情報と、追加後ファイル読出手順にて読み出したユーザデータ書込後のファイルに登録されているデータ識別情報とに基づいて、ファイルにユーザデータが正常に書込まれたか否かを判別してもよい。
【０１４２】
また、本発明のプログラムの書込正常終了判別手順では、書込前識別情報設定手順にてユーザデータ書込前に設定したデータ識別情報と、追加後ファイル読出手順にて読み出したファイルに登録されているデータ識別情報とを比較し、書込前のデータ識別情報と、書込後のデータ識別情報とが一致しない場合に、ユーザデータが正常に書き込まれていないと判別してもよい。
【０１４３】
また、本発明のプログラムは、書込対象のファイルにユーザデータを書き込むための登録内容を編集するための編集ファイルを記憶するブロック書込記憶手順、を有し、書込前識別情報設定手順では、ユーザデータの書込前に、ブロック書込記憶手順にて記憶されている編集ファイルに含まれるデータ識別情報に対して設定を行うようにしてもよい。
【０１４４】
また、本発明のプログラムは、ブロック書込記憶手順にて記憶されている編集ファイルに、書込が要求されたユーザデータを書込む書込準備手順、を有し、データ追加手順では、書込準備手順にてユーザデータを書き込んだ編集ファイルの登録内容を、書込対象のファイルに書き込んでもよい。
【０１４５】
また、本発明のプログラムは、データ追加手順にてデータ識別情報とユーザデータとを書込対象のファイルに書込む前に、ファイル記憶手順により記憶されているファイルの登録内容を読み出し、読み出した登録内容を、ユーザデータの書込前に書込対象のファイルが有していた登録内容を保持するための保持ファイルに記憶する保持ファイル記憶手順と、データ追加手順にてユーザデータを書込んだ後のファイルを復元対象として、書込前の登録内容に復元することが要求されたときに、保持ファイル記憶手順にて記憶している保持ファイルを読出し、読み出した保持ファイルの登録内容を、書込後のファイルに書き込むデータ復元手順と、を有してもよい。
【０１４６】
また、本発明のプログラムは、データ復元手順にて保持ファイルの登録内容を書込んだ後のファイルを読み出す復元後ファイル読出手順と、保持ファイル記憶手順にて記憶している保持ファイルに含まれるユーザデータ書込前のデータ識別情報と、復元後ファイル読出手順にて読み出したファイルに含まれる復元後のデータ識別情報とに基づいて、復元対象のファイルが正常に復元されたか否かを判別する復元正常終了判別手順と、復元正常終了判別手順にて復元対象のファイルが正常に復元されていないと判別した場合、復元対象のファイルに保持ファイルを再度書き込むデータ再復元手順とを有してもよい。
【０１４７】
また、本発明のプログラムの復元正常終了判別手順では、保持ファイル記憶手順にて記憶している保持ファイルに含まれるユーザデータ書込前のデータ識別情報と、復元後ファイル読出手順にて読み出したファイルに含まれる復元後のデータ識別情報とを比較し、ユーザデータ書込前のデータ識別情報が示す値と、復元後のデータ識別情報が示す値とが一致しない場合に、復元対象のファイルが正常に復元されていないと判別してもよい。
【０１４８】
また、本発明のプログラムでは、データ追加手順にて要求されたユーザデータを書込むファイルは、ユーザデータを格納するためのユーザデータ領域をそれぞれ有する任意の数のデータブロックを含むファイルであり、データ追加手順では、ユーザデータをデータブロックに書込んでもよい。
【０１４９】
また、本発明のプログラムは、データ追加部が要求されたユーザデータを書込むファイルに対してデータブロックを割り当てることにより、ファイルを拡張するデータ領域拡張手順、を有してもよい。
【０１５０】
また、本発明のプログラムでは、データ追加部が要求されたユーザデータを書込むファイルは、ファイルに割り当てられていないブロックである任意の数の空きブロックを含んでおり、データ領域拡張手順では、書込正常終了判別手順にてユーザデータが正常に書込まれたと判別した場合に、空きブロックのうちからデータブロックを割当てることにより、ファイルを拡張してもよい。
【０１５１】
また、本発明のプログラムは、復元正常終了判別手順にて復元対象のファイルが正常に復元されたと判別した場合に、データ追加手順にて書き込んだユーザデータを格納しているデータブロックの割当を解除し、解除したデータブロックを空きブロックに設定するデータブロック解除手順、を有してもよい。
【０１５２】
また、本発明のプログラムでは、データ追加手順にて要求されたユーザデータを書込むファイル内では、データブロックが、ファイルにユーザデータが追加された順序に従って配置されていてもよい。
【図面の簡単な説明】
【０１５３】
【図１】本発明の実施形態に従ったファイル不正防止装置の構成を示す図である。
【図２】図１に示したブロック追加部の構成を示す図である。
【図３】図１に示したブロック取消部の構成を示す図である。
【図４】図１に示したファイルのデータ構造の一例を示す図である。
【図５】図４に示したデータファイルのデータ構造の一例を示す図である。
【図６】空きファイルの初期化設定動作を示すフローチャートである。
【図７】ファイルが未作成である場合に、ファイル管理領域を作成する動作を示すフローチャートである。
【図８】データブロックのユーザデータ領域に、ユーザデータを書き込む動作を示すフローチャートである。
【図９】ユーザデータが書込まれたデータブロックを、書込前の登録内容に復元する動作を示すフローチャートである。
【図１０】一般的なファイル不正防止装置の構成の一例を示す図である。
【符号の説明】
【０１５４】
１  制御部
２  ファイル初期化部
３  ファイル更新部
４  ブロック記憶部
５  ファイル記憶部
６  ファイル
７  入力部
１１  アプリケーションプログラム
３１  ファイル作成部
３２  ブロック追加部
３３  ブロック取消部
３２１  書込準備部
３２２  書込前識別情報設定部
３２３  データ追加部
３２４  追加後ファイル読出部
３２５  書込正常終了判別部
３２６  データ再追加部
３２７  データ領域拡張部
３２８  後続空きブロック設定部
３３１  データ復元部
３３２  復元後ファイル読出部
３３３  復元正常終了判別部
３３４  データ再復元部
３３５  最終データブロックポインタ設定部
３３６  データブロック解除部
３３７  最終データブロック設定部
４１  ブロック事前読込記憶部
４２  ブロック書込記憶部
４３  ブロック読込記憶部
６１  空き管理領域
６２  空き領域
６３  ファイル管理領域
６４  データファイル
６１１  空き数カウンタ
６１２  先頭空きブロックポインタ
６１３  最終空きブロックポインタ
６３１  データファイル数カウンタ
６３２  先頭データブロックポインタ
６３３  最終データブロックポインタ
１１０−１〜１１０−ｍ  空きブロック
１２０−１〜１２０−ｎ  データブロック
１２１−１  カウンタ
１２２−１  自ブロックポインタ
１２３−１  次ブロックポインタ
１２４−１  ユーザデータ領域
１３０−１  編集データブロック
１４０−１  保持データブロック
１５０−１  書込判別用データブロック
１６０−１  復元判別用データブロック
１０００  データ出力処理部
１００１  ファイル領域拡張部
１００２  ファイル未使用領域検索部
１００３  未使用領域保持ファイルリスト
１００４  ファイル未使用領域解放部
２０００  利用者ファイル領域
２００１  実ファイル領域
２００２  利用者未使用領域
Ａ、Ｂ、Ｃ  ファイル
ａ、ｂ、ｃ  ファイル未使用領域
【図１】
2009217340.tif 000003
【図２】
2009217340.tif 000004
【図３】
2009217340.tif 000005
【図４】
2009217340.tif 000006
【図５】
2009217340.tif 000007
【図６】
2009217340.tif 000008
【図７】
2009217340.tif 000009
【図８】
2009217340.tif 000010
【図９】
2009217340.tif 000011
【図１０】
2009217340.tif 000012