Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> виртуальный диск 
:(
    Опции темы
nmn
Дата 7.9.2010, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



здравствуйте

необходимо создать виртуальный сетевой диск, как это можно сделать?
PM Skype   Вверх
Sartorius
Дата 7.9.2010, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 1
Всего: 37



Виртуальный диск делал как описано в этой статье http://www.codeproject.com/KB/system/virtu...k-tutorial.aspx для того что бы система считала его сетевым думаю при создании устройства нужно поправить флажки. Зачем именно сетевой если не секрет? Монтирование шары с локалхоста не поможет?

PM MAIL ICQ   Вверх
nmn
Дата 7.9.2010, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



идея вообще такая: нужно дать единый интерфейс для доступа к файлам по http, т.е. есть сервер, он умеет отдавать файлы по http, и я хочу сделать прослойку в виде виртуального диска

может есть другие подобные варианты?
PM Skype   Вверх
xvr
Дата 7.9.2010, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(nmn @  7.9.2010,  13:11 Найти цитируемый пост)
может есть другие подобные варианты? 
Угу, врезаться в сервер. Или воспользоваться его API, они точно должны быть, т.к. даже самый простой http сервер (если он конечно не совсем игрушечный) умеет поддерживать CGI. А не самые простые имеют кроме этого и кучу других возможностей.

Какой сервер?


PM MAIL   Вверх
Sartorius
Дата 7.9.2010, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 1
Всего: 37



nmn, виртуальный диск или виртуальная файловая система предполагают random access к файлам. HTTP сервер реализует только GET и PUT. Можешь сделать расширение к explorer, что бы юзеру эти файлы показать. Но лучше если есть доступ к серверу поднять NFS на нем. 

Это сообщение отредактировал(а) Sartorius - 7.9.2010, 13:33
PM MAIL ICQ   Вверх
nmn
Дата 7.9.2010, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



Цитата(Sartorius @  7.9.2010,  13:32 Найти цитируемый пост)
виртуальный диск или виртуальная файловая система предполагают random access к файлам

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

Цитата(xvr @  7.9.2010,  13:24 Найти цитируемый пост)
Угу, врезаться в сервер. Или воспользоваться его API

что имеете ввиду когда говорите API? на текущий момент их нет, а доступа к серверу тоже нет
PM Skype   Вверх
Sartorius
Дата 7.9.2010, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 1
Всего: 37



 Тогда проще всего ИМХО драйвер виртуальной файловой системы написать и в нем реализовать все что нужно. Т.к. HTTP не поддерживает lock файлов не совсем понятно как корректно одновременный доступ обеспечить для многих клиентов. 
PM MAIL ICQ   Вверх
borisbn
Дата 7.9.2010, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 6
Всего: 135



WebDrive - утилита, делающая из ftp-сервера сетевой диск. Я пользовался - мне не понравилось. Ну оооочень медленная.
Hanachi - позволяет при помощи VPN-сети делать доступ с одного компьютера на другой по статическим ip-адресам.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
xvr
Дата 7.9.2010, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(nmn @  7.9.2010,  13:48 Найти цитируемый пост)
что имеете ввиду когда говорите API? на текущий момент их нет, а доступа к серверу тоже нет

Еще раз спрошу - какой именно http сервер? Сервера без API расширений конечно бывают, но это весьма специфичные (читай - специальные) сервера

PM MAIL   Вверх
nmn
Дата 7.9.2010, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



Цитата(xvr @  7.9.2010,  14:21 Найти цитируемый пост)
Еще раз спрошу - какой именно http сервер?

Microsoft-IIS/7.5
PM Skype   Вверх
xvr
Дата 7.9.2010, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(nmn @ 7.9.2010,  16:15)
Цитата(xvr @  7.9.2010,  14:21 Найти цитируемый пост)
Еще раз спрошу - какой именно http сервер?

Microsoft-IIS/7.5

У этого сервера есть API - ISAPI называется. Кроме того, он поддерживает ASP, через которые можно завернуть все, что душе угодно

PM MAIL   Вверх
nmn
Дата 7.9.2010, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



но мне от этого ни холодно не жарко, доступа к серверу все равно нет кроме как по http
PM Skype   Вверх
nmn
Дата 7.9.2010, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



Цитата(Sartorius @  7.9.2010,  13:32 Найти цитируемый пост)
Можешь сделать расширение к explorer, что бы юзеру эти файлы показать

а что за расширение? как это будет выглядеть?
PM Skype   Вверх
xvr
Дата 7.9.2010, 21:10 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(nmn @  7.9.2010,  17:21 Найти цитируемый пост)
но мне от этого ни холодно не жарко, доступа к серверу все равно нет кроме как по http 
И не надо - это все работает НА СТОРОНЕ СЕРВЕРА. Как ты свою файловую систему на сервер с IIS ставить будешь, если к нему нет доступа?


PM MAIL   Вверх
nmn
Дата 7.9.2010, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



Цитата(xvr @  7.9.2010,  21:10 Найти цитируемый пост)
И не надо - это все работает НА СТОРОНЕ СЕРВЕРА. Как ты свою файловую систему на сервер с IIS ставить будешь, если к нему нет доступа?

никак, я буду с ним общаться по http
PM Skype   Вверх
jonie
Дата 8.9.2010, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



webDAV для такихцелей существует относительно давно имхо... и виндовый эксплорер умеет работать с ним. А в общем да, придется вам делать вирт fs....


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
xvr
Дата 8.9.2010, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(nmn @  7.9.2010,  21:51 Найти цитируемый пост)
никак, я буду с ним общаться по http 
Не понял, а твой первоначальный вопрос -
Цитата(nmn @  7.9.2010,  12:08 Найти цитируемый пост)
необходимо создать виртуальный сетевой диск, как это можно сделать? 

Этот диск тоже будет создаваться по http?

А, кажется понял - вам надо сделать локальную (у пользователя) fs, которая бы отражала содержимое удаленного сервера по http? Тогда можете начать с Dokan (для Win) или fuse (или Linux)

Это сообщение отредактировал(а) xvr - 8.9.2010, 09:47
PM MAIL   Вверх
nmn
Дата 8.9.2010, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



Цитата(xvr @  8.9.2010,  09:40 Найти цитируемый пост)
А, кажется понял - вам надо сделать локальную (у пользователя) fs, которая бы отражала содержимое удаленного сервера по http?

именно
PM Skype   Вверх
nmn
Дата 8.9.2010, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



где можно посмотреть про драйвера в windows, так чтобы хоть немного въехать в предмет?
PM Skype   Вверх
xvr
Дата 8.9.2010, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(nmn @ 8.9.2010,  12:40)
где можно посмотреть про драйвера в windows, так чтобы хоть немного въехать в предмет?

Скачать WDK c MS. Там в комплекте должны быть доки и примеры. Да и в самом MSDN все есть.

PS. Чем Dokan не устроил?

PM MAIL   Вверх
nmn
Дата 8.9.2010, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



устроил, там даже .net интерфейс есть, но все таки интересно как это все связано

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

Это сообщение отредактировал(а) nmn - 8.9.2010, 15:21
PM Skype   Вверх
xvr
Дата 8.9.2010, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(nmn @ 8.9.2010,  15:17)
устроил, там даже .net интерфейс есть, но все таки интересно как это все связано

Тогда смотреть сорцы и читать MSDN

Цитата

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

readme от Dokan:
Цитата

These functions [callbacks] are called from many threads so they need to be thread-safe, otherwise many problems may occur.
Так что может быть несколько потоков




PM MAIL   Вверх
nmn
Дата 8.9.2010, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



Код
Cleanup is invoked when the function CloseHandle in Windows API is
executed. If the file system application stored file handle in the
Context variable when the function CreateFile is invoked, this should
be closed in the Cleanup function, not in CloseFile function. If the
user application calls CloseHandle and subsequently open the same
file, the CloseFile function of the file system application may not be
invoked before the CreateFile API is called. This may cause sharing
violation error.  Note: when user uses memory mapped file, WriteFile
or ReadFile function may be invoked after Cleanup in order to complete
the I/O operations. The file system application should also properly
work in this case.


как то получается, что если буду закрывать файл в Cleanup то будут проблемы, если же буду закрывать файл в CloseFile, то тоже будут проблемы....

PM Skype   Вверх
xvr
Дата 9.9.2010, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(nmn @ 8.9.2010,  23:38)
Код
Cleanup is invoked when the function CloseHandle in Windows API is
executed. ... Note: when user uses memory mapped file, WriteFile
or ReadFile function may be invoked after Cleanup in order to complete
the I/O operations. The file system application should also properly
work in this case.


как то получается, что если буду закрывать файл в Cleanup то будут проблемы, если же буду закрывать файл в CloseFile, то тоже будут проблемы....

Закрывать явно надо в Cleanup. А что касается замечания про 'memory mapped file' то это очень странно - Cleanup вызывается после закрытия ПОСЛЕДНЕЙ ссылки на HANDLE файла, а т.к. memory mapped file держит такую ссылку сам, то после Cleanup уже операции Read/Write на этом файле запланированны быть не могут. Единственная возможность получить Read/Write ПОСЛЕ Cleanup это поставить их в очередь ПОСЛЕ закрытия последнего HANDLE'а, но ДО собственно исполнения Cleanup'а (что похоже возможно только на MP машине) - но в таком случае Dokan должен был бы сам заканселить все IRP относящиеся к файлу, которые находятся в 'полете' (это стандартное действие на Cleanup). Видимо он этого не делает :(

Закрывайте файл в Cleanup и возвращайте ошибки, если что то свалится с тем же HANDLE в файловую операцию после этого

PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1237 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.