Что такое проецируемая файловая система Windows

Обновлено: 21.11.2024

Ключевым преимуществом 3D-объектов является возможность обмениваться ими и создавать их совместно с другими профессионалами отрасли, использующими различные платформы для 3D-редактирования. Эталонную геометрию можно воспроизвести в нескольких 3D-форматах и ​​редактировать непосредственно в папке 3D-объектов в вашей файловой системе.

В следующих разделах описан основной рабочий процесс редактирования файлов 3D-объектных моделей вне ArcGIS Pro.

  • Windows 10, номер сборки 1809 или выше
  • Система проецируемых файлов Windows включена
  • ArcGIS Pro открыт и запущен во время доступа, обновления или замены файла 3D-модели
  • Знание имени векторного слоя и идентификатора объекта (OID)
  • Установлено и лицензировано стороннее приложение.

Включить проецируемую файловую систему Windows

Включите файловую систему Windows Projected, чтобы включить виртуальную папку 3D-объектов, в которой файлы 3D-объектов открываются и редактируются с помощью стороннего приложения для редактирования.

  1. На панели задач Windows нажмите команду "Поиск" и введите функции поворота .
  2. Нажмите Включить или отключить функции Windows .

Открыть проект

Откройте проект, чтобы отобразить 3D-объект в папке 3D-объектов в вашей файловой системе. Если 3D-объекты не отображаются в папке, добавьте формат 3D к функции, которая требуется вашему стороннему приложению.

ArcGIS Pro должен оставаться открытым при доступе, обновлении или замене файла 3D-модели.

  1. Запустите ArcGIS Pro и откройте проект, содержащий объект 3D-объекта, который вы хотите редактировать, с помощью стороннего приложения.

Это показывает папку виртуальных 3D-объектов в проводнике.

Файл можно найти в папке с именем слоя ArcGIS Pro и идентификатором объекта .

Это повторяет функцию в папке 3D-объектов Windows.

  1. На вкладке "Анализ" в группе "Геообработка" нажмите "Инструменты" .
  2. В поле поиска введите add 3d и нажмите Добавить форматы 3D в мультипатч.
  3. Нажмите стрелку «Входной объект» и выберите векторный слой-мультипатч, который вы хотите реплицировать, в папке «3D-объекты».
  4. Проверьте форматы 3D, которые вы собираетесь редактировать, с помощью стороннего приложения.
  5. Редактировать файл 3D-модели на месте

    Запустите стороннее приложение и перейдите к подпапке с тем же именем слоя ArcGIS Pro и идентификатором объекта. После внесения изменений сохраните файл в том же месте под тем же именем.

    Кроме того, вы можете скопировать файл 3D-модели в другое место, отредактировать 3D-объект с помощью стороннего приложения, а затем заменить файл в исходной папке 3D-объектов на файл с таким же именем.

    Мадалина стала поклонницей Windows с тех пор, как получила свой первый компьютер с Windows XP. Она интересуется всеми технологиями, особенно новыми технологиями, такими как искусственный интеллект и ДНК-вычисления. Подробнее

    Чтобы устранить различные проблемы с ПК, мы рекомендуем Restoro PC Repair Tool: это программное обеспечение устраняет распространенные компьютерные ошибки, защищает вас от потери файлов, вредоносных программ, аппаратных сбоев и оптимизирует ваш ПК для достижения максимальной производительности. Решите проблемы с ПК и удалите вирусы за 3 простых шага:

    1. Загрузите Restoro PC Repair Tool, который поставляется с запатентованными технологиями (патент доступен здесь).
    2. Нажмите «Начать сканирование», чтобы найти проблемы Windows, которые могут вызывать проблемы с ПК.
    3. Нажмите «Исправить все», чтобы устранить проблемы, влияющие на безопасность и производительность вашего компьютера.
    • В этом месяце Restoro скачали 0 читателей.

    Microsoft недавно выпустила новую сборку Windows 10 для участников программы предварительной оценки Fast Ring. Итак, если вам уже наскучила предыдущая сборка, теперь вы можете установить сборку 17604.

    В этом новом выпуске в таблицу добавлена ​​очень интересная функция, а именно файловая система Windows Projected.

    Инсайдеры уже могут включить эту функцию, выбрав Компоненты Windows > Включение и отключение компонентов Windows. Все, что вам нужно сделать, это установить флажок Windows Projected File System и все.

    Теро Алхонен также заметил это изменение и поделился снимком экрана выше со всем миром в Твиттере.

    С другой стороны, Walking Cat предполагает, что Microsoft переименовала GVFS (виртуальную файловую систему Git) в ProjF (проецируемую файловую систему Windows).

    В любом случае, мы углубимся в это и обновим статью, как только появится новая информация.

    Итак, если вы установили на свой компьютер последнюю сборку Windows 10 и протестировали функцию проецируемой файловой системы Windows, расскажите нам больше о своем опыте в комментариях ниже.

    ОБНОВЛЕНИЕ:

    Как объяснил один из наших читателей, вместо того, чтобы заставлять разработчиков устанавливать GVFS, гигант из Редмонда теперь включает его как функцию Windows. Это подтверждает гипотезу Walking Cat.

    Для получения дополнительной информации вы можете ознакомиться с комментарием нашего читателя ниже. Спасибо, Йозедольф.

    Проецируемая файловая система Windows не связана с безопасностью, поскольку безопасность Windows сосредоточена на безопасности на основе виртуализации. Проецируемая файловая система Windows, вероятно, похожа на то, что они сделали с OneDrive: файлы находятся на удаленном сервере, и вы можете видеть «заполнители», но на самом деле они не на вашем компьютере, пока вы их не откроете (таким образом, «проецируемая» файловая система ).
    ОБНОВЛЕНИЕ: Только что проверил некоторые учетные записи Windows Insider и других разработчиков в Твиттере, и обнаружил, что файловая система Windows Projected — это то, что поддерживает GVFS, что позволяет использовать очень большие репозитории с небольшим влиянием на производительность. Он помечен как «Бета», потому что документации пока нет.

    СВЯЗАННЫЕ ПОСТЫ ДЛЯ ПРОВЕРКИ:

    По-прежнему возникают проблемы? Исправьте их с помощью этого инструмента:

    Недавняя статья Криса Хоффмана в How-To Geek под названием «Windows 10 только усугубляет фрагментацию Windows» кристаллизовала во мне растущее чувство беспокойства по поводу постоянно добавляемых новых функций. к Windows 10 через «Полугодовой канал» (по сравнению со сборками «Долгосрочного обслуживания», которые обеспечивают стабильность функций, аналогичную стабильности предыдущих версий Windows): как случайный разработчик системных утилит в ходе взаимодействия с клиентами, я Меня здесь не столько беспокоят ввод новых апплетов или существующие апплеты, приобретающие новые возможности или переделываемые в приложения UWP (Metro/Modern/Store), а скорее новые (а иногда и мощные) функции API, которые становятся доступными в новой Windows. build, но никогда не становится доступным (скажем, через Центр обновления Windows) из-за растущего числа предыдущих сборок, которые все еще находятся в свободном доступе. Есть ли какой-либо смысл в использовании функций API, которые, как я знаю, отсутствуют в большинстве установок Windows, за исключением особых обстоятельств? Или, выражаясь философски, если функция API существует только в небольшом подмножестве машин Windows, существует ли она вообще?

    Прекрасным примером этого является функция «Проецируемая файловая система», недавно представленная в Microsoft Windows 10 Build 1809: как описано в статье по ссылке, она позволяет приложению «проецировать» данные (имеющие структуру, состоящую из или напоминающий организацию папок и файлов) в локальную файловую систему, благодаря чему они отображаются как папки и файлы в выбранной корневой папке. Хотя приведенный «милый» пример представляет собой проекцию реестра в файловую систему только для чтения (где ключи и подразделы являются папками, а значения — файлами — подробнее об этом ниже), я вижу, что такая возможность очень полезна для представления локальное представление удаленного хранилища файлов. Разработка проектируемой файловой системы каким-то образом связана с использованием Microsoft огромных репозиториев GitHub и желанием сделать их локально доступными без использования массовых передач данных (см. связанную виртуальную файловую систему Git), но в наш век вездесущих поставщиков облачных хранилищ, можно предположить, что эта возможность может быть очень полезна разработчикам в DropBox, Box, Citrix (ShareFile), Amazon, Google и т. д., включая саму Microsoft (OneDrive), всем из которых в настоящее время приходится либо разворачивать свою собственную удаленную файловую систему, «драйверы» или включать сторонние библиотеки (например, продукты CBFS от Callback Technologies) в свои приложения для Windows. Но это, конечно, не может и не произойдет, пока проецируемая файловая система не будет доступна в подавляющем большинстве установок Windows. [Обратите также внимание, что эта функция недоступна в Windows Server 2019, которая также является сборкой 1809, поэтому ее нельзя использовать в развертываниях RDS, и я предполагаю, что поэтому ее нет в Windows 10. LTSC 2019 тоже — отмечу в комментариях, если узнаю обратное].

    Хватит ныть!Пока я был в теме, я подумал, что скомпилирую и сделаю доступным пример программы Microsoft Projected File System, RegFS (только для x64), строго для удовольствия.

    Я попытался поиграть с Projected File System, чтобы реализовать RAM-накопитель в пользовательском режиме (ранее я использовал Dokan). У меня два вопроса:

    Это прогноз только для чтения? Я не мог найти никаких уведомлений, отправленных мне при открытии файла, скажем, из Блокнота и записи в него.

    Создается ли файл на диске после использования PrjWriteFileData()? Насколько я понял, да.

    В таком случае, что полезного можно было бы сделать с этой библиотекой, если нет записи в проецируемые файлы? Мне кажется, единственная полезная вещь — изначально создать дерево каталогов откуда-то еще (скажем, из удаленного репо), но не более того. Докан по-прежнему кажется подходящим вариантом.

    Посмотрев на него, я не думаю, что прогноз доступен только для чтения. Содержимое файла кэшируется на диске, когда клиентское приложение запрашивает дескриптор файла. Клиентское приложение может изменять файл в обычном режиме, и провайдер получит уведомление PRJ_NOTIFICATION_FILE_HANDLE_CLOSED_FILE_MODIFIED, когда измененный файл будет закрыт. Однако вы не получаете все уведомления автоматически, вы должны подписаться на них.

    Насколько я понимаю, это правильно. ProjFS (также известная как GvFlt) изначально создавалась как основа виртуальной файловой системы Git, где не требуются уведомления о записи в реальном времени. Вот некоторые справочные материалы.

    Похоже, что когда вы редактируете файл, он зеркально отражается на реальной файловой системе и сохраняется в виртуальном пути к файлу. Например, вы смонтировали «C:/source» в «C:/virtroot», затем создали файл внутри «C:/source» с именем cat.txt и добавили в него строку «moew». После открытия "C:/virtroot/cat.txt" и добавления "bark" к следующему лайку вы не увидите изменений внутри "C:/source/cat.txt" - он будет содержать только одну строку с "мяу" . Однако даже после размонтирования virtroot вы увидите "кору" в "C:/virtroot/cat.txt". Это то, что вы получите при запуске примера приложения из примера управляемого API.

    1 Ответ 1

    Короткий ответ:

    1. Он не доступен только для чтения, но вы не можете записывать свои файлы напрямую в "исходную" файловую систему через спроецированную.
    2. Метод WriteFileData используется для заполнения файлов-заполнителей в "временной" (проецируемой) файловой системе, поэтому он не влияет на "исходную" файловую систему.

    Длинный ответ:

    Как указано в комментарии @zett42, ProjFS в основном разрабатывалась как удаленная файловая система git. Таким образом, основная цель любой системы управления версиями файлов — обрабатывать несколько версий файлов. Из этого возникает вопрос - нужно ли нам переопределять файл внутри удаленного репозитория на запись файла ProjFS? Это было бы катастрофой. При работе с git вы всегда записываете файлы локально, и они не синхронизируются до тех пор, пока вы не отправите изменения в удаленный репозиторий.

    При перечислении файлов ничего не записывается в локальную файловую систему. Из документации ProjFS:

    Когда провайдер впервые создает корень виртуализации, он пуст в локальной системе. То есть ни один из элементов резервного хранилища данных еще не был кэширован на диск.

    Только после открытия файла ProjFS создает для него "заполнитель" в локальной файловой системе - я предполагаю, что это файл со специальной структурой (не настоящей).

    При открытии файлов и каталогов в корневом каталоге виртуализации провайдер создает заполнители на диске, а по мере чтения файлов заполнители наполняются содержимым.

    Что такое "гидратированный"? Скорее всего, он представляет собой специальную структуру данных, частично заполненную реальными данными. Я бы представил заполнитель в виде губки, частично заполненной данными.

    При открытии элементов ProjFS запрашивает информацию у провайдера, чтобы разрешить создание заполнителей для этих элементов в локальной файловой системе. При доступе к содержимому элемента ProjFS запрашивает это содержимое у провайдера. В результате с точки зрения пользователя виртуализированные файлы и каталоги кажутся похожими на обычные файлы и каталоги, которые уже находятся в локальной файловой системе.

    Только после обновления (изменения) файла. Это больше не заполнитель — он становится «Полный файл/каталог»:

    Для файлов: содержимое файла (первичный поток данных) было изменено. Файл больше не является кешем своего состояния в хранилище провайдера. Файлы, созданные в локальной файловой системе (то есть вообще не существующие в хранилище провайдера), также считаются полными файлами.

    Для каталогов: каталоги, созданные в локальном файле. система (т.е.которые вообще не существуют в магазине провайдера) считаются полными каталогами. Каталог, созданный на диске в качестве заполнителя, никогда не становится полным каталогом.

    Это означает, что при первой записи заполнитель заменяется реальным файлом в локальной ФС. Но как синхронизировать «удаленный» файл с измененным? (1)

    Когда провайдер вызывает PrjWritePlaceholderInfo для записи информации заполнителя, он предоставляет ContentID в элементе VersionInfo аргумента placeholderInfo. Затем провайдер должен записать, что в этом представлении был создан заполнитель для этого файла или каталога.

    Примечание: "Поставщик должен записать этот заполнитель для этого файла". Это означает, что для того, чтобы впоследствии синхронизировать файл с правильным представлением представления, мы должны помнить, с какой версией связан измененный файл. Представьте, что мы находимся в репозитории git и меняем ветку. В этом случае мы можем обновить один файл несколько раз в разных ветках. Теперь, почему и когда провайдер вызывает PrjWritePlaceholderInfo?

    <блочная цитата>

    . Эти заполнители представляют состояние резервного хранилища на момент их создания. Эти кэшированные элементы в сочетании с элементами, проецируемыми провайдером в перечислениях, составляют клиентское «представление» резервного хранилища. Время от времени провайдер может захотеть обновить представление клиента, будь то из-за изменений в резервном хранилище или из-за явных действий, предпринятых пользователем для изменения своего представления.

    Еще раз представьте себе переключение веток в репозитории git; вам нужно обновить файл, если он отличается в другой ветке. Продолжая отвечать на вопрос (1). Имидж вы хотите сделать "толчок" из конкретной ветки. Прежде всего, вы должны знать, какие файлы изменены. Если вы не записали информацию о заполнителе при изменении файла, вы не сможете сделать это правильно (по крайней мере, для примера с репозиторием git).

    Помните, что заполнитель заменяется реальным файлом при модификации? ProjFS имеет событие OnNotifyFileHandleClosedFileModifiedOrDeleted. Вот сигнатура обратного вызова:

    Насколько мы понимаем, наиболее важным для нас параметром здесь является относительный путь. Он будет содержать имя измененного файла внутри "скретч" файловой системы (проецируется). Здесь вы также знаете, что файл является реальным файлом (а не заполнителем) и он записан на диск (именно вы не сможете перехватить вызов до того, как файл будет записан). Сейчас вы можете скопировать его в нужное место (или сделать это позже) - это зависит от ваших целей.

    Приложения:

    Что касается приложений, вы по-прежнему можете внедрить удаленную файловую систему (вместо использования Dokan), но все записи будут кэшироваться локально, а не напрямую записываться в удаленное место. Несколько вариантов использования:

    Читайте также: