我有一个用C ++编写的windows程序。它使用WriteFile()
WinAPI函数定期将信息写入文本文件。
程序在启动时打开文件并保持文件打开直到退出。程序使用以下代码打开文件:
CreateFileW(path, GENERIC_WRITE, FILE_SHARE_READ, &sa,
OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
最近发生了以下问题:运行大约10天后,程序停止向该文件写入信息。但是当程序重新启动时,它会恢复写入文件。
假设程序没有错误并且继续调用WriteFile来写入数据:WriteFile
函数在正常工作一段时间之后才能开始失败吗?是什么导致这个?
(磁盘空间问题除外。文件很小,磁盘空间足够)。
(遗憾的是程序没有检查WriteFile
的返回值)。
答案 0 :(得分:3)
WriteFile()
API函数有一个错误,这是非常难以置信的。您的下一步必须是检查错误代码并在函数失败时调用GetLastError()
。
答案 1 :(得分:0)
可能导致这种情况的一件事是:
答案 2 :(得分:0)
我们的情况下WriteFile函数失败了,因为我们在计时器中调用了函数。线程中有另一个函数在并行线程中调用ReadFile(并访问同一个文件)。由于WriteFile无法访问该实例的文件,因此它曾失败!