Windows 写文件故障模式

Windows 写文件故障模式,windows,winapi,msxml,Windows,Winapi,Msxml,当网络连接“失败”时,通过网络共享写入的文件会发生什么情况?我想可能会发生多种情况 我问这个问题的原因是因为我写的一个程序似乎以一种我从未见过的方式破坏了一个文件。事实上,我从来没有收到过我的程序创建一个损坏文件的报告,我相信如果它损坏了一个文件,我会听到它。实际生成损坏文件的代码实际上是Microsoft代码。当从MSXML4.0 COM组件在IXMLDOMDocument2接口上调用save函数时,将创建该文件。该函数创建了无效的XML文档。33789字节文件的最后5452字节被空值(0x0

当网络连接“失败”时,通过网络共享写入的文件会发生什么情况?我想可能会发生多种情况


我问这个问题的原因是因为我写的一个程序似乎以一种我从未见过的方式破坏了一个文件。事实上,我从来没有收到过我的程序创建一个损坏文件的报告,我相信如果它损坏了一个文件,我会听到它。实际生成损坏文件的代码实际上是Microsoft代码。当从MSXML4.0 COM组件在IXMLDOMDocument2接口上调用
save
函数时,将创建该文件。该函数创建了无效的XML文档。33789字节文件的最后5452字节被空值(0x00)填充。我正在试图了解发生了什么。

简单的回答是文件可能已损坏(正如您已经发现的)


从这里开始,几乎唯一有趣的问题是如何防止这种情况再次发生。典型的方法是将数据写入临时文件,然后在写入后将其重命名为正确的名称。如果网络连接在此中间死亡,则您将没有正确的文件名。要恢复,请删除所有临时文件,然后从头开始重新启动操作。

写入文件时网络连接失败。“这还不够吗?”汉斯,你在说什么?你是说当网络连接失败时,写操作的行为是未定义的吗?通常,网络堆栈和/或网络服务具有某种容错能力。看起来你的没有。把这个带到serverfault.com去了解一下,别忘了仔细描述它。@Hans,这是一个怎样的serverfault问题?这个问题最终是关于
WriteFile
的语义。不,WriteFile只为设备驱动程序生成I/O请求。接下来会发生什么完全取决于它做什么。您的问题无法回答,因为您没有描述系统。谢谢您的回答。我还发现下面的页面很有帮助。