2013-11-21 2 views
1

C++을 사용하여 Windows Embedded Compact 7로 응용 프로그램을 개발하고 있습니다. 필자가 최근에 직면 한 문제는 .ini 설정 파일과 응용 프로그램 및 장소 (비 휘발성 파티션)에있는 .txt 로그 파일이 재부팅시 삭제된다는 것입니다.재부팅시 Windows CE/Embedded C++ 비 휘발성 파일이 삭제됩니다.

응용 프로그램이 .ini 파일을 열고, 값을 편집하고, 파일을 저장하고, 다음에 부팅 할 때 내가 업데이트 한 설정으로 거기에있을 것입니다. 주요 소프트웨어 업데이트가 완료된 후에야 문제가 발생하기 시작했습니다. 그러나 파일을 열고 닫는 것을 다루는 특정 기능은 업데이트하는 동안 만지지 않았습니다.

워드 패드로 .ini 파일을 열고 값을 수동으로 편집 한 다음 저장하면 설정이 저장되므로 내 응용 프로그램 및 파일 열기/편집/저장/닫기와 관련있는 것처럼 보입니다 재부팅시. 또한 모든 함수에 대해 적절한 오류 처리가 수행되며 오류가 발생하지 않습니다.

MSDN에서 열린 버퍼를 "플러시"할 필요가 있다고 읽었습니다. 아마 이걸 할 필요가 있을까요? 나는 누군가가 윈도우 임베디드/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; 

} 

답변

0

당신은 광고에 FFLUSH 호출을 시도 할 수 있습니다. 실제 쓰기를 강제해야합니다. 명시 적으로 강제하지 않으면 파일 시스템이 쓰기를 캐시 할 수 있습니다.

관련 문제