我知道这听起来像是一个编程问题,但事实并非如此.请跟我说:
我的客户遇到了一个我无法解释的奇怪问题:程序使用共享模式下打开的共享SMB驱动器(Windows 2008R2服务器)上的文件.
在文件内部执行更新之前,程序将使用LockFile锁定特定的部分,读取数据,将所需的更改写入这些部分,然后解锁它们.
这样做是为了确保同一程序的多个实例可以覆盖彼此的更改.
在我的客户案例中,该程序(在所有其他位置表现良好多年)成功锁定文件,但在同一句柄上对ReadFile的后续调用失败,GetlastError返回错误64指定的网络名称不再可用
因此,我的问题:
Windows SMB客户端或服务器中是否存在可能导致此类问题的设置?
对我来说它看起来像一个乐观的锁,但Windows默认情况下不执行乐观锁(它确实是opportunistic locks).
我的第一个怀疑是这个问题是由反病毒软件(卡巴斯基)造成的,但网站管理员发誓所有AV都在这个网络路径上排除了,无论是在客户端还是在文件服务器上.
客户端操作系统是Windows XP,7,2003和2008R2的混合(通过终端服务).它似乎只发生在重负荷的时候(每个人都进来的早晨,或者每个人都退出的时候).
好吧,答案比我想象的要简单得多:服务器NIC的故障设备驱动程序显然是导致所有这些问题的原因.
原文链接:https://www.f2er.com/windows/368095.html