При разработке программного обеспечения у пользователя может возникать необходимость симулировать файловые системы других операционных систем. Таким способом можно создавать программу в среде Windows и тестировать её работоспособность в окружениях Linux, MacOS, BSD-систем. Именно для упрощения данной задачи и используется библиотека Dokan Library.
Обзор Dokan Library
Ключевое преимущество Dokan Library – это поддержка исполнения задач на уровне ядра Windows. Но это одновременно и недостаток: для полноценной работы библиотеки требуется установка скомпилированного драйвера (и выбор неправильного софта может привести к Blue Screen на этапе загрузки ОС). Подключение же виртуальных дисков при этом выполняется через протокол SSH. Их файловая система значения не имеет, так как Докан преобразовывает поступающие запросы в такие, которые будут понятны ядру Windows, что и позволяет эмулировать неподдерживаемые файловые системы или вовсе создавать свои собственные. Это своего рода аналог FUSE, используемой в Linux-системах.
Для чего необходима Dokan Library и что это за программа: именно при отладке и проверке на работоспособность в окружении разных ОС библиотека чаще всего и используется. Это не отдельное приложение со своим GUI-интерфейсом, а набор системных исполнительных файлов под среду разработки Visual Studio. Библиотеку в форме исходного кода и exe-установщика можно скачать с соответствующей ветки GitHub. В дальнейшем потребуется установить актуальную версию Visual Studio, NuGet Package Manager и с данного пакетного менеджера импортировать нужную библиотеку (там она именуется как DokanNet).
Первоначально проект был разработан и вплоть до 2011 года поддерживался неким Hiroki Asakawa. Последняя созданная им публичная версия – 0.6.0. До 2014 года разработкой и поддержкой занималось GitHub-сообщество (исходный код открыт, публикуется под лицензиями LGPL и MIT).
Библиотека Dokan – проблемы при использовании
Основные проблемы, которые возникают при использовании Докан, следующие:
- Слабая совместимость при использовании свежих фреймворков .NET Framework. Практика показывает, что лучше всего использовать 4.5.2 с Либрари версии 1.2.0.1000. Текущая версия Dokan Library 0.0-beta1 нивелирует этот недостаток, но она всё ещё считается тестовой. Так что при создании новых проектов рекомендуется использовать .NET Framework именно 4.5.2.
- Подобрать драйвер самостоятельно – сложно. А если это сделать неправильно, то запуск Visual Studio (а то и загрузка ОС) будут заканчиваться критической ошибкой (синий экран смерти). Перечень всех актуальных драйверов (с расширением .sys и в форме исходного кода для компиляции) доступен на GitHub.
- При деинсталляции библиотеки часть исполнительных системных файлов остаются в Windows. Они не мешают нормальной работе операционной системы, но при установке других версий Докан могут вызывать ошибки (крах при попытке добавить библиотеку через пакетный менеджер Visual Studio). Подобное поведение наблюдается при переходе с Либрари 0.6.0 до версии 1.2.0.
- Интегрированный GUI, запускаемый через файл encfsw.exe, имеет скудный функционал. Поэтому без умения работать с Visual Studio освоить работу библиотеки сложно.
Как удалить Dokan
Для удаления предусмотрен классический деинсталлятор, копирующийся в папку установки. Но даже после его завершения в системе остаётся драйвер, который может вызывать ошибки при установке других библиотек, эмулирующих работу файловой системы на уровне ядра. Перед тем как удалить их вручную из папки System32 – driver (в Windows), рекомендуется очистить реестр от ранее интегрированных ключей (можно выполнить с помощью CCleaner). Естественно, что пользователь для этого должен обладать правами администратора. Предварительно также рекомендуется исключить библиотеку из Visual Studio через NuGet Package Manager или иной используемый пакетный менеджер.
Итак, Dokan Library – библиотека, позволяющая работать в среде Виндовс и пользоваться, эмулировать или даже создавать изначально неподдерживаемые файловые системы (например, EXT4, BTRFS). Исходный код открыт, опубликован на GitHub. Если у вас был опыт использования Dokan Library, просим рассказать об этом, а также о преимуществах, недостатках библиотеки, проблемах, с которыми при работе пришлось столкнуться.