Здравствуйте,
Имеется работающий legacy virtual disk driver, который умеет монтировать образ диска, лежащий в файле. В текущем виде драйвер практически всю работу делает сам ручками: при монтировании диска сам сканит MBR (IoReadPartitionTable), детектит партишены и создает девайсы для каждого из вольюмов.
Появилась необходимость поддержать образы, содержащие dynamic disk. И вот тут мы имеем грабли: драйвер видит все 4 simple volumes, находящихся на сэмпловом dynamic disk'е, но размеры всех, кроме первого, равны нулю.
Есть следующие идеи по доработке драйвера, выглядящие одинаково рисково:
1) Остаться в рамках legacy driver, и попытаться выяснить, какой набор IOCTL или еще чего-то нужно дообработать. Тут есть также идея как-то используя IoRegisterDeviceInterface заставить систему сделать всю работу по распознаванию и монтированию содержимого диска. Хотя, IoRegisterDeviceInterface требует на вход PDO, который не совсем понятно, откуда брать, и это, думаю, только вершина айсберга проблем
2) Полностью переписать драйвер в виде virtual SCSI miniport. Тут, судя по тому, что я нарыл в OSRONLINE есть некоторые неприятные грабли (например, SRB completion), обходящиеся различными хаками. Но в целом этот путь выглядит как вполне органичное решение, практически неминуемо приводящее к счастью
Вопрос в том, какой из путей является чуть менее рисковым

Прежде написанием SCSI miniport'ов заниматься не приходилось, и достойных примеров в DDK найти не удалось, но достижение результата при этом варианте выглядит более реальным.
С другой стороны, есть вероятность, что дописав немного кода к текущему драйверу можно также добиться желаемого, но уже с гораздо более туманными перспективами.
Помогите, пожалуйста, сделать правильный выбор!