我的应用程序创建的Windows CE/Embedded C++非易失性文件在重新启动时被删除
Windows CE/Embedded C++ non-volatile files created by my app being deleted on reboot
我正在使用C++开发一个带有Windows Embedded Compact 7的应用程序。我最近遇到的问题是,我用应用程序创建的.ini设置文件和.txt日志文件在重新启动时被删除,并放在\Mounted Volume(一个非易失性分区)上。
该应用程序正在打开.ini文件,编辑值,保存文件,下次我启动时,它会显示我更新的设置。直到最近一次重大的软件更新后,我才开始出现问题。但在更新过程中,处理文件打开和关闭的具体功能没有被触及。
尽管这似乎与我的应用程序和我打开/编辑/保存/关闭文件的方式有关,因为如果我用写字板打开.ini文件并手动编辑值,然后保存它,则在重新启动时会保存设置。我还对所有功能进行了适当的错误处理,没有发生任何错误。
我在MSDN上读到可能需要"刷新"打开的缓冲区。可能我需要这么做?我真的希望有人已经处理过Windows嵌入式/CE,并且可能遇到过类似的问题,即非易失性文件分区更像易失性内存。
谢谢你的帮助!以下是我用来写入日志文件的代码,它与写入.ini文件的代码基本相同:
int writeLogFile(const char* szString)
{
FILE* pFile;
if((pFile = fopen("\Mounted Volume\logFile.txt", "a+")) == NULL )
debugMessage("Function: writeLogFile - Error! Could not open logFile.txtnr");
else
debugMessage("Function: writeLogFile - Notice. Opened logFile.txtnr");
if(fprintf(pFile, "%sr",szString) < 0)
debugMessage("Function: writeLogFile - Error! There was a problem writing the alarm string to logFile.txt.nr");
if(fclose(pFile))
debugMessage("Function: writeLogFile - Error! Could not close logFile.txtnr");
else
debugMessage("Function: writeLogFile - Notice. Closed logFile.txtnr");
return 1;
}
在关闭文件之前,是否可以尝试ad一个fflush调用。这应该会强制进行实际写入。如果不明确强制,文件系统可能会缓存写操作。
相关文章:
- 易失性sig_atomic_t的内存安全性
- C++易失性:保证 32 位访问?
- 避免易失性和非易失性成员函数的代码重复
- 当 2 个线程共享同一物理内核时,具有错误共享的易失性增量在发布中的运行速度比在调试中慢
- 如何访问常量易失性 std::array?
- 为什么在 C++20 中弃用易失性?
- 根据 MSVC,具有易失性成员的结构不再是 POD
- 是否允许编译器优化掉局部易失性变量
- 访问共享内存而不使用易失性、std::atomic、信号量、互斥锁和自旋锁
- 如何避免对无锁程序使用易失性?
- C++:易失性实例中的易失性成员函数 - 将数组分配给指针是无效的转换?
- g++ 6.3,avx 内联函数上的 Kahan 求和用易失性关键字进行序列化
- 是什么让这种易失性打破了结构的指针算法?
- 如果不需要易失性,为什么 std::atomic 方法会提供易失性重载
- *(易失性无符号整数 *) 的含义 0x00 = 0x00;
- 使用易失性 c 字符串和 std::cout
- 易失性结构 = 结构不可能,为什么?
- 我的应用程序创建的Windows CE/Embedded C++非易失性文件在重新启动时被删除
- 使用gnuplot动态绘制易失性数据文件
- 为什么不能将易失性文件*分配给文件*?