3

クライアントのキオスクで動作するように設計された当社製品のエンジンを作成しています。これには、ディスクへのファイル書き込みをコミットするコードが含まれます。

クライアントのハードウェアまたは OS の選択を制御することはできず、初めて Windows 7 Embedded を使用することができました。突然、フラッシュの直後に電源が失われると、安全な書き込みが失敗し始めました。

commode.obj を含めると fflush がコミットされますが、Win7 でも、Windows では MS 固有のコミット モード フラグ ("c") を使用することを常に好んでいました (Linux バージョンではまったく異なる方法を使用します)。製品ではなくライブラリです。commode.obj が実際に含まれていることを確認できないため、エラーをスローすることはできません。

FILE* p_f = fopen("foo.dat", "wbc");
fwrite(p_important_stuff, 1, size, p_f);
fflush(p_f);

だから私の質問は次のとおりです: Win7 でコミット モード フラグが壊れていますか? もしそうなら、commode.obj が含まれていることを保証できる方法はありますか、それともグローバル コミット フラグの状態を変更できる他の方法はありますか?

4

2 に答える 2

0

ほとんどの場合、C ファイル インターフェイスによって公開される問題以外の問題があります。書き込みを遅らせる OS とファイルシステムの決定、および HDD キャッシュについて考えています。これにより、表示される動作が説明される可能性があります。

commode.objそれとは別に、静的ライブラリではなく DLL としてライブラリをリンクするだけで、常に を含めることができるはずです。

于 2012-08-17T09:43:51.573 に答える