クライアントのキオスクで動作するように設計された当社製品のエンジンを作成しています。これには、ディスクへのファイル書き込みをコミットするコードが含まれます。
クライアントのハードウェアまたは 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 が含まれていることを保証できる方法はありますか、それともグローバル コミット フラグの状態を変更できる他の方法はありますか?