[...] если создатель сервера ушел, должны ли дескрипторы быть освобождены и файл был удален автоматически?
В конечном счете, да, но не сразу.Поскольку вы используете Windows Server 2008 R2 (и, следовательно, SMBv2, обратите внимание, что я предполагаю, что и сервер, и клиент работают на Windows Server 2008 R2), клиент запросит дескриптор файла durable .В соответствии со спецификацией SMBv2 , разделами 3.3.6.2 и 3.3.7.1, сервер должен запустить долговременный таймер открытого мусора (по умолчанию для Windows Server установлено значение 16 минут).По истечении таймера сервер должен проверить все открытые дескрипторы и закрыть те, которые не были возвращены клиентом.
Конечно, в вашем сценарии открытый вопрос заключается в том, обнаруживает ли сервер потерю соединения с клиентом привсе, так как клиент (т. е. весь сервер, а не только процесс) в соответствии с вашим описанием немедленно уничтожается.
Теперь предположим, что другой клиент пытается открыть файл, пока работает длительный тайм-аут /Сервер по-прежнему считает файл открытым первым клиентом.Затем предполагается отправить уведомление о разрыве блокировки (раздел 2.2.23.1) клиенту, который первоначально открыл файл.Поскольку клиент не может ответить (он был уничтожен), сервер будет ожидать истечения времени ожидания подтверждения прерывания операции (раздел 3.3.2.1, по умолчанию 35 секунд), прежде чем он предоставит новому клиенту доступ к файлу.
Следует отметить еще одну вещь: поведение будет другим, если второй клиент получит доступ к файлу по локальному пути, а не по пути UNC.В этом случае клиенту не придется ждать, пока не истечет тайм-аут подтверждения.Windows предоставит ему доступ к файлу немедленно, в то время как она попытается отправить запрос на закрытие первому клиенту.
Так должна вести себя система.Относительно того, почему вы испытываете описанные проблемы, я не могу сказать.Я не удивлюсь, если вы наткнетесь на ошибку в реализации Fileserver в Win Server 2008. Я постараюсь устранить проблему, используя инструменты, упомянутые в других ответах (procmon действительно хорош), и Wireshark также очень помогает..