Господа, есть такая задача.
Есть некое распределённое хранилище неких файлов.
Есть winservice, который знает что и где лежит, и по запросу возвращает стрим с запрошенным файлом.
Нужно, чтобы "типа в май компьютере появился ещё один диск"

, который будет показывать и (что самое главное) позволять открыть файл в соответствующем приложении (txt в нотепаде, cs в студии итд).
На первом этапе достаточно рид-онли доступа и отсутствие директорий (все файлы в корне нашего диска).
Может кто имеет опыт, подскажите плз по шагам, как ЭТО делать, где читать, где искать примеры.
Спасибо.
Простите, торможу.
Конечно, всё ЭТО можно было бы сделать через Shell Namespace Ex, НО:
нужно обойтись без создания реального файла где либо на конкретной машине, т.е. имеем стрим (это может быть ХТТП или LPT стрим — не важно) с данными файла — и выдаём из этого стрима данные запрошенными порциями.
Здравствуйте, vlad_sky, Вы писали:
_>Есть некое распределённое хранилище неких файлов.
_>Есть winservice, который знает что и где лежит, и по запросу возвращает стрим с запрошенным файлом.
Есть простой вариант, все что нужно — это не очень сложный фильтр файловой системы
1. на старте фильтр знает виртуальные имена файлов — те что будут видны пользователю (на старте или еще как прочитав список имен с сервера)
2. Далее при обращении к виртуальному файлу, фильтр дает команду сервису скачать файл во временное место какое-то и возможно подобрать уникальное имя (GUID/UUIDs are our friends), соотв. теперь фильтр знает виртуальное (видимое пользователю) и соотв ему реальное (временное или нет, если решите организовать локальный кэш — уже Вам решать) имена файла
4. все запросы на виртуальное имя — пересылать к соотв реальному файлу
5. по скажем закрытию (или любому другому подходящему событию) последнего handle на виртуальный файл фильтр это дело определяет и дает команду залить изменения обратно на сервер
Но это если на коленке и лишь бы было, хотя для каких-то целей может быть в самый раз.
А вообще говоря, если есть NTFS то можно обойтись и без драйвера совсем — есть механизм junction points (можно shared folder от другой машины в сети примонтировать в кач-ве нового диска\каталога), есть soft/hard links.
Если сеть не локальная, то можно попробовать воспользоваться услугами сетевого редиректора WebDAV (в комплекте всех ОС начиная с ХР, а в 2000ю доставляется отдельно в т.ч. и из офиса — там эту фичу Web Folders зовут) — он позволит с другого конца света каталог примонтировать как локальную папку.
В эту сторону стоит посмотреть сначала — может быть драйвера для Вашей задачи — это из пушки по воробьям.
_>Нужно, чтобы "типа в май компьютере появился ещё один диск"
, который будет показывать и (что самое главное) позволять открыть файл в соответствующем приложении (txt в нотепаде, cs в студии итд).
Вопросы с ходу:
1. "еще один диск" — это осмысленное требование или оно легко заменяется на "еще один каталог", виртуальный, куда и подмонтируются Ваши виртуальные файлы? Иначе у Вас добавляется кроме уровня файловой системы также заморочки с уровнем диска, как минимум еще один драйвер виртуального диска — оно надо?
2. Custom File System в заголовке — это осмысленное требование?

Дело в том что трудоемкость создания своей файловой системы в простейшем случае получится скорее всего существенно выше (от 12-18 мес по оценкам экспертов из
NTFSD), чем написание фильтра поверх существующих файловых систем — фильтр будет создавать видимость Ваших виртуального каталога\файлов, например путем работы с winservice. Зачем тут Custom FS?
_>На первом этапе достаточно рид-онли доступа и отсутствие директорий (все файлы в корне нашего диска).
read only это может облегчить, вторая часть не столь существенна ИМХО
Гораздо полезнее было бы указать, какие ОС требуется поддерживать и чем не устраивают FAT / NTFS в качестве FS
также не понятна природа распредленности — это все в локальной сети или нет? Большие ли виртуальные файлы — много ли их будет и т.п. — от каждого такого требования дизайн может кардинально меняться: возможно появится возможность вместо Сustom FS написать нечто иное — файловый фильтр, сетевой релиректор, миниредиректор (зависит от версии ОС) или даже просто Вам нужен WebDAV (или фильтр поверх него) и все?
Если хочется написать распределенную FS, то следует четко расписать требования к ней, иначе ничего разумного в ответ просто невозможно написать, раз задача не поставлена.
PS Shell extensions не покатят, даже если Read Only требование останется — так как есть требование работать с виртуальным ифайлами из всех приложений (notepad), а не только из подерживающих Shell namespace (Explorer)
... << RSDN@Home 1.1.4 beta 3 rev. 223>>