Привет всем! В качестве курсового проекта я пишу драйвер виртуального рамдиска. Я создал устройство (сам диск) с именем \\Device\\HarddiskN\\DR0 (N вычисляется), две символьные ссылки на него: \\Device\\HarddiskN\\Partition0 и \\??GLOBAL\\PhysicalDriveN, также я зарегистрировал интерфейс с гуидом GUID_DEVINTERFACE_DISK и написал обработчики всех приходящих IOCTL-ов. После сих действий система увидела мой диск в диспетчере томов и правильно определила все его параметры. Но возникла следующая проблема - как уведомить систему о том, что на моем диске есть разделы? На запрос IOCTL_DISK_GET_DRIVE_LAYOUT_EX, который приходит сразу после загрузки драйвера я возвращаю таблицу разделов, первый из которых содержит нужные мне параметры, также я создаю объект устройство с именем \\Device\\HarddiskN\\DP(M)K-L+P (M, K, L вычисляются). Система в диспетчере томов видит этот раздел, как созданный, но не форматированный и выдает ошибку, что он не задействован - это верно, поскольку системный драйвер FtDisk не создал устройство \\Device\\HarddiskVolumeR. Но вот как заставить FtDisk сделать это? В Соломоне&Руссиновиче написано что-то вроде "PartMgr.sys" по закрытому интерфейсу должен уведомить его, когда драйвер создаст объект-устройство-раздел (\\Device\\HarddiskN\\DP(M)K-L+P). Но, как я понимаю, никакх уведомлений не приходит. Какие действия еще нужно выполнить? Какого типа должно быть это устройство? На него должны приходить какие-либо IOCTL запросы (у меня не приходят никакие)? Надо ли вешать на него какие-либо интерфейсы (Хотя они на него не вешаются)? И что можно почитать по такой специфичной теме? Заранее спасибо!
Да сложностей-то особо нет с его написанием, вот только в мелочь такую уперся и уже неделю не могу сдвинуться..
Four-F Из исходников я нашел там только TrueCrypt и некий GostDisk. Ни один из них не выполняет создания каких либо нужных устройств - все ограничивается созданием символьной ссылки на данную букву диска и не создается никаких устройств вида \\Device\\HarddiskN - такое мне не надо - на это есть известный пример от майкрософт. Мне же нужно реализовать классовый драйвер диска, создающий по правилам все директории, устройства и символьные ссылки. В исходниках это я не встречал, только в коммерческих продуктах (RamDiskXP, SuperSpeedLLC RamDisk и.т.д)/
wsd Кандидатская это изыскание чего то принципиально нового либо крутое усовершенствование уже существующего. В данном случае это как раз таки тянет только на курсовую работу.
k3internal жирно это, наверно, для курсовой. ну в край для дипломной оставил бы я не утверждаю, что тема сложна, а намекаю просто на то, что это перебор по функциональности задачи для курсовой.
6000? Хм..сейчас посмотрю, если это окажется не тем самым примером для винды 2000, переделанным под кмдф, которому много лет, то буду безумно рад.
Нет, чуда не произошло - это оказался все тот же старый пример рамдиска, только за счет использования KMDF сильно ужатый по размерам кода..