Отказ от кэширования файлов CIFS в Windows / принудительное «обновление» - PullRequest
4 голосов
/ 01 ноября 2010

Я изменяю файлы в системе UNIX и обращаюсь к ним в окне Windows.Сервер запускает samba, и клиент выполняет некоторое кеширование.Когда я изменяю файл на стороне UNIX, единственный надежный способ увидеть новую версию файла - это щелкнуть правой кнопкой мыши в проводнике Windows и выбрать «обновить».

Я ищу эквивалент Windows APIщелкнуть правой кнопкой мыши в проводнике Windows и выбрать «обновить».На SO есть и другие вопросы об отправке сообщения в Explorer, чтобы оно обновлялось, но это не то, что я хочу: меня не волнует содержимое окна Explorer, и я бы предпочел, чтобы оно даже не было открыто для целикаталог.Я просто хочу интегрировать эффект уничтожения кэша в свою программу, чтобы не видеть устаревших данных.

1 Ответ

4 голосов
/ 01 ноября 2010

CIFS включает в себя систему уведомлений об обновлениях.Проводник регистрируется для этого и будет отражать любые изменения, которые Samba отправляет.Я не знаю ни одного другого API-механизма, который бы сообщал Windows, что ему нужно обновить.

Samba поддерживает Linux inotify, поэтому он должен автоматически собирать любые изменения в папках, которые отображает Explorer, и отправлять обновления Explorer.

Используете ли вы достаточно последнюю версию Samba, и была ли Samba построена с поддержкой inotify?Это, очевидно, только для Linux.Для другого Unix вы можете реализовать эквивалентную функциональность.Соответствующий код в smbd/notify_internal.c.

...