Привет всем!
В качестве курсового проекта я пишу драйвер виртуального рамдиска.
Я создал устройство (сам диск) с именем \\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 запросы (у меня не приходят никакие)?
Надо ли вешать на него какие-либо интерфейсы (Хотя они на него не вешаются)? И что можно почитать по такой специфичной теме?