замена IOCTL_DISK_GET_LENGTH_INFO под w2k

Тема в разделе "WASM.NT.KERNEL", создана пользователем genesis, 7 май 2007.

  1. genesis

    genesis New Member

    Публикаций:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    43
    Я создаю виртуальный диск, обрабатываю следующие IOCTL -
    case IOCTL_DISK_CHECK_VERIFY:
    case IOCTL_CDROM_CHECK_VERIFY:
    case IOCTL_STORAGE_CHECK_VERIFY:
    case IOCTL_STORAGE_CHECK_VERIFY2:
    case IOCTL_DISK_GET_DRIVE_GEOMETRY:
    case IOCTL_CDROM_GET_DRIVE_GEOMETRY:
    case IOCTL_DISK_GET_LENGTH_INFO:
    case IOCTL_DISK_GET_PARTITION_INFO:
    case IOCTL_DISK_GET_PARTITION_INFO_EX:
    case IOCTL_DISK_IS_WRITABLE:
    case IOCTL_DISK_MEDIA_REMOVAL:
    case IOCTL_STORAGE_MEDIA_REMOVAL:
    case IOCTL_CDROM_READ_TOC:
    case IOCTL_DISK_SET_PARTITION_INFO:
    case IOCTL_DISK_VERIFY:
    Это работает под w2k, если диск уже отформатирован. Если же нет - при попытке форматировать, в стандартном диалоге форматирования пишет "Unknown capacity".

    Подозреваю, что это из-за отсутствия IOCTL_DISK_GET_LENGTH_INFO на w2k.
    (MSDN say:
    This IOCTL is supported in Windows XP, Windows Server 2003 and later operating systems.
    )

    Далее, из неизвестных мне IRP -
    LogicIrpDispatcher::dispatch Unknown IOCTL code = 0x30000
    LogicIrpDispatcher::dispatch Unknown IOCTL code = 0x0

    оба с нулевыми буферами, и размерами этих буферов...

    Вопрос, может кто в курсе, что нужно хендлить на w2k, чтобы она узнала так нужную ей емкость?
     
  2. rav

    rav New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2004
    Сообщения:
    159
    Адрес:
    Москва
    А где обработчик IOCTL_DISK_GET_DRIVE_LAYOUT?
     
  3. genesis

    genesis New Member

    Публикаций:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    43
    IOCTL_DISK_GET_DRIVE_LAYOUT ни при чем, думается...
    В общем то драйвер - аналог filedisk. Сегодня проверил - filedisk ведет себя точно так же.

    Пишем -
    FileDisk.exe /mount 0 c:\img 100M x:
    появляется диск, пытаемся форматировать - в поле "Capacity" пишет "Unknown capacity". Завершить форматирование после этого не получается...

    Есть какие то идеи?
     
  4. rav

    rav New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2004
    Сообщения:
    159
    Адрес:
    Москва
    1. Ты не думай- ты делай.
    2. FileDisk- не самый лучший пример для подражания. Лучше посмотри реализацию TrueCrypt- там она получше будет (хотя и не без косяков, конечно).
     
  5. genesis

    genesis New Member

    Публикаций:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    43
    блин, IOCTL_DISK_GET_DRIVE_LAYOUT возвращает информацию о партициях, а у меня их там там нет, я же пытаюсь отформатировать раздел.
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    genesis
    LOL а раздел это не патриция?
     
  7. genesis

    genesis New Member

    Публикаций:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    43
    раздел - патриция :) :) :) и что?
     
  8. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    поэтому и надо обрабатывать IOCTL_DISK_GET_DRIVE_LAYOUT
     
  9. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    genesis
    почитай свой пост, ты говоришь что форматируешь раздел, и то что на твоем диске нет разделов. Где логика?
     
  10. genesis

    genesis New Member

    Публикаций:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    43
    :) Логика вот :

    я создаю файл, он сразу после создания очевидно никаких разделов не содержит. После этого создаю устройство, для этого устройства обрабатываю IRP_MJ_READ && IRP_MJ_WRITE + указанные выше IOCTL коды. Потом делаю на это устройство DefineDosDevice, и связываю его с буквой. Потом пытаюсь его отформатировать. Все.

    Подскажите, что я должен ответить на IOCTL_DISK_GET_DRIVE_LAYOUT? что-то вроде, "есть один раздел, и он такой то, начинается там-то" ???
     
  11. genesis

    genesis New Member

    Публикаций:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    43
    Э, чет я затупил... посмотрел truecrypt - всем спасибо, разобрался.