2012-08-17 39 views
3

我为我们公司的产品编写发动机,这些发动机是为了在我们的客户服务亭上运行而设计的。这包括将文件写入磁盘的代码。微软在Windows 7上的fopen commit模式标志是否被破解?

我们无法控制客户选择的硬件或操作系统,并且我们第一次获得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包含的方式,或者是有一些其他的方式,我可以改变状态全局提交标志的?

回答

0

除了那些由C文件接口公开的问题外,还有其他很多问题。我正在考虑操作系统和文件系统决策,以延迟写入和HDD缓存,这可能会解释您看到的行为。

除此之外,您应该始终能够简单地通过将库链接为DLL而不是静态库来包含commode.obj

+0

据我所知,commit模式标志应该改变commode.obj所做的全局标志的文件本地版本,而commode.obj可以工作,而“c”不能。客户通知我他们已经禁用了驱动器的文件缓存(一个2.5英寸的笔记本电脑),至少尽可能多。尽管使用DLL的好处是,尽管它使得向政府测试版本发布源代码变得更加困难。 – subi211 2012-08-17 10:07:40

+0

如何让DLL释放源代码更困难?如果他们因为没有正确构建你的库而遇到麻烦,是不是他们的问题?(我知道,天真...) – rubenvb 2012-08-17 10:10:59

+0

不幸的是它是我们的问题。如果他们不能编译的东西,他们只会让我们失败,另一个投稿会让我们花费数千美元。他们不是专家,我不得不向他们解释FPU控制字是如何影响浮点数的。检查编译代码的校验和与我们发布的代码的校验和。 – subi211 2012-08-17 10:33:18

相关问题