アプリ版:「スタンプのみでお礼する」機能のリリースについて

初めて投稿します。

現在、マップトファイルを使うソフトを開発しています。
一定周期で、マップトファイルをフラッシュしてメモリのデータを保存しています。
プログラムが動いているときは、フラッシュされている事を確認したのです。
ところが、停電でPCが落ちたあとなどに、再起動をしたところ、フラッシュができていないのです。
(できていたが戻される?)

OpenFileMapping→FlushViewOfFileでやってます。

UnmapViewOfFileを使わないといけないのでしょうか?

原因、対策方法などわかる方いらっしゃいますか?
教えてください。

ちなみに、WINDOWS2000で、VC++4.0(古い!!)でやってます。

A 回答 (2件)

ディスクに内容が書き終わる前に、停電によりシステムが停止したため、変更がロールバックされただけでは。



ただここで質問しているって事は、停電があった1回限りでなく、以降必ずフラッシュされなくなったという事でしょうから、ファイルシステムに不整合が発生しているか、ハード自体に障害が起きている恐れもあるかと。

chkdskやドライブベンダーが提供している診断ツールを実行してみては。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
たしかに、ロールバックされている可能性はありますね。

参考に対策を考えて見ます。

お礼日時:2005/10/02 15:47

お使いのファイルを置いているファイルシステムがNTFSであるか、あるいはネットワークを越えたさきにあるリモートファイルである場合、FlushViewOfFileは単に「ファイルの更新に必要なデータをファイルシステムに送り出す」だけで、実際のファイル更新はファイルシステム側でゆっくりと行われます。



「CreateFileMappingに与えるファイルへのハンドル」をCreateFileで取得しますが、このときdwFlagsAndAttributesパラメータにFILE_FLAG_WRITE_THROUGHを追加しておけば、ファイルシステム側で書き込みデータがバッファリングされずすぐに書き戻されるようです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ご指摘のdwFlagsAndAttributesパラメータについては、
明日早速試してみます。

お礼日時:2005/10/02 15:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!