我正在修改UNIX系统上的文件并在Windows机器上访问它们。服务器运行samba,客户端进行了一些缓存。当我在UNIX端修改文件时,查看新版本文件的唯一可靠方法是在Windows资源管理器中右键单击并选择“刷新”。
我正在寻找Windows API相当于在Windows资源管理器中右键单击并选择“刷新”。还有其他问题关于向Explorer发送消息以使其刷新,但这不是我想要的:我不关心Explorer窗口的内容,我宁愿甚至不需要打开目标目录。我只想将缓存失败效果集成到我的程序中,这样我就可以避免看到过时的数据了。
答案 0 :(得分:4)
CIFS包含更新通知系统。资源管理器为此注册,并将反映Samba发送的任何更改。我不知道有任何其他API机制告诉Windows它需要刷新。
Samba支持Linux inotify,因此它应该自动获取Explorer正在显示的文件夹的任何更改并发送Explorer更新。
您是否正在使用最新版本的Samba,并且Samba是否已使用inotify支持构建?这显然只是Linux。对于另一个Unix,您可以实现等效的功能。相关代码位于smbd/notify_internal.c
。