Ради академического интереса делаю драйвер "виртуального диска". Сделал свой аналог файловой системы (заголовок, сектора, данные), все работает. Сейчас стал делать обработку пакетов ввода/вывода и застрял. Я хотел сделать, чтобы с диском могли работать не только мои приложения, но и сам виндовс. Допустим, если сделать dir корню моего диска (символьной ссылке), то формируется аш 7 пакетов: FMajor: 0xE, FMinor: 0x0, ControlCode: 0x70000 FMajor: 0xE, FMinor: 0x0, ControlCode: 0x70000 FMajor: 0xE, FMinor: 0x0, ControlCode: 0x74800 FMajor: 0xE, FMinor: 0x0, ControlCode: 0x74804 FMajor: 0xE, FMinor: 0x0, ControlCode: 0x70024 FMajor: 0xE, FMinor: 0x0, ControlCode: 0x70000 FMajor: 0xE, FMinor: 0x0, ControlCode: 0x74804 Если разбирать, то: 0xE - IRP_MJ_DEVICE_CONTROL 0x70000 - IOCTL_DISK_GET_DRIVE_GEOMETRY но как я должен ответить на этот запрос, если у меня как таковых нет треков, цилиндров и тд?... в общем такая проблема... нет ли какой-нибудь документации о том, как необходимо предоставлять информацию о виртуальном диске винде? гуглил, но чет не нашел ничего толкого...
Да вы всё всегда делаете "ради академического интереса", мы уже знаем. А потом пытаетесь втюхать это полурабочее решение всем подряд. Я не говорю, что это плохо, иногда таких ребят берут просто на доработку, если сходу видно, что человек хоть немного в теме и горит желанием развиваться. Но не надо писать-то об этом, либо не пишите совсем эту фразу, либо пишите честно, что в итоге будете пытаться срубить бабла. Во втором случае, кстати, возможно, что и ответы будут более серьёзными и значимыми. Из твоего поста я так и не понял, ты хочешь сделать виртуальный диск (уровень storage) или виртуальную файловую систему (уровень file system)? Это как бы две разные вещи. В самом сложном случае, если тебе нужно и чтобы буква у диска была выделенная и чтобы файловая система на нём была нестандартная, то придётся писать и драйвер виртуального диска типа filedisk, и файловый фильтр типа sfilter. Сначала определись с этим, потом уже формулируй конкретные вопросы.
сорцев же много. тот же TrueCrypt. Там можно глянуть драйвер виртуального диска (IOCTL_DISK_GET_DRIVE_GEOMETRY обрабатывает именно он).