Мы реализуем протокол SMB2. Для показа предыдущих версий файлов клиент отправляет SMB2 IOCTL reqeust with CtlCode of FSCTL_SRV_ENUMERATE_SNAPSHOTS
, Мы отправляем ответ, как описано в http://download.microsoft.com/download/9/5/E/95EF66AF-9026-4BB0-A41D-A4F81802D92C/%5BMS-SMB2%5D.pdf 3.3.5.15.1 Обработка запроса на перечисление предыдущих версий
Когда я нажимаю Свойства-> Предыдущие версии каталога, он показывает, что вернулись предыдущие версии, но для файлов ничего не отображается. Я проверил, что мы возвращаем одинаковый ответ для файлов и каталогов.
Почему это не работает для файлов? Чем отличаются файлы и каталоги от предыдущих версий? Какие еще запросы должны поддерживаться для просмотра предыдущих версий файла в клиенте Windows?
Я прослушал некоторые локальные сообщения при открытии свойств каталога / файла (вкладка предыдущей версии). Обнаружено, что клиент отправляет запросы CreatFile ([MS-SMB2], 2.2.13SMB2 CREATE Request) с SMB2_CREATE_TIMEWARP_TOKEN ([MS-SMB2], 2.2.13.2.7) в CreateContexts. Клиент получает список снимков, а затем циклически изменяет временные метки, выполняя запрос Create с использованием временной метки в SMB2_CREATE_TIMEWARP_TOKEN.
Предположим, что клиент пытается открыть файл из разных снимков и сравнить изменения, используя время изменения файла. Затем отобразите все разные версии.
Это может быть либо конкретное поведение формы окна, либо ошибка на вашем сервере. Мы протестировали с нашим сервером NQ Storage, и он хорошо работал как с файлами, так и с папками, когда клиент был в 2012 году. Мы тестировали с несколькими другими окнами, но я пока не могу вспомнить, какие из них. Честно говоря, мы не тестировали снимки со слишком большим количеством фигур Win.
Если вы делаете захват, он может дать вам подсказку, какая сторона (C или S) виновна.