Как Pismo File Mount монтирует ZIP-файлы в Windows Explorer?

Я использую Pismo File Mount в течение многих лет, и я всегда задавался вопросом, как это на самом деле работает.

Допустим, в настоящее время я работаю над приложением, которое создает формат пакета, похожий на ZIP формат. Для удобства доступа я хочу создать расширение оболочки это работает подобно тому, как работает Pismo File Mount. Для тех, кто не использовал Pismo File Mount, вот как это работает:

  1. Пользователь щелкает правой кнопкой мыши ZIP-файл в проводнике Windows.
  2. Затем пользователь нажимает «Монтировать», чтобы смонтировать ZIP-файл.
  3. Теперь пользователь может сразу получить доступ к своим файлам.
  4. Пользователь не нужно распаковывать ZIP файл просмотреть его содержимое.

Там есть подвох. я делаю не хочу использовать Pismo File Mount API, возможно по разным причинам, таким как коммерческие или юридические.

Вопрос в том, Как Pismo File Mount интегрируется в Windows Explorer программно, с точки зрения Windows API и C ++?

3

Решение

Существуют два пути:

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

  2. Драйвер фильтра файловой системы, который создает виртуальный каталог на существующем диске. Такой каталог рассматривается всеми приложениями как реальный каталог, в котором эти приложения могут читать и записывать файлы и подкаталоги. Все операции с файловой системой проходят через такой драйвер.

Pismo File Mount работает через драйвер фильтра AFAIK.

Наш продукт CallbackFilter позволяет создавать виртуальные каталоги и файлы. Он включает в себя драйвер и вызывает ваш код режима пользователя для реальных операций. Но подход фильтра немного сложен — виртуальный диск, созданный с помощью драйвера файловой системы (например, с помощью нашего продукта Callback File System), проще в реализации и управлении из-за различий в архитектуре стека драйверов фильтра и драйверов файловой системы.

1

Другие решения

Похоже, довольно обычное расширение оболочки. Explorer имеет мощный механизм расширения, который позволяет ему перечислять нефайловые объекты, такие как принтеры, и содержимое zip-файла. Конкретные детали (столбцы и строки) предоставляются DLL.

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

1

Я написал Pismo File Mount и программу для чтения ZIP, включенную в пакет аудита PFM.

На этот вопрос нет однозначного или реалистичного ответа. Чтобы сделать то, что PFM делает в C / C ++ с Windows API (ядром и пользователем), потребуется 10 тысяч строк сложного кода и большие временные затраты.

PFM построен как драйвер файловой системы (модуль ядра) с поддержкой пользовательских режимов DLL и исполняемых файлов. Драйвер использует протокол для связи с кодом форматирования пользовательского режима, который (например) декодирует формат файла ZIP и передает содержимое через драйвер режима ядра клиентским приложениям.

1
По вопросам рекламы [email protected]