我的应用程序创建的Windows CE / Embedded C ++非易失性文件在重新启动时被删除

时间:2013-11-21 00:56:31

标签: c++ windows embedded windows-ce volatile

我正在使用C ++开发Windows Embedded Compact 7的应用程序。我刚刚遇到的问题是,我在应用程序中创建的.ini设置文件和.txt日志文件以及放置在\ Mounted Volume(非易失性分区)上的.txt日志文件将在重新启动时被删除。 / p>

应用程序正在打开.ini文件,编辑值,保存文件,下次启动时,我会更新设置。直到最近一次重大软件更新后我才开始遇到问题。但是在更新期间没有触及处理文件打开和关闭的特定功能。

虽然它似乎与我的应用程序以及我打开/编辑/保存/关闭文件的方式有关,因为如果我用Wordpad打开.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.txt\n\r");

  else

    debugMessage("Function: writeLogFile - Notice. Opened logFile.txt\n\r");

  if(fprintf(pFile, "%s\r",szString) < 0)

    debugMessage("Function: writeLogFile - Error! There was a problem writing the alarm string to logFile.txt.\n\r");

  if(fclose(pFile))

    debugMessage("Function: writeLogFile - Error! Could not close logFile.txt\n\r");

  else

    debugMessage("Function: writeLogFile - Notice. Closed logFile.txt\n\r");

  return 1;

}

1 个答案:

答案 0 :(得分:0)

您可以在关闭文件之前尝试添加fflush调用吗? 这应该强制实际写。如果您没有明确强制它,文件系统可能会缓存写入。