Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Виртуальные файлы / 25 сообщений из 49, страница 1 из 2
13.09.2007, 17:36
    #34798651
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
Джентльмены (и тем более леди), подскажите, как лучше реализовать следующее желание:

Есть винда

Есть приложение, поддерживающее информацию, которая может быть представлена в виде иерархии каталогов и файлов в них

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

Сходу я вижу два пути. Во-первых, зарегистрировать виртуальный каталог (аналогичный сетевому окружению, панели управления итп). Во-вторых, сделать драйвер файловой системы. Первый путь не нравится тем, что не все программы смогут нормально работать с этими файлами. Второй - тем, что, вполне вероятно, потребуется серьезно изучать DDK и работу в режиме ядра, о чем я сейчас имею весьма приблизительное представление (уровня "читал пару книг").

Предложения, комментарии, другие пути, личный опыт?
...
Рейтинг: 0 / 0
13.09.2007, 17:48
    #34798721
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
http://killprog.com/fdrvr.html
а это на чём сделано?
...
Рейтинг: 0 / 0
13.09.2007, 18:15
    #34798834
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
Если это вопрос ко мне, то не против узнать.
...
Рейтинг: 0 / 0
13.09.2007, 18:18
    #34798852
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
softwarer Есть приложение, поддерживающее информацию, которая может быть представлена в виде иерархии каталогов и файлов в них
Приложение свое собственное или чужое?
Если свое собственное, то можно пойти по пути PhysicsFS - это Си библиотечка (под виндой ее можно собрать как обычную dll) которая виртуально сливает несколько архивов в одну общую файловую систему на чтение и дает один каталог (с подкаталогами) на запись. Очень удобная в использовании. Идеальна для файловых операций в макроязыках.

Ну а если программа чужая - то ой. Тогда действительно прийдется делать свой драйвер файловой системы и встраивать его в ОС... что есть не очень-то просто...
...
Рейтинг: 0 / 0
13.09.2007, 18:36
    #34798902
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
White OwlПриложение свое собственное или чужое?
Свое. Впрочем, это по идее неважно.

White OwlЕсли свое собственное, то можно пойти по пути PhysicsFS - это Си библиотечка (под виндой ее можно собрать как обычную dll) которая виртуально сливает несколько архивов в одну общую файловую систему на чтение и дает один каталог (с подкаталогами) на запись. Очень удобная в использовании. Идеальна для файловых операций в макроязыках.
Мм... прочитав эти слова и кроме того, сказанное в http://icculus.org/physfs/ , я не совсем понял, как это относится к моей задаче. Точнее, у меня сложилось впечатление, что эта библиотека решает задачу, обратную моей - представляет информацию из реальных источников в виде "виртуальной файловой системы", которую я могу читать внутри своей программы через специальное API.

Мне же нужно примерно то же, что по ссылке maXmo - возможность экспортировать из своей программы "файлы", с которыми пользователь может работать через Explorer, с помощью bat-файлов и любым другим образом, который придет ему в голову.
...
Рейтинг: 0 / 0
13.09.2007, 18:55
    #34798953
Kull Damned
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
Предлагаю связаться с авторами FTP-чо-то-там и попросить их пнуть в нужном направлении.

Будущего нет. И завтра не будет. ©
...
Рейтинг: 0 / 0
13.09.2007, 18:56
    #34798959
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
Это само собой, сегодня же вечером.
...
Рейтинг: 0 / 0
13.09.2007, 19:03
    #34798974
Kull Damned
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
Кстати, а так смотрел:
тынц
Всякие мапперы сторонних файловых систем в винду - думаю на их основе можно драйвер свой зафигачить.

Будущего нет. И завтра не будет. ©
...
Рейтинг: 0 / 0
13.09.2007, 19:03
    #34798978
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
без понятия, как оно устроено, описание работы мне мало о чём говорит, может, как-то ужасно нт апи хучит… Я тоже хотел посоветовать обратиться к нему, он в принципе не очень разговорчивый, но про технологию ответит.
...
Рейтинг: 0 / 0
13.09.2007, 19:05
    #34798983
Kull Damned
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
maXmoбез понятия, как оно устроено, описание работы мне мало о чём говорит, может, как-то ужасно нт апи хучит… Я тоже хотел посоветовать обратиться к нему, он в принципе не очень разговорчивый, но про технологию ответит.Думаю в винде есть стандартный механизм подстановки собственных драйверов файловой системы - так что порыскать по чужим сорцам и банзай.
...
Рейтинг: 0 / 0
13.09.2007, 19:08
    #34798989
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
я слышал, есть какие-то фильтры для reparse points… хм… или не фильтры…
...
Рейтинг: 0 / 0
13.09.2007, 19:11
    #34798997
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
Kull DamnedКстати, а так смотрел:
Я так даже почти уверен, что в DDK есть пример, от которого можно стартовать - а особо больше и не потребуется на самом деле, драйвер простейший. Но это все же уже тяжелая артиллерия, скачивать-разбираться-прояснять лицензирование, и наверное самое веселое - разбираться с отладкой в режиме ядра.

Проблема в том, что программа некоммерческая, поэтому вариант "заказать внешнему исполнителю" тоже не очень проходит - скорее всего, дороговато обойдется.
...
Рейтинг: 0 / 0
13.09.2007, 19:12
    #34799002
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
Привет, Kull!
Ты пишешь:

KullKD> Думаю в винде есть стандартный механизм подстановки собственных
KD> драйверов файловой системы - так что порыскать по чужим
KD> сорцам и банзай.помнится (а мож и чудится),
Коваленко делал такой врапер
для своего IBProvider'а.
точно ужо не помню.
давно было.

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
13.09.2007, 19:13
    #34799003
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
softwarerМм... прочитав эти слова и кроме того, сказанное в http://icculus.org/physfs/ , я не совсем понял, как это относится к моей задаче. Точнее, у меня сложилось впечатление, что эта библиотека решает задачу, обратную моей - представляет информацию из реальных источников в виде "виртуальной файловой системы", которую я могу читать внутри своей программы через специальное API.Ну да. Обычно от VFS это и требуется...
А обратная задача ..... эээээ...... НАФИГА?!
Если приложение сохраняет свои данные в какие-то внешние файлы, то эти внешние файлы либо обычные файлы чтобы юзера могли с ними работать вне приложения, либо какие-то запакованые/зашифрованые форматы чтобы юзера с ними не могли работать вне приложения.

softwarerМне же нужно примерно то же, что по ссылке maXmo - возможность экспортировать из своей программы "файлы", с которыми пользователь может работать через Explorer, с помощью bat-файлов и любым другим образом, который придет ему в голову.maXmo давал ссылку на программу которая решает задачу: "уже есть много реальных файлов в некоей файловой системе и надо облегчить юзерам доступ до этих файлов". А у тебя как я понял этих реальных файлов еще нету, твое приложение их еще только будет создавать.
Опиши задачу подробнее, что-то она у меня не стыкуется...
...
Рейтинг: 0 / 0
13.09.2007, 19:16
    #34799008
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
maXmoя слышал, есть какие-то фильтры для reparse points… хм… или не фильтры…
Фильтры - это как раз и есть "написать драйвер": http://www.microsoft.com/whdc/driver/filterdrv/default.mspx

А reparse point - это, если не ошибаюсь, фича ntfs, аналогичная ms-dosовскому join или юниксовому mount. То есть возможность подключить в указанное место файловой системы информацию из другой файловой системы.
...
Рейтинг: 0 / 0
13.09.2007, 19:27
    #34799032
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
White OwlНу да. Обычно от VFS это и требуется...
Это не VFS, а "нечто". Но тут.... я не стал бы спрашивать, как сделать нечто аналогичное PhysicsFS, это же совершенно очевидно.

White OwlА обратная задача ..... эээээ...... НАФИГА?!
Ну как тебе сказать... ну например весь юникс на этом построен, у них и спроси :)

White OwlЕсли приложение сохраняет свои данные в какие-то внешние файлы, то эти внешние файлы либо обычные файлы чтобы юзера могли с ними работать вне приложения, либо какие-то запакованые/зашифрованые форматы чтобы юзера с ними не могли работать вне приложения.
Я хочу, чтобы юзера могли работать вне приложения с тем, что приложение не сохранило как внешние файлы.

Представь себе... ну например, performance counters. Вот только мне лень запускать приложение, выбирать в нем нужные счетчики и смотреть картинку. Вместо этого я иду в X:\Performance Counters\ и открываю там файл processor.jpg - и вижу картинку загрузки процессора за последние десять минут.

White OwlmaXmo давал ссылку на программу которая решает задачу: "уже есть много реальных файлов в некоей файловой системе и надо облегчить юзерам доступ до этих файлов". А у тебя как я понял этих реальных файлов еще нету, твое приложение их еще только будет создавать.
Ну и какая разница? Эта программа с тем же успехом могла бы не запрашивать файлы снаружи, а генерить их рэндомом - нужная мне технология оттого не меняется.
...
Рейтинг: 0 / 0
13.09.2007, 20:45
    #34799129
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
softwarerЯ хочу, чтобы юзера могли работать вне приложения с тем, что приложение не сохранило как внешние файлы.

Представь себе... ну например, performance counters. Вот только мне лень запускать приложение, выбирать в нем нужные счетчики и смотреть картинку. Вместо этого я иду в X:\Performance Counters\ и открываю там файл processor.jpg - и вижу картинку загрузки процессора за последние десять минут.Ага. Понял. Это действительно можно решить через создание драйвера новой ФС. Но на мой взгляд, это излишне сложный путь.

Есть и другой путь, более простой в реализации и более удобный для дальнейшей жизни :)
Садишь в своей программе слушателя на какой-либо tcp порт и твоя программа превращается в сервер. Потом делаешь клиентскую библиотечку и на ее основе утилитки, которые и обеспечит все запросы к внутренним данным программы. В плюсах - юзера смогут при соотвествющих настройках сети получить отчеты о внутреннем состоянии приложения откуда угодно.
Я ходил по этому пути. Вполне просто и легко.

Можно пойти по пути COM-сервера, тогда достаточно будет сделать формальное описание интерфейсов своего com-сервера и можно будет:
Код: plaintext
1.
 set o=GetObject("MyCoolApp")
 o.SavePerfomanceCounterAs("processor.jpg")
Но будут сложности с доступом из интернета.

softwarer White OwlmaXmo давал ссылку на программу которая решает задачу: "уже есть много реальных файлов в некоей файловой системе и надо облегчить юзерам доступ до этих файлов". А у тебя как я понял этих реальных файлов еще нету, твое приложение их еще только будет создавать.
Ну и какая разница? Эта программа с тем же успехом могла бы не запрашивать файлы снаружи, а генерить их рэндомом - нужная мне технология оттого не меняется.Разница в том, что FTP протокол уже существует . FTPDrive это по существу костыль. Он делает конвертацию на лету из одного протокола в другой. А у тебя пока еще нету того протокола к которому надо делать такой конвертор.
Конечно, можно сделать свою файловую систему, но при этом, ты сознательно ограничишь доступ к приложению только тем компом на котором эта FS установлена.... Ты готов делать версии драйверов своей VFS для `98, XP, Win2003, Vista?
...
Рейтинг: 0 / 0
13.09.2007, 21:54
    #34799244
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
White OwlЕсть и другой путь, более простой в реализации и более удобный для дальнейшей жизни :) Садишь в своей программе слушателя на какой-либо tcp порт и твоя программа превращается в сервер. ......
Можно пойти по пути COM-сервера, тогда достаточно будет сделать формальное описание интерфейсов
Ага. И пользователь, который хочет в Explorer-е кликнуть на этот файл и увидеть картинку, или там например в bat-файле написать "если время последнего изменения в последние полчаса то тра-ля-ля", с восторгом пойдет создавать tcp-соединение....

Я конечно понимаю, что придумать другую постановку задачи намного легче, но де-факто мне нужно реализовать именно то, что мне нужно. Ладно, я еще могу как-то осознать, как ты сумел превратить написанное мной в первом письме в "постановку задачи, для которой нужен PhysFS". Но повторное предложение вызывает вопрос: ты таки читаешь, что нужно, или говоришь о чем-то своем?

White OwlРазница в том, что FTP протокол уже существует . FTPDrive это по существу костыль. Он делает конвертацию на лету из одного протокола в другой. А у тебя пока еще нету того протокола к которому надо делать такой конвертор.
Замечательно. Я русским языком написал: есть приложение. Есть потребители, которые должны уметь считывать информацию из этого приложения. И какого именно протокола у меня нет.

Могу еще раз, большими буквами: ДА, ИМЕННО ТАКОЙ КОСТЫЛЬ МНЕ И НУЖЕН. И интересна информация знающих, как такой сделать.

White OwlТы готов делать версии драйверов своей VFS для `98, XP, Win2003, Vista?
98-я мне нафиг не нужна. А в остальных, насколько я в курсе, будет работать один и тот же драйвер.
...
Рейтинг: 0 / 0
13.09.2007, 22:24
    #34799282
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
softwarer White OwlЕсть и другой путь, более простой в реализации и более удобный для дальнейшей жизни :) Садишь в своей программе слушателя на какой-либо tcp порт и твоя программа превращается в сервер. ......
Ага. И пользователь, который хочет в Explorer-е кликнуть на этот файл и увидеть картинку, или там например в bat-файле написать "если время последнего изменения в последние полчаса то тра-ля-ля", с восторгом пойдет создавать tcp-соединение....Зачем же создавать собственное соединение? Из батника он позовет утилитку с параметрами и она в stdout или errorlevel положит значение. А из эксплорера юзер ткнет в ярлык программы которая то-же самое значение отрисует графически, а при нужде сможет и повиснуть на десктопе и постоянно обновлять картинку.

softwarerНо повторное предложение вызывает вопрос: ты таки читаешь, что нужно, или говоришь о чем-то своем?Читаю и понимаю что нужно, но не понимаю зачем это нужно. На мой взгляд, в этой постановке задачи ты ограничиваешь себе возможности . В конце концов, если так сильно хочется виртуальный драйв, то можно будет сделать его и позже на основе клиент-серверного протокола который я предлагаю, тогда этот виртуальный драйв можно будет запускать даже на удаленном юзерском компе. А не только на той же самой машине что и супер-программа.
...
Рейтинг: 0 / 0
13.09.2007, 22:27
    #34799283
FTP сервер
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
softwarerДА, ИМЕННО ТАКОЙ КОСТЫЛЬ МНЕ И НУЖЕН.а может применить уже упомянутый FTPDrive, а в своей программе сделать костыль в виде FTP-сервера?
Заодно и доступ с других компов будет возможен.
...
Рейтинг: 0 / 0
13.09.2007, 22:29
    #34799287
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
FTP сервер softwarerДА, ИМЕННО ТАКОЙ КОСТЫЛЬ МНЕ И НУЖЕН.а может применить уже упомянутый FTPDrive, а в своей программе сделать костыль в виде FTP-сервера?
Заодно и доступ с других компов будет возможен.вот, действительно. Половина задачи уже решена :)
...
Рейтинг: 0 / 0
14.09.2007, 11:06
    #34800048
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
softwarerА reparse point - это, если не ошибаюсь, фича ntfs, аналогичная ms-dosовскому join или юниксовому mount. То есть возможность подключить в указанное место файловой системы информацию из другой файловой системы.ну это вроде лишь частный случай их применения, как фильтр напишешь, так она себя и будет вести, хошь – символическая ссылка, а хошь – format c:
...
Рейтинг: 0 / 0
14.09.2007, 16:23
    #34801569
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
White OwlЗачем же создавать собственное соединение? Из батника он позовет утилитку с параметрами и она в stdout или errorlevel положит значение.
А... то есть ты предлагаешь мне написать утилитку, в которой повторить весь функционал cmd.exe и вообще все что придумало человечество?

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

White OwlЧитаю и понимаю что нужно, но не понимаю зачем это нужно.
Ну дык и сосредоточься в ответах на "что".

White OwlНа мой взгляд, в этой постановке задачи ты ограничиваешь себе возможности .
В конце концов, если так сильно хочется виртуальный драйв, то можно будет сделать его и позже
"Давай делать нафиг не нужное, а то, что нужно, если очень хочется, можно будет сделать позже". Замечательно логичный подход.

White Owlна основе клиент-серверного протокола который я предлагаю, тогда этот виртуальный драйв можно будет запускать даже на удаленном юзерском компе. А не только на той же самой машине что и супер-программа.
Замечательная возможность. Жаль только, что нахрен не нужна. А нахрен не нужна она по двум причинам:

1. Если я захочу делать что-то "на удаленном юзерском компе", я сделаю на нем net use и получу доступ к нужным файлам. Это эффективнее, нежели растаскивать по всем компам "виртуальный драйв" (жду рассказа про работу через интернет, soap, xmlrpc итп)

2. Жаль, что ты не на миг не задумался о том, что "суперпрограмма" может и сама по себе быть клиентом некоего сервера. И предложение делать ее еще и сервером для "клиентов второго уровня" вызывает.. некоторое веселье.
...
Рейтинг: 0 / 0
14.09.2007, 16:26
    #34801587
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
FTP сервера может применить уже упомянутый FTPDrive, а в своей программе сделать костыль в виде FTP-сервера?
Ну, если бы не было другого выхода, конечно, стоило бы рассмотреть такой вариант. Но, думаю, "применить ту же или аналогичную технологию" - лучший вариант. Проще настраивать, меньше точек отказа. Да и с общеархитектурной точки зрения - нет ничего плохого, если две программы умеют взаимодействовать, но плохо, если одна без другой бессмысленна.
...
Рейтинг: 0 / 0
14.09.2007, 17:44
    #34801865
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные файлы
softwarer2. Жаль, что ты не на миг не задумался о том, что "суперпрограмма" может и сама по себе быть клиентом некоего сервера. И предложение делать ее еще и сервером для "клиентов второго уровня" вызывает.. некоторое веселье.Об этом сразу надо было бы говорить, я бы со своей идеей не вылезал бы...
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Виртуальные файлы / 25 сообщений из 49, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]