Как Windows открывает файл, который находится в общем расположении?

#windows #share

#Windows #Поделиться

Вопрос:

Я не знаю, уместен ли этот вопрос на этом форуме, но в любом случае, я просто задам его здесь. Есть несколько файлов, которые находятся на общем сетевом диске, если я хочу их открыть, то как Windows открывает файл? Какие шаги необходимо предпринять, чтобы открыть файл локально? Создает ли это временный файл? Я хочу знать внутреннюю работу Windows в этой ситуации. Было бы полезно, если есть какие-либо материалы для чтения, которыми можно поделиться.

Ответ №1:

Windows не создает локальный временный файл при доступе к файлам по пути UNC или отображенной букве диска.

Предполагая, что мы говорим об общих ресурсах в стиле SMB / CIFS, когда ядро получает путь / дескриптор UNC, запрос перенаправляется MUP (множественному поставщику UNC), который передает его правильному MPR / перенаправителю. Затем запрос отправляется по сети на другой компьютер. SMB / CIFS является наиболее распространенным протоколом, используемым в наши дни, и это задокументировано здесь. Этот протокол позволяет выполнять функции, аналогичные тем, которые вы выполняли бы на локальном томе, за исключением того, что операции выполняются на удаленном компьютере.

Оболочка / проводник также поддерживает расширения пространства имен, которые сопоставляются сетевым расположениям (FTP, WebDAV, Bluetooth и т.д.), Но они обычно не предоставляют файлы напрямую приложениям. Они могут отображать содержимое файла как IStream , но большинство приложений не могут с этим справиться. В этих случаях необходима локальная копия файла. Эти реализации полностью находятся в пользовательском режиме и несовместимы с низкоуровневыми файловыми функциями в Windows API.