
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
13.09.2007, 17:36
|
|||
|---|---|---|---|
Виртуальные файлы |
|||
|
#18+
Джентльмены (и тем более леди), подскажите, как лучше реализовать следующее желание: Есть винда Есть приложение, поддерживающее информацию, которая может быть представлена в виде иерархии каталогов и файлов в них Хочется собственно опубликовать эту информацию в виде виртуальных файлов и каталогов. То есть дать возможность считывать эту информацию обычными файловыми операциями, но при этом не делая выгрузки в физические файлы. Сходу я вижу два пути. Во-первых, зарегистрировать виртуальный каталог (аналогичный сетевому окружению, панели управления итп). Во-вторых, сделать драйвер файловой системы. Первый путь не нравится тем, что не все программы смогут нормально работать с этими файлами. Второй - тем, что, вполне вероятно, потребуется серьезно изучать DDK и работу в режиме ядра, о чем я сейчас имею весьма приблизительное представление (уровня "читал пару книг"). Предложения, комментарии, другие пути, личный опыт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2007, 17:48
|
|||
|---|---|---|---|
Виртуальные файлы |
|||
|
#18+
http://killprog.com/fdrvr.html а это на чём сделано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2007, 18:15
|
|||
|---|---|---|---|
Виртуальные файлы |
|||
|
#18+
Если это вопрос ко мне, то не против узнать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2007, 18:18
|
|||
|---|---|---|---|
Виртуальные файлы |
|||
|
#18+
softwarer Есть приложение, поддерживающее информацию, которая может быть представлена в виде иерархии каталогов и файлов в них Приложение свое собственное или чужое? Если свое собственное, то можно пойти по пути PhysicsFS - это Си библиотечка (под виндой ее можно собрать как обычную dll) которая виртуально сливает несколько архивов в одну общую файловую систему на чтение и дает один каталог (с подкаталогами) на запись. Очень удобная в использовании. Идеальна для файловых операций в макроязыках. Ну а если программа чужая - то ой. Тогда действительно прийдется делать свой драйвер файловой системы и встраивать его в ОС... что есть не очень-то просто... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2007, 18:36
|
|||
|---|---|---|---|
Виртуальные файлы |
|||
|
#18+
White OwlПриложение свое собственное или чужое? Свое. Впрочем, это по идее неважно. White OwlЕсли свое собственное, то можно пойти по пути PhysicsFS - это Си библиотечка (под виндой ее можно собрать как обычную dll) которая виртуально сливает несколько архивов в одну общую файловую систему на чтение и дает один каталог (с подкаталогами) на запись. Очень удобная в использовании. Идеальна для файловых операций в макроязыках. Мм... прочитав эти слова и кроме того, сказанное в http://icculus.org/physfs/ , я не совсем понял, как это относится к моей задаче. Точнее, у меня сложилось впечатление, что эта библиотека решает задачу, обратную моей - представляет информацию из реальных источников в виде "виртуальной файловой системы", которую я могу читать внутри своей программы через специальное API. Мне же нужно примерно то же, что по ссылке maXmo - возможность экспортировать из своей программы "файлы", с которыми пользователь может работать через Explorer, с помощью bat-файлов и любым другим образом, который придет ему в голову. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2007, 18:55
|
|||
|---|---|---|---|
|
|||
Виртуальные файлы |
|||
|
#18+
Предлагаю связаться с авторами FTP-чо-то-там и попросить их пнуть в нужном направлении. Будущего нет. И завтра не будет. © ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2007, 18:56
|
|||
|---|---|---|---|
Виртуальные файлы |
|||
|
#18+
Это само собой, сегодня же вечером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2007, 19:03
|
|||
|---|---|---|---|
|
|||
Виртуальные файлы |
|||
|
#18+
Кстати, а так смотрел: тынц Всякие мапперы сторонних файловых систем в винду - думаю на их основе можно драйвер свой зафигачить. Будущего нет. И завтра не будет. © ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2007, 19:03
|
|||
|---|---|---|---|
Виртуальные файлы |
|||
|
#18+
без понятия, как оно устроено, описание работы мне мало о чём говорит, может, как-то ужасно нт апи хучит… Я тоже хотел посоветовать обратиться к нему, он в принципе не очень разговорчивый, но про технологию ответит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2007, 19:05
|
|||
|---|---|---|---|
|
|||
Виртуальные файлы |
|||
|
#18+
maXmoбез понятия, как оно устроено, описание работы мне мало о чём говорит, может, как-то ужасно нт апи хучит… Я тоже хотел посоветовать обратиться к нему, он в принципе не очень разговорчивый, но про технологию ответит.Думаю в винде есть стандартный механизм подстановки собственных драйверов файловой системы - так что порыскать по чужим сорцам и банзай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2007, 19:08
|
|||
|---|---|---|---|
Виртуальные файлы |
|||
|
#18+
я слышал, есть какие-то фильтры для reparse points… хм… или не фильтры… ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2007, 19:11
|
|||
|---|---|---|---|
Виртуальные файлы |
|||
|
#18+
Kull DamnedКстати, а так смотрел: Я так даже почти уверен, что в DDK есть пример, от которого можно стартовать - а особо больше и не потребуется на самом деле, драйвер простейший. Но это все же уже тяжелая артиллерия, скачивать-разбираться-прояснять лицензирование, и наверное самое веселое - разбираться с отладкой в режиме ядра. Проблема в том, что программа некоммерческая, поэтому вариант "заказать внешнему исполнителю" тоже не очень проходит - скорее всего, дороговато обойдется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2007, 19:12
|
|||
|---|---|---|---|
|
|||
Виртуальные файлы |
|||
|
#18+
Привет, Kull! Ты пишешь: KullKD> Думаю в винде есть стандартный механизм подстановки собственных KD> драйверов файловой системы - так что порыскать по чужим KD> сорцам и банзай.помнится (а мож и чудится), Коваленко делал такой врапер для своего IBProvider'а. точно ужо не помню. давно было. -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2007, 19:13
|
|||
|---|---|---|---|
Виртуальные файлы |
|||
|
#18+
softwarerМм... прочитав эти слова и кроме того, сказанное в http://icculus.org/physfs/ , я не совсем понял, как это относится к моей задаче. Точнее, у меня сложилось впечатление, что эта библиотека решает задачу, обратную моей - представляет информацию из реальных источников в виде "виртуальной файловой системы", которую я могу читать внутри своей программы через специальное API.Ну да. Обычно от VFS это и требуется... А обратная задача ..... эээээ...... НАФИГА?! Если приложение сохраняет свои данные в какие-то внешние файлы, то эти внешние файлы либо обычные файлы чтобы юзера могли с ними работать вне приложения, либо какие-то запакованые/зашифрованые форматы чтобы юзера с ними не могли работать вне приложения. softwarerМне же нужно примерно то же, что по ссылке maXmo - возможность экспортировать из своей программы "файлы", с которыми пользователь может работать через Explorer, с помощью bat-файлов и любым другим образом, который придет ему в голову.maXmo давал ссылку на программу которая решает задачу: "уже есть много реальных файлов в некоей файловой системе и надо облегчить юзерам доступ до этих файлов". А у тебя как я понял этих реальных файлов еще нету, твое приложение их еще только будет создавать. Опиши задачу подробнее, что-то она у меня не стыкуется... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2007, 19:16
|
|||
|---|---|---|---|
Виртуальные файлы |
|||
|
#18+
maXmoя слышал, есть какие-то фильтры для reparse points… хм… или не фильтры… Фильтры - это как раз и есть "написать драйвер": http://www.microsoft.com/whdc/driver/filterdrv/default.mspx А reparse point - это, если не ошибаюсь, фича ntfs, аналогичная ms-dosовскому join или юниксовому mount. То есть возможность подключить в указанное место файловой системы информацию из другой файловой системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2007, 19:27
|
|||
|---|---|---|---|
Виртуальные файлы |
|||
|
#18+
White OwlНу да. Обычно от VFS это и требуется... Это не VFS, а "нечто". Но тут.... я не стал бы спрашивать, как сделать нечто аналогичное PhysicsFS, это же совершенно очевидно. White OwlА обратная задача ..... эээээ...... НАФИГА?! Ну как тебе сказать... ну например весь юникс на этом построен, у них и спроси :) White OwlЕсли приложение сохраняет свои данные в какие-то внешние файлы, то эти внешние файлы либо обычные файлы чтобы юзера могли с ними работать вне приложения, либо какие-то запакованые/зашифрованые форматы чтобы юзера с ними не могли работать вне приложения. Я хочу, чтобы юзера могли работать вне приложения с тем, что приложение не сохранило как внешние файлы. Представь себе... ну например, performance counters. Вот только мне лень запускать приложение, выбирать в нем нужные счетчики и смотреть картинку. Вместо этого я иду в X:\Performance Counters\ и открываю там файл processor.jpg - и вижу картинку загрузки процессора за последние десять минут. White OwlmaXmo давал ссылку на программу которая решает задачу: "уже есть много реальных файлов в некоей файловой системе и надо облегчить юзерам доступ до этих файлов". А у тебя как я понял этих реальных файлов еще нету, твое приложение их еще только будет создавать. Ну и какая разница? Эта программа с тем же успехом могла бы не запрашивать файлы снаружи, а генерить их рэндомом - нужная мне технология оттого не меняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2007, 20:45
|
|||
|---|---|---|---|
Виртуальные файлы |
|||
|
#18+
softwarerЯ хочу, чтобы юзера могли работать вне приложения с тем, что приложение не сохранило как внешние файлы. Представь себе... ну например, performance counters. Вот только мне лень запускать приложение, выбирать в нем нужные счетчики и смотреть картинку. Вместо этого я иду в X:\Performance Counters\ и открываю там файл processor.jpg - и вижу картинку загрузки процессора за последние десять минут.Ага. Понял. Это действительно можно решить через создание драйвера новой ФС. Но на мой взгляд, это излишне сложный путь. Есть и другой путь, более простой в реализации и более удобный для дальнейшей жизни :) Садишь в своей программе слушателя на какой-либо tcp порт и твоя программа превращается в сервер. Потом делаешь клиентскую библиотечку и на ее основе утилитки, которые и обеспечит все запросы к внутренним данным программы. В плюсах - юзера смогут при соотвествющих настройках сети получить отчеты о внутреннем состоянии приложения откуда угодно. Я ходил по этому пути. Вполне просто и легко. Можно пойти по пути COM-сервера, тогда достаточно будет сделать формальное описание интерфейсов своего com-сервера и можно будет: Код: plaintext 1. softwarer White OwlmaXmo давал ссылку на программу которая решает задачу: "уже есть много реальных файлов в некоей файловой системе и надо облегчить юзерам доступ до этих файлов". А у тебя как я понял этих реальных файлов еще нету, твое приложение их еще только будет создавать. Ну и какая разница? Эта программа с тем же успехом могла бы не запрашивать файлы снаружи, а генерить их рэндомом - нужная мне технология оттого не меняется.Разница в том, что FTP протокол уже существует . FTPDrive это по существу костыль. Он делает конвертацию на лету из одного протокола в другой. А у тебя пока еще нету того протокола к которому надо делать такой конвертор. Конечно, можно сделать свою файловую систему, но при этом, ты сознательно ограничишь доступ к приложению только тем компом на котором эта FS установлена.... Ты готов делать версии драйверов своей VFS для `98, XP, Win2003, Vista? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2007, 21:54
|
|||
|---|---|---|---|
Виртуальные файлы |
|||
|
#18+
White OwlЕсть и другой путь, более простой в реализации и более удобный для дальнейшей жизни :) Садишь в своей программе слушателя на какой-либо tcp порт и твоя программа превращается в сервер. ...... Можно пойти по пути COM-сервера, тогда достаточно будет сделать формальное описание интерфейсов Ага. И пользователь, который хочет в Explorer-е кликнуть на этот файл и увидеть картинку, или там например в bat-файле написать "если время последнего изменения в последние полчаса то тра-ля-ля", с восторгом пойдет создавать tcp-соединение.... Я конечно понимаю, что придумать другую постановку задачи намного легче, но де-факто мне нужно реализовать именно то, что мне нужно. Ладно, я еще могу как-то осознать, как ты сумел превратить написанное мной в первом письме в "постановку задачи, для которой нужен PhysFS". Но повторное предложение вызывает вопрос: ты таки читаешь, что нужно, или говоришь о чем-то своем? White OwlРазница в том, что FTP протокол уже существует . FTPDrive это по существу костыль. Он делает конвертацию на лету из одного протокола в другой. А у тебя пока еще нету того протокола к которому надо делать такой конвертор. Замечательно. Я русским языком написал: есть приложение. Есть потребители, которые должны уметь считывать информацию из этого приложения. И какого именно протокола у меня нет. Могу еще раз, большими буквами: ДА, ИМЕННО ТАКОЙ КОСТЫЛЬ МНЕ И НУЖЕН. И интересна информация знающих, как такой сделать. White OwlТы готов делать версии драйверов своей VFS для `98, XP, Win2003, Vista? 98-я мне нафиг не нужна. А в остальных, насколько я в курсе, будет работать один и тот же драйвер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2007, 22:24
|
|||
|---|---|---|---|
Виртуальные файлы |
|||
|
#18+
softwarer White OwlЕсть и другой путь, более простой в реализации и более удобный для дальнейшей жизни :) Садишь в своей программе слушателя на какой-либо tcp порт и твоя программа превращается в сервер. ...... Ага. И пользователь, который хочет в Explorer-е кликнуть на этот файл и увидеть картинку, или там например в bat-файле написать "если время последнего изменения в последние полчаса то тра-ля-ля", с восторгом пойдет создавать tcp-соединение....Зачем же создавать собственное соединение? Из батника он позовет утилитку с параметрами и она в stdout или errorlevel положит значение. А из эксплорера юзер ткнет в ярлык программы которая то-же самое значение отрисует графически, а при нужде сможет и повиснуть на десктопе и постоянно обновлять картинку. softwarerНо повторное предложение вызывает вопрос: ты таки читаешь, что нужно, или говоришь о чем-то своем?Читаю и понимаю что нужно, но не понимаю зачем это нужно. На мой взгляд, в этой постановке задачи ты ограничиваешь себе возможности . В конце концов, если так сильно хочется виртуальный драйв, то можно будет сделать его и позже на основе клиент-серверного протокола который я предлагаю, тогда этот виртуальный драйв можно будет запускать даже на удаленном юзерском компе. А не только на той же самой машине что и супер-программа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2007, 22:27
|
|||
|---|---|---|---|
|
|||
Виртуальные файлы |
|||
|
#18+
softwarerДА, ИМЕННО ТАКОЙ КОСТЫЛЬ МНЕ И НУЖЕН.а может применить уже упомянутый FTPDrive, а в своей программе сделать костыль в виде FTP-сервера? Заодно и доступ с других компов будет возможен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.09.2007, 22:29
|
|||
|---|---|---|---|
Виртуальные файлы |
|||
|
#18+
FTP сервер softwarerДА, ИМЕННО ТАКОЙ КОСТЫЛЬ МНЕ И НУЖЕН.а может применить уже упомянутый FTPDrive, а в своей программе сделать костыль в виде FTP-сервера? Заодно и доступ с других компов будет возможен.вот, действительно. Половина задачи уже решена :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2007, 11:06
|
|||
|---|---|---|---|
Виртуальные файлы |
|||
|
#18+
softwarerА reparse point - это, если не ошибаюсь, фича ntfs, аналогичная ms-dosовскому join или юниксовому mount. То есть возможность подключить в указанное место файловой системы информацию из другой файловой системы.ну это вроде лишь частный случай их применения, как фильтр напишешь, так она себя и будет вести, хошь – символическая ссылка, а хошь – format c: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2007, 16:23
|
|||
|---|---|---|---|
Виртуальные файлы |
|||
|
#18+
White OwlЗачем же создавать собственное соединение? Из батника он позовет утилитку с параметрами и она в stdout или errorlevel положит значение. А... то есть ты предлагаешь мне написать утилитку, в которой повторить весь функционал cmd.exe и вообще все что придумало человечество? White OwlА из эксплорера юзер ткнет в ярлык программы которая то-же самое значение отрисует графически, а при нужде сможет и повиснуть на десктопе и постоянно обновлять картинку. Ай, какая замечательная перспектива. Постановка задачи начиналась с "не хочется смотреть через интерфейс программы" - а теперь ты выставляешь "ткнет в ярлык программы" как чудо-технологию решения проблемы. White OwlЧитаю и понимаю что нужно, но не понимаю зачем это нужно. Ну дык и сосредоточься в ответах на "что". White OwlНа мой взгляд, в этой постановке задачи ты ограничиваешь себе возможности . В конце концов, если так сильно хочется виртуальный драйв, то можно будет сделать его и позже "Давай делать нафиг не нужное, а то, что нужно, если очень хочется, можно будет сделать позже". Замечательно логичный подход. White Owlна основе клиент-серверного протокола который я предлагаю, тогда этот виртуальный драйв можно будет запускать даже на удаленном юзерском компе. А не только на той же самой машине что и супер-программа. Замечательная возможность. Жаль только, что нахрен не нужна. А нахрен не нужна она по двум причинам: 1. Если я захочу делать что-то "на удаленном юзерском компе", я сделаю на нем net use и получу доступ к нужным файлам. Это эффективнее, нежели растаскивать по всем компам "виртуальный драйв" (жду рассказа про работу через интернет, soap, xmlrpc итп) 2. Жаль, что ты не на миг не задумался о том, что "суперпрограмма" может и сама по себе быть клиентом некоего сервера. И предложение делать ее еще и сервером для "клиентов второго уровня" вызывает.. некоторое веселье. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2007, 16:26
|
|||
|---|---|---|---|
Виртуальные файлы |
|||
|
#18+
FTP сервера может применить уже упомянутый FTPDrive, а в своей программе сделать костыль в виде FTP-сервера? Ну, если бы не было другого выхода, конечно, стоило бы рассмотреть такой вариант. Но, думаю, "применить ту же или аналогичную технологию" - лучший вариант. Проще настраивать, меньше точек отказа. Да и с общеархитектурной точки зрения - нет ничего плохого, если две программы умеют взаимодействовать, но плохо, если одна без другой бессмысленна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2007, 17:44
|
|||
|---|---|---|---|
Виртуальные файлы |
|||
|
#18+
softwarer2. Жаль, что ты не на миг не задумался о том, что "суперпрограмма" может и сама по себе быть клиентом некоего сервера. И предложение делать ее еще и сервером для "клиентов второго уровня" вызывает.. некоторое веселье.Об этом сразу надо было бы говорить, я бы со своей идеей не вылезал бы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=16&mobile=1&tid=1345814]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
204ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 540ms |

| 0 / 0 |
