проблема с DefineDosDevice
От: DaRKSiDE  
Дата: 21.10.09 23:40
Оценка:
В общем-то проблема вот в чем...
удаляю дос имя диска...флешки
invoke DefineDosDevice,DDD_REMOVE_DEFINITION + DDD_RAW_TARGET_PATH,DevName,hLocalAlloc
затем его восстанавливаю его
invoke DefineDosDevice,DDD_RAW_TARGET_PATH,DevName,addr NameDosDevice

Все вроде бы хорошо, но после реконекта флешки к USB порту... и попытки открыть ее через Мой компьютер получаю сообщение об ошибке


Хотя через проводник я могу зайти на флешку... и с консоли тоже...
В чем возможная причина данного косяка? И как поправить это?

Заранее спасибо за инфу....
Re: проблема с DefineDosDevice
От: MShura  
Дата: 22.10.09 07:39
Оценка:
DRK>удаляю дос имя диска...флешки
DRK>invoke DefineDosDevice,DDD_REMOVE_DEFINITION + DDD_RAW_TARGET_PATH,DevName,hLocalAlloc
DRK>затем его восстанавливаю его
DRK>invoke DefineDosDevice,DDD_RAW_TARGET_PATH,DevName,addr NameDosDevice

DRK>Хотя через проводник я могу зайти на флешку... и с консоли тоже...

DRK>В чем возможная причина данного косяка? И как поправить это?

Вкратце: DefineDosDevice достаточно было во времена NT
В следующих версиях необходимо использовать SetVolumeMountPoint/DeleteVolumeMountPoint
Ищем в интернете (или берем из samples\Samples\winbase\IO\DLEdit в SDK) файл dledit.cpp

Изучаем как оно устроено
Re[2]: проблема с DefineDosDevice
От: DaRKSiDE  
Дата: 24.10.09 03:14
Оценка:
Здравствуйте, MShura, Вы писали:

MS>Вкратце: DefineDosDevice достаточно было во времена NT

MS>В следующих версиях необходимо использовать SetVolumeMountPoint/DeleteVolumeMountPoint
MS>Ищем в интернете (или берем из samples\Samples\winbase\IO\DLEdit в SDK) файл dledit.cpp

MS>Изучаем как оно устроено



Спасибо за инфу... Я так понял что под 7-рку уже DefineDosDevice будет криво работать?
Или его вообще уберут?
Re[3]: проблема с DefineDosDevice
От: DaRKSiDE  
Дата: 24.10.09 04:44
Оценка:
Интересно то что после DefineDosDevice,DDD_RAW_TARGET_PATH т.е. назначения устройства... и отключения девайса от компа... старое значение не удаляется... и при очередном подключении флешки насзначаеться новое дос имя устройства которое каким-то образом накладывается на старое...
Так вот выше описанная ошибка правиться почему-то повторным удалением нового дос имени... и тогда диск становиться доступным...
Как избежать подобного косяка... ??? В dledit.cpp я этого не нашел...
Re[4]: проблема с DefineDosDevice
От: MShura  
Дата: 26.10.09 11:42
Оценка:
DRK>Интересно то что после DefineDosDevice,DDD_RAW_TARGET_PATH т.е. назначения устройства... и отключения девайса от компа... старое значение не удаляется... и при очередном подключении флешки насзначаеться новое дос имя устройства которое каким-то образом накладывается на старое...
DRK>Так вот выше описанная ошибка правиться почему-то повторным удалением нового дос имени... и тогда диск становиться доступным...
DRK>Как избежать подобного косяка... ??? В dledit.cpp я этого не нашел...

Повторяю медленно:
В Win2K и выше используйте SetVolumeMountPoint/DeleteVolumeMountPoint
Re[5]: проблема с DefineDosDevice
От: DaRKSiDE  
Дата: 28.10.09 21:17
Оценка:
Здравствуйте, MShura, Вы писали:

MS>Повторяю медленно:

MS>В Win2K и выше используйте SetVolumeMountPoint/DeleteVolumeMountPoint

Я могу повторить еще медленнее — мне не подходит вариант с данными функами...
Мне не нужно размонтирование ... а нужно полное удаление линков на на диск...
и потом восстановление этого линка в глобале... и все
Re[6]: проблема с DefineDosDevice
От: MShura  
Дата: 30.10.09 10:03
Оценка:
DRK> Я могу повторить еще медленнее — мне не подходит вариант с данными функами...
DRK>Мне не нужно размонтирование ... а нужно полное удаление линков на на диск...
DRK>и потом восстановление этого линка в глобале... и все

— А зачем их удалять?
— Что Вы делаете между удалением/восстановлением?

Я не телепат, но если это нужно для того о чем я думаю, то для этого есть другие способы.
Re[7]: проблема с DefineDosDevice
От: DaRKSiDE  
Дата: 01.11.09 16:00
Оценка:
Здравствуйте, MShura, Вы писали:
MS>Я не телепат, но если это нужно для того о чем я думаю, то для этого есть другие способы.

Уж не знаю о чем вы думаете, но мне для того чтобы скрыть девайс (флешку) на момент проверки пароля...
И потом восстановление ее в проводнике, если пароль верен...
Это в крадце...
Так какие еще способы еще существуют, просвистите пожалста... если не жалко...
Re[8]: проблема с DefineDosDevice
От: x64 Россия  
Дата: 01.11.09 17:11
Оценка:
DRK>...для того чтобы скрыть девайс (флешку) на момент проверки пароля...

В какой именно момент требуется запрашивать пароль на доступ к флешке? Сразу же после её подключения в систему, я правильно понимаю?
Re[9]: проблема с DefineDosDevice
От: DaRKSiDE  
Дата: 01.11.09 17:54
Оценка:
Здравствуйте, x64, Вы писали:

DRK>>...для того чтобы скрыть девайс (флешку) на момент проверки пароля...


x64>В какой именно момент требуется запрашивать пароль на доступ к флешке? Сразу же после её подключения в систему, я правильно понимаю?


В принципе да.. в момент DBT_DEVICEARRIVAL... или если флешка была подключена и программа была запущена позже..
после подключения...
Re[10]: проблема с DefineDosDevice
От: DaRKSiDE  
Дата: 01.11.09 18:05
Оценка:
Собственно нужно создать Link на устройство (в данном случае это флешка) в GLOBAL...
DefineDosDevice успешно грохает линки и глобальые и сессионные..
Но вот создает DefineDosDevice только сессионную ссылку..
И поэтому при переподключении флешки вылезает коллизия с линками...
Т.е. сессионная ссылка при отключении созданная DefineDosDevice не удаляется...
А при новом коннекте флешки создается новая глобальная ссылка...
Которая тоже указывает на одно и тоже устройство, что и сессионная...
Вот такая попа ..
Вопрос стоит четко... надо найти способ создания глобального линка на устройство после его удаления DefineDosDevice... желательно из юзермода.. чтобы не воять дров для этого... если это вообще реально...
Re[10]: проблема с DefineDosDevice
От: x64 Россия  
Дата: 01.11.09 18:20
Оценка:
DRK>В принципе да.. в момент DBT_DEVICEARRIVAL...
DRK>или если флешка была подключена и программа была запущена позже..

В таком случае, задача решается не так, как ты пытаешься это сделать.
Re[11]: проблема с DefineDosDevice
От: x64 Россия  
Дата: 01.11.09 18:21
Оценка:
DRK>Вопрос стоит четко... надо найти способ создания глобального линка на устройство после его удаления DefineDosDevice...

Это не правильный вопрос, учитывая задачу, которую ты решаешь.
Re[11]: проблема с DefineDosDevice
От: DaRKSiDE  
Дата: 01.11.09 19:26
Оценка:
Здравствуйте, x64, Вы писали:

x64>Это не правильный вопрос, учитывая задачу, которую ты решаешь.

x64>В таком случае, задача решается не так, как ты пытаешься это сделать.

А как? По подробнее пожалста...
Re[12]: проблема с DefineDosDevice
От: x64 Россия  
Дата: 01.11.09 19:53
Оценка:
x64>>В таком случае, задача решается не так, как ты пытаешься это сделать.
DRK>А как?

Драйвер-фильтр файловой системы, отложенные запросы, etc.
Re[13]: проблема с DefineDosDevice
От: DaRKSiDE  
Дата: 01.11.09 21:13
Оценка:
Здравствуйте, x64, Вы писали:

x64>>>В таком случае, задача решается не так, как ты пытаешься это сделать.

DRK>>А как?

x64>Драйвер-фильтр файловой системы, отложенные запросы, etc.


Подробно! Спасибо...
Re[14]: проблема с DefineDosDevice
От: x64 Россия  
Дата: 01.11.09 21:30
Оценка:
DRK>Подробно!

На данном этапе ничего более тебе и не нужно, а более конкретные вопросы будем рассматривать отдельно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.