Есть такая проблема. Мы создали драйвер виртуального диска. При активации он пиден всем
программам, кроме My Computer & Windows Explorer. Но в остальных программах он виден
и с ним идет интенсивное работа. Как бы сделать так, чтобы информация о разделе
оперативно обновлялась в системе без написания отдельной программы, то есть все должно
делаться в самом драйвере.
Если ты в жизни совершил много ошибок — запусти отладку. :-)) www.doskach.spb.ru
Здравствуйте, Slavan, Вы писали:
S>Есть такая проблема. Мы создали драйвер виртуального диска. При активации он пиден всем S>программам, кроме My Computer & Windows Explorer. Но в остальных программах он виден S>и с ним идет интенсивное работа. Как бы сделать так, чтобы информация о разделе S>оперативно обновлялась в системе без написания отдельной программы, то есть все должно S>делаться в самом драйвере.
речь идет об XP я так понимаю?
там эксплорер целиком рассчитывает на механизм WM_DEVICECHANGE broadcast messages с кодами DBT_XXX и соотв. буквой тома
соотв при операциях монтирования и размонтирования нужно сделать совсем немного: любезно всем разослать BroadcastSystemMessage с WM_DEVICECHANGE.
PS это не в коде драйвера делается, а в коде user mode, который по идее работает в связке с драйвером.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Здравствуйте, Valery A. Boronin, Вы писали:
VAB>речь идет об XP я так понимаю?
Речь идет об XP, так как в WIN2000 это, вроде, работает.
VAB>там эксплорер целиком рассчитывает на механизм WM_DEVICECHANGE broadcast messages с кодами DBT_XXX и соотв. буквой тома
VAB>соотв при операциях монтирования и размонтирования нужно сделать совсем немного: любезно всем разослать BroadcastSystemMessage с WM_DEVICECHANGE.
VAB>PS это не в коде драйвера делается, а в коде user mode, который по идее работает в связке с драйвером.
Поставлена задача, чтобы драйвер работал без сторонних программ. Если прописать, чтобы он грузился вместе с ОС, то он, естественно, регистрируется вовремя и эксплорер его видит. Но если загрузить драйвер после загрузки системы, то
его не видно. Я знаю как сделать прогрнамму, которая регистрирует его для просмотра в эксплорере. Нужно вызвать функцию DefineDosDevice. Но хотелось бы этого не делать. Из-за такой ерунды писать программу было бы не совсем логично.
Кстати, ты не знаешь, как без PnP сделать так, чтобы виртуальный диск не нужно было программой размонтировать? Это все к той же прогблемме про драйвер. СТОРОННЯЯ ПРОГРАММА КРАЙНЕ НЕЖЕЛАТЕЛЬНА.
Если ты в жизни совершил много ошибок — запусти отладку. :-)) www.doskach.spb.ru
Здравствуйте, Slavan, Вы писали:
S>Поставлена задача, чтобы драйвер работал без сторонних программ. Если прописать, чтобы он грузился вместе с ОС, то он, естественно, регистрируется вовремя и эксплорер его видит. Но если загрузить драйвер после загрузки системы, то S>его не видно. Я знаю как сделать прогрнамму, которая регистрирует его для просмотра в эксплорере. Нужно вызвать функцию DefineDosDevice. Но хотелось бы этого не делать. Из-за такой ерунды писать программу было бы не совсем логично.
DefineDosDevice как раз делает BroadCastSystemMessage.
Бредовая (но реализуемая) идея — вызывать BroadCastSystemMessage "из" драйвера. Например из кода, который драйвер инжектит в тот же explorer.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Здравствуйте, Valery A. Boronin, Вы писали:
VAB>Здравствуйте, Slavan, Вы писали:
S>>Есть такая проблема. Мы создали драйвер виртуального диска. При активации он пиден всем S>>программам, кроме My Computer & Windows Explorer. Но в остальных программах он виден S>>и с ним идет интенсивное работа. Как бы сделать так, чтобы информация о разделе S>>оперативно обновлялась в системе без написания отдельной программы, то есть все должно S>>делаться в самом драйвере. VAB>речь идет об XP я так понимаю?
VAB>там эксплорер целиком рассчитывает на механизм WM_DEVICECHANGE broadcast messages с кодами DBT_XXX и соотв. буквой тома
VAB>соотв при операциях монтирования и размонтирования нужно сделать совсем немного: любезно всем разослать BroadcastSystemMessage с WM_DEVICECHANGE.
VAB>PS это не в коде драйвера делается, а в коде user mode, который по идее работает в связке с драйвером.
IMHO, если драйвер вызовет IoRegisterDeviceInterface, то WM_DEVICECHANGE будет разослано всем желающим? Т.е операции монтирования/размонтирования должны сопровождаться регистрацией интерфейса.
Здравствуйте, TarasCo, Вы писали:
TC>IMHO, если драйвер вызовет IoRegisterDeviceInterface, то WM_DEVICECHANGE будет разослано всем желающим? Т.е операции монтирования/размонтирования должны сопровождаться регистрацией интерфейса.
если это драйвер-клон простейшего виртуального диска которых много в сети (который не PnP, а всего лишь создает FILE_DISK_DEVICE с 5 IRP_MJ_XXX обработчиками и с файлом-контейнером), то в нем запросто не будет никаких IoRegisterDeviceInterface (что я подозреваю имеет место быть в данном случае)
такие драйвера-клоны требуют как-никак консоли управления — типа создать новый вирт диск под буквой такой-то. соотв там не сделано то что я описал выше, посему и такой ответ имел место.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Здравствуйте, TarasCo, Вы писали:
TC>Валерий, 100 раз прошу простить за оффтоп, но заметил за Вашим ником скромную приписку, с чем спешу поздравить. Или я просто раньше был слеп? .
оффтоп разрешается — модератор
нет, со зрением думаю порядок (насколько это возможно у программистов )
PS ТарасКо, похоже отправка сообщений через Ваш профиль на RSDN не проходит?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.