4

我正在修改 UNIX 系统上的文件并在 Windows 机器上访问它们。服务器运行 samba,客户端完成了一些缓存。当我在 UNIX 端修改文件时,查看文件新版本的唯一可靠方法是在 Windows 资源管理器中单击鼠标右键并选择“刷新”。

我正在寻找相当于在 Windows 资源管理器中单击鼠标右键并选择“刷新”的 Windows API。关于向资源管理器发送消息以使其刷新的其他问题,但这不是我想要的:我不关心资源管理器窗口的内容,我什至不需要打开目标目录。我只想将缓存破坏效果集成到我的程序中,这样我就可以避免看到陈旧的数据。

4

1 回答 1

4

CIFS 包括一个更新通知系统。Explorer 对此进行注册,并将反映 Samba 发送给它的任何更改。我不知道有任何其他 API 机制可以告诉 Windows 它需要进行刷新。

Samba 支持 Linux inotify,因此它应该自动获取对 Explorer 正在显示的文件夹的任何更改并发送 Explorer 更新。

您是否使用了最新版本的 Samba,并且 Samba 是在构建时支持 inotify 的?这显然只是Linux。对于另一个 Unix,您可以实现等效的功能。相关代码在smbd/notify_internal.c.

于 2010-11-01T17:44:29.443 回答